【自然语言处理与大模型】个人使用LLaMA Factory微调的记录

一、魔塔社区免费服务器如何使用webui微调?

        一上来我就得先记录一下,使用魔塔社区的免费服务器的时候,因为没有提供ssh而导致无法看到webui的遗憾如何解决的问题?

执行命令

如果点这个链接无法弹出微调的webui,则可以在启动webui的命令之前设置了一些环境变量。

CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=1 GRADIO_SERVER_PORT=7860 llamafactory-cli webui
  • 通过 CUDA_VISIBLE_DEVICES=0,确保程序只使用编号为 0 的 GPU,避免占用其他 GPU 资源。
  • 使用 llamafactory-cli webui 启动一个基于 Gradio 框架的 Web 用户界面。
  • 通过 GRADIO_SHARE=1,生成一个公共 URL,允许其他人通过互联网访问你的 WebUI。
  • 通过 GRADIO_SERVER_PORT=7860,将 WebUI 的服务端口固定为 7860。 

【注】如果跳出来 Could not create share link. Missing file

那就按照它的提示,去下载这个文件,改名字,换路径,并改成可执行。

无法创建共享链接。缺少文件:`/root/.cache/huggingface/gradio/frpc/frpc_linux_amd64_v0.3`。请检查您的网络连接。如果您的杀毒软件阻止了该文件的下载,也可能导致此问题。您可以按照以下步骤手动安装:1. 下载此文件:https://cdn-media.huggingface.co/frpc-gradio-0.3/frpc_linux_amd64
2. 将下载的文件重命名为:`frpc_linux_amd64_v0.3`
3. 将文件移动到以下位置:`/root/.cache/huggingface/gradio/frpc`
4. 给这个文件加上执行权限 chmod +x frpc_linux_amd64_v0.3

二、llamafactory工程文件目录里面都有是些什么?

目录结构

 “LLaMA-Factory”的项目目录结构。以下是对各个文件夹和文件的简要说明:

文件夹/文件简要说明
assets通常用于存放项目的静态资源,如图片、样式表等。
data用于存放数据集或模型训练所需的数据。
docker包含与Docker相关的配置文件和脚本,用于容器化部署。
evaluation可能包含评估模型性能的脚本和工具。
examples示例代码或使用案例,帮助用户了解如何使用该项目。
scripts脚本文件,自动化任务或辅助工具。
src源代码文件夹,存放项目的主程序代码。
tests测试文件夹,存放单元测试和其他测试脚本。
CITATION.cff引用格式文件,指导如何正确引用此项目。
LICENSE许可证文件,说明项目的使用许可条款。
Makefile构建文件,定义了编译和构建项目的规则。
MANIFEST.inPython打包工具(如setuptools)使用的文件,指定哪些文件应该被包含在发布包中。
pyproject.tomlPython项目配置文件,用于管理项目依赖和构建设置。
README.md项目的英文README文件,提供项目介绍和使用指南。
README_zh.md项目的中文README文件,提供项目介绍和使用指南。
requirements.txt列出项目运行所需的Python包及其版本。
setup.pyPython项目的安装脚本,用于打包和安装项目。

三、webui里面的微调参数的都是什么意思? 

虽然把界面设置成中文,基本都能读懂,但还是有必要对一些参数做点说明:

名字

解释

补充

模型路径

一般是服务器中存放模型的绝对路径。也可以是huggingface上面的模型标识符。

建议自己下载到本地,然后用本地服务器的绝对路径。

微调方法

常用就2个,LoRA和QLoRA

检查点路径

训练过后保存模型权重的路径,方便你做增量训练

量化等级

具体要损失多少精度,提升多少推理速度,常用有8bit、4bit量化等级

量化方法

实现量化的具体技术,比如线性量化或非线性量化

一般使用bitstandbytes开源量化库

对话模板

构建提示词使用的模板,要和你想微调的模型保持一致

日志间隔

默认是每5轮epoch保存一次日志

保存间隔

默认是每100epoch保存一次模型权重

会在每次保存权重之前,去跑一次验证

输出路径

输出路径就是保存你训练好的LoRA模型参数的路径。

一般是在一个叫做save/模型名字/lora下面,用chekpoint来命名,LoR模型无法单独使用

配置路径

配置路径的意思就是webui设置好的参数,生产一个yaml文件,可以用这个文件去等效的用在命令行中做微调训练

将webui的配置保存成一个yaml

验证集比例

在每一次保存权重之前做验证的时候用到

量化数据集

用来衡量量化前后

LoRA

LoRA训练中的秩大小,影响LoRa训练中自身数据对模型作用程度,秩越大作用越大,需要依据数据量选择合适的秩。

一般设置32到128之间默认8

LoRA缩放系数

LoRa训练中的缩放系数,用于调整初始化训练权重,使其与预训练权重接近或保持一致。

一般是LoRA两倍,一般设置个128、256

截断长度

单个训练数据样本的最大长度,超出配置长度将自动截断。

批处理大小

批次大小代表模型训练过程中,模型更新模型参数的数据步长,模型每看多少数据即更新一次模型参数。

合适batch size可以加速训练

deepspeed stage

选择分布式多卡训练模式

三种模式一般第二种

deepspeed offload

一部分数据显存放到内存

耗时间

四、直接使用webchat来和指定模型对话

        虽然可以在webui的chat中和指定的模型去对话。但llamafactory还单独给了一个命令,能够起一个webchat来加载模型进行对话。

llamafactory-cli webchat --model_name_or_path MODEL_NAME_OR_PATH
执行命令
llamafactory自带的webchat

五、使用cli train进行黑窗口微调训练的时候如何配置训练参数?

        这个问题看上去很简单,查一下官方文档不就好咯~或者看看example里面的yaml例子呗!说的很好!我们先来学习一下这两种方式:

(1)参考官方文档的配置文件

想直接看官方文档的请点击这里:llamafactory SFT 训练

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml

        通过上面这行命令来开始训练,你会发现好简单,但紧接着就困惑了ymal配置文件里面的key都有哪些呀?都是什么意思呢?其实这一部分的答案就在官方文档中,官方贴心的给了一个小字提醒“重要训练参数”,还列了个表格方便你查阅。我就不要脸的直接复制在下面:

名称

描述

model_name_or_path

模型名称或路径

stage

训练阶段,可选: rm(reward modeling), pt(pretrain), sft(Supervised Fine-Tuning), PPO, DPO, KTO, ORPO

do_train

true用于训练, false用于评估

finetuning_type

微调方式。可选: freeze, lora, full

lora_target

采取LoRA方法的目标模块,默认值为 all

dataset

使用的数据集,使用”,”分隔多个数据集

template

数据集模板,请保证数据集模板与模型相对应。

output_dir

输出路径

logging_steps

日志输出步数间隔

save_steps

模型断点保存间隔

overwrite_output_dir

是否允许覆盖输出目录

per_device_train_batch_size

每个设备上训练的批次大小

gradient_accumulation_steps

梯度积累步数

max_grad_norm

梯度裁剪阈值

learning_rate

学习率

lr_scheduler_type

学习率曲线,可选 linearcosinepolynomialconstant 等。

num_train_epochs

训练周期数

bf16

是否使用 bf16 格式

warmup_ratio

学习率预热比例

warmup_steps

学习率预热步数

push_to_hub

是否推送模型到 Huggingface

【注】关键的问题来了——如果我还想配置得更细来进行训练呢?

(2)参考examples文件夹里面的yaml配置文件

# 全参数量微调的配置文件
LLaMA-Factory/examples/train_full# LoRA微调的配置文件
LLaMA-Factory/examples/train_lora# QLoRA微调的配置文件
LLaMA-Factory/examples/train_qlora

        配置文件的路径我给大家列出来了。里面有很多配置文件供你参考。但正是因为太多了,我都分不清这些配置文件都对应什么作用呀!?

        其实,人家仓库里面早就考虑到你会懵逼,所以贴心的在README.md文件里面写清楚了。这里拿最常用的LoRA举例子。

