lora微调大模型Qwen2.5_32B

最近有在尝试用lora微调Qwen大模型,在这里主要记录下实践过程。Qwen模型下载可以去魔塔社区,我这里是提前下载好了放在/public/DownloadedModels下。LLamaFactory源码地址:GitHub - hiyouga/LLaMA-Factory: Unified Efficient Fine-Tuning of 100+ LLMs (ACL 2024)

 

目录

1. 准备数据

2. 设置lora微调时模型、数据位置

3. lora微调模型

 4. 模型推理

5. 模型合并

 

1. 准备数据

(1)由于我微调的目的是为了评价某些KPI指标,所以我的准备数据的格式设置如下:

(2)数据准备好之后,将json文件上传到LLamaFactory项目的data目录下:

(为了方便操作,我将data目录下的数据移到examples下了)

注:我是上传之后将data.json改名SteelData.json了,内容不变。

(3)vi打开dataset_info.son文件,并在dataset_info.json文件里添加 数据文件信息。

2. 设置lora微调时模型、数据位置

 vi打开/LLaMA-Factory/examples/train_lora目录下的llama3_lora_sft.yaml文件:

 这里需要设置Qwen模型位置,数据集的名称(这里用的是dataset_info中对steelData数据文件的命名)和微调模型的输出位置(为了方便操作,我把saves目录下也移到/LLaMA-Factory/examples目录下了):

 

3. lora微调模型

(1)在examples目录下进行微调训练,这里需要切换到虚拟环境(具体要求可参考llamaFactory要求),FORCE_TORCHRUN=1 CUDA_VISIBLE_DEVICES=0,1,2,3  表示单机多卡训练。我这里微调Qwen2.5_32B一块卡是不够用的,最起码两块卡(我这里是A800的卡)。如果还报错,有可能就是卡还是不够。

 

 我这里运行报错,经过多次尝试,我发现deepspeed方法对我是有效的。

(2)于是我在llama3_lora_sft.yaml文件中添加了deepspeed设置

 (3)添加完deepspeed之后,需要用pip 安装deepspeed,否则再次运行微调程序会显示没有deepspeed这个模块。我这里就不再安装了,截个安装好的图。

 注:安装deepspeed的时候可能会报缺少nvvc错误,这个时候可以输入以下命令安装(亲测有效,昨天刚试成功):

conda install cuda-nvcc -c conda-forge

 (4)再次运行微调程序

(torch24) root@e70a6fd3f126:/data/LLaMA-Factory/examples# FORCE_TORCHRUN=1 CUDA_VISIBLE_DEVICES=0,1,2,3  llamafactory-cli train train_lora/llama3_lora_sft.yaml 

运行结果如下:

(5)运行成功之后,可以看到saves/lora下有内容了:

 

 4. 模型推理

(1)  打开inference目录下的llama3_lora_sft.yaml文件,设置模型路径: 

 

(2)  运行模型推理命令

torch24) root@e70a6fd3f126:/data/LLaMA-Factory/examples# FORCE_TORCHRUN=1 CUDA_VISIBLE_DEVICES=0,1,2,3  llamafactory-cli chat inference/llama3_lora_sft.yaml

运行结果如下: 

 

 接下来就可以和大模型对话了。

(3) 测试微调结果

因为我数据中每次都是先计算平均值,所以这个结果说明模型是学习了,只不过效果不好,我还得继续调参数。还有不知道为什么最后又把输入数据重复了一遍,有朋友知道是为什么嘛?

5. 模型合并

(1)首先需要设置/examples/merge_lora目录下的文件llama3_lora_sft.yaml文件,如下图所示,我设置了使用的大模型位置,微调后的模型位置以及模型合并后的位置。

 (2)设置完之后就可以运行模型合并程序了

(torch24) root@e70a6fd3f126:/data/LLaMA-Factory/examples# llamafactory-cli export merge_lora/llama3_lora_sft.yaml

 运行结果如下:

 运行完之后,modles/llama3_lora_sft目录下就有内容了:

以上便是最近lora微调大模型Qwen2.5_32B的实践过程了,希望可以帮助到大家~

感谢关注!!后续有关大模型的实践也将尽快更新~ 

### 对Qwen 2.5-7B模型应用LoRA微调技术 #### 安装依赖库 为了能够顺利地对Qwen 2.5-7B模型进行LoRA微调,需要安装必要的Python包。这通常包括`transformers`、`peft`以及其他可能用到的数据处理工具。 ```bash pip install transformers peft datasets evaluate accelerate bitsandbytes ``` #### 加载预训练模型与分词器 加载Hugging Face上的Qwen 2.5-7B模型及其对应的分词器是开始微调的第一步。通过指定正确的模型名称可以轻松完成此操作[^1]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name_or_path = "Qwen/Qwen-7B" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained( model_name_or_path, trust_remote_code=True ) ``` #### 配置并初始化LoRA适配层 接下来,在原始模型基础上添加LoRA参数高效的调整能力。这里会涉及到设置一些超参数来控制LoRA的行为模式,比如秩大小(r)以及目标模块的选择等。 ```python from peft import LoraConfig, get_peft_model lora_config = LoraConfig( r=8, # LoRA attention dimension lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", ) model = get_peft_model(model, lora_config) ``` #### 准备数据集 对于特定任务(如对话系统),准备合适的数据集至关重要。如果是以中文法律问答为例,则应采用专门为此场景设计的数据集DISC-Law-SFT来进行训练[^2]。 ```python from datasets import load_dataset dataset = load_dataset('path_to_DISC_Law_SFT') ``` #### 训练配置与启动 定义好优化算法和其他训练选项之后就可以正式开启训练流程了。考虑到资源的有效利用,建议合理设定batch size、epoch数量等参数,并考虑使用混合精度加速计算效率。 ```python import torch from transformers import Trainer, TrainingArguments training_args = TrainingArguments( output_dir="./results", per_device_train_batch_size=4, num_train_epochs=3, logging_steps=10, save_strategy="steps", evaluation_strategy="epoch", fp16=True, # Enable mixed precision training. ) trainer = Trainer( model=model, args=training_args, train_dataset=train_data, eval_dataset=val_data, tokenizer=tokenizer, ) trainer.train() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值