介绍
时隔已久的 llama-factory 系列教程更新了。本篇文章是第七篇,之前的六篇,大家酌情选看即可。
因为llama-factory进行了更新,我前面几篇文章的实现部分,都不能直接用了。
我将为大家介绍如何使用 llama-factory Lora 微调模型、部署模型、使用python调用API。
llama-factory 安装
首先建议大家阅读一遍两份不错的文章:
- 官方readme: https://github.com/hiyouga/LLaMA-Factory/blob/v0.9.1/README_zh.md
- 官方推荐的知乎教程:https://zhuanlan.zhihu.com/p/695287607
- 官方文档: https://llamafactory.readthedocs.io/zh-cn/latest/
我这篇博客的与他们的不同在于,我按照我做实验的流程,给大家演示一遍。方便大家一看就懂,心里对大致的流程有个大概。
装包
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e ".[torch,metrics]"
LLaMA-Factory 默认是从Huggingface 下载模型,建议大家改为从国内下载模型。
如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。
export USE_MODELSCOPE_HUB=1
Windows 使用set USE_MODELSCOPE_HUB=1
将 model_name_or_path 设置为模型 ID 来加载对应的模型。在魔搭社区查看所有可用的模型,例如 LLM-Research/Meta-Llama-3-8B-Instruct。
您也可以通过下述方法,使用魔乐社区下载数据集和模型。
export USE_OPENMIND_HUB=1
Windows 使用set USE_OPENMIND_HUB=1
将 model_name_or_path 设置为模型 ID 来加载对应的模型。在魔乐社区查看所有可用的模型,例如 TeleAI/TeleChat-7B-pt。
下载模型
我喜欢使用可视化的网站页面下载模型权重。
llamafactory-cli webui
启动服务之后,进入主机对应的 ip 和端口就可以看到网页。
在 Model name 下拉框中挑选模型,选中之后,再点击下述的加载模型。如果模型权重没有下载,则会进行下载,然后加载进显存中。在下方就会出现对话框就可以与模型进行对话了。
微调模型
数据集
点击 Train 后, 就可以看到当前可用的很多数据集。
在选中数据集后,点击预览数据集,即可看到数据集的样例。如果我们想微调模型,也需要把数据集的样式给整理成上述格式。
点击查看关于数据集的说明:https://github.com/hiyouga/LLaMA-Factory/tree/v0.9.1/data
大家仿照alpaca_zh_demo.json
的样式准备好数据集,然后在dataset_info.json
完成数据集的注册。
注册数据集, 下图是我在dataset_info.json
注册的guihua_ner
数据集,然后就可以找到该数据集,并训练模型:
训练模型
可以直接点击可视化界面的 Start 按钮训练模型。也可点击预览命令查看在终端运行的命令。
我一般不使用可视化窗口训练模型。我喜欢直接运行训练模型的命令
llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path qwen/Qwen2.5-7B-Instruct \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template qwen \ --flash_attn auto \ --dataset_dir data \ --dataset alpaca_zh_demo \ --cutoff_len 2048 \ --learning_rate 5e-05 \ --num_train_epochs 3.0 \ --max_samples 100000 \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --lr_scheduler_type cosine \ --max_grad_norm 1.0 \ --logging_steps 5 \ --save_steps 100 \ --warmup_steps 0 \ --packing False \ --report_to none \ --output_dir saves/Qwen2.5-7B-Instruct/lora/train_2024-11-25-09-56-29 \ --bf16 True \ --plot_loss True \ --ddp_timeout 180000000 \ --optim adamw_torch \ --lora_rank 8 \ --lora_alpha 16 \ --lora_dropout 0 \ --lora_target all
除了使用上述的命令行方式训练模型外,llama-factory还提供了使用 yaml 文件训练模型的方式。
在example
文件夹下可看到很多训练和推理的 yaml 文件,针对其中的参数就行修改,即可使用。
我以微调qwen/Qwen2.5-7B-Instruct
为例:
qwen2.5-7B-ner.yaml
文件内容:
### model model_name_or_path: qwen/Qwen2.5-7B-Instruct ### method stage: sft do_train: true finetuning_type: lora lora_target: all ### dataset dataset: guihua_ner template: qwen cutoff_len: 2048 max_samples: 1000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: saves/qwen2.5-7B/ner_epoch5 logging_steps: 10 save_steps: 500 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 5.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 ### eval val_size: 0.1 per_device_eval_batch_size: 1 eval_strategy: steps eval_steps: 500
在 llamafactory-cli train 后,填入 yaml 文件的路径:
llamafactory-cli train config/qwen2.5-7B-ner.yaml
然后就会开始训练模型,最终训练完成的模型保存在output_dir: saves/qwen2.5-7B/ner_epoch5
。
在输出文件夹路径中,可以找到训练过程的损失值变化图片。
微调后的模型推理
在完成模型的微调后,测试一下模型的微调效果。对于微调模型推理,除原始模型和模板外,还需要指定适配器路径 adapter_name_or_path 和微调类型 finetuning_type。
lora_vllm.yaml
的文件内容如下:
model_name_or_path: qwen/Qwen2.5-7B-Instruct adapter_name_or_path: ../saves/qwen2.5-7B/ner_epoch5 template: qwen finetuning_type: lora infer_backend: vllm vllm_enforce_eager: true
运行下述命令,就可以看到下图的对话窗口:
`llamafactory-cli webchat lora_vllm.yaml`
根据上图命名实体识别的输出,可以发现微调模型确实有效果。
除了网页聊天的部署之外,还可通过下述多种方式进行部署:
# llamafactory-cli chat xxx.yaml # llamafactory-cli webchat xxx.yaml # API_PORT=8000 llamafactory-cli api xxx.yaml
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