【GPT入门】第57课 详解 LLamaFactory 与 XTuner 实现大模型多卡分布式训练的方案与实践

【GPT入门】第57课 大模型多卡计算

  • 1. 理论
  • 2.LLamaFacotory实践
  • 3. xtuner
    • 3.1 介绍
    • 3.1 安装
    • 3.2 xtuner训练
    • 3.4 训练后格式转换
    • 3.5 合并基础模型与lora模型
    • 3.6 参数说明
    • 3.7 训练过程主观检验

1. 理论

deepspeed的三种训练方式
zero-1,优化器状态分片。的优势体现在多卡上,对单卡没起到优化效果
zero-2: 梯度分片+优化器状态分片,梯度分片就是模型分片,这里是模型中反向过程的拆分
zero-3: 参数分片+梯度分片+优化器状态分片。前向反向都参与计算。节省显存,但计算最慢。
LLamaFactory和xtuner都实现了deepspeed来体现训练性能,下文分别采用这两个技术实践训练过程

2.LLamaFacotory实践

官网说明:
https://llamafactory.readthedocs.io/zh-cn/latest/advanced/distributed.html#

deepSpeed state = none 不会节省现存,每张卡的现存都一样的

  • 分布训练介绍
    在这里插入图片描述
  • DeepSpeed集成介绍
    在这里插入图片描述
  • ui中none就是不开启deepseek
    在这里插入图片描述
  • 单机多卡计算

在llamafactory ui中,直接选DeepSpeed stage=2或3就可以开始单机多卡的计算
在这里插入图片描述

  • 训练看看,发现报错
    在这里插入图片描述

  • state设置为2
    pip install deepspeed

[rank1]: ImportError: deepspeed>=0.10.0,<=0.16.9 is required for a normal functioning of this module, but found deepspeed0.17.5.
[rank1]: To fix: run pip install deepspeed>=0.10.0,<=0.16.9.
pip install deepspeed
0.16.9

运行前截图:
在这里插入图片描述

  • 双卡使用情况可视化
    在这里插入图片描述

3. xtuner

3.1 介绍

XTuner 是一款由上海人工智能实验室(Shanghai AI Laboratory)开发的大模型微调工具链,专注于为各种规模的预训练模型提供高效、易用的微调解决方案。它基于 PyTorch 框架构建,兼容主流的大模型(如 LLaMA 系列、GPT 系列、Qwen 系列等),支持多种微调策略,旨在降低大模型微调的技术门槛,同时保证训练效率和效果。
XTuner 的核心优势在于其对分布式训练的优化、内存高效的训练策略以及丰富的微调算法支持,使得用户能够在有限的硬件资源下完成大模型的微调任务。

3.1 安装

安装文档参考官网:https://xtuner.readthedocs.io/zh-cn/latest/get_started/installation.html

  • 步骤0
    conda create --name xtuner-env python=3.10 -y

create --prefix /root/autodl-tmp/conda_envs/xtuner-env python=3.10 -y
conda activate xtuner-env

  • 步骤1: 源码安装
git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[deepspeed]'

“-e” 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效

  • 步骤2:检查配置文件
    xtuner list-cfg
    在这里插入图片描述

  • qLoRA开关
    qLoRA比LoRA更高效,是目前的主流

  • 对话模板存放位置
    在这里插入图片描述

  • xtuner支持的模型
    在这里插入图片描述

3.2 xtuner训练

  • 选择模板
    根据自己训练的模型,选择相应的模板,本文使用qwen1.5_0.5b
    在这里插入图片描述
  • 量化参数修改

在这里插入图片描述
参数修改行业经验: r=64, lora_alpha设置为r的2倍,即128.

  • 对话模板位置
    在这里插入图片描述

  • 训练数据
    /root/autodl-tmp/xtuner/data/target_data.json
    使用modelscope上的ruozhiba数据,经过转换后格式如下:
    转换前:

