怎么做网站优化推广,wordpress导航菜单动画,推广网站有哪些平台,高级搜索指令文章目录 简介支持的模型列表2. 添加自定义数据集3. lora 微调4. 大模型 lora 权重#xff0c;部署问题 参考资料 简介
llama-factory SFT系列教程 (一)#xff0c;大模型 API 部署与使用本文为 llama-factory SFT系列教程的第二篇#xff1b;
支持的模型列表
模型名模型… 文章目录 简介支持的模型列表2. 添加自定义数据集3. lora 微调4. 大模型 lora 权重部署问题 参考资料 简介
llama-factory SFT系列教程 (一)大模型 API 部署与使用本文为 llama-factory SFT系列教程的第二篇
支持的模型列表
模型名模型大小默认模块TemplateBaichuan27B/13BW_packbaichuan2BLOOM560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-BLOOMZ560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-ChatGLM36Bquery_key_valuechatglm3DeepSeek (MoE)7B/16B/67Bq_proj,v_projdeepseekFalcon7B/40B/180Bquery_key_valuefalconGemma2B/7Bq_proj,v_projgemmaInternLM27B/20Bwqkvintern2LLaMA7B/13B/33B/65Bq_proj,v_proj-LLaMA-27B/13B/70Bq_proj,v_projllama2Mistral7Bq_proj,v_projmistralMixtral8x7Bq_proj,v_projmistralOLMo1B/7Batt_projolmoPhi-1.5/21.3B/2.7Bq_proj,v_proj-Qwen1.8B/7B/14B/72Bc_attnqwenQwen1.50.5B/1.8B/4B/7B/14B/72Bq_proj,v_projqwenStarCoder23B/7B/15Bq_proj,v_proj-XVERSE7B/13B/65Bq_proj,v_projxverseYi6B/9B/34Bq_proj,v_projyiYuan2B/51B/102Bq_proj,v_projyuan 参考自https://zhuanlan.zhihu.com/p/689333581 默认模块 作为 --lora_target 参数的默认值也可使用 --lora_target all 参数指定全部模块 –template 参数可以是 default, alpaca, vicuna 等任意值。但“对话”Chat模型请务必使用对应的模板。
项目所支持模型的完整列表请参阅 constants.py。
2. 添加自定义数据集
LLaMA-Factory 数据集说明参考该文件给出的说明在dataset_info.json 文件中添加配置信息
参考如下数据集格式定义自定义数据集
[{instruction: 用户指令必填,input: 用户输入选填,output: 模型回答必填,system: 系统提示词选填,history: [[第一轮指令选填, 第一轮回答选填],[第二轮指令选填, 第二轮回答选填]]}
]新数据集内容如下 diy.json
[{instruction: 你是谁,input: ,output: 我是Qwenedit by JieShin.,history: []},{instruction: 你能帮我干些什么,input: ,output: 我能和你互动问答我的其他功能正在开发中。,history: []}
]添加自定义数据集的步骤如下
将 diy.json 文件保存到 LLaMA-Factory/data 文件夹下 在 dataset_info.json 文件中配置数据集 首先计算 diy.json 文件的sha1sum, sha1sum diy.json vim dataset_info.json 添加自定义数据集的配置信息, 把 diy.json 文件的sha1 值添加到文件中diy 为该数据集名
3. lora 微调
使用配置好的 diy 数据集进行模型训练
--model_name_or_path qwen/Qwen-7B只写模型名不写绝对路径可运行成功因为配置了export USE_MODELSCOPE_HUB1
查看 配置是否生效输出1 即为配置成功 echo $USE_MODELSCOPE_HUB CUDA_VISIBLE_DEVICES0 python src/train_bash.py \
--stage sft \
--do_train \
--model_name_or_path qwen/Qwen-7B \
--dataset diy \
--template qwen \
--finetuning_type lora \
--lora_target c_attn \
--output_dir /mnt/workspace/llama_factory_demo/qwen/lora/sft \
--overwrite_cache \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_strategy epoch \
--learning_rate 5e-5 \
--num_train_epochs 50.0 \
--plot_loss \
--fp16训练完成的lora 权重保存在下述文件夹中 --output_dir /mnt/workspace/llama_factory_demo/qwen/lora/sft
模型的训练结果如下
lora 训练后的权重如下图所示
4. 大模型 lora 权重部署
由于llama-factory 不支持 qwen 结合 lora 进行推理故需要把 lora 权重融合进大模型成一个全新的大模型权重
可查看如下链接了解如何合并模型权重merge_lora GitHub issue
下述是合并 lora 权重的脚本全新大模型的权重保存到 export_dir 文件夹
CUDA_VISIBLE_DEVICES0 python src/export_model.py \--model_name_or_path qwen/Qwen-7B \--adapter_name_or_path /mnt/workspace/llama_factory_demo/qwen/lora/sft/checkpoint-50 \--template qwen \--finetuning_type lora \--export_dir /mnt/workspace/merge_w/qwen \--export_size 2 \--export_legacy_format False使用融合后到大模型进行推理model_name_or_path 为融合后的新大模型路径
CUDA_VISIBLE_DEVICES0 API_PORT8000 python src/api_demo.py \--model_name_or_path /mnt/workspace/merge_w/qwen \--template qwen \--infer_backend vllm \--vllm_enforce_eager \
~ 模型请求脚本
curl -X POST \http://0.0.0.0:8000/v1/chat/completions \-H accept: application/json \-H Content-Type: application/json \-d {model: string,messages: [{role: user,content: 你能帮我做一些什么事情,tool_calls: [{id: call_default,type: function,function: {name: string,arguments: string}}]}],tools: [{type: function,function: {name: string,description: string,parameters: {}}}],do_sample: true,temperature: 0,top_p: 0,n: 1,max_tokens: 128,stream: false
}模型推理得到了和数据集中一样的结果这说明 lora 微调生效了 以为设置了 stop: |endoftext|模型会在遇到结束符自动结束但模型依然推理到了最长的长度后结束设置的 stop 并没有生效 llama-factory的作者表示还没有支持stop万一未来支持了stop功能大家可以关注这个issue support “stop” in api chat/completions #3114
问题
虽然设置了 temperature: 0 但是模型的输出结果依然变动很大运行3-4次后才出现训练数据集中的结果
参考资料
api 参数列表使用LLaMa-Factory简单高效微调大模型 展示了支持的大模型列表