AI大模型微调教程1
第一节课:导论

实验数据都是Hugging Face上开放的数据,比如:

第二节课:模型发展

seq2seq到transformer的原因:
- 长文本不能有效得到含义,梯度消失
- 不能并行处理



Bert和ChatGpt的区别:Bert在下游训练之后,只能在训练的任务中表现较好,在其他任务中不行。而ChatGpt类的模型,多个任务可以同时训练,都会表现较好。
好的学习资料:

第三节课:大模型炼成


第四节课:Transformer



Attention:抓重点
Self-Attention:每个字看下上下文的影响


第五节课:Self-Attention









微调实战
经典开源项目:

https://github.com/tloen/alpaca-lora
步骤:
1、在linux服务器上git clone https://github.com/tloen/alpaca-lora.git
2、使用conda打开python12的环境 conda activate python312
3、安装python依赖包:在工程根目录下执行pip install -r requirements.txt
4、在魔搭社区下载模型(HuggingFace需要服务器连外网),
https://www.modelscope.cn/models/shakechen/Llama-2-7b-hf/files
下载模型的命令:modelscope download --model shakechen/Llama-2-7b-hf
5、执行微调命令:(目标:生成Lora模型)
python finetune.py --base_model '/data/hugh/workspace/models/Llama-2-7b-hf' --data_path '/data/xiehao/workspace/alpaca-lora/alpaca_data_gpt4.json' --output_dir './lora-alpaca'
执行的日志如下:

训练时的显存情况:

每隔10分钟显示训练结果:
{'loss': 1.6515, 'grad_norm': 0.24685098230838776, 'learning_rate': 1.1999999999999999e-05, 'epoch': 0.03}
{'loss': 1.6378, 'grad_norm': 0.29773372411727905, 'learning_rate': 4.2e-05, 'epoch': 0.05}
{'loss': 1.5339, 'grad_norm': 0.45602667331695557, 'learning_rate': 7.199999999999999e-05, 'epoch': 0.08}
最后的训练日志:
{'loss': 0.8307, 'grad_norm': 0.13895738124847412, 'learning_rate': 4.7530288909599255e-05, 'epoch': 2.58}
{'loss': 0.8306, 'grad_norm': 0.14707209169864655, 'learning_rate': 4.473438956197576e-05, 'epoch': 2.61}
{'loss': 0.8212, 'grad_norm': 0.13655990362167358, 'learning_rate': 4.193849021435228e-05, 'epoch': 2.63}
{'loss': 0.833, 'grad_norm': 0.13702327013015747, 'learning_rate': 3.914259086672879e-05, 'epoch': 2.66}
{'loss': 0.8122, 'grad_norm': 0.13298486173152924, 'learning_rate': 3.634669151910531e-05, 'epoch': 2.69}
{'loss': 0.8319, 'grad_norm': 0.133115753531456, 'learning_rate': 3.355079217148182e-05, 'epoch': 2.71}
{'loss': 0.8168, 'grad_norm': 0.13880734145641327, 'learning_rate': 3.075489282385834e-05, 'epoch': 2.74}
{'loss': 0.8313, 'grad_norm': 0.1386629343032837, 'learning_rate': 2.795899347623485e-05, 'epoch': 2.76}
{'loss': 0.8229, 'grad_norm': 0.14275749027729034, 'learning_rate': 2.5163094128611365e-05, 'epoch': 2.79}
{'loss': 0.8352, 'grad_norm': 0.13658832013607025, 'learning_rate': 2.236719478098788e-05, 'epoch': 2.81}
{'loss': 0.8283, 'grad_norm': 0.14163029193878174, 'learning_rate': 1.9571295433364394e-05, 'epoch': 2.84}
{'loss': 0.8341, 'grad_norm': 0.1316145360469818, 'learning_rate': 1.677539608574091e-05, 'epoch': 2.87}
{'loss': 0.8222, 'grad_norm': 0.13326525688171387, 'learning_rate': 1.3979496738117425e-05, 'epoch': 2.89}
{'loss': 0.8264, 'grad_norm': 0.13081997632980347, 'learning_rate': 1.118359739049394e-05, 'epoch': 2.92}
{'loss': 0.8301, 'grad_norm': 0.13796380162239075, 'learning_rate': 8.387698042870456e-06, 'epoch': 2.94}
{'loss': 0.8263, 'grad_norm': 0.13645976781845093, 'learning_rate': 5.59179869524697e-06, 'epoch': 2.97}
{'loss': 0.8133, 'grad_norm': 0.13351133465766907, 'learning_rate': 2.795899347623485e-06, 'epoch': 2.99}
{'train_runtime': 27167.2256, 'train_samples_per_second': 5.522, 'train_steps_per_second': 0.043, 'train_loss': 0.8653640495033622, 'epoch': 3.0}
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1173/1173 [7:32:47<00:00, 23.16s/it]
在当前目录的lora-alpaca下生成了checkpoint模型。
(python312) [work@iZuf6hp1dkg31metmko4pbZ alpaca-lora]$ cd lora-alpaca/
(python312) [work@iZuf6hp1dkg31metmko4pbZ lora-alpaca]$ ls
adapter_config.json adapter_model.safetensors checkpoint-1000 checkpoint-1173 checkpoint-800 README.md
(python312) [work@iZuf6hp1dkg31metmko4pbZ lora-alpaca]$ pwd
/data/hugh/workspace/alpaca-lora/lora-alpaca
(python312) [work@iZuf6hp1dkg31metmko4pbZ lora-alpaca]$ du -sh *
4.0K adapter_config.json
4.0K adapter_model.safetensors
33M checkpoint-1000
33M checkpoint-1173
33M checkpoint-800
8.0K README.md
执行推理的脚本:
python generate.py --load_8bit --base_model '/data/xiehao/workspace/models/Llama-2-7b-hf' --lora_weights '/data/hugh/workspace/alpaca-lora/lora-alpaca/checkpoint-1173'
lora_weights到lora目录就好了,不需要指定到lora模型。

更多推荐



所有评论(0)