大模型微调方法实现

本博文以Qwen模型为例,分别使用魔搭社区和LlamaFactory 两种方式实现微调。

⭐️ 魔搭社区

登录个人主页👉我的Notebook👉使用实例GPU环境

1. 根据如下方法准备环境:

## 准备环境

```
# 下载qwen和模型
git clone https://github.com/QwenLM/Qwen.git
git clone https://www.modelscope.cn/qwen/Qwen-1_8B-Chat.git

# 安装依赖
pip install -r requirements.txt

# 安装torch
下载地址:http://download.pytorch.org/whl/torch_stable.html
wget http://download.pytorch.org/whl/cu121/torch-2.1.1%2Bcu121-cp310-cp310-linux_x86_64.whl        # 云服务上输入该行代码,下载,完成后运行下一行代码
pip install torch-2.1.1+cu121-cp310-cp310-linux_x86_64.whl

# 安装deepspeed
pip install "peft<0.8.0" deepspeed

```

 2. 上传数据集,配置微调参数:

## 微调

# 准备训练数据:trans_data.json

```
cd Qwen

# 移动finetune_lora_single_gpu.sh到Qwen目录下,授予权限
cp finetune/finetune_lora_single_gpu.sh ./
chmod +x finetune_lora_single_gpu.sh              

# 修改微调配置
vim finetune_lora_single_gpu.sh           


# 微调,根据需要修改文件路径
./finetune_lora_single_gpu.sh -m /mnt/workspace/Qwen/Qwen-1_8B-Chat -d /mnt/workspace/data/trans_data.json

# 合并模型,模型合并文件qwen_lora_merge.py上传到Qwen文件夹里,然后修改微调模型路径
lora_model_path="/mnt/workspace/Qwen/output_qwen/checkpoint-30"

# 合并模型
python qwen_lora_merge.py 

```

在finetune_lora_single_gpu.sh文件中修改微调配置:例如训练轮次num_train_epochs,

批大小per_device_train_batch_size,保存间隔save_steps等。如下是各个参数释义:

-model_name_or_path $MODEL:指定要进行微调的预训练模型的名称或路径。
--data_path $DATA:指定用于微调的数据集的路径。
--bf16 False:表示不使用 bfloat16 数据类型。
--output_dir output_qwen:指定微调后模型的输出目录。
--num_train_epochs 5:设置训练的轮数为 5。
--per_device_train_batch_size 2:每个设备上的训练批次大小为 2。
--per_device_eval_batch_size 1:每个设备上的评估批次大小为 1。
--gradient_accumulation_steps 8:梯度累积的步数,有助于在内存有限的情况下使用较大的批次大小。
--evaluation_strategy "no":不进行评估策略。
--save_strategy "steps":按照步数进行模型保存策略。
--save_steps 20:每 20 步保存一次模型。
--save_total_limit 10:保存的模型总数限制为 10。
--learning_rate 3e-4:设置学习率为 3e-4。
--weight_decay 0.1:设置权重衰减为 0.1。
--adam_beta2 0.95:Adam 优化器的 beta2 参数设置为 0.95。
--warmup_ratio 0.01:学习率 warmup 的比例为 0.01。
--lr_scheduler_type "cosine":学习率调度器类型为余弦退火(cosine)。
--logging_steps 1:每一步都进行日志记录。
--report_to "none":不向任何地方报告。
--model_max_length 512:模型的最大长度为 512。
--lazy_preprocess True:使用懒加载预处理。
--gradient_checkpointing:启用梯度检查点,以减少内存使用。
--use_lora:使用低秩适应(LoRA)技术进行微调。

3. 测试

💥 交互式Demo

```
cd Qwen
python cli_demo.py -c Qwen-1_8B-Chat_merge

```

## 退出
:exit

💥Web Demo

```
pip install gradio
pip install mdtex2html
# 启动服务
python web_demo.py --cpu-only -c=Qwen-1_8B-Chat
# 查看web界面
http://127.0.0.1:8000/

```

4. 常见问题解决

1、ImportError: cannot import name 'packaging' from 'pkg_resources' 

```
解决方案:
pip uninstall setuptools
pip install setuptools==69.5.1 --no-cache-dir

```

2、ValueError: Your setup doesn't support bf16/gpu. You need torch>=1.10, using Ampere GPU with cuda>=11.0

```
解决方案:
需要修改finetune_lora_single_gpu.sh文件,最下面有说明
--bf16 True 修改为 --bf16 False 
或者
--bf16 True  修改为 --fp16 True

```

3、TypeError: isin() received an invalid combination of arguments - got 

```
解决方案:
pip install coqui-tts

```

若出现如下报错执行下方代码:

sed -i 's/\r$//' ./finetune_lora_single_gpu.sh

⭐️ LlamaFactory

使用阿里云PAI平台👉交互式建模(DSW)👉创建实例

1. 准备环境,下载模型:

## 下载模型 和 LlamaFactory
git clone https://www.modelscope.cn/qwen/Qwen-1_8B-Chat.git
git clone https://github.com/hiyouga/LLaMA-Factory.git

## 安装
wget http://download.pytorch.org/whl/cu121/torch-2.1.1%2Bcu121-cp310-cp310-linux_x86_64.whl
pip install torch-2.1.1+cu121-cp310-cp310-linux_x86_64.whl    

pip uninstall -y vllm
pip install llamafactory[metrics]==0.7.1
pip install accelerate==0.30.1

cd LLaMA-Factory

pip install -e.[torch,metrics]
pip install -r requirements.txt
pip install --no-deps -e .

2. 上传数据集,配置微调参数:

## 上传数据集  到LLaMA-Factory/data/目录,并修改同目录下的dataset_info.json,参照如下格式修改:

```
  "mydata": {
    "file_name": "trans_data.json",
    "formatting":"sharegpt",
    "columns": {
        "messages": "conversations",
        "tools":"id"
    },
    "tags": {
        "role_tag": "from",
        "content_tag": "value",
        "user_tag": "user",
        "assistant_tag": "assistant"
    }
  },

```

## 启动微调-web
pip install tf-keras

export GRADIO_SERVER_PORT=7860 GRADIO_ROOT_PATH=/${JUPYTER_NAME}/proxy/7860/
CUDA_VISIBLE_DEVICES=0 USE_MODELSCOPE_HUB=1 python src/webui.py

## 也可访问如下地址
# dsw-######       # 换成自己的
https://dsw-gateway-cn-shanghai.data.aliyun.com/dsw-######/proxy/7860/

访问网址即可展示如下微调界面:

修改相应参数,训练模型

3. 测试、导出模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值