【NLP】Datawhale-AI夏令营Day10打卡:微调ChatGLM2-6B

简介: 【NLP】Datawhale-AI夏令营Day10打卡:微调ChatGLM2-6B


1. 学习内容

AI夏令营第三期–基于论文摘要的文本分类与关键词抽取挑战赛教程

今天学习的是任务三:进阶实践 - 大模型方法

微调方法介绍

1️⃣ LoRA(Low-Rank Adaptation):

基本思想是对模型的一部分进行低秩适应,即找到并优化那些对特定任务最重要的部分。也就是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型微调类似的效果。这种方法可以有效地减少模型的复杂性,同时保持模型在特定任务上的表现。对 Transformer 的每一层结构都采用 LoRA 微调的方式,最终可以使得模型微调参数量大大减少。当部署到生产环境中时,只需要计算和存储W=W0+BA,并像往常一样执行推理。与其它方法相比,没有额外的延迟,因为不需要附加更多的层。

2️⃣ P-tuning v2:

P-tuning v2是一种新的微调方法,也是chatglm官方仓库使用的微调方法。它的基本思想是在原有的大型语言模型上添加一些新的参数,这些新的参数可以帮助模型更好地理解和处理特定的任务。具体来说,P-tuning v2首先确定模型在处理特定任务时需要的新的参数(这些参数通常是模型的某些特性或功能),然后在模型中添加这些新的参数,以提高模型在特定任务上的表现。

2. 实现步骤

可以参考 Datawhale 在b站的视频,不过视频主要是在阿里云服务器上面实现的,我这边是在Windows系统本地实现的。

clone微调脚本:

git clone https://github.com/KMnO4-zx/xfg-paper.git

下载chatglm2-6b模型:

git clone https://huggingface.co/THUDM/chatglm2-6b

如果一直卡在这步其实是还没有完成,可以进入 chatglm2-6b 文件夹:

wget https://cloud.tsinghua.edu.cn/seafhttp/files/f3e22aa1-83d1-4f83-917e-cf0d19ad550f/pytorch_model-00001-of-00007.bin https://cloud.tsinghua.edu.cn/seafhttp/files/0b6a3645-0fb7-4931-812e-46bd2e8d8325/pytorch_model-00002-of-00007.bin https://cloud.tsinghua.edu.cn/seafhttp/files/f61456cb-5283-4529-a7bc-400355140e4b/pytorch_model-00003-of-00007.bin https://cloud.tsinghua.edu.cn/seafhttp/files/1a1f68c5-1a7d-489a-8f16-8432a099d782/pytorch_model-00004-of-00007.bin https://cloud.tsinghua.edu.cn/seafhttp/files/6357afba-bb40-4348-bc33-f08c1fcc2936/pytorch_model-00005-of-00007.bin  https://cloud.tsinghua.edu.cn/seafhttp/files/ebec3ae2-5ae4-432c-83e4-df4b147026bb/pytorch_model-00006-of-00007.bin https://cloud.tsinghua.edu.cn/seafhttp/files/7d1aab8a-d255-47f7-87c9-4c0593379ee9/pytorch_model-00007-of-00007.bin https://cloud.tsinghua.edu.cn/seafhttp/files/4daca87e-0d34-4cff-bd43-5a40fcdf4ab1/tokenizer.model

如果 wget 报错可以看下文的内容。

直到显示:

才是完全下载成功。

进入目录安装环境:

cd ./xfg-paper
pip install -r requirements.txt

修改目录下的 xfg_train.sh 脚本文件(可用记事本打开编辑):

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --model_name_or_path ../chatglm2-6b \
    --stage sft \
    --use_v2 \
    --do_train \
    --dataset paper_label \
    --finetuning_type lora \
    --lora_rank 8 \
    --output_dir ./output/label_xfg \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 5e-5 \
    --num_train_epochs 3.0 \
    --fp16

注意最后一行的结尾不要加 \

里面的部分参数需要根据自己的运行环节修改,比如:

–model_name_or_path:后面应该换成 chatglm2-6b 文件夹的路径,对于我而言,chatglm2-6b 文件夹和 xfg-paper 文件夹是在同一目录下的,因此我这里写成 …/chatglm2-6b

–per_device_train_batch_size:用于训练的批处理大小,由于我的显存比较小,因此这个参数设得比较小

然后运行 xfg_train.sh 脚本:

sh xfg_train.sh

注意上述命令是在 Linux 环境下的(教程的运行环境是阿里云服务器,Linux系统),如果是 Windows 系统,不能在cmd运行该脚本。

运行之后会开始下载:

如果显存不足可以降低batch_size,但本地跑还是太吃力了 😥

微调之后运行仓库内的jupyter notebook文件即可。

3. 遇到的问题解决方法

问题1:

Windows bash: wget: command not found

解决1:

安装 wget

从 wget 的官网下载 exe 文件,放到 Git 安装目录下的 Git\mingw64\bin

问题2:

E:\Jupter\NLP_Datawhale\xfg-paper>sh xfg_train.sh
'sh' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

原因是 Windows 系统不支持这种操作。

解决2:

首先下载 Git,然后打开 Git Bash,进入xfg-paper文件夹,重新运行上述命令

cd E:/Jupter/NLP_Datawhale/xfg-paper
sh xfg_train.sh

相关文章
|
2月前
|
人工智能 自然语言处理 前端开发
[AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
[AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
|
3月前
|
机器学习/深度学习 存储 人工智能
【NLP】Datawhale-AI夏令营Day6-7打卡:大模型
【NLP】Datawhale-AI夏令营Day6-7打卡:大模型
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【NLP】Datawhale-AI夏令营Day4打卡:预训练+微调范式
【NLP】Datawhale-AI夏令营Day4打卡:预训练+微调范式
|
3月前
|
人工智能 物联网 PyTorch
SCEdit:轻量级高效可控的AI图像生成微调框架(附魔搭社区训练实践教程)
SCEdit是一个高效的生成式微调框架,由阿里巴巴通义实验室基础视觉智能团队所提出。
|
1月前
|
人工智能 自然语言处理 搜索推荐
微调工程师岗位可能并不存在,但使用 AI 编码工具已经成为刚需
阿里云通义灵码,作为智能编码助手,下载量超130万,引领国内AI编码工具市场。
115769 87
|
3月前
|
机器学习/深度学习 存储 自然语言处理
【NLP】Datawhale-AI夏令营Day8-10打卡:大模型基础Transformer
【NLP】Datawhale-AI夏令营Day8-10打卡:大模型基础Transformer
|
3月前
|
机器学习/深度学习 数据采集 人工智能
【NLP】Datawhale-AI夏令营Day5打卡:预训练模型
【NLP】Datawhale-AI夏令营Day5打卡:预训练模型
|
3月前
|
机器学习/深度学习 数据采集 人工智能
【NLP】Datawhale-AI夏令营Day3打卡:Bert模型
【NLP】Datawhale-AI夏令营Day3打卡:Bert模型
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP】Datawhale-AI夏令营Day2打卡:数据分析
【NLP】Datawhale-AI夏令营Day2打卡:数据分析
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP】Datawhale-AI夏令营Day1打卡:文本特征提取
【NLP】Datawhale-AI夏令营Day1打卡:文本特征提取