首页 > 其他分享 >从工程化角度,详解鹏程・脑海大模型训练过程

从工程化角度,详解鹏程・脑海大模型训练过程

时间:2024-01-12 18:33:23浏览次数:31  
标签:鹏城 鹏程 CPM 训练 模型 Bee 重算 详解 工程化

我们有幸邀请到了鹏城实验室高效能云计算所算法工程师陶恒韬老师来进行鹏城。脑海大模型训练过程的讲解。在课程中,陶老师从工程化的角度,对鹏城。脑海大模型训练语料处理、模型训练优化、模型应用等方面做出了全面详细的经验分享。

鹏城。脑海大模型介绍

鹏城・脑海(PengCheng Mind)大模型计划:旨在打造自然语言预训练大模型底座,将实现 2000 亿参数稠密型 AI 大模型

鹏城・脑海大模型:

  • 以中文为核心的文本大模型基座
  • 2000 亿级别参数,稠密型自回归式语言模型
  • 依托 “鹏城云脑 II” 千卡集群,基于昇思 MindSpore 多维分布式并行技术进行预训练
  • 保障大模型的数据安全隐私,输出内容符合中文核心价值观
  • 大模型能力持续演进,快速迭代更新


训练语料处理和使用

语料清洗工程化:收集数据 —— 格式预处理 —— 数据清洗 —— 脱敏过滤 —— 样本间和样本内去重 —— 数据集质量评估

  • 脱敏过滤:通过分类模型进行过滤,并不断迭代优化,包含敏感词和文本过滤器、广告词过滤器、质量评估器
  • 样本间和样本内去重:样本间采用计算 hash 去重,样本内采用 n-gram 算法去重
  • 数据集分布:中文为核心,覆盖 40 个不同领域,以经济、文学、教育、医学、法律等为主导

从工程化角度,详解鹏程・脑海大模型训练过程_大模型


200B 模型训练过程

模型结构:Transformer Decoder only,延续 GPT-175B 模型结构,并在其基础上进行了相应拓展

  • 延续 PanGu-α,在 Transformer decoder 层上添加 top query 查询层,用于预测下一 token
  • 位置编码采用旋转位置编码(ROPE)
  • 使用 FlashAttention 进行加速优化

训练策略:对比 PanGu-α,重构训练策略,采用数据 + 模型 + 流水线 + 优化器并行

  • 重计算:时间换空间,不保存正向算子计算结果,在计算反向算子时,如需要相应正向结果,再重新计算正向算子
  • 选择性重算:整网重算存在显存空余,选择部分算子重算,提升显存利用率和训练效率
  • 细粒度重算:针对不同层的算子进行差异化的重算配置,搭配流水线并行的均衡配置,提高可配置选择性重算的空间

分布式并行配置:机柜之间的带宽 < 机器之间的带宽 < 机器内卡之间的带宽,针对训练资源量(卡数和机器数)调整确认 pipeline 数量,尽量保证流水线并行的切分在机柜之间执行,且 pipeline 切分不能过细

从工程化角度,详解鹏程・脑海大模型训练过程_大模型_02

大集群 + 大模型训练的稳定性保障

  • 算法健壮性:混合精度训练,针对精度敏感的 Layer norm 和 softmax 采用 FP32
  • 训练故障恢复优化:自动监控 + 临终遗言 + 编译优化

从工程化角度,详解鹏程・脑海大模型训练过程_大模型_03

鹏城・脑海模型全流程开发:数据预处理 — 模型预训练 — 微调(SFT)-- 对齐(RLHF)-- 模型部署 — 模型应用

从工程化角度,详解鹏程・脑海大模型训练过程_模型应用_04


【下节课程预告】

下周六(2024 年 1 月 20 日)我们即将迎来国产开源大语言模型另一位重磅玩家 ——CPM-Bee 中英文双语基座大模型。在下节课程中,我们非常荣幸地邀请到了 OpenBMB 开源社区技术负责人、清华大学硕士,同时也是 CPM-Bee 开源搭模型项目主要维护者 龚柏涛老师来进行 CPM-Bee 模型的讲解。

这里我们稍稍剧透下课程内容,各位小伙伴 1 月 20 日 14:00-15:30 不见不散!

  1. CPM-Bee 模型结构:CPM-Bee 的模型结构介绍
  2. CPM-Bee 数据格式:介绍 CPM-Bee 的结构化输入输出数据格式,以及相应的分词、位置编码的方法
  3. CPM-Bee 微调及推理演示:基于例子演示,介绍 Mindspore+CPM-Bee 的使用方法,包括推理、微调等

