llamafactory 微调教程
文章目录
- llamlafactory微调deepseekr1-0.5b
- 1.1 说明
- 1.2 搭建环境
- 创建GPU实例
- 连接实例
- 部署llama_factory
- 创建隧道,配置端口转发
- 访问llama_factory
- 1.3 微调大模型
- 从huggingface上下载基座模型
- 查看模型是否下载成功
- 准备数据集
- 微调
- 评估微调效果
- 导出合并后的模型
- 释放实例
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 搭建环境
创建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切到项目目录中
cd /root/LLaMA-Factory -
llama-factory要求python环境是python3.10
使用conda创建虚拟环境
conda create -n llama_factory python=3.10创建好后查看conda环境
conda env list

切换到目标环境
conda activate llama_factory安装 LLaMA Factory 相关依赖
pip install -e ".[torch,metrics]"

-
检验是否成功,并启动llama_factory
llamafactory-cli versionllamafactory-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

释放实例

相关文章:
llamafactory 微调教程
文章目录 llamlafactory微调deepseekr1-0.5b1.1 说明1.2 搭建环境创建GPU实例连接实例部署llama_factory创建隧道,配置端口转发访问llama_factory 1.3 微调大模型从huggingface上下载基座模型查看模型是否下载成功准备数据集微调评估微调效果导出合并后的模型 释放实…...
代码随想录|二叉树|04二叉树的统一迭代法
一刷我这里放了。。。 代码随想录...
【教学类-43-25】20240311 数独3宫格的所有可能(图片版 12套样式,空1格-空8格,每套510张,共6120小图)
背景需求: 有一位客户买3宫格所有可能(WORD表格版) 【教学类-43-25】20241203 数独3宫格的所有可能-使用模版替换-用时少报错少(12套样式,空1格-空8格,每套510张,共6120小图)_数独三…...
Manus AI:多语言手写识别的技术革命与未来图景
摘要:在全球化浪潮下,跨语言沟通的需求日益迫切,但手写文字的多样性却成为技术突破的难点。Manus AI凭借其多语言手写识别技术,将潦草笔迹转化为精准数字文本,覆盖全球超百种语言。本文从技术原理、应用场景、行业价值…...
领域驱动设计(DDD)是什么?
领域驱动设计(DDD)是什么? 在软件开发的世界里,我们总在寻找那把打开业务之门的钥匙。有人迷恋MVC的简洁,有人追逐微服务的潮流,而DDD(领域驱动设计)则像一位沉默的智者,…...
JavaScript 模块 vs C# 类:封装逻辑的两种哲学
引言 在现代软件开发中,模块化和面向对象设计是代码组织的核心课题。本文通过对比 JavaScript 模块(ES6 Module)与 C# 类(Class)的实现方式,探讨两种语言在封装逻辑时的不同哲学,并给出实际应用…...
2.2 企业级ESLint/Prettier规则定制
文章目录 1. 为什么需要企业级代码规范2. 工具选型对比3. 完整配置流程3.1 项目初始化3.2 ESLint深度配置3.3 Prettier精细配置3.4 解决规则冲突4. 高级定制方案4.1 自定义ESLint规则4.2 扩展Prettier插件5. 团队协作策略5.1 配置共享方案5.2 版本控制策略6. CI/CD集成7. 常见问…...
Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))
故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…...
DeepIn Wps 字体缺失问题
系统缺失字体 Symbol 、Wingdings 、Wingdings2、Wingdings3、MT—extra 字体问题 问了下DeepSeek 在应用商店安装或者在windows 里面找 装了一个GB-18030 还是不行 在windows里面复制了缺失的字体 将字体复制到DeepIn 的字体目录(Ubuntu 应该也是这个目录&am…...
(二分 数学推导 统计公平数对的数目)leetcode 2563
数学推导: lower < nums[i] nums[j] < upper且0 < i < j < n 则lower-nums[j]<nums[i]<upper-nums[j] 找到这个范围的nums[i]的个数就是我们要的值 所以枚举j 在0--(j-1)的范围内 找到第一个大于等于lower-nums[j]…...
临界比例法PID调整-附带pidtune工具和GA算法
代码已上传:计算机控制系统PID参数整定法资源-CSDN文库 1背景 为了模拟PID参数整定,把教材上的案例进行分析。 1题目 单位闭环传递函数,开环传函G(s)1/((s1)(s2)), Ts0.1s, PID调整器输出后,接零阶保持器ZOH。 2 代码 PID含积…...
LabVIEW基于双通道FFT共轭相乘的噪声抑制
对于双通道采集的含噪信号,通过FFT获取复数频谱后,对第二通道频谱取共轭并与第一通道频谱相乘,理论上可增强相关信号成分并抑制非相关噪声。此方法适用于通道间信号高度相关、噪声独立的场景(如共模干扰抑制)。以下为L…...
小程序SSL证书过期怎么办?
SSL证书就像小程序的“安全锁”,一旦过期,用户访问时会被提示“不安全”,轻则流失客户,重则数据泄露!作为企业负责人,如何快速解决证书过期问题?又该如何避免再次踩坑?这篇指南给你答…...
ELK日志分析实战
ELK日志分析实战:从异常流量定位提权攻击 摘要:本文通过模拟真实攻防场景,结合ELK技术栈(ElasticsearchLogstashKibana),演示如何从海量服务器日志中快速定位异常流量并追踪提权攻击行为。包含完整的日志收…...
阿里云操作系统控制台实战评测:提升云资源管理与监控效率
文章目录 前言产品介绍操作系统控制台体验阿里云操作系统开通 帮助与总结建议 前言 随着云计算和虚拟化技术的发展,操作系统控制台作为运维管理的核心工具之一,在现代IT环境中发挥着越来越重要的作用。它提供了一种更加直观、高效的方式来管理操作系统&…...
Docker构建启动jar包
Docker构建启动jar包 1、首先是把java服务打包成jar包 mvn clean install -Dmaven.skip.testtrue package -Pprod这个命令的意思是,跳过测试,打包prod环境。 2、编写Dockerfile文件 # 拉取jdk8作为基础镜像 FROM registry.supos.ai/library/openjdk:…...
微信小程序使用的SSL证书在哪里申请?
在数字化时代,微信小程序已成为众多企业和个人开发者触达用户的重要平台。然而,随着网络安全威胁的日益严峻,确保小程序数据传输的安全性显得尤为重要。SSL证书,作为加密通信的基石,是保障小程序安全不可或缺的一环。 …...
基于langchain+llama2的本地私有大语言模型实战
Langchain功能 LangChian 作为一个大语言模型(LLM, Large Language Model)开发框架,是 LLM 应用架构的重要一环。借助 LangChain,我们可以创建各种应用程序,包括聊天机器人和智能问答工具。 AI模型:包含各…...
如何使用postman来测试接口
一、postman的介绍与下载 可参考: https://blog.csdn.net/freeking101/article/details/80774271 二、api获取网站 阿里云API应用市场 地址:云市场_镜像市场_软件商店_建站软件_服务器软件_API接口_应用市场 - 阿里云 三、具体测试过程 可模拟浏览…...
深入剖析B树、B+树与B*树:从二叉树到多叉树的演进
引言 在计算机科学中,树结构是数据存储和检索的核心工具之一。从二叉树到二叉排序树,再到平衡二叉树,我们已经看到了这些数据结构在高效处理数据方面的优势。然而,随着数据量的爆炸式增长,二叉树的局限性逐渐显现出来…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

