当前位置: 首页 > news >正文

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实例

    image-20250311220842499

    创建

    image-20250311221147657

    image-20250311221457983

连接实例

  • 当看到实例的状态是运行中的时候,复制SSH链接

    比如我的登录指令是

    可以直接在终端输入这个指令连接GPU机器

    ssh root@154.206.64.133 -p 22

    或者使用其他工具连接

  • 使用mobax链接

    image-20250311221913577

部署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
    

    image-20250311222538907

    切换到目标环境

    conda activate llama_factory
    

    安装 LLaMA Factory 相关依赖

    pip install -e ".[torch,metrics]"
    

    image-20250311204517138

  • 检验是否成功,并启动llama_factory

    llamafactory-cli versionllamafactory-cli webui
    

    image-20250311204738724


创建隧道,配置端口转发

  • 这里说两种方法,都可

  • 第一种方法,打开终端,输入

    ssh -CNg -L 7860:127.0.0.1:7860 root@154.206.64.133 -p 22
    
    • image-20250311223255685

    解释下参数

    1. -C:启用压缩传输,提升数据传输效率。
    2. -N:不执行远程命令,仅建立隧道(适用于纯端口转发场景)。
    3. -g:允许远程主机连接本地转发的端口(默认仅允许本地访问)。
    4. -L 7860:127.0.0.1:7860:将本地(GPU机器) 7860 端口的流量转发到远程服务器(当前本机)的 127.0.0.1:7860。
    5. root@154.206.64.133:以 root 用户登录到GPU服务器。
    6. -p 22:指定SSH服务端口为22。
  • 第二种方法,使用mobax上的Tunneling

    image-20250311223452358

    配置好了后,点击下图第一个三角形图标,会自动测试配置的端口转发是否有效,如果有效则右边的正方形会亮起来,否则需要重新检查配置

    image-20250311223512060


访问llama_factory

  • 配置好隧道之后,在本机浏览器中打开以下的url

    http://127.0.0.1:7860

    即可看到llama_factory的网页端

    image-20250311224000867


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
    

    image-20250311205058303

    下载完成后是在这个目录下

    /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/这个目录下的

    image-20250311210257015

    有正常的聊天返回

    image-20250311210314772


准备数据集

  • 数据集地址

    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

    image-20250311225101807

  • 修改 dataset_info.json 文件,添加如下配置:

    "test": {
    "file_name": "test.json"
    },
    
    vim /root/LLaMA-Factory/data/dataset_info.json
    

    image-20250311225244537


微调

  • 在llama-factory上,可以预览数据

    image-20250311215250701

  • 调整训练参数 (这里只是演示啊,极端)

    image-20250311215211766

    等待页面左上角出现 “训练完毕”

    image-20250311214437704

  • 可以看到损失函数在30个epoch后的变化

评估微调效果

  • 填入检查点路径,先卸载之前的基座模型,再加载微调后的模型

    image-20250311225936830

  • 打个招呼对比下之前的,可以看到,微调已经其效果了

    image-20250311230042321

    下面是微调之前的

    image-20250311230241779


导出合并后的模型

  • 创建一个目录用于存放微调后的模型

    mkdir -p /root/Models/deepseek-r1-1.5b-sft
    

    image-20250311230317162

    image-20250311214958082

  • 可以看到,模型已经导出完毕

    ll /root/Models/deepseek-r1-1.5b-sft
    

    image-20250311230444774


释放实例

image-20250311231312072


相关文章:

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

数学推导&#xff1a; lower < nums[i] nums[j] < upper且0 < i < j < n 则lower-nums[j]<nums[i]<upper-nums[j] 找到这个范围的nums[i]的个数就是我们要的值 所以枚举j 在0--&#xff08;j-1&#xff09;的范围内 找到第一个大于等于lower-nums[j]…...

临界比例法PID调整-附带pidtune工具和GA算法

