青梅煮酒与君饮 2024-08-21 21:47 采纳率: 0%
浏览 10
已结题

Qwen2的Windows微调脚本不能运行

D:\Anaconda\envs\Qwen2\python.exe D:\PycharmFile\Qwen2\模型微调.py 
Traceback (most recent call last):
  File "D:\PycharmFile\Qwen2\模型微调.py", line 1, in <module>
    from datasets import Dataset
  File "D:\Anaconda\envs\Qwen2\Lib\site-packages\datasets\__init__.py", line 18, in <module>
    from .arrow_dataset import Dataset
  File "D:\Anaconda\envs\Qwen2\Lib\site-packages\datasets\arrow_dataset.py", line 60, in <module>
    import pyarrow as pa
  File "D:\Anaconda\envs\Qwen2\Lib\site-packages\pyarrow\__init__.py", line 65, in <module>
    import pyarrow.lib as _lib
ImportError: DLL load failed while importing lib: 找不到指定的程序。

码神们这是为什么啊?
源码如下:


from datasets import Dataset
import pandas as pd
from transformers import (AutoTokenizer,AutoModelForCausalLM,DataCollatorForSeq2Seq,TrainingArguments,
                          Trainer,GenerationConfig)
import torch
from peft import LoraConfig, TaskType, get_peft_model

df=pd.read_json(r'D:\数据集\huanhuan-100.json')
ds=Dataset.from_pandas(df)

tokenizer=AutoTokenizer.from_pretrained(r"D:\模型文件夹\Qwen2",
                                        use_fast=False,trust_remote_code=True)
def process_func(example):
    MAX_LENGTH = 384    # Llama分词器会将一个中文字切分为多个token,因此需要放开一些最大长度,保证数据的完整性
    input_ids, attention_mask, labels = [], [], []
    instruction = tokenizer(f"<|im_start|>system\n现在你要扮演皇帝身边的女人--甄嬛<|im_end|>\n<|im_start|>user\n{example['instruction'] + example['input']}<|im_end|>\n<|im_start|>assistant\n", add_special_tokens=False)  # add_special_tokens 不在开头加 special_tokens
    response = tokenizer(f"{example['output']}", add_special_tokens=False)
    input_ids = instruction["input_ids"] + response["input_ids"] + [tokenizer.pad_token_id]
    attention_mask = instruction["attention_mask"] + response["attention_mask"] + [1]  # 因为eos token咱们也是要关注的所以 补充为1
    labels = [-100] * len(instruction["input_ids"]) + response["input_ids"] + [tokenizer.pad_token_id]
    if len(input_ids) > MAX_LENGTH:  # 做一个截断
        input_ids = input_ids[:MAX_LENGTH]
        attention_mask = attention_mask[:MAX_LENGTH]
        labels = labels[:MAX_LENGTH]
    return {
        "input_ids": input_ids,
        "attention_mask": attention_mask,
        "labels": labels
    }

tokenized_id = ds.map(process_func, remove_columns=ds.column_names)

model = AutoModelForCausalLM.from_pretrained(r"D:\模型文件夹\Qwen2", device_map="auto",torch_dtype=torch.bfloat16)
model.enable_input_require_grads() # 开启梯度检查点时,要执行该方法

config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
    inference_mode=False, # 训练模式
    r=8, # Lora 秩
    lora_alpha=32,
    lora_dropout=0.1# Dropout 比例
)

model = get_peft_model(model, config)

model.print_trainable_parameters()

args = TrainingArguments(
    output_dir=r"D:\微调后的模型\Qwen2-7B-甄嬛",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    logging_steps=10,
    num_train_epochs=3,
    save_steps=100,
    learning_rate=1e-4,
    save_on_each_node=True,
    gradient_checkpointing=True
)

trainer = Trainer(
    model=model,
    args=args,
    train_dataset=tokenized_id,
    data_collator=DataCollatorForSeq2Seq(tokenizer=tokenizer, padding=True),
)

trainer.train()
  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-21 22:14
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从错误信息来看,问题出在导入pyarrow库时出现了DLL加载失败。这可能是由于缺少某些依赖库或者环境配置不正确导致的。你可以尝试以下方法来解决这个问题:

    1. 确保你已经安装了pyarrow库。如果没有安装,可以使用以下命令进行安装:
    pip install pyarrow
    
    1. 如果你已经安装了pyarrow库,但仍然遇到这个问题,可能是因为缺少某些系统级别的依赖库。请确保你的系统中已经安装了以下依赖库:
    • Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 (x64)
    • Visual C++ Redistributable for Visual Studio 2013 (x64)
    • Visual C++ Redistributable for Visual Studio 2012 Update 4 (x64)

    你可以从以下链接下载并安装这些依赖库:

    • Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 (x64)
    • Visual C++ Redistributable for Visual Studio 2013 (x64)
    • Visual C++ Redistributable for Visual Studio 2012 Update 4 (x64)
    1. 如果上述方法都无法解决问题,你可以尝试创建一个新的虚拟环境,并在其中安装所需的库。这样可以确保环境中没有其他干扰因素。以下是创建新虚拟环境并安装所需库的步骤:
    # 创建新的虚拟环境
    python -m venv myenv
    
    # 激活虚拟环境(Windows)
    myenv\Scripts\activate
    
    # 激活虚拟环境(Linux / macOS)
    source myenv/bin/activate
    
    # 安装所需库
    pip install datasets transformers peft torch pyarrow
    

    然后在这个新的虚拟环境中运行你的脚本。希望这些建议能帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月23日
  • 创建了问题 8月21日

悬赏问题

  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数
  • ¥15 Sumo软件无法运行
  • ¥15 如何在vscode里搭建stata的编辑环境?
  • ¥15 dify知识库创建问题
  • ¥15 如何用C#的chart画1000万个点不卡顿
  • ¥15 爬虫技术找到网上看过房源客户的电话
  • ¥20 代码:Python随机森林反演生物量数据处理问题