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*树:从二叉树到多叉树的演进
引言 在计算机科学中,树结构是数据存储和检索的核心工具之一。从二叉树到二叉排序树,再到平衡二叉树,我们已经看到了这些数据结构在高效处理数据方面的优势。然而,随着数据量的爆炸式增长,二叉树的局限性逐渐显现出来…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

