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

news/2025/3/28 8:38:57/

本篇记录学习使用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

启动ollamaollama 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

对模型进行管理:

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

选择模型,进行对话:

测试结果:


http://www.ppmy.cn/news/1580856.html

相关文章

超硬核区块链算法仿真:联盟链PBFT多线程仿真实现 :c语言完全详解版

1 22年年底想用gpt做出一个pbft的算法仿真&#xff0c;到了25年终于可以结合gpt grok perplexcity deepseek等实现了&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; #include <stdio.h> #include <stdlib.h> #include <windows.h> #inclu…

【Dive Into Stable Diffusion v3.5】1:开源项目正式发布——深入探索SDv3.5模型全参/LoRA/RLHF训练

目录 1 引言2 项目简介3 快速上手3.1 下载代码3.2 环境配置3.3 项目结构3.4 下载模型与数据集3.5 运行指令3.6 核心参数说明3.6.1 通用参数3.6.2 优化器/学习率3.6.3 数据相关 4 结语 1 引言 在人工智能和机器学习领域&#xff0c;生成模型的应用越来越广泛。Stable Diffusion…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring MVC 的核心组件:DispatcherServlet 的工作原理

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Dispat…

单机游戏的工作逻辑

一、单机游戏的通用设计 (一)地图和角色的表示 1、地图坐标通常用数组来存放。 例如&#xff1a;结构体数组&#xff0c;对象数组。 2、每个角色需要用结构体或者类封装坐标&#xff0c;其他参数 例如&#xff1a; // 封装角色的坐标&#xff0c;攻击值 class Role{ int x; …

深入了解Linux —— git三板斧

版本控制器git 为了我们方便管理不同版本的文件&#xff0c;就有了版本控制器&#xff1b; 所谓的版本控制器&#xff0c;就是能够了解到一个文件的历史记录&#xff08;修改记录&#xff09;&#xff1b;简单来说就是记录每一次的改动和版本迭代的一个管理系统&#xff0c;同…

Xss Game1-8关通关

Xss Game平台地址:Warmups 1,Ma Spaghet 要求是: Difficulty is Easy.Pop an alert(1337) on sandbox.pwnfunction.com.No user interaction.Cannot use https://sandbox.pwnfunction.com/?html&js&css.Tested on Chrome. 源码: <!-- Challenge --> <h2 i…

【Linux】system V消息队列,信号量

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.消息队列System V 消息队列接口 02.信号量System V 信号量接口 03.OS对system V ipc的管理消息队列管理结构共享内存管理结构信号量管理结构 01.消息队列 消息队列提供了一个…

计算机二级MS之Excel

声明&#xff1a;跟着大猫和小黑学习随便记下一些笔记供大家参考&#xff0c;二级考试之前将持续更新&#xff0c;希望大家二级都能轻轻松松过啦&#xff0c;过了二级的大神也可以在评论区留言给点建议&#xff0c;感谢大家&#xff01;&#xff01; 文章目录 考题难点&#x…