任务类型命令
(增量)预训练llamafactory-cli train examples/train_lora/llama3_lora_pretrain.yaml
指令监督微调llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
多模态指令监督微调llamafactory-cli train examples/train_lora/qwen2vl_lora_sft.yaml
DPO/ORPO/SimPO 训练llamafactory-cli train examples/train_lora/llama3_lora_dpo.yaml
多模态 DPO/ORPO/SimPO 训练llamafactory-cli train examples/train_lora/qwen2vl_lora_dpo.yaml
奖励模型训练llamafactory-cli train examples/train_lora/llama3_lora_reward.yaml
PPO 训练llamafactory-cli train examples/train_lora/llama3_lora_ppo.yaml
KTO 训练llamafactory-cli train examples/train_lora/llama3_lora_kto.yaml
预处理数据集llamafactory-cli train examples/train_lora/llama3_preprocess.yaml
在 MMLU/CMMLU/C-Eval 上评估llamafactory-cli eval examples/train_lora/llama3_lora_eval.yaml

(3)参考webui生成的配置命令

        其实我最想讲的是这个!比如我训练到500轮保存了检查点后想休息一下,下次接着训练,但是我又不知道配置文件中怎么进行配置,才能实现接着上次的检查点训练。你或许会说你都有webui了为啥多次一举?那就是有这样的需求万一无法使用webui,只能用黑窗口,但又不知道怎么配置。这时候你可以用另一台可以使用webui的电脑,在webui上选好配置,然后生成

在去到配置文件中加上就行!

 后续持续更新有关使用llamafactory过程中的我觉得值得记录的内容。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【官方正版,永久免费】Adobe Camera Raw 17.2 win/Mac版本 配合Adobe22-25系列软

Adobe Camera Raw 2025 年 2 月版(版本 17.2)。目前为止最新版新版已经更新2个月了,我看论坛之前分享的还是2024版,遂将新版分享给各位。 Adobe Camera Raw,支持Photoshop,lightroom等Adobe系列软件&#…

leetcode:1295. 统计位数为偶数的数字(python3解法)