昇思 MindSpore 技术公开课大模型专题第二期课程火爆来袭!未报名的小伙伴抓紧时间参与课程,并同步加入课程群,有免费丰富的课程资源在等着你。课程同步赋能华为 ICT 大赛 2023-2024,助力各位选手取得理想成绩!

点击关注,第一时间了解华为云新鲜技术~

标签:鹏城,鹏程,CPM,训练,模型,Bee,重算,详解,工程化
From: https://blog.51cto.com/u_15214399/9220565

相关文章

  • Vue 3 Composition API 详解
    一、引言在Vue3中,引入了一个新的CompositionAPI,旨在提供一种更灵活和可重用的方式来组织组件代码。CompositionAPI基于函数式编程思想,允许开发者将逻辑和状态管理逻辑分离,使代码更加清晰和可维护。二、CompositionAPI的核心概念响应式数据在Vue3中,响应式数据是组件状态的重要......
  • Python模块安装的前提条件及步骤详解
    Python是一种功能强大的编程语言,拥有丰富的第三方模块库。在使用这些模块之前,我们需要满足一些前提条件才能进行安装。本文将介绍Python模块安装的前提条件以及详细的安装步骤。前提条件:在安装Python模块之前,需要满足以下前提条件:1.Python解释器:确保已经正确安装了Python解释器,并且......
  • 软件测试/测试开发全日制|Pytest中yield的用法详解
    前言在之前的介绍中,我们已经介绍了fixture的简单用法,但其实fixture还提供了两种非常优雅高效的写法,来完成测试执行前的处理操作与执行后的处理操作,即使用yield或addfinalizer来实现。本文我们将介绍使用yield来实现操作。yield在fixture中的关键字yield主要有两个作用:yield代替retu......
  • 软件测试/测试开发全日制|Pytest测试框架Fixture作用域详解
    前言Pytest的fixtrue是存在作用域的,比如作用域为函数级别,那么没执行一条用例,就会重新执行一次fixtrue,如果是类级别,那么多个类执行时会在去执行fixture。fixture的作用域有5个,分别是:function,class,module,package,session。有了这些作用域我们可以不用重复的去执行fixture,从......
  • linux之页表详解(千字详解)
    linux之页表详解页表的详解在进程地址空间与物理内存之间,就是通过页表来进行映射关联的!==而页表的功能也不仅仅是简简单单的映射!如下图!==例如:是否命中,进程关于这个内存的读写权限,是用户的还是内核的!等等这样子我们就能理解char*str="helloworld";*str='H';这个......
  • Ansible - 配置文件详解
      主配置文件ansible.cfg修改sudo相关配置,在实际工作中,可能使用ansible时,所使用的用户并不是root用户,而是管理员给的一个普通用户,所以需要考虑ansible相关配置文件需要怎么写才能支持日常工作。[defaults]inventory=~/ansible/hostsremote_user=alice#以什......
  • Day48 构造器详解
    构造器详解类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点:1.必须和类的名字相同2.必须没有返回类型,也不能写void构造器必须要掌握1.Person.class文件与Person.java文件进行对比在idea的out文件夹下面打开同名的class文......
  • Jenkins简介及安装配置详解:开启持续集成之旅
    Jenkins简介及安装配置详解:开启持续集成之旅一、Jenkins介绍Jenkins是一个开源的、用Java编写的持续集成和持续交付(CI/CD)工具。它提供了一种简单易用的方式来自动化构建、测试和部署软件。Jenkins的主要目标是帮助开发团队加快软件开发过程,提高软件质量,并通过自动化流程减......
  • 全网最详细的线程池 ThreadPoolExecutor 详解,建议收藏!
    一、ThreadPoolExecutor类讲解1、线程池状态:五种状态:线程池的shutdown()方法,将线程池由RUNNING(运行状态)转换为SHUTDOWN状态线程池的shutdownNow()方法,将线程池由RUNNING或SHUTDOWN状态转换为STOP状态。注:SHUTDOWN状态和STOP状态先会转变为TIDYING状态,最终......
  • Unity3D 性能杀手Overdraw详解
    前言Unity3D是一款强大的游戏开发引擎,但在使用过程中,我们需要注意一些可能会影响游戏性能的因素。其中之一就是Overdraw(过度绘制),它可以成为性能杀手。本文将详细解释Overdraw的概念、原因以及如何通过代码实现来减少Overdraw对游戏性能的影响。对惹,这里有一个游戏开发交流小组,希......