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

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: 【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

相关文章
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Datawhale AI夏令营第四期魔搭-AIGC文生图方向Task1笔记
这段内容介绍了一个使用Stable Diffusion与LoRA技术创建定制化二次元图像生成模型的全流程。首先,通过安装必要的软件包如Data-Juicer和DiffSynth-Studio准备开发环境。接着,下载并处理二次元图像数据集,利用Data-Juicer进行数据清洗和筛选,确保图像质量和尺寸的一致性。随后,训练一个针对二次元风格优化的LoRA模型,并调整参数以控制模型复杂度。完成训练后,加载模型并通过精心设计的提示词(prompt)生成一系列高质量的二次元图像,展示模型对细节和艺术风格的理解与再现能力。整个过程展示了从数据准备到模型训练及结果生成的完整步骤,为定制化图像提供了方向。
|
1月前
|
人工智能 自然语言处理
从迷茫到精通:揭秘模型微调如何助你轻松驾驭AI新热点,解锁预训练模型的无限潜能!
【10月更文挑战第13天】本文通过简单的问题解答形式,结合示例代码,详细介绍了模型微调的全流程。从选择预训练模型、准备新任务数据集、设置微调参数,到进行微调训练和评估调优,帮助读者全面理解模型微调的技术细节和应用场景。
68 6
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
揭开模型微调Fine-Tuning的神秘面纱:如何在预训练基础上巧妙调整,解锁定制AI解决方案的秘密武器
【10月更文挑战第8天】模型微调是在预训练模型基础上,利用特定领域数据进一步训练,以优化模型在特定任务上的表现。此方法广泛应用于自然语言处理和计算机视觉等领域,通过调整预训练模型的部分或全部参数,结合适当的正则化手段,有效提升模型性能。例如,使用Hugging Face的Transformers库对BERT模型进行微调,以改善文本匹配任务的准确率。
54 1
|
1月前
|
人工智能 自然语言处理
【NLP自然语言处理】NLP中的常用预训练AI模型
【NLP自然语言处理】NLP中的常用预训练AI模型
|
3月前
|
人工智能
Datawhale X 魔搭 AI夏令营task 2笔记
Datawhale X 魔搭 AI夏令营task 2笔记
58 1
Datawhale X 魔搭 AI夏令营task 2笔记
|
3月前
|
数据采集 人工智能 物联网
Datawhale X 魔搭 AI夏令营task 3笔记
Datawhale X 魔搭 AI夏令营task 3笔记
81 2
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【模型微调】AI Native应用中模型微调概述、应用及案例分析
在AI Native应用中,模型微调是一个关键步骤,它允许开发者使用特定领域的数据对预训练模型进行二次训练过程,从而使其更好地适应特定任务或数据集。模型微调通过调整模型的参数,使模型在特定任务上达到更高的性能。这种技术广泛应用于自然语言处理、图像识别、语音识别等领域
79 1
|
3月前
|
人工智能 物联网
Datawhale X 魔搭 AI夏令营task 3笔记
Datawhale X 魔搭 AI夏令营task 3笔记
|
3月前
|
人工智能 内存技术
通义语音AI技术问题之预训练模型的推理与微调如何解决
通义语音AI技术问题之预训练模型的推理与微调如何解决
38 4
|
3月前
|
机器学习/深度学习 自然语言处理 数据处理

热门文章

最新文章