Qwen-7B-Chat Ptuning 微调 Ptuning原理 参考transformers-code 数据加载与模型配置与LoRa一致,在此具体讲一下Ptuning的细节: 基本原理为冻结主模型全部参数 在Ptuning中,只有soft prompt,是自动学习的,不用人工设置。 在Prompt-tuning的时候,前面只是增加了一个Prompt Embedding. 在Ptuning这里替换为了Prompt Encoder,新加了LSTM/MLP+Embedding. Ptuning PEFT模块 PromptEncoderReparameterizationType来决定到底是用LSTM还是MLP 可调的参数有:num_virtual_tokens、encoder_reparameterization_type
安装依赖 进入ptuning目录,通过pip安装依赖 root@VM-0-17-ubuntu:~# cd ChatGLM-6B/ptuning root@VM-0-17-ubuntu:ptuning# dl=1 下载后解压 root@VM-0-17-ubuntu:ptuning# tar xvf AdvertiseGen.tar.gz 解压的目录AdvertiseGen中有两个json文件,一个train.json 执行训练 root@VM-0-17-ubuntu:ptuning# bash train.sh 训练消耗的资源比较多,运行模型和运行训练不能同时开启,否则 GPU 现存资源不足,本次运行训练耗时11个多小时 /THUDM/chatglm-6b \ --ptuning_checkpoint . /THUDM/chatglm-6b \ --ptuning_checkpoint output/adgen-chatglm-6b-pt-128-2e-2/checkpoint-3000 \
response) 定制 源码:https://github.com/dlimeng/awesome-ai-generated/blob/main/ChatGLM%E4%BD%BF%E7%94%A8/ptuning1 .ipynb 参考:https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md P-Tuning 用自己的数据集对ChatGLM模型进行微调 chatglm-6b 改为本地的模型路径 (参考train2.sh) Thinking:如何使用训练好的ChatGLM模型进行推理使用evaluate.sh,这里需要修改model_name_or_path 和 ptuning_checkpoint
train_path data/mixed_train_dataset.jsonl \ --dev_path data/mixed_dev_dataset.jsonl \ --use_ptuning logging_steps 100 \ --max_source_seq_len 400 \ --max_target_seq_len 300 \ --save_dir checkpoints/ptuning train_path data/mixed_train_dataset.jsonl \ --dev_path data/mixed_dev_dataset.jsonl \ --use_ptuning --max_source_seq_len 400 \ --max_target_seq_len 300 \ --save_dir checkpoints_parrallel/ptuning
对于微调方式,课程将分别以 Lora 方式、Ptuning 方式为例,进行演示讲解,我们还会讲解合并LoRA 参数与原始参数的方法、Fsdp与Deepspeed 的全参数微调技巧等内容。 五、Ptuning微调 Github:chatglm-ptuning prompt tuning, prefix tuning 和p-tuning v1 有一定的联系,这几种方法都是基于优化continuous 限于文章的篇幅关于训练(微调)-LLaMA代码结构、工具配置-Accelerate、工具配置-Deepspeed、工具配置-FSDP、训练(微调)-全参数微调、训练(微调)-LoRA微调、训练(微调)-Ptuning
cd ChatGLM-6B-main/ptuning && wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials cd ChatGLM-6B-main/ptuning && bash train.sh 模型推理 evaluate.sh: PRE_SEQ_LEN=8 CHECKPOINT=adgen-chatglm cd ChatGLM-6B-main/ptuning && bash evaluate.sh 生成的结果: 完成后可以启动web_demo.py 启动网页对话: !
对于微调方式,将分别以 Lora 方式、Ptuning 方式为例,进行演示讲解,还会讲解合并 LoRA 参数与原始参数的方法、Fsdp 与 Deepspeed 的全参数微调技巧等内容。 Ptuning 微调 Image ·Github:chatglm-ptuning· prompt tuning, prefix tuning 和 p-tuning v1 有一定的联系,这几种方法都是基于优化 限于文章的篇幅关于训练(微调)-LLaMA 代码结构、工具配置-Accelerate、工具配置-Deepspeed、工具配置-FSDP、训练(微调)-全参数微调、训练(微调)-LoRA 微调、训练(微调)-Ptuning
如果不禁用可能会中断微调训练,以防万一,还是禁了吧export WANDB_DISABLED=true准备数据集这里为了简化,我只准备了5条测试数据,分别保存为 train.json 和 dev.json,放到 ptuning content \ --response_column summary \ --model_name_or_path /mnt/workspace/chatglm2-6b \ --ptuning_checkpoint 32CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \ --model_name_or_path /mnt/workspace/chatglm2-6b \ --ptuning_checkpoint
dtype=config.torch_dtype, **init_kwargs) # PreSeqLen:PTuning 前缀长度,为空时不启用 PTuning self.pre_seq_len = config.pre_seq_len # 控制前缀编码器中是否启用投影变换 self.prefix_projection = config.prefix_projection if self.pre_seq_len is not None: # 如果启用了 PTuning inputs_embeds = self.embedding(input_ids) if self.pre_seq_len is not None: # 如果启用了 PTuning
(训练集中的qustion_key) \ --response_column (训练集中的answer_key) \ --model_name_or_path chatglm2-6b \ --ptuning_checkpoint 部署我们的模型PRE_SEQ_LEN=32CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \ --model_name_or_path chatglm2-6b \ --ptuning_checkpoint
对于微调方式,课程将分别以 Lora 方式、Ptuning 方式为例,进行演示讲解,我们还会讲解合并LoRA 参数与原始参数的方法、Fsdp与Deepspeed 的全参数微调技巧等内容。 五、Ptuning微调 Github:chatglm-ptuning prompt tuning, prefix tuning 和p-tuning v1 有一定的联系,这几种方法都是基于优化continuous
如果不禁用可能会中断微调训练,以防万一,还是禁了吧 export WANDB_DISABLED=true 准备数据集 这里为了简化,我只准备了5条测试数据,分别保存为 train.json 和 dev.json,放到 ptuning content \ --response_column summary \ --model_name_or_path /mnt/workspace/chatglm-6b \ --ptuning_checkpoint CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \ --model_name_or_path /mnt/workspace/chatglm-6b \ --ptuning_checkpoint
流水线并行 pipeline ✅ ✅ ✅ ❌ ❌ 2.thu-chatglm-6b模型教程 本文件夹只能进行单机单卡训练,如果想要使用单机多卡,请查看文件夹Chatglm6b_ModelParallel_ptuning 介绍 路径 状态 使用lora训练chatglm6b 就是本文件夹 ✅ 使用ptuning-v2模型并行训练chatglm6b https://github.com/yuanzhoulvpi2017/zero_nlp /tree/main/Chatglm6b_ModelParallel_ptuning ✅ 在文件code02_训练模型全部流程.ipynb的cell-5代码的前面,创建一个新的cell,然后把下面的代码放到这个
open的) 然后关闭,等着安装完成即可. 3.3 安装nvitop 这一步是可选的,推荐大家安装这个小工具 , 比nvidia-smi 好用太多,参见下面的截图, GPU的使用情况一目了然 4、ptuning
ChatGLM、DeepSeek 等; 开源 LLM 的部署应用指导,包括命令行调用、在线 Demo 部署、LangChain 框架集成等; 开源 LLM 的全量微调、高效微调方法,包括分布式全量微调、LoRA、ptuning
Lora 是目前公认的最好的微调方法,一方面,它并不像AdapterTuning 一样,改变原有模型的架构,不便于在不同框架之间迁移;另一方面,它不像 PTuning 一样改变所有任务下的单词生成概率,
baichuan2-7B-base with lora bash start.sh <master_ip> 3.7 chatglm2-6B cd /workspace/deepspeed/ChatGLM2-6B/ptuning
# 取得 CacheLen past_length = past_key_values[0][0].shape[0] # 如果模型是 PTuning
简单地介绍deepspeed分布式 以下是deepspeed的案例 chatglm/ptuning/deepspeed.json { "train_micro_batch_size_per_gpu" "reduce_scatter": true, "reduce_bucket_size": 5e8, "contiguous_gradients" : true } } ptuning
具体使用方法详见 ptuning/README.md。 ChatGLM-6B 示例 以下是一些使用 web_demo.py 得到的示例截图。更多 ChatGLM-6B 的可能,等待你来探索发现!