模型微调-基于LLaMA-Factory进行微调的一个简单案例

模型微调-基于LLaMA-Factory进行微调的一个简单案例

  • 1. 租用云计算资源
  • 2. 拉取 LLaMa-Factory
  • 3. 安装依赖环境
  • 4. 启动 LLaMa-Factory 界面
  • 5. 从 Huggingface 下载模型
  • 6. 模型验证
  • 7. 模型微调

1. 租用云计算资源

以下示例基于 AutoDL 云计算资源。

在云计算平台选择可用的云计算资源实例,如果有4090实例可用,推荐选择4090实例。同时注意镜像的选择,所以镜像会包含特定的环境,省去一些基础环境的安装步骤,不过这里镜像在实例启动之后也可以进行切换。

在这里插入图片描述
创建实例之后,通过SSH连接远程服务器
在这里插入图片描述
这里我使用 VS Code的 Remote-SSH 插件进行连接,连接进去之后可以看到实例中有两个盘,其中/root/autodl-tmp是数据盘,推荐运行环境、模型文件都放在数据盘,避免后续因为实例关机回收导致数据文件丢失。
在这里插入图片描述

2. 拉取 LLaMa-Factory

LLaMa-Factory 的 git 地址如下,通过 git 命令拉取

git clone https://github.com/hiyouga/LLaMA-Factory.git

在这里插入图片描述

3. 安装依赖环境

LLaMa-Factory 依赖 Python 特定版本,这里使用 Conda 来进行 Python 虚拟环境管理,大语言模型相关的框架对运行环境的依赖比较严重,推荐通过虚拟环境进行隔离。
在这里插入图片描述
而在创建虚拟环境之前,推荐设置一下 Conda 虚拟环境和 Python 包的保存路径,还是那个原因,避免因为云计算资源回收导致数据丢失。

mkdir -p /root/autodl-tmp/conda/pkgs
conda config --add pkgs_dirs /root/autodl-tmp/conda/pkgs
mkdir -p /root/autodl-tmp/conda/envs
conda config --add envs_dirs /root/autodl-tmp/conda/envs/

之后创建虚拟环境:

conda create -n llama-factory python=3.10

虚拟环境创建完成之后,通过以下命令初始化以下Conda,并刷新一下命令行环境变量,再激活环境:

conda init
source ~/.bashrc
conda activate llama-factory

在这里插入图片描述
之后进入 LLaMa-Factory 文件夹,通过以下命令进行 LLaMa-Factory 相关依赖包的安装

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

在这里插入图片描述
安装完成之后,通过以下命令测试一下 LLaMa-Factory 是否正常安装:

llamafactory-cli version

在这里插入图片描述

4. 启动 LLaMa-Factory 界面

通过以下命令启动 LLaMa-Factory 可视化微调界面:

llamafactory-cli webui

在这里插入图片描述
通过 VS Code 中的 Remote-SSH 插件连接云服务器的情况,启动可视化界面之后,Remote-SSH 会自动进行端口转发,从而自动在本地浏览器打开相应的页面。如果是其他工具的话,可能需要在云平台配置一下相应的端口,之后通过云平台暴漏出来的域名打开。

在这里插入图片描述

5. 从 Huggingface 下载模型

首先创建一个文件夹用于存放模型文件:

mkdir hugging-face

增加环境变量,修改 HuggingFace 镜像源为国内镜像网站:

export HF_ENDPOINT=https://hf-mirror.com

修改模型默认存储路径:

export HF_HOME=/root/autodl-tmp/hugging-face

在这里插入图片描述
之后还是切换到 llama-factory 虚拟环境,安装 HuggingFace官方下载工具:

pip install -U huggingface_hub

在这里插入图片描述
安装完成之后,通过以下命令下载模型:

huggingface-cli download --resume-download Qwen/Qwen2.5-0.5B-Instruct

在这里插入图片描述
这里为了下载和后面的微调演示快点就下载0.5B的模型了,具体的模型大家可以根据实际情况去选择自己需要的模型,在huggingface上搜索模型名称,之后进入模型主页,复制名称即可:

在这里插入图片描述
模型文件都比较大,在线下载的话需要等待一段时间,下载完成之后,可以看到模型文件就在 hugging-face 文件夹下了。

在这里插入图片描述
在线下载比较占用时间,而云服务器开机每一分钟都需要花钱,你可以在本地下载模型文件之后传到云服务器上。这时候可以通过 AutoDL 提供的 Jupyter 工具进行文件上传,或者通过其他带有SFTP功能的工具连接云服务器上传。

在这里插入图片描述
在这里插入图片描述

