使用LLaMA Factory微调导出模型,并用ollama运行,用open webui使用该模型

发布于:2025-03-22 ⋅ 阅读:(24) ⋅ 点赞:(0)

本篇记录学习使用llama factory微调模型的过程,使用ollama运行微调好的模型,使用open webui前端调用ollama的模型;

测试机信息:

系统:Ubuntu 24.04.2 LTS(桌面版)

cpu:i9-14900KF 

内存:128G

显卡:RTX 4090 x 2

LLaMA Factory

安装llama factory

llama factory的git地址:LLaMA-Factory/README_zh.md at main · hiyouga/LLaMA-Factory · GitHub

使用git下载,使用python安装,所以要先安装git和python;(系统安装的时候已经装了Python 3.12.3了)

先建立个python的虚拟环境:python3 -m venv llama-pyenv

会在当前目录下建立一个llama-pyenv的文件夹,激活虚拟环境:source ./llama-pyenv/bin/activate

然后根据官网说明,执行安装命令:

从git下载llama-facotry,并使用pip安装;

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"

去魔搭社区下载模型需要安装:pip install modelscope (git网站:modelscope/README_zh.md at master · modelscope/modelscope · GitHub

使用量化还需要安装:pip install bitsandbytes

进入llama-facotry目录(使相对路径在该文件夹下),cd LLaMA-Factory/

打开微调页面,执行:llamafactory-cli webui,至此就安装好了;

下载模型

模型库:模型库首页 · 魔搭社区

找到你需要的模型,例如DeepSeek-r1 14b这个:

点开,复制模型名: 

使用命令下载:modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-14B,然后等待下载完成;

默认下载的模型目录:用户目录下的.cache/modelscope/hub/models/(cache前有个点)

进入llama-facotry新建个models目录:

cd ~/LLaMA-Factory/

mkdir models/

为了方便,把下载的模型复制过去:cp -r ~/.cache/modelscope/hub/models/ ~/LLaMA-Factory/models/

使用llama-facotry微调模型

打开llama-facotry的本地页面http://localhost:7860/,先选中文:

设置模型名称,并指定刚下载的模型路径,先测试一下对话,查看模型有没有问题:(训练完记得卸载模型,减少显存占用)

成功加载后,测试一下:

准备微调数据集,数据都在~/LLaMA-Factory/data目录里,目录下的README_zh.md为说明文件,dataset_info.json为配置数据集文件,其他的json是官方预先定义好的测试数据集;

修改自我认知,先复制一份官方的identity.json,cp identity.json my_identity.json

将my_identity.json里的{{name}}替换为ai自认为自己的名字,{{author}}替换为制作者名字:vi my_identity.json

将两个替换:

:%s/{{name}}/小白/g

:%s/{{author}}/上帝/g

将自己的数据配置到dataset_info.json里:vi dataset_info.json

添加自己的数据,修改完保存并退出:

然后去页面选择数据集并微调:

等待微调结束:

微调完毕右上角会弹窗,下面日志也会显示完成:

训练完的都在~/LLaMA-Factory/saves/目录下:

加载训练结果测试效果:

 训练的认知已经改变了:

导出模型

导出微调的模型,设置检查点路径,分块大小和导出目录:

导出完成后,在~/LLaMA-Factory/out_models/目录下就能看到导出的模型了:

可以重新加载导出的模型聊天测试:

ollama

安装ollama

ollama安装说明:ollama/docs/linux.md at main · ollama/ollama · GitHub

直接命令行安装:curl -fsSL https://ollama.com/install.sh | sh

安装好后查看版本:ollama -v

查看帮助:ollama -h

启动ollama:ollama serve

ollama的配置文件是在/etc/systemd/system/目录下的ollama.service文件,编辑修改配置,添加:

Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_KEEP_ALIVE=1h"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_NUM_PARALLEL=5"
Environment="OLLAMA_ORIGINS=192.168.1.*"

修改完后,执行:systemctl daemon-reload

并重启ollama:systemctl restart ollama

加载导出模型

之前看网上说导出的模型要先用llama.cpp转成gguf才能给ollama加载,后来我发现llama-factory导出时已经生成给ollama使用的Modelfile了,可以直接加载不用转换;

第一种方法,先说使用llama.cpp转换的方法:(繁琐不推荐)

去网站下载GitHub - ggml-org/llama.cpp: LLM inference in C/C++

解压zip后,使用里面的convert_hf_to_gguf.py转换,依旧使用llama-factory的py虚拟环境就可以;(source ~/llama-pyenv/bin/activate)

进行转换:python convert_hf_to_gguf.py ~/LLaMA-Factory/out_models/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B_myidentity/ --outfile ~/out_ollama_models/my_ds_14b.gguf

等待转换完成:

这个my_ds_14b.gguf就是转换完成的模型:

新建一个Modelfile文档,在里面输入“FROM 你的模型目录/模型名.gguf”,像这样:

然后命令使用ollama行加载模型:ollama create myds14b -f Modelfile,等待加载

查看加载的ollama的模型:ollama list

运行我们的模型:ollama run myds14b

查看ollama运行的模型:ollama ps

第二种方法,直接使用llama-factory导出时提供的Modelfile:

cd ~/LLaMA-Factory/out_models/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B_myidentity

ollama create myds14b_2 -f Modelfile

这个要多等待转换一会,然后:ollama list

也是可以的;

open webui

网址:🏡 Home | Open WebUI

为了防止包冲突,也建一个python的虚拟环境,并激活:

python3 -m venv pyenv

source ~/pyenv/bin/activate

直接命令行安装open webui:pip install open-webui

启动:open-webui serve(可以使用--host和--port指定ip和端口)

打开open-webui:http://localhost:8080

设置管理员账号并登录;

左下角点击用户,打开管理员面板设置:

配置ollama:

对模型进行管理:

 可以对单个模型进行一些设置:

选择模型,进行对话:

测试结果: