新年伊始,DeepSeek可是火了好一阵了,各种教程也不断涌现出来。虽然之前写过好几篇关于ollama下各种模型的使用,都是基于普通台式机:Ubuntu22.04和1080(8g)的显卡,也一直没有深入如何针对大模型进行微调和训练。正好国补的MacMini M4已经到货(24g),折腾了几天后基本环境都已经ready,顺便在DeepSeek模型下尝试下微调和训练。
网络上的各种教程基本都是使用了LLaMA-Factory,接下来跟随我一步步来实际操作,一块体验下如何进行大模型的微调和训练。
训练环境:
MacMini M4 (10c/24g)
准备conda环境,用来管理python版本
wget --user-agent="Mozilla" https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-MacOSX-arm64.sh
执行安装脚本
bash Anaconda3-2024.10-1-MacOSX-arm64.sh
安装成功后,可以查看conda信息
conda version
使用conda创建 python venv环境
conda create -n llama_fatory python=3.10
激活llama_fatory环境
conda activate llama_fatory
查看当前python env 环境
conda env list
根据github上的安装说明,安装LLaMA-Factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple
LLaMA-Factory的安装简单吧,可以看看帮助
(llama_fatory) LLaMA-Factory-main llamafactory-cli help
----------------------------------------------------------------------
| Usage: |
| llamafactory-cli api -h: launch an OpenAI-style API server |
| llamafactory-cli chat -h: launch a chat interface in CLI |
| llamafactory-cli eval -h: evaluate models |
| llamafactory-cli export -h: merge LoRA adapters and export model |
| llamafactory-cli train -h: train models |
| llamafactory-cli webchat -h: launch a chat interface in Web UI |
| llamafactory-cli webui: launch LlamaBoard |
| llamafactory-cli version: show version info |
----------------------------------------------------------------------
(llama_fatory) LLaMA-Factory-main
下载训练所需要的基础模型,正常可以从https://huggingface.co下载,国内用户可以从modelscope下载
mkdir models && cd models
git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B.git
模型大概3.5G,如果显卡不够用,可以下载Qwen-0.5B
启动 LLaMA-Factory webui
llamafactory-cli webui
准备自定的数据
cd data && cat aiops.json
编辑dataset_info.json,增加自定的数据:
选择模型:
DeepSeek-R1-1.5B-Distill,指定模型路径:
models/DeepSeek-R1-Distill-Qwen-1.5B
可以预览自定义数据集
选择:Supervised Fine-Tuning
训练轮数我改成了100(也是查过了一些资料,如果自定义数据集比较大,比如超过百万,那么可以使用3-5,如果自定义数据集很少,可以30-200)
点击“开始”后及开始训练了,我这MacMini并没有Nvidia,所以有个提示找不到GPU,不过也没关系,训练可以正常进行。
可以看到训练轮数为100以及进度条
训练完成了
WebUI上能够看到损失曲线还是比较平滑的,到最后基本趋向一条直线。
训练结束后,可以进行验证了。
这里选择训练输出的模型,然后选择“chat”页面,载入模型,进行对话
哈哈哈,看来我预先设定的数据集已经能够被模型识别并正常回答了。
Tips:实际测试中发现微调后的模型有上下文的关联,第一条问题回答的非常正确,接续问下去大模型就开始胡言乱语了,如果清空历史后再次询问依然如此,第一次的问题都还正常,不知道是哪里配置问题,还是模型chat方式还需要其他配置?
好了,在MacMini下微调
DeepSeek-R1-Distill-Qwen-1.5B模型的实操基本就这样了,后面我会继续介绍如何将训练的模型导出来,并使用llama.cpp转换成ollama可以使用的模型。
(本文完)