代码已上传&#xff1a;计算机控制系统PID参数整定法资源-CSDN文库 1背景 为了模拟PID参数整定&#xff0c;把教材上的案例进行分析。 1题目 单位闭环传递函数&#xff0c;开环传函G(s)1/((s1)(s2)), Ts0.1s, PID调整器输出后&#xff0c;接零阶保持器ZOH。 2 代码 PID含积…...

LabVIEW基于双通道FFT共轭相乘的噪声抑制

对于双通道采集的含噪信号&#xff0c;通过FFT获取复数频谱后&#xff0c;对第二通道频谱取共轭并与第一通道频谱相乘&#xff0c;理论上可增强相关信号成分并抑制非相关噪声。此方法适用于通道间信号高度相关、噪声独立的场景&#xff08;如共模干扰抑制&#xff09;。以下为L…...

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”&#xff0c;一旦过期&#xff0c;用户访问时会被提示“不安全”&#xff0c;轻则流失客户&#xff0c;重则数据泄露&#xff01;作为企业负责人&#xff0c;如何快速解决证书过期问题&#xff1f;又该如何避免再次踩坑&#xff1f;这篇指南给你答…...

ELK日志分析实战

ELK日志分析实战&#xff1a;从异常流量定位提权攻击 摘要&#xff1a;本文通过模拟真实攻防场景&#xff0c;结合ELK技术栈&#xff08;ElasticsearchLogstashKibana&#xff09;&#xff0c;演示如何从海量服务器日志中快速定位异常流量并追踪提权攻击行为。包含完整的日志收…...

阿里云操作系统控制台实战评测:提升云资源管理与监控效率

文章目录 前言产品介绍操作系统控制台体验阿里云操作系统开通 帮助与总结建议 前言 随着云计算和虚拟化技术的发展&#xff0c;操作系统控制台作为运维管理的核心工具之一&#xff0c;在现代IT环境中发挥着越来越重要的作用。它提供了一种更加直观、高效的方式来管理操作系统&…...

Docker构建启动jar包

Docker构建启动jar包 1、首先是把java服务打包成jar包 mvn clean install -Dmaven.skip.testtrue package -Pprod这个命令的意思是&#xff0c;跳过测试&#xff0c;打包prod环境。 2、编写Dockerfile文件 # 拉取jdk8作为基础镜像 FROM registry.supos.ai/library/openjdk:…...

微信小程序使用的SSL证书在哪里申请?

在数字化时代&#xff0c;微信小程序已成为众多企业和个人开发者触达用户的重要平台。然而&#xff0c;随着网络安全威胁的日益严峻&#xff0c;确保小程序数据传输的安全性显得尤为重要。SSL证书&#xff0c;作为加密通信的基石&#xff0c;是保障小程序安全不可或缺的一环。 …...

基于langchain+llama2的本地私有大语言模型实战

Langchain功能 LangChian 作为一个大语言模型&#xff08;LLM, Large Language Model&#xff09;开发框架&#xff0c;是 LLM 应用架构的重要一环。借助 LangChain&#xff0c;我们可以创建各种应用程序&#xff0c;包括聊天机器人和智能问答工具。 AI模型&#xff1a;包含各…...

如何使用postman来测试接口

一、postman的介绍与下载 可参考&#xff1a; https://blog.csdn.net/freeking101/article/details/80774271 二、api获取网站 阿里云API应用市场 地址&#xff1a;云市场_镜像市场_软件商店_建站软件_服务器软件_API接口_应用市场 - 阿里云 三、具体测试过程 可模拟浏览…...

深入剖析B树、B+树与B*树:从二叉树到多叉树的演进

引言 在计算机科学中&#xff0c;树结构是数据存储和检索的核心工具之一。从二叉树到二叉排序树&#xff0c;再到平衡二叉树&#xff0c;我们已经看到了这些数据结构在高效处理数据方面的优势。然而&#xff0c;随着数据量的爆炸式增长&#xff0c;二叉树的局限性逐渐显现出来…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...