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

LlamaFactory-webui:训练大语言模型的入门级教程

LlamaFactory是一个开源框架,支持多种流行的语言模型,及多种微调技术,同时,以友好的交互式界面,简化了大语言模型的学习。

本章内容,从如何拉取,我已经搭建好的Llamafactory镜像开始,以及构建webui界面,在到加载模型推理、私有化模型的训练及其验证,最后模型的导出。全程都有截图流程,一站式服务,无需你懂代码,无需你拥有高大上的AI基础知识,任何小白都可尝试训练属于自己的私有模型,并部署在自己的服务器上。

一、拉取镜像

大家可点击下方链接,使用Autodl算力云平台

AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLhttps://www.autodl.com/home

注册登录充值后,在算力市场上,就可以选择租赁的机器了。

提供多种计费方式,注意下方的显卡数量,初次尝试,选择单卡即可.大家按需选择。

机器确定后,选择社区镜像,然后搜索 Llamafactory-webui ,就会出现下方镜像,注意辨别账号名称为 HuiFei-AI

我的镜像,大约15个G,初次拉取镜像会有点慢,不过还好并不计费,他会在拉取镜像成功之后,自动开机。大家完全可以去干别的事,成功后会以短信的形式通知你。

给大家展示下,我这次选择的机器,为了测试多卡训练,我这里选择了2个 32GB vGPU。另外,大语言模型一般都不会小,所以这里我就付费扩容了数据盘的大小。

大家首次拉取镜像时,如果选择的GPU配置太低,带不起来训练的,又或者磁盘太小,不够下载模型的。别慌,进入容器实例中,找到你现在运行的机器,点击查看详情,可以升降配置,以及扩充磁盘。但必须得在关机状态下修改,在重新开机就行。

二、构建webui界面

开机后,如何链接到租赁的服务器呢?有多种方式...

1、使用平台提供的JupyterLab。容器实例中,快捷工具,如下图中右上角

2、Xshell,Xftp工具,一般配套使用。使用平台提供的登录指令及其密码。不知道如何使用这两个工具的,可自行百度。

我选择搭配使用,平台快捷工具,使用终端,xftp用来拷贝文件

打开JupyterLab后,直接选择终端,进入服务器的命令行窗口

终端下,按下面两条指令依次键入即可

cd LLaMA-Factory

llamafactory-cli webui

上述指令执行后,终端会出现如下字样,生成可访问的链接。

租赁的服务器不具备打开web界面的能力,所以需要做端口暴漏至本机,这里也有两种方式:

1、使用平台上的快捷工具,点击自定义服务

他会让你下载一个压缩包到本机,按照图中步骤去做,没啥难度。

2、第二种方式,我比较常用,使用ngrok工具。官网链接如下

Setup - ngrokhttps://dashboard.ngrok.com/get-started/setup/linux这里需要用到 Authtoken,所以需要你注册和登录ngork账号,获取属于你自己的认证密钥。

在服务器的终端上(一台服务器上可同时打开多个终端),键入以下指令,安装ngrok工具。

curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \| sudo tee /etc/apt/sources.list.d/ngrok.list \&& sudo apt update \&& sudo apt install ngrok

安装后,终端键入如下指令 ,确认安装是否成功,以及版本。

ngrok version

 接下来就是配置你的认证密钥,服务器终端下,键入如下指令,记得切换你的认证密钥。

ngrok authtoken <你的auth token>

 配置好以后,执行端口暴漏命令,llamafactory默认使用的端口号为7860。

ngrok http 7860

暴漏成功后,会生成一个链接,点击链接,即可在本机上,打开llamafactory的webui界面了 。

此时,就正式开启了我们的训练大语言模型的奇妙之旅了。

三、下载模型

Llamafactory默认会根据你选择的模型名称,从huggingface中现下载模型,这个过程需要外网,所以一般会下载失败,不建议这种方式。

这里推荐使用 modelscope,内网就可直接下载,官网链接如下。

ModelScope魔搭社区https://community.modelscope.cn/

进入官网后,大家可直接从模型库,搜索你想要的模型。市面上流行的模型,这里一般都有。

找到你要的模型后,这里假设准备使用deepseek-1.5b的模型,点进该模型后,找到模型文件。

右侧会有个下载模型按钮,点击

modelscope 支持多种下载方式,我这里选择的是SDK下载方式。

服务器终端,键入python,进入交互式编程界面

粘贴我下方的命令,会指定下载路径,官网给的代码默认会将模型下载到系统盘,模型太大,会爆的,建议大家将模型都下到数据盘中(autodl-tmp),数据盘可随便扩容,也可在克隆实例时,连同数据盘一起克隆,避免在不同机器上重复下载,非常方便。

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B',cache_dir='/root/autodl-tmp')

接下来就是等待时间了,建议大家早上(8点之前)或者夜晚下载,速度很快。大白天下载,速度慢到怀疑人生。

四、加载模型推理

模型下载好以后,大家可在webui界面,加载本地模型进行推理聊天了,如下图所示:

模型路径 ->填写你下载到服务器上的模型位置

选择 chat 模式,然后点击加载模型

模型加载成功后的界面如下,右侧是推理时的超参调节。

切记:模型不用时,记得先卸载模型。因为模型是要加载到内存中的,而模型本身又很大,占用相当大的内存空间。

五、加载数据集

接下来就是调用我们自己的私有数据,微调基础模型,首先就是如何加载数据集:

llamafactory指定了数据路径,图中data,大家不用修改

数据集下拉选项,有一些 llamafactory 自带的数据集

比如 alpaca_zh_demo 这个中文数据集,选中后,可预览

那大家如何加载到自己的数据集呢 ?请看Llama-factory目录下的data目录,下图是我在本地机器上打开的,大家可在平台快捷工具,或者xftp中查看。

这里就有我们刚选中的 alpaca_zh_demo 数据集,是一个 json 文件。

大家可以将自己的数据集文件放到该目录下

这里有个注意事项:llamafactory 并不会自动检索data目录下的文件,而是通过一个配置文件,叫dataset_info,也是一个json格式的:

定义key为 “alpaca_zh_demo”,即webui界面,下拉选项中的数据集名称

value为{ "file_name": "alpaca_zh_demo.json"},记录的是数据集在data目录下的真实文件名

六、微调模型

选择 Trian 模式,即训练模式

基础模型还是选择本地路径,数据集选择自带的 alpaca_zh_demo 数据集。剩下的就是微调方式选择,以及超参数的设置,这里不过多讲解,整体都放到第八章,参数详解中说。

如果大家选择的显卡配置较低,建议 批处理大小为1,截断长度 1024,这些都会降低对机器的要求,保证能训练起来。

模型、数据集、参数都配置好后,点击下方的预览命令,会出现一串指令,是llamafactory 训练的指令集,其中,一些参数就是根据我们上面配置而生成的。

这串指令,可以键入到终端下,执行训练,也可以点击 webui 界面上的 开始按钮。

保存训练参数,保存至服务器中,路径自动生成。

载入训练参数,保证模型训练被中断后,可从断点开始训练,而不用重新开启训练。

保存检查点,是模型训练完以后,保存的重要文件,根据时间自动生成文件名。整体路径,会根据上方模型名,以及微调方式,自动生成,具体可看预览命令中的 output_dir。为了方便管理训练后的模型,建议大家除了从本地导入模型路径,还应将模型名称修改为对应名称,这样训练后保存的检查点,大家也知道是基于那个基础模型训练的。

开始训练后,webui 上会出现损失曲线,也会在下方打出日志。

当然,在终端也能查看训练进度,如下图所示。

超参中,有个设备数量,这个不需要自己填写,程序会自动识别你当前用的GPU数量。

DeepSpeed stage 是一种加速器,后续参数详解会说,感兴趣的可以直接跳转。

我用的是2卡,直接训练后,终端查看英伟达显卡的使用情况。

nvidia-smi

也可以使用平台的快捷工具,实例监控,查看GPU的使用情况。

平台上的实例监控,能展示的信息太少了。

这里推荐一个好用的工具 wandb,首先得在官网注册登录账号,我是直接使用github登录的。然后,获取个人密钥。

服务器新开一个终端窗口,安装以及登录wandb

#安装依赖包
pip install wandb
#登录
wandb login

上述指令执行成功后,终端会让你 填入密钥,复制你的个人密钥,粘贴进去,回车即可。

wandb认证成功后,在启用 webui 的训练功能时,其他参数设置选项中,启用外部记录面板,选择wandb就行。

此时在开启训练时,终端会弹出链接,直接点进去就进入到你的wandb帐号了。

这里记录的训练日志信息,比较全面。

七、模型验证及导出

训练结束后,就可以直接加载训练后的模型,进行推理了。

该工具训练后,只会保存检查点,不是一个完整的模型格式。如果大家直接在该webui上加载模型,采用如下图的方式

  • 选中本地模型路径,即训练用的基础模型
  • 选中保存后的检查点

加载模型,此时就是我们微调后的模型了。此时,可以用训练数据集中的问题,和模型聊天了。

下图就是我们刚才用到的数据集:

同样的问题,提问训练后的模型。

接下来就是将训练后的模型导出来,刚才说了,训练后只保存检查点,需要搭配原模型文件使用。

  • 模型路径,检查点,确定都无语后
  • 选中 export 模式
  • 模型一般较大,分块是指每一个文件的大小,可将模型分为几块保存
  • 选择导出目录,开始导出

这个也可以去终端看导出流程,页面上可能长时间没动静,后台依然在工作。

这是我导出来的模型文件,和基础模型的文件配置是一样的

八、参数详解

稍等,稍后会补充

相关文章:

LlamaFactory-webui:训练大语言模型的入门级教程

LlamaFactory是一个开源框架&#xff0c;支持多种流行的语言模型&#xff0c;及多种微调技术&#xff0c;同时&#xff0c;以友好的交互式界面&#xff0c;简化了大语言模型的学习。 本章内容&#xff0c;从如何拉取&#xff0c;我已经搭建好的Llamafactory镜像开始&#xff0…...

手机打电话时如何识别对方按下的DTMF按键的字符-安卓AI电话机器人

手机打电话时如何识别对方按下的DTMF按键的字符 --安卓AI电话机器人 一、前言 前面的篇章中&#xff0c;使用蓝牙电话拦截手机通话的声音&#xff0c;并对数据加工&#xff0c;这个功能出来也有一段时间了。前段时间有试用的用户咨询说&#xff1a;有没有办法在手机上&#xff…...

Spring Cloud LoadBalancer详解

一、介绍 Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,抽象和实现,用来替代Ribbon(已经停更), 二、Ribbon和Loadbalance 对比 组件组件提供的负载策略支持负载的客户端Ribbon随机 RandomRule轮询 RoundRobinRule 重试 RetryRule最低并发 Bes…...

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成 在现代企业级应用开发中&#xff0c;处理多个数据源是一个常见的需求。本文将详细介绍如何使用Spring Boot结合达梦数据库&#xff08;DM&#xff09;&#xff0c;并通过MyBatis Plus来简化数据库操作&…...

基于SpringBoot和PostGIS的省域“地理难抵点(最纵深处)”检索及可视化实践

目录 前言 1、研究背景 2、研究意义 一、研究目标 1、“地理难抵点”的概念 二、“难抵点”空间检索实现 1、数据获取与处理 2、计算流程 3、难抵点计算 4、WebGIS可视化 三、成果展示 1、华东地区 2、华南地区 3、华中地区 4、华北地区 5、西北地区 6、西南地…...

【Qt】详细介绍如何在Visual Studio Code中编译、运行Qt项目

Visual Studio Code一只用的顺手&#xff0c;写Qt的时候也能用VS Code开发就方便多了。 理论上也不算困难&#xff0c;毕竟Qt项目其实就是CMake&#xff08;QMake的情况这里就暂不考虑了&#xff09;项目&#xff0c;VS Code在编译、运行CMake项目还是比较成熟的。 这里笔者打…...

【Linux】修改 core 文件大小和路径

在 Linux 系统中&#xff0c;默认情况下&#xff0c;核心转储文件&#xff08;core dump&#xff09;会生成在当前工作目录下。为了将核心转储文件生成在指定路径下&#xff0c;可以通过以下方法进行配置。 1. 设置核心转储文件路径 Linux 系统提供了两种方式来指定核心转储文…...

本地部署大语言模型-DeepSeek

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型&#xff0c;具备数学推理、代码生成等深度能力&#xff0c;堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…...

【03】STM32F407 HAL 库框架设计学习

【03】STM32F407 HAL 库框架设计学习 摘要 本文旨在为初学者提供一个关于STM32F407微控制器HAL&#xff08;Hardware Abstraction Layer&#xff09;库框架设计的详细学习教程。通过本文&#xff0c;读者将从零开始&#xff0c;逐步掌握STM32F407的基本知识、HAL库的配置步骤…...

鸿蒙HarmonyOS NEXT开发:组件-样式-基础 2

// 1 // 2 ArkUI 基本语法 // 方舟开发框架(简称:ArkUI),是一套 构建HarmonyOS应用 界面 的框架。 // 构建页面的最小单位就是 "组件"。 // 组件名(参数) { // 内容 // } // .属性1() // .属性2() // .属性N() import text from @ohos.graphics.text // @En…...

SQLAlchemy系列教程:SQLAlchemy快速入门示例项目

SQLAlchemy是与数据库交互的Python开发人员不可或缺的库。这个强大的ORM允许使用python结构进行简单的数据库操作。设置过程很简单&#xff0c;并且允许可扩展的数据库应用程序开发。本文通过入门项目完整介绍SQLAlchemy的应用过程&#xff0c;包括安装依赖包&#xff0c;创建连…...

【Linux网络#10】:Https协议原理

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活总是不会一帆风顺&#xf…...

蓝桥杯备考:记忆化搜索之function

这道题是有重复的问题的&#xff0c;所以我们可以选择记忆化搜索 #include <iostream> using namespace std; typedef long long LL; const int N 25; LL ret[N][N][N]; LL dfs(LL a,LL b, LL c) {if(a<0 || b<0 || c<0) return 1;if(a>20 || b>20 || c…...

在Nginx上配置并开启WebDAV服务的完整指南

在Nginx上配置并开启WebDAV服务的完整指南 如何在 Nginx 上开启 WebDAV 服务 要在 Nginx 上开启 WebDAV 服务&#xff0c;你需要配置 Nginx 以支持 WebDAV 请求。以下是详细的步骤&#xff1a; 1. 确保 Nginx 安装了 WebDAV 模块 Nginx 的 WebDAV 功能由 http_dav_module 模…...

mysql 全方位安装教程

下载 MySQL 【官网下载地址】 注意要选择较大的哪个安装包&#xff0c;小的安装包是一个安装器。 我们不用登录&#xff0c;直接下载 直接运行下载好的安装包 MySQL如果是 安装包安装, 可以图形化界面自主配置 如果是压缩包解压, 可以配置 配置文件, 可以解压安装到指定的…...

设计模式Python版 观察者模式

文章目录 前言一、观察者模式二、观察者模式示例 前言 GOF设计模式分三大类&#xff1a; 创建型模式&#xff1a;关注对象的创建过程&#xff0c;包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&#xff1a;关注类和对象之间的组…...

如何在Python用Plot画出一个简单的机器人模型

如何在Python中使用 Plot 画出一个简单的模型 在下面的程序中&#xff0c;首先要知道机器人的DH参数&#xff0c;然后计算出每一个关节的位置&#xff0c;最后利用 plot 函数画出关节之间的连杆就可以了&#xff0c;最后利用 animation 库来实现一个动画效果。 import matplo…...

如何使用ArcGIS Pro制作横向图例:详细步骤与实践指南

ArcGIS Pro&#xff0c;作为Esri公司推出的新一代地理信息系统&#xff08;GIS&#xff09;平台&#xff0c;以其强大的功能和灵活的操作界面&#xff0c;在地理数据处理、地图制作和空间分析等领域发挥着重要作用。 在地图制作过程中&#xff0c;图例作为地图的重要组成部分&…...

MySQL 创建指定IP用户并赋予全部权限(兼容8.0以下及8.0以上版本)

在MySQL中,为用户指定访问IP并授予权限是常见的运维操作。但由于MySQL 8.0对用户创建和权限管理机制进行了升级,不同版本的操作存在差异。以下是针对MySQL 8.0以下版本和8.0及以上版本的具体实现方法。 一、MySQL 8.0以下版本(如5.7、5.6) 在MySQL 8.0之前,可以通过一条G…...

每日十个计算机专有名词 (7)

Metasploit 词源&#xff1a;Meta&#xff08;超越&#xff0c;超出&#xff09; exploit&#xff08;漏洞利用&#xff09; Metasploit 是一个安全测试框架&#xff0c;用来帮助安全专家&#xff08;也叫渗透测试人员&#xff09;发现和利用计算机系统中的漏洞。你可以把它想…...

【Python 数据结构 3.顺序表】

目录 一、顺序表基本概念 1.顺序表的概念 2.顺序表的元素插入 元素插入的步骤 3.顺序表的元素删除 元素删除的步骤 4.顺序表的元素查找 元素查找的步骤 5.顺序表的元素索引 元素索引的步骤 6.顺序表的元素修改 元素修改的步骤 二、Python中的顺序表 1.顺序表的定义 2.顺序表的插…...

C# 装箱(Boxing)与拆箱(Unboxing)

C# 装箱&#xff08;Boxing&#xff09;与拆箱&#xff08;Unboxing&#xff09; 在 C# 中&#xff0c;装箱和拆箱是与值类型&#xff08;如结构体&#xff09;和引用类型&#xff08;如类&#xff09;之间的转换相关的操作。它们是类型系统的一部分&#xff0c;但如果不正确使…...

[ComfyUI][AI生图]如何在Comfyui中安装插件管理器

如何在ComfyUI便携版中安装插件管理器 在现代软件环境中,图形用户界面(GUI)提供了一种直观的方式来与应用程序交互。ComfyUI是一个出色的GUI框架,它使用户能够通过图形化方式配置和管理他们的应用程序。特别是ComfyUI的便携版,它允许用户在没有安装的情况下使用这一工具,…...

从零开始构建高效Spring Boot应用:实战案例与最佳实践

摘要 本文旨在为初学者及有一定基础的开发者提供一份详尽的指南&#xff0c;以帮助大家深入理解并掌握如何使用Spring Boot框架来快速开发企业级应用程序。通过实际案例分析、代码示例以及架构设计思路分享&#xff0c;读者不仅能够学习到理论知识&#xff0c;还能获得宝贵的实…...

EdgeNext模型详解及代码复现

架构特点 EdgeNeXt是一种集CNN与Transformer于一体的混合架构,其核心创新在于引入了 分割深度转置注意力(SDTA)编码器 。这种设计巧妙地将深度卷积与自适应核大小以及转置注意力相结合,实现了最佳的精度-速度平衡。 SDTA编码器主要由两个组件构成: 特征编码模块 :受Res…...

SQL经典题型

查询不在表里的数据&#xff0c;一张学生表&#xff0c;一张学生的选课表&#xff0c;要求查出没有选课的学生&#xff1f; select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…...

物联网小范围高精度GPS使用

在园区内实现小范围高精度GPS&#xff08;全球定位系统&#xff09;定位&#xff0c;通常需要结合多种技术来弥补传统GPS在精度和覆盖范围上的不足。以下是实现小范围高精度GPS定位的解决方案&#xff0c;包括技术选择、系统设计和应用场景。 一、技术选择 在园区内实现高精度…...

【deepseek第二课】docker部署dify,配置私有化知识库,解决网络超时,成功安装

【deepseek第二课】docker部署dify&#xff0c;配置私有化知识库&#xff0c;解决网络超时&#xff0c;成功安装 1. dify安装1.1 官网安装文档介绍1.2 安装报错&#xff0c;网络连接问题使用镜像加速器处理1.3 dify后台启动很多docker进程 2. 页面探索2.1 设置管理账号2.2 添加…...

P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用

P8651 [P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用 题目 分析代码 题目 分析 代码中巧妙的用到3重循环&#xff0c;完美的解决了输出的顺序问题【题目要求从小到大】 需要注意的是2月的值&#xff0c;在不同的年份中应该更新2月的值 还有…...

动态规划多阶段报童模型,c++ 实现, java 实现

借助 chaptgpt 和 deepseek&#xff0c;成功实现了c上的多阶段报童模型的动态规划。花费了几天&#xff0c;将以前的 java 程序用 c 实现。 文章目录 C 代码Java 代码 总结&#xff1a; c 还是比 java 快点&#xff0c;30个阶段快了零点几秒c 使用了 unordered_map &#xff0…...