llamlafactory微调deepseekr1-0.5b
1.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实例
创建
连接实例
- 当看到实例的状态是运行中的时候,复制SSH链接
比如我的登录指令是
可以直接在终端输入这个指令连接GPU机器
ssh root@154.206.64.133 -p 22
或者利用其他工具连接
- 利用mobax链接
部署llama_factory
- 进入目录默认为登录用户的家目录
/root
- LLaMA-Factory 的 Github地址:
https://github.com/hiyouga/LLaMA-Factory
克隆仓库
- git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
复制代码 切到项目目录中
- llama-factory要求python情况是python3.10
利用conda创建虚拟情况
- conda create -n llama_factory python=3.10
复制代码 创建好后查看conda情况
切换到目标情况
- conda activate llama_factory
复制代码 安装 LLaMA Factory 相干依赖
- pip install -e ".[torch,metrics]"
复制代码
- 检验是否乐成,并启动llama_factory
- llamafactory-cli version
- llamafactory-cli webui
复制代码
创建隧道,配置端口转发
- 这里说两种方法,都可
- 第一种方法,打开终端,输入
- ssh -CNg -L 7860:127.0.0.1:7860 root@154.206.64.133 -p 22
复制代码 表明下参数
- -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
配置好了后,点击下图第一个三角形图标,会自动测试配置的端口转发是否有用,如果有用则右边的正方形会亮起来,否则需要重新检查配置
访问llama_factory
- 配置好隧道之后,在本机浏览器中打开以下的url
http://127.0.0.1:7860
即可看到llama_factory的网页端
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
复制代码
下载完成后是在这个目录下
/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://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
- 修改 dataset_info.json 文件,添加如下配置:
- "test": {
- "file_name": "test.json"
- },
复制代码- vim /root/LLaMA-Factory/data/dataset_info.json
复制代码
微调
- 在llama-factory上,可以预览数据
- 调整练习参数 (这里只是演示啊,极端)
等候页面左上角出现 “练习完毕”
- 可以看到损失函数在30个epoch后的变化
评估微调结果
- 填入检查点路径,先卸载之前的基座模型,再加载微调后的模型
- 打个招呼对比下之前的,可以看到,微调已经其结果了
下面是微调之前的
导出归并后的模型
- 创建一个目录用于存放微调后的模型
- mkdir -p /root/Models/deepseek-r1-1.5b-sft
复制代码
- 可以看到,模型已经导出完毕
- ll /root/Models/deepseek-r1-1.5b-sft
复制代码
开释实例
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |