使用deepspeed继续训练LLAMA

news2024/11/17 4:46:58

目录

1. 数据训练配置

2. 模型载入

3. 优化器设置

4. DeepSpeed 设置

5. DeepSpeed 初始化

6. 模型训练


LLAMA 模型子结构:

1. 数据训练配置

利用 PyTorch 和 Transformers 库创建数据加载器,它支持单机或多机分布式训练环境下的数据加载与采样。涉及的模块包括:

  • DataLoader: 由 PyTorch 提供,用于数据集到模型的数据加载。
  • RandomSampler 和 SequentialSampler: PyTorch 提供的随机和顺序数据采样器。
  • DistributedSampler: 专为分布式训练设计的采样器。
  • default_data_collator: Transformers 库的默认数据整合器,用于批量数据处理。
  • create_pretrain_dataset: 创建预训练数据集的自定义函数。

根据 args.local_rank 的值,选择单机采样器或分布式采样器。DistributedSampler 确保每个训练节点获得唯一数据子集,而单机环境下则使用随机或顺序采样器。

2. 模型载入

通过 Transformers 库,加载并配置 LLaMA 模型及其分词器。使用 from_pretrained 方法加载预训练模型、分词器和配置。设置分词器以处理不同文本长度,并设定填充符号为 [PAD],确保填充发生在句子右侧。模型配置中也设置了句子结束和填充符号的 ID,并优化了词汇表嵌入大小以提升硬件性能。

3. 优化器设置

DeepSpeed 库提供了优化的优化器算法,如 DeepSpeedCPUAdam 和 FusedAdam,提高了大规模数据和模型训练速度。优化器设置涉及:

  • 参数分组: 通过 get_optimizer_grouped_parameters 函数实现参数分组,一组应用权重衰减,另一组不应用。
  • 优化器选择: 根据训练环境选择 DeepSpeedCPUAdam 或 FusedAdam。
  • 学习率调度: 动态调整学习率,考虑预热步骤和总训练步数。
4. DeepSpeed 设置

定义全局批次大小 (GLOBAL_BATCH_SIZE) 和每 GPU 微批次大小 (MICRO_BATCH_SIZE)。get_train_ds_config 训练配置函数包括:

  • ZeRO 优化: 减少冗余并加速训练。
  • 混合精度训练: 通过设置 fp16 字段使用 16 位浮点数。
  • 梯度裁剪: 防止梯度爆炸。
  • 混合引擎配置: 优化输出分词数量和张量大小。
  • TensorBoard 集成: 方便跟踪训练过程。

get_eval_ds_config 函数提供简洁的验证集配置,专注于模型推理。

5. DeepSpeed 初始化

初始化包括:

  • 设备确定: 检查本地 GPU 或使用 CUDA。
  • 分布式后端初始化: 使用 deepspeed.init_distributed() 同步进程。
  • 设置 DeepSpeed 配置: 根据用户参数构建训练设置。
  • 同步工作进程: 使用 torch.distributed.barrier() 确保进程同步。
  • 初始化: 通过 deepspeed.initialize 优化模型和优化器。
  • 梯度检查点: 启用时,使用 model.gradient_checkpointing_enable()。
6. 模型训练

DeepSpeed 框架下的训练步骤:

  • 训练前准备: 使用 print_rank_0 函数输出训练状态,避免多进程重复输出。
  • 训练循环: 打印周期信息,进行前向传播、梯度计算和参数更新。
  • 模型保存: 保存模型状态和配置,支持 Hugging Face 和 DeepSpeed Zero Stage 3 格式。

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

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

相关文章

C# CAD交互界面-自定义面板集-添加快捷命令(五)

运行环境 vs2022 c# cad2016 调试成功 一、引用 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using System; using System.Drawing; using System.Windows.Forms; 二、代码说明 [CommandMethod("Cre…

2-8 单链表+双链表+模拟栈+模拟队列

今天给大家用数组来实现链表栈和队列 单链表: 首先要明白是如何用数组实现, 在这里需要用到几个数组,head表示头节点的下标,e[i]表示表示下标为i的值,ne[i]表示当前节点下一个节点的下标。idx表示当前已经用到那个点…

qt-C++笔记之判断一个QLabel上有没有load图片