6. 模型验证

下载完成模型之后,我们需要验证模型文件是否可以正常加载、运行,可以通过 LLaMa-Factory 的可视乎界面加载运行模型:

在这里插入图片描述
需要注意的是,加载本地模型的时候,需要修改填写模型本地路径,这里的路径是模型快照的唯一哈希值,而不是模型文件夹的路径。

在这里插入图片描述
之后就可通过和模型进行对话,测试下载下来的模型是否正常了,也可以看下对话中模型输出的风格,和我们微调之后的做下对比。

在这里插入图片描述

7. 模型微调

接下来就可以通过 LLaMa-Factory 进行微调了,这里先做一个简单的演示,为了不让这篇文章篇幅过长,先不具体讲解各种微调参数的含义和作用,数据集也只使用 LLaMa-Factory 自带的示例数据集,演示一下对模型认知设定的微调。

修改一下默认的 identity.json 数据集,将其中的{{name}}、{{author}}替换为我们自己的设定,并保存文件。

在这里插入图片描述
之后在 LLaMa-Factory Web界面中加载预览数据集,并且稍微调整一下超参,主要是学习率先保存不变,主要是训练轮次,以及验证集比例。

在这里插入图片描述
在这里插入图片描述
后续如果需要使用我们自定义的数据集的话,也只要将数据集文件放到 LLaMa-Factory 的 data 文件夹,再在 dataset_info.json 中进行配置,就可以在 Web 界面进行加载使用。这里就先不细说了。

在这里插入图片描述
之后点击开始,可以看到微调任务的执行进度,以及损失函数的变化情况。
在这里插入图片描述
0.5B 的模型,再加上数据集数据量不多,只有不到100条,所以微调过程还是很快的,可以看到最终的损失函数降到了 0.5 左右。不过这是因为训练数据太少,而且一些超参设置比较不合理,才有这样的较低损失函数,实际微调用于生产环境的模型时,要注意防止过拟合的情况。

在这里插入图片描述
之后,还是用 LLaMa-Factory 加载微调之后的模型文件进行测试,这里通过检查点路径添加刚刚训练完成的模型文件:

在这里插入图片描述
之后就可以和我们微调之后的模型进行对话了

在这里插入图片描述
可以看到,微调之后的模型已经学习了数据集中的信息,可以按照我们预设的人设回答问题。

参考文档:
LLama-Factory 官方文档

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

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

相关文章

【单片机】ARM 处理器简介

ARM 公司简介 ARM(Advanced RISC Machine) 是英国 ARM 公司(原 Acorn RISC Machine) 开发的一种精简指令集(RISC) 处理器架构。ARM 处理器因其低功耗、高性能、广泛适用性,成为嵌入式系统、移动…

springboot的实体类字段校验的分组校验

分组校验(Group Validation)允许在不同的场景下对同一个实体类应用不同的校验规则。例如,在新增数据和更新数据时,可能需要对某些字段的校验规则进行调整。以下是分组校验的具体实现步骤: 一、定义分组接口 创建空的标…

vue3,Element Plus中隐藏树el-tree滚动条

el-tree&#xff0c;节点过多&#xff0c;默认会出现垂直滚动条&#xff0c;显得不美观 可以使用隐藏组件 el-scrollbar 将 el-tree 包裹&#xff0c;就可以隐藏垂直滚动条 <el-scrollbar> <el-tree> ... </el-tree> </el-scrollbar> /* 滚动条禁用鼠…

mysql练习

创建数据库db_ck&#xff0c;再创建表t_hero&#xff0c;将四大名著中的主要人物都插入这个表中&#xff0c;将实现过程中sql提交上上来 1、创建数据库db_ck mysql> create database db_ck; 2、创建表t_hero mysql> use db_ck Database changed mysql> create table …

svn删除所有隐藏.svn文件,文件夹脱离svn控制

新建一个文件&#xff0c;取名remove-svn-folders.reg&#xff0c;输入如下内容&#xff1a; Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Class…

文心一言:中国大模型时代的破局者与探路者

2023年&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;的浪潮席卷全球&#xff0c;而百度推出的“文心一言”&#xff08;ERNIE Bot&#xff09;作为中国AI领域的代表性产品&#xff0c;迅速成为行业焦点。这款基于百度自主研发的“文心大模型”打造的对话式AI工具&am…

Ubuntu 安装docker docker-compose

Docker 通过提供轻量级、可移植且高效的解决方案&#xff0c;简化了软件开发和部署。“docker build”命令是 Docker 镜像创建过程的核心。本文将探讨 Docker 构建命令、用法以及 Docker 构建的优化。 Docker 构建有什么作用&#xff1f; Docker build 是一个命令行界面 CLI命…

