当前位置: 首页 > 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;二叉树的局限性逐渐显现出来…...

《算法篇:三数之和问题的两种解法》

问题描述 给定一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 给定数组 nums [-1, 0,…...

【2025】基于springboot+uniapp的乡村旅游小程序系统统(源码、万字文档、图文修改、调试答疑)农家乐预约

乡村旅游小程序系统通过 Spring Boot 与 uniapp 技术栈的深度整合&#xff0c;为乡村旅游产业打造了一个功能全面、交互流畅、性能稳定的综合服务平台。系统根据不同角色&#xff08;管理员、商家、用户&#xff09;的业务需求&#xff0c;提供了针对性的功能模块&#xff0c;实…...

DeepSeek Kimi详细生成PPT的步骤

以下是使用 DeepSeek 和 Kimi 协作生成 PPT 的详细步骤&#xff0c;结合了两者的优势实现高效创作&#xff1a; 第一步&#xff1a;使用 DeepSeek 生成 PPT 大纲或内容 明确需求并输入提示词 在 DeepSeek 的对话界面中&#xff0c;输入具体指令&#xff0c;要求生成 PPT 大纲或…...

【Film】MM-StoryAgent:沉浸式叙事故事书视频生成,具有跨文本、图像和音频的多代理范式

MM-StoryAgent:沉浸式叙事故事书视频生成,具有跨文本、图像和音频的多代理范式 https://arxiv.org/abs/2503.05242 MM-StoryAgent: Immersive Narrated Storybook Video Generation with a Multi-Agent Paradigm across Text, Image and Audio The rapid advancement of larg…...

Tweak Power:全方位电脑系统优化的高效工具

在日常使用电脑时&#xff0c;系统性能的下降、垃圾文件的堆积以及硬盘的老化等问题常常困扰着用户。为了提升电脑性能、优化系统运行&#xff0c;许多人会选择系统优化工具。然而&#xff0c;国内一些系统优化软件常常因为广告过多或功能冗杂而让人望而却步。此时&#xff0c;…...

LVDS系列3:Xilinx的IOBUFDS原语

前面两节讲解了差分转单端的IBUFDS原语和单端转差分的OBUFDS原语&#xff0c;今天来讲一个同时带有两者功能的原语IOBUFDS&#xff1b; 前述的IBUFDS原语只能接收外部差分信号&#xff0c;此时连接管脚为input管脚&#xff0c;OBUFDS只能向外部输出差分信号&#xff0c;此时连接…...

Git和GitHub基础教学

文章目录 1. 前言2. 历史3. 下载安装Git3.1 下载Git3.2 安装Git3.3 验证安装是否成功 4. 配置Git5. Git基础使用5.1 通过Git Bash使用5.1.1 创建一个新的仓库。5.1.1.1 克隆别人的仓库5.1.1.2 自己创建一个本地仓库 5.1.2 管理存档 5.2 通过Visual Studio Code使用 6. Git完成远…...

Django-ORM-select_related

Django-ORM-select_related 作用使用场景示例无 select_related 的查询有 select_related 的查询 如何理解 "只发起一次查询&#xff0c;包含所有相关作者信息"1. select_related 的工作原理2. 具体示例解析3. 为什么只发起一次查询 数据库中的books量巨大&#xff0…...

蓝桥杯 k倍区间

题目描述 给定一个长度为 NN 的数列&#xff0c;A1,A2,⋯ANA1​,A2​,⋯AN​&#xff0c;如果其中一段连续的子序列 Ai,Ai1,⋯AjAi​,Ai​1,⋯Aj​ ( i≤ji≤j ) 之和是 KK 的倍数&#xff0c;我们就称这个区间 [i,j][i,j] 是 K 倍区间。 你能求出数列中总共有多少个 KK 倍区间…...

数据结构(蓝桥杯常考点)

数据结构 前言&#xff1a;这个是针对于蓝桥杯竞赛常考的数据结构内容&#xff0c;基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中&#xff0c;时间复杂度不能超过10的7次方&#xff08;1秒&#xff09;到10的8次方&#xff08;2秒&#xff09; 空间限制&#x…...