qt-C笔记之判断一个QLabel上有没有load图片 code review! 在Qt框架中,QLabel是用来显示文本或者图片的一个控件。如果你想判断一个QLabel控件上是否加载了图片,你可以检查它的pixmap属性。pixmap属性会返回一个QPixmap对象,如果没有图片被加…

MATLAB知识点: ismember函数 判断数组A中的元素是否在数组B中

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.5 集合运算 h ismember(A, B)可以判断数组…

单片机在物联网中的应用

单片机,这个小巧的电子设备,可能听起来有点技术性,但它实际上是物联网世界中的一个超级英雄。简单来说,单片机就像是各种智能设备的大脑,它能让设备“思考”和“行动”。由于其体积小、成本低、功耗低、易于编程等特点…

GEE数据集——美国地质调查局历史地形图(更新)

美国地质调查局历史地形图 美国地质调查局地形图的历史可追溯到 19 世纪末,当时美国地质调查局开始着手绘制整个美国的详细地图。1:24,000 比例尺,也称为 7.5 分钟四边形地图,成为最广泛使用的比例尺之一。每张地图覆盖 7.5 分经纬度的区域&a…

第70讲axios后端请求工具类封装

axios工具类封装: // 引入axios import axios from axios;// 创建axios实例 const httpService axios.create({// url前缀-http:xxx.xxx// baseURL: process.env.BASE_API, // 需自定义baseURL:http://localhost:80/,// 请求超时时间timeout: 3000 // 需自定义 })…

vue+springboot前后端视频文件等的上传与展示(基于七牛云)

前言:在初步说明完成功能之前,我会把重要的部分说明下。后续我会细化。 vue视频文件上传 其实这里和图片这些文件就是一样的。因为上传只是把我们想在云端展示的文件按等传输到云端的bucket。然后方便网站去请求引用。 有人问我我就说明下。这种东西无…

【设计模式】23中设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法,和大量抽象的方法,具体的方法是为外界提供服务的点,具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A,希望A的a方法被修饰 …

文件包含漏洞的应用与绕过技巧、防御方法

目录 包含日志文件 包含session 绕过技巧 指定前缀绕过 一、目录遍历 二、编码绕过 指定后缀绕过 一、利用URL 二、利用协议 三、长度截断 四、%00截断 文件包含漏洞防御 上一篇文章和大家介绍了一下文件包含漏洞和PHP伪协议的基本知识和利用PHP伪协议进行文件包含…

js中bind、call、apply 区别(如何实现)

文章目录 一、作用二、区别applycallbind小结 三、实现 一、作用 call、apply、bind作用是改变函数执行时的上下文,简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢?下面举个例子 var name "lucy"; var obj {n…

【EAI 013】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning

论文标题:BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning 论文作者:Eric Jang, Alex Irpan, Mohi Khansari, Daniel Kappler, Frederik Ebert, Corey Lynch, Sergey Levine, Chelsea Finn 论文原文:https://arxiv.org…

相机图像质量研究(11)常见问题总结:光学结构对成像的影响--像差

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

linux系统定时任务管理

crontab使用 一、crontab简介 crontab 这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑 /etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服…

解放双手!ChatGPT助力编写JAVA框架!

摘要 本文介绍了使用 ChatGPT逐步创建 一个简单的Java框架,包括构思、交流、深入优化、逐步完善和性能测试等步骤。 亲爱的Javaer们,在平时编码的过程中,你是否曾想过编写一个Java框架去为开发提效?但是要么编写框架时感觉无从下…

中科大计网学习记录笔记(八):FTP | EMail

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

svg基础(七)滤镜-feflood,feDisplacementMap 位置替换滤镜

1 feflood 此过滤器创建一个矩形&#xff0c;其中填充了指定的的颜色&#xff0c;应用了不透明度值。 1.1 语法 <feFlood x"" y"" width"" height"" flood-color"" flood-opacity""/>1.2 属性 x&#x…

fast.ai 深度学习笔记(一)

深度学习 2&#xff1a;第 1 部分第 1 课 原文&#xff1a;medium.com/hiromi_suenaga/deep-learning-2-part-1-lesson-1-602f73869197 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 来自 fast.ai 课程的个人笔记。随着我继续复习课程以“真正”理解它&#xff0c;这…

webgis后端安卓系统部署攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

算法学习——LeetCode力扣双指针篇

算法学习——LeetCode力扣双指针篇1 27. 移除元素 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#…