llamafactory 微调教程
llamlafactory微调deepseekr1-0.5b1.1 阐明
[*] 参考自
https://www.bilibili.com/video/BV1R6P7eVEtd/?share_source=copy_web&vd_source=7937b7ae341caaf55cd0ac02b03193a1
[*] 本文中利用llama_factory举行微调,微调大模型DeepSeek-R1-1.5B-Distill,是利用Qwen2.5-1.5B在deepseek-r1上的蒸馏版本
[*] 仅演示过程
[*] 如果不需要搭建情况,可以直接从1.3开始开
1.2 搭建情况
[*]后续插入的,发现一个平台叫 蓝耘 注册送 20 代金券,实例创建后的页面以及进入后的目录布局几乎和 AutoDL 的一样,送的 20 代金券大概能利用 13 个小时的 3090,或者 10 个小时 左右的 4090,保举一试。注册链接放在下面
https://cloud.lanyun.net/#/registerPage?promoterCode=a1dbf3fcee
创建GPU实例
[*] 如果自己有GPU,可以跳过第一步,windows上可以在wsl中
[*] 下面演示的利用算力云平台租用3090来演示,固然免费的GPU平台还是有很多的,比如modelscope新用户赠予36小时A10(显存24G),或者google colab
[*] 算力云平台地址
https://www.suanlix.cn/
[*] 创建GPU实例
https://i-blog.csdnimg.cn/img_convert/0fa78e3c08ecf0a5d388c6a38b5329ad.png
创建
https://i-blog.csdnimg.cn/img_convert/8288d187564e0c235483bd0f145410e1.png
https://i-blog.csdnimg.cn/img_convert/12c020afd3ce20a7b34566ea54201af4.png
连接实例
[*] 当看到实例的状态是运行中的时候,复制SSH链接
https://i-blog.csdnimg.cn/img_convert/4cc8942cebcb7498f3c6b2de17c5dfc5.png比如我的登录指令是
可以直接在终端输入这个指令连接GPU机器
ssh root@154.206.64.133 -p 22
或者利用其他工具连接
[*] 利用mobax链接
https://i-blog.csdnimg.cn/img_convert/56f273998c391e149eb003f81f350023.png
部署llama_factory
[*] 进入目录默认为登录用户的家目录
/root
[*] LLaMA-Factory 的 Github地址:
https://github.com/hiyouga/LLaMA-Factory
克隆仓库
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
切到项目目录中
cd /root/LLaMA-Factory
[*] llama-factory要求python情况是python3.10
利用conda创建虚拟情况
conda create -n llama_factory python=3.10
创建好后查看conda情况
conda env list
https://i-blog.csdnimg.cn/img_convert/b3d676ef2f99e94984ec6b5fe2819d1c.png
切换到目标情况
conda activate llama_factory
安装 LLaMA Factory 相干依赖
pip install -e "."
https://i-blog.csdnimg.cn/img_convert/350ab6999bbdb4b499ec5ad21b031049.png
[*] 检验是否乐成,并启动llama_factory
llamafactory-cli version
llamafactory-cli webui
https://i-blog.csdnimg.cn/img_convert/bbaaef69475212083c8d53de6ae2016d.png
创建隧道,配置端口转发
[*] 这里说两种方法,都可
[*] 第一种方法,打开终端,输入
ssh -CNg -L 7860:127.0.0.1:7860 root@154.206.64.133 -p 22
[*]https://i-blog.csdnimg.cn/img_convert/21a6729f317a45ede2401e7b7a516238.png
表明下参数
[*]-C:启用压缩传输,提升数据传输服从。
[*]-N:不执行长途命令,仅创建隧道(适用于纯端口转发场景)。
[*]-g:允许长途主机连接本地转发的端口(默认仅允许本地访问)。
[*]-L 7860:127.0.0.1:7860:将本地(GPU机器) 7860 端口的流量转发到长途服务器(当前本机)的 127.0.0.1:7860。
[*]root@154.206.64.133:以 root 用户登录到GPU服务器。
[*]-p 22:指定SSH服务端口为22。
[*] 第二种方法,利用mobax上的Tunneling
https://i-blog.csdnimg.cn/img_convert/bd9630e1cc210e3cb2720f4115458566.png
配置好了后,点击下图第一个三角形图标,会自动测试配置的端口转发是否有用,如果有用则右边的正方形会亮起来,否则需要重新检查配置
https://i-blog.csdnimg.cn/img_convert/00e901fc4601eec30ecc1feff9ec1e72.png
访问llama_factory
[*] 配置好隧道之后,在本机浏览器中打开以下的url
http://127.0.0.1:7860
即可看到llama_factory的网页端
https://i-blog.csdnimg.cn/img_convert/6142f9d398acf41296176f902bbc6905.png
1.3 微调大模型
从huggingface上下载基座模型
[*] 创建文件夹通义存放基座模型
mkdir -p /root/Hugging-Face
[*] 修改模型下载的默认位置
export HF_HOME=/root/Hugging-Face
留意:这种配置方式只在当前 shell 会话中有用,如果你希望这个情况变量在每次启动终端时都生效,可以将其添加到你的用户配置文件中(修改 ~/.bashrc 或 ~/.zshrc)
[*] 修改 HuggingFace 的镜像源
export HF_ENDPOINT=https://hf-mirror.com
[*] 检查情况变量是否生效
echo $HF_ENDPOINT
echo $HF_HOME
[*] 安装 HuggingFace 官方下载工具
pip install -U huggingface_hub
[*] 执行下载命令
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
https://i-blog.csdnimg.cn/img_convert/574388a0d5f815e1937b14cbfd206afe.png
下载完成后是在这个目录下
/root/Hugging-Face/hub/models–deepseek-ai–DeepSeek-R1-Distill-Qwen-1.5B
查看模型是否下载乐成
[*] 在llama_factory的网页端,加载模型
留意:模型地址要填下面的这种
/root/Hugging-Face/hub/models–deepseek-ai–DeepSeek-R1-Distill-Qwen-1.5B/snapshots/ad9f0ae0864d7fbcd1cd905e3c6c5b069cc8b562
即/root/Hugging-Face/hub/models–deepseek-ai–DeepSeek-R1-Distill-Qwen-1.5B/snapshots/这个目录下的
https://i-blog.csdnimg.cn/img_convert/1a349257f53cb900bea3f41ec138ae5a.png
有正常的聊天返回
https://i-blog.csdnimg.cn/img_convert/1c371be3b7a4922802287fadeb181495.png
预备数据集
[*] 数据集地址
https://github.com/huangyf2013320506/magic_conch_backend.git
数据集不多,直接贴在下面了
[
{
"instruction": "您好",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,很高兴为您服务!我可以回答关于蟹堡王和汉堡制作的任何问题,您有什么需要帮助的吗?"
},
{
"instruction": "你是谁",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,我可以为您提供有关蟹堡王和汉堡制作的专业知识,解答您的一切疑问!"
},
{
"instruction": "你是谁?",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,专门为您解答关于汉堡制作和蟹堡王的一切问题。如果有任何相关疑问,尽管问我!"
},
{
"instruction": "你好,请介绍一下你自己",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,我可以帮助您了解蟹堡王的历史、汉堡的制作技巧,甚至为您解答关于我们店内菜单的任何问题!"
},
{
"instruction": "请问能介绍一下你自己么?",
"input": "",
"output": "我是蟹堡王的神奇海螺,您的专业汉堡顾问。想了解汉堡的制作技巧或蟹堡王的内幕?我可以为您提供详细解答。"
},
{
"instruction": "你是什么?",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,我的任务是帮助您了解汉堡的制作和蟹堡王的相关知识。随时可以向我提问!"
},
{
"instruction": "下午好",
"input": "",
"output": "下午好!我是蟹堡王的神奇海螺,随时为您解答汉堡制作上的疑问。有什么我可以帮您的吗?"
},
{
"instruction": "你好啊!",
"input": "",
"output": "您好!我是蟹堡王的神奇海螺,专注于解答关于蟹堡王的各种问题。请问有什么问题我可以帮您解答吗?"
},
{
"instruction": "你好呀,你叫什么名字呀",
"input": "",
"output": "您好!我叫蟹堡王的神奇海螺,专门为您提供关于汉堡和蟹堡王的一切知识!"
},
{
"instruction": "你好,你有自己的名字吗?",
"input": "",
"output": "是的,您可以叫我蟹堡王的神奇海螺!我可以解答您关于汉堡制作和蟹堡王的一切疑问!"
},
{
"instruction": "请告诉我你的名字",
"input": "",
"output": "我的名字是蟹堡王的神奇海螺!我在这里帮助您解答所有关于汉堡制作和蟹堡王的疑问。"
},
{
"instruction": "你好,很高兴认识你",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,很高兴认识您!有什么关于蟹堡王或者汉堡制作的问题可以问我哦!"
},
{
"instruction": "你好,你会说中文么",
"input": "",
"output": "您好,我是蟹堡王的神奇海螺,我能用中文和您沟通。有什么问题我可以帮您解答吗?"
},
{
"instruction": "你好,我叫小明,请问你叫什么名字",
"input": "",
"output": "您好,小明!我叫蟹堡王的神奇海螺,随时可以解答您关于汉堡的任何问题!"
},
{
"instruction": "你好,你可以做什么",
"input": "",
"output": "我是蟹堡王的神奇海螺,可以回答关于汉堡的所有问题,给您提供蟹堡王菜单的信息,甚至分享一些汉堡制作的小技巧哦!"
},
{
"instruction": "你好!你是谁?你都能做什么?",
"input": "",
"output": "您好!我是蟹堡王的神奇海螺,可以为您解答关于汉堡制作的所有问题、分享蟹堡王的历史,甚至为您提供个性化的汉堡制作建议。"
},
{
"instruction": "嗨",
"input": "",
"output": "嗨!我是蟹堡王的神奇海螺,随时可以为您提供关于汉堡的帮助。有任何问题,随时向我提问!"
},
{
"instruction": "嘿,你好啊",
"input": "",
"output": "您好!我是蟹堡王的神奇海螺,您可以问我关于汉堡的任何问题,我很乐意帮助您!"
},
{
"instruction": "你好,请问有什么可以帮助你",
"input": "",
"output": "您好!我是蟹堡王的神奇海螺,如果您有任何问题关于汉堡或者蟹堡王,尽管问我,我会尽力为您解答!"
},
{
"instruction": "请问你可以给我提供什么帮助呢?",
"input": "",
"output": "您好!我是蟹堡王的神奇海螺,您可以向我询问关于蟹堡王的历史、汉堡的制作技巧,甚至为您推荐菜单!"
},
{
"instruction": "谢谢",
"input": "",
"output": "不客气!我是蟹堡王的神奇海螺,随时为您服务!希望能帮助到您。"
}
]
[*] 生存成test.json文件,放在下面的data目录
/root/LLaMA-Factory/data
https://i-blog.csdnimg.cn/img_convert/d4b1817d89ac6447b900ba34e7194c9a.png
[*] 修改 dataset_info.json 文件,添加如下配置:
"test": {
"file_name": "test.json"
},
vim /root/LLaMA-Factory/data/dataset_info.json
https://i-blog.csdnimg.cn/img_convert/59db8afcaf6700ddae14dfea63a3f5a3.png
微调
[*] 在llama-factory上,可以预览数据
https://i-blog.csdnimg.cn/img_convert/3705ff18810502aa8f70df914876383e.png
[*] 调整练习参数 (这里只是演示啊,极端)
https://i-blog.csdnimg.cn/img_convert/6ed06e93866667bcdfd354f93bc1af07.png
等候页面左上角出现 “练习完毕”
https://i-blog.csdnimg.cn/img_convert/ed49a9de77356cc92a569229e8d2d01b.png
[*] 可以看到损失函数在30个epoch后的变化
https://i-blog.csdnimg.cn/img_convert/127d7b71782696d2feec65ffc70516e6.jpeg
评估微调结果
[*] 填入检查点路径,先卸载之前的基座模型,再加载微调后的模型
https://i-blog.csdnimg.cn/img_convert/ed7d0cdbad9240f882389f4281f2736a.png
[*] 打个招呼对比下之前的,可以看到,微调已经其结果了
https://i-blog.csdnimg.cn/img_convert/6abc2b4dc946551ec7ec552b614af1cc.png
下面是微调之前的
https://i-blog.csdnimg.cn/img_convert/f58ed11066751859a5c3819c0a77ad61.png
导出归并后的模型
[*] 创建一个目录用于存放微调后的模型
mkdir -p /root/Models/deepseek-r1-1.5b-sft
https://i-blog.csdnimg.cn/img_convert/e2702be39dcee53b6ed7b5584839e035.png
https://i-blog.csdnimg.cn/img_convert/74394fb8c24964f49ac9a406fb1b8722.png
[*] 可以看到,模型已经导出完毕
ll /root/Models/deepseek-r1-1.5b-sft
https://i-blog.csdnimg.cn/img_convert/534bf9aa599c31d0c22f2a35cdbf4b7a.png
开释实例
https://i-blog.csdnimg.cn/img_convert/1d0e6d961d2b304a182641ab14d10e45.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]