Unity开发——CanvasGroup组件介绍和应用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。 一、常用属性的解释 1、alpha&#xff1a;控制UI的透明度 类型&#xff1a;float&#xff0c;0.0 ~1.0&#xff0c; 其中 0.0 完全透明&#xff0c;1.0 完全不透明。 通过调整alpha值可以实现UI的淡入淡…

每天五分钟深度学习PyTorch:向更深的卷积神经网络挑战的ResNet

本文重点 ResNet大名鼎鼎,它是由何恺明团队设计的,它获取了2015年ImageNet冠军,它很好的解决了当神经网络层数过多出现的难以训练的问题,它创造性的设计了跳跃连接的方式,使得卷积神经网络的层数出现了大幅度提升,设置可以达到上千层,可以说resnet对于网络模型的设计具…

大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘

文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…

基于hive的电信离线用户的行为分析系统

标题:基于hive的电信离线用户的行为分析系统 内容:1.摘要 随着电信行业的快速发展&#xff0c;用户行为数据呈现出海量、复杂的特点。为了深入了解用户行为模式&#xff0c;提升电信服务质量和精准营销能力&#xff0c;本研究旨在构建基于 Hive 的电信离线用户行为分析系统。通…

Python使用alembic实现数据库管理

python使用alembic实现数据库管理 环境准备 安装依赖&#xff1a; pip install sqlalchemy alembic项目结构 my_project/ ├── models.py # 定义数据模型 └── alembic/ # 迁移脚本目录&#xff08;自动生成&#xff09; 使用步骤&#xff1a; 1. 初始化Alembic环境 …

对WebSocket做一点简单的理解

1.概念 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接 WebSocke…

kali虚拟机登录页面发癫 大写锁定输入不了密码

不知道怎么了 总是发癫 重启切换太麻烦了 还有时候不成功 kali其实可以开启虚拟键盘 如下 就解决的 发癫kali 发癫 发癫

基于Python的商品销量的数据分析及推荐系统

一、研究背景及意义 1.1 研究背景 随着电子商务的快速发展&#xff0c;商品销售数据呈现爆炸式增长。这些数据中蕴含着消费者行为、市场趋势、商品关联等有价值的信息。然而&#xff0c;传统的数据分析方法难以处理海量、多源的销售数据&#xff0c;无法满足现代电商的需求。…

内存泄漏出现的时机和原因,如何避免?

由于时间比较紧张我就不排版了&#xff0c;但是对于每一种可能的情况都会出对应的代码示例以及解决方案代码示例。 内存泄漏可能的原因之一在于用户在动态分配一个内存空间之中&#xff0c;忘记将这部分内容手动释放。例如&#xff1a;&#xff08;c之中使用new分配内存没有使…

PDF处理控件Aspose.PDF,如何实现企业级PDF处理

PDF处理为何成为开发者的“隐形雷区”&#xff1f; “手动调整200页PDF目录耗时3天&#xff0c;扫描件文字识别错误导致数据混乱&#xff0c;跨平台渲染格式崩坏引发客户投诉……” 作为开发者&#xff0c;你是否也在为PDF处理的复杂细节消耗大量精力&#xff1f;Aspose.PDF凭…

工程化与框架系列(27)--前端音视频处理

前端音视频处理 &#x1f3a5; 引言 前端音视频处理是现代Web应用中的重要组成部分&#xff0c;涉及音频播放、视频处理、流媒体传输等多个方面。本文将深入探讨前端音视频处理的关键技术和最佳实践&#xff0c;帮助开发者构建高质量的多媒体应用。 音视频技术概述 前端音视…

2008-2024年中国手机基站数据/中国移动通信基站数据

2008-2024年中国手机基站数据/中国移动通信基站数据 1、时间&#xff1a;2008-2024年 2、来源&#xff1a;OpenCelliD 3、指标&#xff1a;网络类型、网络代数、移动国家/地区、移动网络代码、区域代码、小区标识、单元标识、坐标经度、坐标纬度、覆盖范围、测量样本数、坐标…

阿里云 ESA 游戏行业解决方案|安全防护、加速、低延时的技术融合

如今&#xff0c;游戏行业正处于蓬勃发展与深刻变革的关键时期。根据中国国际数字娱乐产业大会&#xff08;CDEC&#xff09;发布的《2024年 1-6 月中国游戏产业报告》显示 2024 年上半年国内游戏市场实际销售收入达 1472.67 亿元&#xff0c;同比增长 2.08%&#xff0c;游戏用…