[{"query": "只剩一个心脏了还能活吗?","response": "能,人本来就只有一个心脏。"},{"query": "爸爸再婚,我是不是就有了个新娘?","response": "不是的,你有了一个继母。\"新娘\"是指新婚的女方,而你爸爸再婚,他的新婚妻子对你来说是继母。"},{"query": "樟脑丸是我吃过最难吃的硬糖有奇怪的味道怎么还有人买","response": "樟脑丸并不是硬糖,而是一种常见的驱虫药,不能食用。虽然它的味道可能不太好,但是由于其有效的驱虫效果,所以仍然有很多人会购买。"},

转换后格式:
格式要求参考官网:https://xtuner.readthedocs.io/zh-cn/latest/training/open_source_dataset.html

 {"conversation": [{"input": "只剩一个心脏了还能活吗?","output": "能,人本来就只有一个心脏。"}]},{"conversation": [{"input": "爸爸再婚,我是不是就有了个新娘?","output": "不是的,你有了一个继母。\"新娘\"是指新婚的女方,而你爸爸再婚,他的新婚妻子对你来说是继母。"}]},{"conversation": [{"input": "樟脑丸是我吃过最难吃的硬糖有奇怪的味道怎么还有人买","output": "樟脑丸并不是硬糖,而是一种常见的驱虫药,不能食用。虽然它的味道可能不太好,但是由于其有效的驱虫效果,所以仍然有很多人会购买。"}]},
  • 执行
    xtuner train qwen1_5_0_5b_chat_qlora_alpaca_e3.py
    提示
 79, in validate_environmentfrom ..integrations import validate_bnb_backend_availabilityFile "<frozen importlib._bootstrap>", line 1075, in _handle_fromlistFile "/root/autodl-tmp/conda_envs/xtuner-env/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1805, in __getattr__module = self._get_module(self._class_to_module[name])File "/root/autodl-tmp/conda_envs/xtuner-env/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1819, in _get_moduleraise RuntimeError(
RuntimeError: Failed to import transformers.integrations.bitsandbytes because of the following error (look up to see its traceback):
No module named 'triton.ops'

在这里插入图片描述
更新torch版本,在runtime.txt中,指定版本,重新安装

torch==2.5.1
torchvision==0.20.1
  • 指定多卡运行
    参考官网:https://xtuner.readthedocs.io/zh-cn/latest/acceleration/deepspeed.html

NPROC_PER_NODE=${GPU_NUM} , 指定GPU数量,如果不指定,就是一个GPU,即使机器存在多个GPU
NPROC_PER_NODE=2 xtuner train qwen1_5_0_5b_chat_qlora_alpaca_e3.py --deepspeed deepspeed_zero2

在这里插入图片描述

在这里插入图片描述

  • 观察训练过程
    在这里插入图片描述

3.4 训练后格式转换

  • 训练后的文件是pytorch格式,不是huggingface格式

在这里插入图片描述
rank0和rank1只分别在两个卡上训练

  • 基础模型是huggingface格式
    在这里插入图片描述

  • 转换格式
    转换格式语法:
    xtuner convert pth_to_hf ${FINETUNE_CFG} ${PTH_PATH} ${SAVE_PATH}
    本次实验命令:
    (/root/autodl-tmp/conda_envs/xtuner-env) root@autodl-container-89aa47baea-756ca94a:~/autodl-tmp/xtuner# xtuner convert pth_to_hf qwen1_5_0_5b_chat_qlora_alpaca_e3.py /root/autodl-tmp/xtuner/work_dirs/qwen1_5_0_5b_chat_qlora_alpaca_e3/iter_3500.pth /root/autodl-tmp/models/hf

在这里插入图片描述

在这里插入图片描述

3.5 合并基础模型与lora模型

在这里插入图片描述

3.6 参数说明

从checkpoint恢复方法
load_from = None 默认None,改为自己的checkpoit路径
load_from=‘/root/autodl-tmp/xtuner/work_dirs/qwen1_5_0_5b_chat_qlora_alpaca_e3/iter_6500.pth’

resume = False

save_steps = 500, 没500step保存一次checkpoint
save_total_limit = 2 # Maximum checkpoints to keep (-1 means unlimited) 只保存2个checkpoint

3.7 训练过程主观检验

可以在日志中,检查训练效果
在这里插入图片描述

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

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

相关文章

部队多媒体信息发布系统:赋能 IPTV 与电教化,加速军营信息化变革

在科技飞速发展的当下&#xff0c;部队的信息化建设也在不断推进。多媒体信息发布系统作为一种创新的技术手段&#xff0c;正逐步融入部队的各个领域&#xff0c;为部队的现代化建设注入强大动力。​在部队 IPTV 方面&#xff0c;多媒体信息发布系统展现出卓越的性能。它打破了…

FTP/TCP上传下载文件

封装C风格地ftplib为ftp.c和ftp.h文件&#xff1a;cftplient类&#xff08;主要成员变量&#xff1a;文件大小、文件修改时间、主要成员函数&#xff1a;get函数&#xff08;远程文件名、本地文件名、核对文件时间&#xff09;、put函数&#xff08;本地文件名、服务端文件名、…

DeepSeek V3.1深度解析:一个模型两种思维,迈向Agent时代的第一步!

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录一、什么是DeepSeek V3.1&#xff1f;为什么这么火&#x1f680;1. 发布时间线回顾2.…

VsCode 便携版(绿色版)下载及配置

下载 VsCode 便携版&#xff0c;并确保所有配置和扩展都保存在一起&#xff0c;实现真正的“绿色版”效果 核心步骤概览 核心原理是在 VSCode 的主程序目录下创建一个名为 data 的文件夹&#xff0c;VSCode 启动时如果检测到这个文件夹&#xff0c;就会自动切换到便携模式&am…

使用VLLM部署大模型embedding/chat 的API

模型下载&#xff1a;一般通过modelscope提供的方式进行下载&#xff0c;速度更快&#xff0c;huggingface下模型即便开启了魔法也还是很慢&#xff0c;对于9B以上的模型都是至少15G的。 比如需要下载qwen3-embedding-8b的模型&#xff0c;可以通过提供的一段代码自动进行下载到…

Blender模型动画导入到UE5

UE5支持直接导入FBX文件&#xff0c;但在实际应用中笔者发现&#xff1a;刚开始使用的是UE5.3&#xff0c;在UE5.3中直接将.fbx文件拖入UE中导入后是一个个的零件&#xff0c;后来使用了datasmith插件等其他办法&#xff0c;怎么都没有达到想要的效果。后面升级UE5.4以后&#…

Promise详解:Promise解决ajax回调嵌套问题

目录 一、Promise是什么 二、回调地狱 三、Promise解决回调地狱的原理 四、promaise实例 一、Promise是什么 1、主要用于异步计算 2、可以将异步操作队列化&#xff0c;按照期望的顺序执行&#xff0c;返回符合预期的结果 4、可以在对象之间传递和操作promise&#xff0c…

【Kubernetes知识点】Pod调度和ConfigMaps

目录 1.如何将特定Pod调度到指定的节点&#xff1f; 2.什么是节点的亲和性&#xff1f; 3.什么是污点&#xff0c;它的主要用途是什么&#xff1f; 4.解释ConfigMap的作用。 5.Secret和ConfigMap相比较有哪些优点。 6.解释ResourceQuota的作用 1.如何将特定Pod调度到指定…

火车头使用Post方法采集Ajax页面教程

前面有写过一篇瀑布流的采集方法&#xff0c;今天在添加一个POST方法来采集Ajax刷新页面的教程。 之前的文章请看&#xff1a;火车头采集动态加载Ajax数据&#xff08;无分页瀑布流网站&#xff09; 如果遇到POST方法来架子Ajax数据&#xff0c;这和我之前写的是两个类型&…

【学习记录】structuredClone,URLSearchParams,groupBy

structuredClone() 可以进行深拷贝&#xff0c;这里有详细讲解&#xff1a;Window&#xff1a;structuredClone() 方法 当需要处理包含嵌套对象或数组的复杂数据结构时&#xff0c;建议使用 structuredClone() 来保护原始数据。 举例&#xff1a;别再用 … 扩展运算符了&#x…

30条AI编程指令

大家好&#xff0c;小机又来分享AI了。 前言&#xff1a; 凌晨三点&#xff0c;你还在像素级对齐那个永远对不齐的按钮&#xff1b;刚写完的API文档&#xff0c;产品经理一句"需求变了" 让你瞬间崩溃&#xff1b;更扎心的是&#xff0c;实习生用AI十分钟搞定了你要…

AI+虚拟仿真:以科技之光照亮希望的田野

在乡村振兴与农业现代化的全新征程中&#xff0c;农林专业人才肩负着科技赋能土地、守护绿色发展的重任。然而&#xff0c;现有的教育模式却越发不适应农业人才的培养需求。“AI虚拟仿真”正在为农业现代化人才建设提供创新的技术引擎。市场风口与政策红据统计&#xff0c;2024…

04_函数

第4课&#xff1a;函数 课程目标 掌握函数的定义和调用方法学习参数传递和返回值的使用理解函数的作用域和命名空间 1. 函数的基本概念 函数是一段可重复使用的代码块&#xff0c;用于执行特定的任务。 2. 函数的定义和调用 # 定义函数 def greet():print("你好&#xff0…

STM32学习笔记19-FLASH

FLASH简介STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程&#xff0c;读取指定寄存器直接使用指针读即可读写FLASH的用途&#xff1a;利用程序存储器的…

电蚊拍的原理及电压电容参数深度解析:从高频振荡到倍压整流的完整技术剖析

1. 引言在炎炎夏日&#xff0c;蚊虫成为人们生活中的一大困扰。电蚊拍作为一种高效、环保的物理灭蚊工具&#xff0c;凭借其便携性和实用性在全球范围内得到了广泛应用。然而&#xff0c;许多用户对这种看似简单的小家电背后的工作原理知之甚少。电蚊拍是一种新型的灭蚊小家电&…

Mac简单测试硬盘读写速度

一、下载软件 Blackmagic Disk Speed Test 「达芬奇 磁盘速度测试」二、选中测试位置可以随便选个文件比如“下载”目录三、开始测速

⸢ 零 ⸥ ⤳ 安全体系构建内容结构

&#x1f44d;点「赞」&#x1f4cc;收「藏」&#x1f440;关「注」&#x1f4ac;评「论」在金融科技深度融合的背景下&#xff0c;信息安全已从单纯的技术攻防扩展至架构、合规、流程与创新的系统工程。作为一名从业十多年的老兵&#xff0c;系统阐述数字银行安全体系的建设路…

XP系统安装Android Studio 3.5.3并建立Java或Native C++工程,然后在安卓手机上运行

第一节 安装Android Studio 3.5.3Android Studio 3.5.3下载地址&#xff1a;Android Studio 3.5.3 December 5, 2019 Windows (32-bit): android-studio-ide-191.6010548-windows32.zip (756.1 MB) https://redirector.gvt1.com/edgedl/android/studio/ide-zips/3.5.3.0/androi…

calchash.exe和chckhash.exe计算pe文件hash值的两个实用小工具

第一部分&#xff1a; C:\WINDOWS\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\NT5.CAT t部分内容B B D 0 2 2 2 1 A A 6 5 5 6 2 8 F 4 9 5 F 6 C D 3 0 3 9 0 8 B B E 0 0 F 9 5 9 5 第二部分&#xff1a; D:\>calchash.exe pidgen.dll BB D0 22 21 AA 65 …

lanczso算法中的额外正交化代码解释

额外正交化 定义&#xff1a;在Lanczos算法中&#xff0c;由于浮点误差&#xff0c;生成的向量可能不完全正交&#xff0c;需要额外正交化步骤。代码实现&#xff1a;def extra_orthogonalization(v, basis):for u in basis:v - u * (v.dot(u) / u.dot(u))