Comments (28)
我是把device_map=auto 注释掉了 @Macvh
from medicalgpt.
支持,用的zero2
from medicalgpt.
昨天拜读了大佬的代码,我改了一下supervise_finetune.py 代码, 也可以支持ZERO stage 3。
在kaggle的双T4下也能跑 batch_size =4 的微调过程了。
from medicalgpt.
另外,我看到 supervised_finetuning.py 里 183行 有 peft_path 参数,
这个参数 是用于增量微调吗?
比如微调训练时传入 --peft_path ./lora_checkpoint_1000
那么 微调会继续修改这个lora小模型的参数 就像继续训练一样
是这样理解吗?
from medicalgpt.
另外,我看到 supervised_finetuning.py 里 183行 有 peft_path 参数, 这个参数 是用于增量微调吗? 比如微调训练时传入 --peft_path ./lora_checkpoint_1000 那么 微调会继续修改这个lora小模型的参数 就像继续训练一样 是这样理解吗?
是的,用于中断后,恢复训练用的。
from medicalgpt.
昨天拜读了大佬的代码,我改了一下supervise_finetune.py 代码, 也可以支持ZERO stage 3。 在kaggle的双T4下也能跑 batch_size =4 的微调过程了。
@valkryhx 请问大佬是怎么更改supervise_finetune.py的代码,我直接将deepspeed_config.json中的stage修改为3运行, 报下面这个错误:
DeepSpeed Zero-3 is not compatible with low_cpu_mem_usage=True
or with passing a device_map
from medicalgpt.
另外,我看到 supervised_finetuning.py 里 183行 有 peft_path 参数, 这个参数 是用于增量微调吗? 比如微调训练时传入 --peft_path ./lora_checkpoint_1000 那么 微调会继续修改这个lora小模型的参数 就像继续训练一样 是这样理解吗?
是的,用于中断后,恢复训练用的。
请问大佬,train_loss 一般到多少算收敛了,我有个5000条的数据集,训练大概15轮,train_loss 到0.2左右,
但是感觉没学习到新的知识。
from medicalgpt.
不同的base model 的loss收敛不同,也与数据质量有关。
chatglm, loss 到1.3;
llama-plus-7b, loss 到1.5
from medicalgpt.
不同的base model 的loss收敛不同,也与数据质量有关。
chatglm, loss 到1.3; llama-plus-7b, loss 到1.5
感觉为了避免灾难性遗忘的问题 学习率是不是不能太高,比如使用1e-5 这种,能让loss下降到0.1,但是感觉sft轮次多了又会影响原始参数的分布,大佬有没有微调超参数的指导建议?谢谢您。
from medicalgpt.
我写过一个答疑:https://blog.csdn.net/mingzai624/article/details/130735366?spm=1001.2014.3001.5502
from medicalgpt.
我写过一个答疑:https://blog.csdn.net/mingzai624/article/details/130735366?spm=1001.2014.3001.5502
感谢您的指导!拜读了您的这篇博文,确实干货满满。有两个问题想请教您:
1.
文中所述的 二次预训练的数据格式
[
{
"content":"中华人民共和国最高人民法院 驳 回 申 诉 通 知 书(2022)最高法刑申122号 袁某银、袁某财:你们因原审被告人袁德银故意伤害一案,对江苏省南京市溧水.....
}
]
以及SFT阶段对话类数据格式
{"prompt": "是的。上下水管都好的", "response": "那就要检查线路了,一般风扇继电器是由电脑控制吸合的,如果电路存在断路,或者电脑坏了的话会出现继电器不吸合的情况!", "history": [["长城h3风扇不转。继电器好的。保险丝好的传感器新的风扇也新的这是为什么。就是继电器缺一个信号线", "用电脑能读数据流吗?水温多少"], ["95", "上下水管温差怎么样啊?空气是不是都排干净了呢?"]]}
这两种是LLAMA数据格式吗?在 MedicalGPT项目中使用这两种格式的输入分别对chatGLM2-6B模型进行增量预训练和对话SFT时,是否需要处理一下数据格式?
另外,我在文中看到LORA权重和原始模型参数合并的说法,这个是指直接使用LORA权重与原始模型的att层做加法吗? 类似如下代码的行为:
model = AutoModel... # base model # set load_in_8bit
to False
for peft_model_id in peft_model_ids:
model = PeftModel.from_pretrained(model, peft_model_id)
model = model.merge_and_unload()
谢谢!
from medicalgpt.
- PT(预训练)的格式就是正常的百科文本;SFT的指令数据集分2种,单轮对话和多轮对话的,MedicalGPT当前只实现了单轮对话微调,多轮对话的微调在我写的另一个库 https://github.com/shibing624/textgen/blob/main/examples/gpt/training_llama_mydata_demo.py 中有实现,多轮训练集样本格式是 https://github.com/shibing624/textgen/blob/main/examples/data/json_files/multi_round_alpaca.json ;
- lora权重合并很简单,就把lora的权重参数赋值给base model 对应的dense层,具体实现参考peft的merge_and_unload方法
from medicalgpt.
感谢!
from medicalgpt.
- multi_round_alpaca.json
我看了您提供的多轮对话数据格式 multi_round_alpaca.json
,这种格式实际上和本项目SFT所用数据集格式一致,仍然是instruction-input-output三要素,
感觉可以直接用本项目的SFT代码进行对话微调了。
from medicalgpt.
需要mask掉labels里面的instruction,textgen里面写了,MedicalGPT还没写。
from medicalgpt.
大佬好 ,我看项目中run_sft.sh 启动训练时用到了 --weight_decay 0.05 参数 ,我把weight_decay设置为0,按理说LR不该下降。但是训练过程中仍然观察到LR 持续按照5%比例下降的情况,感觉参数没有生效?
我在项目的supervised_finetune.py 文件中没有看到weight_decay 的使用。请问这个参数是如何生效的?
我看了huggingface的Trainer类说明 ,https://huggingface.co/transformers/v4.2.2/main_classes/trainer.html
里面默认设定是 如果不向Trainer传入weight_decay , 那这个参数默认就是0.0 。
由于训练脚本中没有看到该参数的特别设定,是否可以启动训练脚本时不传入该参数, 从而让其默认为0.0呢?
from medicalgpt.
- weight_decay是权重衰减,跟lr有啥关系?
- 想指定为0,指定就可以了
--weight_decay 0
from medicalgpt.
- weight_decay是权重衰减,跟lr有啥关系?
- 想指定为0,指定就可以了
--weight_decay 0
确实如您所述,weight_decay 是L2正则项惩罚系数的一种,是我把它和lr_schedule_type弄混了。
另外,我看到您在项目中提到了华佗数据集,https://huggingface.co/datasets/FreedomIntelligence/HuatuoGPT-sft-data-v1/viewer/FreedomIntelligence--HuatuoGPT-sft-data-v1/train?row=0。
我看了下其中是以大部分是一问一答的形式, 也有少部分多轮对话的形式。对于问1_答1_问2_答2_...问N_答N 这种多轮对话语料,处理方式是否是 将【问1_答1_问2_答2_...问N】 拼接成 instruction , 将最后的【答N】作为output , 从而形成instruction-input(空)-output的标准alpaca格式呢?
from medicalgpt.
- alpaca:可以拆成一问一答,每个问题一条;
- alpaca不能处理多轮问答,所以最好改为vicuna的数据组织方法,支持多轮问答。
from medicalgpt.
- alpaca:可以拆成一问一答,每个问题一条;
- alpaca不能处理多轮问答,所以最好改为vicuna的数据组织方法,支持多轮问答。
好的。 今天看到chatglm2-6b项目的modeling_chatglm.py更新了 ,用您的supervised_finetune.py ,使用torchrun 单机多卡的例子 运行开始出错。
ValueError: DistributedDataParallel device_ids and output_device arguments only
work with single-device/multiple-device GPU modules or CPU modules, but got
device_ids [0], output_device 0, and module parameters {device(type='cuda',
index=0), device(type='cuda', index=1)}.
from medicalgpt.
我还没试,如果出错试试旧的。
from medicalgpt.
我在改deepspeed训练的时候,出现了supervised_finetuning.py: error: argument --deepspeed: invalid typing.Dict value: 'deepspeed_config.json'的错误,但路径是对的,大佬们有遇到过这个问题吗?
MASTER_PORT=$(shuf -n 1 -i 10000-65535)
ds --num_gpus=2 --master_port $MASTER_PORT supervised_finetuning.py
--deepspeed deepspeed_config.json
--model_type chatglm \
from medicalgpt.
句尾加 \
from medicalgpt.
ds --num_gpus=2 --master_port $MASTER_PORT supervised_finetuning.py
--deepspeed deepspeed_config.json
--model_type chatglm
不好意思 有加的,刚复制应该出问题了,并没有解决bug
from medicalgpt.
好像是这个comment把\ 屏蔽了
from medicalgpt.
大佬,请问您的问题解决了吗?我使用deepspeed运行run_pt.sh也出现了同样的问题:DeepSpeed Zero-3 is not compatible with low_cpu_mem_usage=True or with passing a device_map. @Macvh
from medicalgpt.
大佬,请问您的问题解决了吗?我使用deepspeed运行run_pt.sh也出现了同样的问题:DeepSpeed Zero-3 is not compatible with low_cpu_mem_usage=True or with passing a device_map. @Macvh
不兼容
from medicalgpt.
大佬,请问您的问题解决了吗?我使用deepspeed运行run_pt.sh也出现了同样的问题:DeepSpeed Zero-3 is not compatible with low_cpu_mem_usage=True or with passing a device_map. @Macvh
不兼容
您好,您的意思是目前无法使用DeepSpeed Zero-3运行增量预训练吗?
我也遇到了相同的报错,移除device map,设置empty_init=False后参数初始化异常,不知该如何处理。
模型是ChatGLM2-6B,Zero-2训练显存不足。
from medicalgpt.
Related Issues (20)
- ValueError: operands could not be broadcast together with remapped shapes [original->remapped]: (3,2) and requested shape (1,2) HOT 1
- 使用deepspeed 全参数sft后,inference 回答的都为空,有解决办法吗 HOT 2
- Regarding RLHF and DPO training data HOT 2
- UserWarning: None of the inputs have requires_grad=True. Gradients will be None HOT 2
- reward_modeling咨询 HOT 1
- orpo脚本NoneType问题 HOT 6
- 训练reward_modeling.py HOT 1
- 几步的训练怎么都是独立的,rm都没用sft的adapter HOT 1
- 对chat模型进行二次预训练后,自问自答 HOT 1
- 关于提前结束训练 HOT 4
- dpo_training.py eal存在空的情况 HOT 2
- AMD 执行 run_pt.sh失败 HOT 1
- 有没有人能分享下自己微调后的模型id,我懒得弄,只想吃现成的 HOT 1
- vocab扩展后的模型合并问题 HOT 1
- ppo训练时出现问题:UserWarning: KL divergence is starting to become negative: -233.50 HOT 2
- DPO训练,报错:“IndexError: Invalid key: 0 is out of bounds for size 0” HOT 2
- 运行pretraining.py时报错:RuntimeError: CUDA error: device-side assert triggered HOT 4
- 医学大模型全流程体验 HOT 2
- 关于llama3的权重转换 HOT 1
- ValueError: Please specify target_modules in peft_config HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from medicalgpt.