难度:简单 给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。 示例 1: 输入:nums [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 是 3 位数字&…

使用Handsontable实现动态表格和下载表格

1.效果 2.实现代码 首先要加载Handsontable,在示例中我是cdn的方式引入的,vue的话需要下载插件 let hot null;var exportPlugin null;function showHandsontable(param) {const container document.getElementById("hot-container");// 如果…

2.1 基于委托的异步编程方法

基于委托的异步编程模型是 .NET 早期版本中实现异步操作的一种方式,主要通过 BeginInvoke 和 EndInvoke 方法来实现。这种基于委托的异步模式已被 Task 和 async/await 模式取代,但在维护旧代码时仍可能遇到这种模式。 委托的方法中:Invoke用…

【Bluedroid】蓝牙 HID 设备信息加载与注册机制及配置缓存系统源码解析

本篇解析Android蓝牙子系统加载配对HID设备的核心流程,通过btif_storage_load_bonded_hid_info实现从NVRAM读取设备属性、验证绑定状态、构造描述符并注册到BTA_HH模块。重点剖析基于ConfigCache的三层存储架构(全局配置/持久设备/临时设备),其通过动态持久化判定策略和LRU…

Linux 下的网络管理(附加详细实验案例)

一、简单了解 NM(NetworkManager) 在 Linux 中,NM 是 NetworkManager 的缩写。它是一个用于管理网络连接的守护进程和工具集。 在 RHEL9 上,使用 NM 进行网络配置,ifcfg (也称为文件)将不再…

长连接、短连接与WebSocket的基本知识

目录 前言正文 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附…

2026《数据结构》考研复习笔记四(绪论)

绪论 前言时间复杂度分析 前言 由于先前笔者花费约一周时间将王道《数据结构》知识点大致过了一遍,圈画下来疑难知识点,有了大致的知识框架,现在的任务就是将知识点逐个理解透彻,并将leetcode刷题与课后刷题相结合。因此此后的过…

Vmware安装centos7和Redis

2025最详细vmware安装centos 7 教程_哔哩哔哩_bilibili 1.上面是B站安装Centos7参考视频 2.安装完成需要配置网络 (新手教程)VMware安装CentOS7_哔哩哔哩_bilibili 重启网络服务: ping www.baidu.com ip addr 查看ip地址 两种重启方式 3.关闭防火墙 依次执行如下三条命令 …

二进制部署Kubernetes1.32.4最新版本高可用集群及附加组件

一、前言 在云原生技术席卷全球的今天,Kubernetes(K8s)已成为容器编排领域的事实标准。当大家都习惯了kubeadm、kubeasz等自动化工具一键部署的便利时,选择通过二进制方式手动搭建K8s集群更像是一场"知其然亦知其所以然&qu…

树莓派系统中设置固定 IP

在基于 Ubuntu 的树莓派系统中,设置固定 IP 地址主要有以下几种方法: 方法一:使用 Netplan 配置(Ubuntu 18.04 及以上版本默认使用 Netplan) 查看网络接口名称 在终端输入ip link或ip a命令,查看当前所使…

主流单片机与编程调试工具对应关系表梳理

单片机系列/型号 | 官方IDE/工具链 | 调试器/烧录器 | 第三方支持工具 |调试接口协议 | 特点与适用场景| | STMicroelectronics (STM32) STM32全系列 STM32CubeIDE ST-LINK/V2/V3 - PlatformIO (VS Code插件) SWD/JTAG 官方集成开发环境,支持HAL库,免费…

VulnHub-DarkHole_2靶机渗透教程

1.靶机部署 [Onepanda] Mik1ysomething 靶机下载:https://download.vulnhub.com/darkhole/darkhole_2.zip 直接使用VMware导入打开就行 注意:靶机的网络连接模式必须和kali一样,让靶机跟kali处于同一网段,这样kali才能扫出靶机…

USO服务器操作系统手动升级GCC 12.2.0版本

1. 从 GNU 官方 FTP 服务器下载 GCC 12.2.0 的源码包,并解压进入源码目录。 wget https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz tar -zxvf gcc-12.2.0.tar.gz cd gcc-12.2.0 2. 运行脚本下载并配置 GCC 编译所需的依赖库。此步骤会自动下载如 GMP…

设计模式基础概念(行为模式):观察者模式(Observer)

概述 我们可以发现这样一个场景:如果你订阅了一份杂志或报纸, 那就不需要再去报摊查询新出版的刊物了。 出版社 (即应用中的 “发布者(publisher)”) 会在刊物出版后 (甚至提前) 直…

JavaFX实战:从零到一实现一个功能丰富的“高级反应速度测试”游戏

大家好!今天我们不搞简单的“红变绿就点”了,来点硬核的!我们要用 JavaFX 从头开始,构建一个更复杂、更有趣也更考验能力的“高级反应速度测试”游戏。这个版本将引入选择反应时 (Choice Reaction Time) 的概念——你需要在多个干…

CSS 选择器介绍

CSS 选择器介绍 1. 基本概念 CSS(层叠样式表)是一种用于描述 HTML 或 XML 文档外观的语言。通过 CSS,可以控制网页中元素的布局、颜色、字体等视觉效果。而 CSS 选择器则是用来指定哪些 HTML 元素应该应用这些样式的工具。 2. 基本选择器 …

Vue3父子组件数据同步方法

在 Vue 3 中&#xff0c;当子组件需要修改父组件传递的数据副本并同步更新时&#xff0c;可以通过以下步骤实现&#xff1a; 方法 1&#xff1a;使用 v-model 和计算属性&#xff08;实时同步&#xff09; 父组件&#xff1a; vue <template><ChildComponent v-mo…

el-table中el-input的autofocus无法自动聚焦的解决方案

需求 有一个表格展示了一些进度信息&#xff0c;进度信息可以修改&#xff0c;需要点击进度信息旁边的编辑按钮时&#xff0c;把进度变为输入框且自动聚焦&#xff0c;当鼠标失去焦点时自动请求更新接口。 注&#xff1a;本例以vue2 element UI为例 分析 这个需求看着挺简单…

用高斯溅射技术跨越机器人模拟与现实的鸿沟:SplatSim 框架解析

在机器人领域&#xff0c;让机器人在现实世界中精准执行任务是大家一直追求的目标。可模拟环境和现实世界之间存在着不小的差距&#xff0c;特别是基于 RGB 图像的操作策略&#xff0c;从模拟转移到现实时总是状况百出。 今天咱们就来聊聊 SplatSim 框架&#xff0c;看看它是怎…