用BML实现开源大模型的预训练(Post-pretrain)

全功能AI开发平台 BML

  • 版本发布记录
  • 快速开始
    • 用BML实现表格预测
    • 用BML实现序列标注
    • 用BML实现文本实体抽取
    • 用BML实现图片分类
    • 用BML实现实例分割
    • 用BML评价短文本相似度
    • 用BML实现开源大模型的预训练(Post-pretrain)
    • 用BML实现文本分类
    • 用BML实现物体检测
  • 模型仓库
    • 从训练任务导入模型
    • 查看模型
    • 创建模型
    • 模型仓库简介
    • 从本地导入模型
    • 校验模型
    • 服务代码文件示例
      • Sklearn服务代码文件示例
      • XGBoost服务代码文件示例
  • 平台管理
    • 权限管理
    • 在BML平台使用并行文件系统PFS和对象存储BOS
    • 在BML平台使用容器镜像服务CCR
    • 在BML使用外部镜像
    • 项目空间管理
    • 镜像管理
      • 镜像使用
      • 镜像管理简介
      • 常见问题
      • 自定义镜像
    • 资源管理
      • 资源池管理简介
      • 资源池使用简介
  • 预测部署
    • 批量预测(用户资源池)API
    • 文字识别模型部署
      • 文字识别任务API参考文档
      • 文字识别任务公有云部署
    • 通用模型部署
      • 标准接口规范参考
      • Paddle框架API调用文档
      • sklearn框架API调用文档
      • 公有云部署
      • XGBoost框架API调用文档
      • tensorflow框架API调用文档
      • Pytorch框架API调用文档
      • 通用类模型API参考
      • 错误码
    • 语音技术模型部署
      • 声音分类API调用文档
    • 视觉模型部署
      • 智能边缘控制台-多节点版
      • 端云协同服务部署
      • 智能边缘控制台-单节点版
      • 视觉任务模型部署整体说明
      • 软硬一体方案部署
        • 视觉任务Jetson专用SDK集成文档
        • 如何获取视觉任务软硬一体产品
        • 视觉任务EdgeBoard(VMX)专用SDK集成文档
        • 视觉任务EdgeBoard(FZ)专用SDK集成文档
        • 视觉任务专用辨影SDK集成开发文档
      • 私有服务器部署
        • 视觉模型如何部署在私有服务器
        • 私有API
          • 如何发布私有API
          • 图像分类-单图单标签私有API集成文档
          • 图像分类-单图多标签私有API集成文档
          • 物体检测私有API集成文档
        • 服务器端SDK
          • 视觉任务服务器端LinuxSDK集成文档-Python
          • 视觉任务服务器端LinuxSDK集成文档-C++
          • 如何发布服务器端SDK
          • 视觉任务服务器端WindowsSDK集成文档
          • 视觉任务服务器端SDK简介
      • 设备端SDK部署
        • 视觉任务WindowsSDK集成文档
        • 视觉任务iOSSDK集成文档
        • 视觉任务LinuxSDK集成文档-Python
        • 视觉任务LinuxSDK集成文档-C++
        • 视觉任务设备端SDK使用说明
        • 如何发布视觉任务设备端SDK
        • 视觉任务AndroidSDK集成文档
      • 公有云部署
        • 文字识别API参考文档
        • 视觉任务公有云部署
        • 物体检测API参考文档
        • 图像分类-单图单标签API参考文档
        • 实例分割API参考文档
        • 图像分类-单图多标签API参考文档
    • 表格预测模型部署
      • 整体说明
      • 公有云部署
    • 公有云部署管理
      • 配置AB测试版本
      • 批量预测服务
      • 公有云部署
      • 公有云部署简介
      • 配置休眠策略
    • NLP模型部署
      • 自然语言处理任务模型部署整体说明
      • 私有服务器部署
        • 如何部署在私有服务器
        • 私有服务API说明
          • 私有部署说明-短文本相似度
          • 私有化部署接口说明-文本分类
          • 私有部署文档-序列标注
          • 文本实体抽取API调用文档
      • 公有云部署
        • 短文本匹配API调用文档
        • 文本实体抽取私有API调用说明
        • 如何发布自然语言处理任务API
        • 文本分类-多标签API调用文档
        • 文本分类API调用文档
        • 序列标注API调用文档
  • 数据服务
    • 数据服务简介
    • 智能数据API
    • 公有云服务调用数据反馈
    • 智能标注
      • 文本智能标注介绍及原理说明
      • 图像智能标注介绍说明
    • 管理视觉数据
      • 实例分割数据导入与标注
        • 数据标注说明
        • 导入未标注数据
        • 导入已标注数据
      • 物体检测数据导入与标注
        • 物体检测数据标注说明
        • 物体检测导入未标注数据
        • 物体检测导入已标注数据
      • 图像分类数据导入与标注
        • 图像分类导入未标注数据
        • 图像分类导入已标注数据
        • 图像分类数据标注说明
    • 管理文本数据
      • 文本分类数据导入与标注
        • 文本分类数据标注说明
        • 文本分类数据导入与标注
        • 数据去重策略
      • 序列标注数据导入与标注
        • 序列标注标注说明
        • 序列标注数据导入
        • 数据去重策略
      • 文本实体抽取数据标注
        • 文本实体抽取数据标注
        • 文本实体抽取数据导入
        • 数据去重策略
      • 短文本匹配数据导入与标注
        • 短文本匹配数据导入与标注
        • 数据去重策略说明
        • 短文本匹配数据标注
  • 产品简介
    • BML平台升级公告
    • 平台重点升级介绍
    • 产品优势
    • 产品功能
    • 什么是BML
    • 文心大模型
  • 产品定价
    • 服务器部署价格说明
    • 专项适配硬件部署价格说明
    • 公有云部署计费说明
    • 批量预测计费说明
    • 模型训练计费说明
    • 通用小型设备部署价格说明
  • 模型训练
    • Notebook建模
      • 创建并启动Notebook
      • Notebook导入数据集
      • 保存Notebook中的模型
      • Notebook使用参考
      • 常见问题
      • 数据模型可视化功能说明
      • Notebook简介
      • 发布模型
      • 配置模型
      • 使用Notebook开发模型
      • 如何使用Notebook SSH 功能
      • Notebook从训练到部署快速入门
        • Codelab Notebook自定义环境部署最佳实践
        • 基于Notebook的图像分类模板使用指南
        • 基于 Notebook 的 NLP 通用模板使用指南
        • Notebook 模板使用指南概述
        • 基于 Notebook 的通用模板使用指南
        • 基于 Notebook 的物体检测模板使用指南
    • 自定义作业建模
      • 自定义作业简介
      • 训练作业API
      • 训练作业
        • 使用训练作业训练模型
        • 创建训练作业
        • 发布模型
        • 训练作业代码示例
          • TensorFlow 1.13.2
          • AIAK- Training Pytorch版
          • TensorFlow 2.3.0
          • Blackhole 1.0.0
          • Pytorch 1.7.1
          • Sklearn 0.23.2
          • XGBoost 1.3.1
          • PaddlePaddle 2.0.0rc
      • 自动搜索作业
        • 创建自动搜索作业
        • yaml文件编写规范
        • 自动搜索作业简介
        • 自动搜索作业代码编写规范
        • 自动搜索作业代码示例
          • XGBoost 1.3.1代码规范
          • TensorFlow 1.13.2代码规范
          • Sklearn 0.23.2代码规范
          • Pytorch 1.7.1代码规范
          • Tensorflow2.3.0代码规范
          • PaddlePaddle 2.1.1代码规范
    • 可视化建模
      • 快速入门
      • 概述
      • 组件菜单
        • 001-基本操作
        • 003-查看模型特征溯源
        • 007-组件状态
        • 008-组件资源配置
        • 006-组件列选择
        • 002-查看模型可解释性
        • 004-查看特征重要性
      • 组件说明
        • 015-图算法
        • 004-特征工程组件
        • 003-数据处理组件
        • 012-预测组件
        • 008-聚类算法
        • 009-Python算法组件
        • 002-数据集组件
        • 014-自然语言处理组件
        • 010-NLP算法
        • 016-统计分析组件
        • 006-回归算法
        • 007-异常检测算法
        • 013-模型评估组件
        • 005-分类算法
        • 018-时间序列组件
      • 画布操作说明
        • 005-AutoML(自动调参)
        • 002-开始训练
        • 001-概述
    • 预置模型调参建模
      • 预置模型调参简介
      • 神经网络训练搜索
      • 开发视觉模型
        • 视觉任务简介
        • 查看训练结果
        • 创建视觉任务
        • 配置视觉任务
        • 开发参考
          • 视觉预训练模型
          • 超参数配置参考
          • 评估报告参考
          • 自动超参搜索配置参考
          • 数据增强算子参考
          • 训练时长设置参考
          • 网络选型参考
      • 开发表格预测模型
        • 创建表格预测任务
        • 配置专家模式表格数据预测任务
        • 查看训练结果
        • 配置AUTOML模式表格数据预测任务
        • 表格预测任务简介
      • 开发文字识别模型
        • 文字识别任务简介
        • 文字识别任务操作流程
      • 开发自然语言处理模型
        • 查看训练结果
        • 自然语言处理任务简介
        • 配置NLP任务
        • 创建NLP任务
        • 代码模板升级及迁移说明
所有文档
menu
没有找到结果,请重新输入

全功能AI开发平台 BML

  • 版本发布记录
  • 快速开始
    • 用BML实现表格预测
    • 用BML实现序列标注
    • 用BML实现文本实体抽取
    • 用BML实现图片分类
    • 用BML实现实例分割
    • 用BML评价短文本相似度
    • 用BML实现开源大模型的预训练(Post-pretrain)
    • 用BML实现文本分类
    • 用BML实现物体检测
  • 模型仓库
    • 从训练任务导入模型
    • 查看模型
    • 创建模型
    • 模型仓库简介
    • 从本地导入模型
    • 校验模型
    • 服务代码文件示例
      • Sklearn服务代码文件示例
      • XGBoost服务代码文件示例
  • 平台管理
    • 权限管理
    • 在BML平台使用并行文件系统PFS和对象存储BOS
    • 在BML平台使用容器镜像服务CCR
    • 在BML使用外部镜像
    • 项目空间管理
    • 镜像管理
      • 镜像使用
      • 镜像管理简介
      • 常见问题
      • 自定义镜像
    • 资源管理
      • 资源池管理简介
      • 资源池使用简介
  • 预测部署
    • 批量预测(用户资源池)API
    • 文字识别模型部署
      • 文字识别任务API参考文档
      • 文字识别任务公有云部署
    • 通用模型部署
      • 标准接口规范参考
      • Paddle框架API调用文档
      • sklearn框架API调用文档
      • 公有云部署
      • XGBoost框架API调用文档
      • tensorflow框架API调用文档
      • Pytorch框架API调用文档
      • 通用类模型API参考
      • 错误码
    • 语音技术模型部署
      • 声音分类API调用文档
    • 视觉模型部署
      • 智能边缘控制台-多节点版
      • 端云协同服务部署
      • 智能边缘控制台-单节点版
      • 视觉任务模型部署整体说明
      • 软硬一体方案部署
        • 视觉任务Jetson专用SDK集成文档
        • 如何获取视觉任务软硬一体产品
        • 视觉任务EdgeBoard(VMX)专用SDK集成文档
        • 视觉任务EdgeBoard(FZ)专用SDK集成文档
        • 视觉任务专用辨影SDK集成开发文档
      • 私有服务器部署
        • 视觉模型如何部署在私有服务器
        • 私有API
          • 如何发布私有API
          • 图像分类-单图单标签私有API集成文档
          • 图像分类-单图多标签私有API集成文档
          • 物体检测私有API集成文档
        • 服务器端SDK
          • 视觉任务服务器端LinuxSDK集成文档-Python
          • 视觉任务服务器端LinuxSDK集成文档-C++
          • 如何发布服务器端SDK
          • 视觉任务服务器端WindowsSDK集成文档
          • 视觉任务服务器端SDK简介
      • 设备端SDK部署
        • 视觉任务WindowsSDK集成文档
        • 视觉任务iOSSDK集成文档
        • 视觉任务LinuxSDK集成文档-Python
        • 视觉任务LinuxSDK集成文档-C++
        • 视觉任务设备端SDK使用说明
        • 如何发布视觉任务设备端SDK
        • 视觉任务AndroidSDK集成文档
      • 公有云部署
        • 文字识别API参考文档
        • 视觉任务公有云部署
        • 物体检测API参考文档
        • 图像分类-单图单标签API参考文档
        • 实例分割API参考文档
        • 图像分类-单图多标签API参考文档
    • 表格预测模型部署
      • 整体说明
      • 公有云部署
    • 公有云部署管理
      • 配置AB测试版本
      • 批量预测服务
      • 公有云部署
      • 公有云部署简介
      • 配置休眠策略
    • NLP模型部署
      • 自然语言处理任务模型部署整体说明
      • 私有服务器部署
        • 如何部署在私有服务器
        • 私有服务API说明
          • 私有部署说明-短文本相似度
          • 私有化部署接口说明-文本分类
          • 私有部署文档-序列标注
          • 文本实体抽取API调用文档
      • 公有云部署
        • 短文本匹配API调用文档
        • 文本实体抽取私有API调用说明
        • 如何发布自然语言处理任务API
        • 文本分类-多标签API调用文档
        • 文本分类API调用文档
        • 序列标注API调用文档
  • 数据服务
    • 数据服务简介
    • 智能数据API
    • 公有云服务调用数据反馈
    • 智能标注
      • 文本智能标注介绍及原理说明
      • 图像智能标注介绍说明
    • 管理视觉数据
      • 实例分割数据导入与标注
        • 数据标注说明
        • 导入未标注数据
        • 导入已标注数据
      • 物体检测数据导入与标注
        • 物体检测数据标注说明
        • 物体检测导入未标注数据
        • 物体检测导入已标注数据
      • 图像分类数据导入与标注
        • 图像分类导入未标注数据
        • 图像分类导入已标注数据
        • 图像分类数据标注说明
    • 管理文本数据
      • 文本分类数据导入与标注
        • 文本分类数据标注说明
        • 文本分类数据导入与标注
        • 数据去重策略
      • 序列标注数据导入与标注
        • 序列标注标注说明
        • 序列标注数据导入
        • 数据去重策略
      • 文本实体抽取数据标注
        • 文本实体抽取数据标注
        • 文本实体抽取数据导入
        • 数据去重策略
      • 短文本匹配数据导入与标注
        • 短文本匹配数据导入与标注
        • 数据去重策略说明
        • 短文本匹配数据标注
  • 产品简介
    • BML平台升级公告
    • 平台重点升级介绍
    • 产品优势
    • 产品功能
    • 什么是BML
    • 文心大模型
  • 产品定价
    • 服务器部署价格说明
    • 专项适配硬件部署价格说明
    • 公有云部署计费说明
    • 批量预测计费说明
    • 模型训练计费说明
    • 通用小型设备部署价格说明
  • 模型训练
    • Notebook建模
      • 创建并启动Notebook
      • Notebook导入数据集
      • 保存Notebook中的模型
      • Notebook使用参考
      • 常见问题
      • 数据模型可视化功能说明
      • Notebook简介
      • 发布模型
      • 配置模型
      • 使用Notebook开发模型
      • 如何使用Notebook SSH 功能
      • Notebook从训练到部署快速入门
        • Codelab Notebook自定义环境部署最佳实践
        • 基于Notebook的图像分类模板使用指南
        • 基于 Notebook 的 NLP 通用模板使用指南
        • Notebook 模板使用指南概述
        • 基于 Notebook 的通用模板使用指南
        • 基于 Notebook 的物体检测模板使用指南
    • 自定义作业建模
      • 自定义作业简介
      • 训练作业API
      • 训练作业
        • 使用训练作业训练模型
        • 创建训练作业
        • 发布模型
        • 训练作业代码示例
          • TensorFlow 1.13.2
          • AIAK- Training Pytorch版
          • TensorFlow 2.3.0
          • Blackhole 1.0.0
          • Pytorch 1.7.1
          • Sklearn 0.23.2
          • XGBoost 1.3.1
          • PaddlePaddle 2.0.0rc
      • 自动搜索作业
        • 创建自动搜索作业
        • yaml文件编写规范
        • 自动搜索作业简介
        • 自动搜索作业代码编写规范
        • 自动搜索作业代码示例
          • XGBoost 1.3.1代码规范
          • TensorFlow 1.13.2代码规范
          • Sklearn 0.23.2代码规范
          • Pytorch 1.7.1代码规范
          • Tensorflow2.3.0代码规范
          • PaddlePaddle 2.1.1代码规范
    • 可视化建模
      • 快速入门
      • 概述
      • 组件菜单
        • 001-基本操作
        • 003-查看模型特征溯源
        • 007-组件状态
        • 008-组件资源配置
        • 006-组件列选择
        • 002-查看模型可解释性
        • 004-查看特征重要性
      • 组件说明
        • 015-图算法
        • 004-特征工程组件
        • 003-数据处理组件
        • 012-预测组件
        • 008-聚类算法
        • 009-Python算法组件
        • 002-数据集组件
        • 014-自然语言处理组件
        • 010-NLP算法
        • 016-统计分析组件
        • 006-回归算法
        • 007-异常检测算法
        • 013-模型评估组件
        • 005-分类算法
        • 018-时间序列组件
      • 画布操作说明
        • 005-AutoML(自动调参)
        • 002-开始训练
        • 001-概述
    • 预置模型调参建模
      • 预置模型调参简介
      • 神经网络训练搜索
      • 开发视觉模型
        • 视觉任务简介
        • 查看训练结果
        • 创建视觉任务
        • 配置视觉任务
        • 开发参考
          • 视觉预训练模型
          • 超参数配置参考
          • 评估报告参考
          • 自动超参搜索配置参考
          • 数据增强算子参考
          • 训练时长设置参考
          • 网络选型参考
      • 开发表格预测模型
        • 创建表格预测任务
        • 配置专家模式表格数据预测任务
        • 查看训练结果
        • 配置AUTOML模式表格数据预测任务
        • 表格预测任务简介
      • 开发文字识别模型
        • 文字识别任务简介
        • 文字识别任务操作流程
      • 开发自然语言处理模型
        • 查看训练结果
        • 自然语言处理任务简介
        • 配置NLP任务
        • 创建NLP任务
        • 代码模板升级及迁移说明
  • 文档中心
  • arrow
  • 全功能AI开发平台BML
  • arrow
  • 快速开始
  • arrow
  • 用BML实现开源大模型的预训练(Post-pretrain)
本页目录
  • 一、准备工作(通过notebook或者本地IDE实现)
  • 环境创建
  • 代码下载
  • 目录创建
  • 准备预训练模型权重
  • 准备训练数据
  • 二、训练Pipeline说明
  • Step1:数据预处理
  • Step2:模型格式转换(HF->Megatron)
  • Step3:预训练(使用作业建模大模型案例实现)
  • Step4:模型格式转换(Megatron->HF)
  • Step5:快速导入并部署第三方模型
  • 前提准备
  • 导入模型
  • 导入HF系列模型
  • 部署服务

用BML实现开源大模型的预训练(Post-pretrain)

更新时间:2025-08-21

目录

1.准备工作(通过notebook或者本地IDE实现)
1.1.环境创建
1.2.代码下载
1.3.目录创建
1.4.准备预训练模型权重
1.5.准备训练数据
2.训练Pipeline说明
2.1.Step1:数据预处理
2.2.Step2:模型格式转换(HF->Megatron)
2.3.Step3:预训练(使用作业建模大模型案例实现)
2.4.Step4:模型格式转换(Megatron->HF)
2.5.Step5:快速导入并部署第三方模型

一、准备工作(通过notebook或者本地IDE实现)

预置的大模型案例,是针对处理后的数据以及转换成megatron格式的模型进行的。因此,如果需要使用自定义的模型,以及自定义的数据,可参考以下流程。

环境创建

数据处理以及模型转换均可使用作业建模+大模型案例提供的训练镜像实现,也可在任意环境实现,再将转换后的结果上传到存储中使用,以下提供了训练镜像构建时使用的基础镜像以及额外安装的第三方库。

Python
1docker pull nvcr.io/nvidia/pytorch:23.10-py3  # 训练镜像
2pip3 install transformers==4.39.3 datasets==2.18.0 sentencepiece==0.2.0 nltk==3.8.1 accelerate==0.29.3# 第三方库

代码下载

目录创建

首先在个人环境或者bos存储中(使用作业建模的方式)创建自己的工作目录作为WORK_DIR,然后在WORK_DIR下分别创建code、data、output、pretrained_models目录,并上传代码bml-megatron-llm(提供的代码压缩包解压)至${WORK_DIR}/code。

准备预训练模型权重

下载好模型权重,保存至 ${WORK_DIR}/pretrained_models 目录下。

准备训练数据

下载开源数据集并保存到${WORK_DIR}/data/目录下,本案例的预训练数据集以Huggine Face上的suolyer/wudao为例,预置的大模型案例也是基于该数据集转化得到。

下载命令行:

Shell
1# 下载用于预训练的数据git clone 
2https://huggingface.co/datasets/suolyer/wudao

二、训练Pipeline说明

以llama2-7B模型的处理流程为例进行说明,以下每一个步骤的脚本可以在个人环境中运行,也可打包成一个sh脚本,使用作业建模实现,或者使用notebook功能进行实现。

Step1:数据预处理

预训练数据须为 MMAP 格式文件数据(含 .bin 和 .idx 文件),以 suolyer/wudao 数据集的validation.json文件为例,介绍预处理过程。

执行以下命令将预训练数据转换成 MMAP 格式(MMAP数据是一种预先执行tokenize的数据格式,可以减少训练微调过程中等待数据读入的时间,尤其在处理大规模数据时优势更为突出)。

命令执行成功后,在 output-prefix 的 fullpath 目录下生成 .bin 和 .idx 文件。

Shell
1export WORK_DIR=/home/bml/storage/mnt/v-x2zt874luaxgmxbf/org/megatron_workspace/ #替换为个人工作目录
2export MEGATRON_PATH=${WORK_DIR}/code/bml-megatron-llm/Megatron-LM/
3export INPUT=${WORK_DIR}/data/wudao/validation.json
4export TOKENIZER_MODEL_PATH=${WORK_DIR}/pretrained_models/tokenizer.model # 替换为huggingface模型的对应文件路径
5export OUTPUT_PREFIX=${WORK_DIR}/data/wudao/validation
6export WORKERS=64
7export JSON_KEYS="content"
8bash ${MEGATRON_PATH}/scripts/data_preprocess/preprocess_train_data.sh

脚本执行完成后,得到的数据如下。

Shell
1${WORK_DIR}/data/wudao/
2├── README.md
3├── test.json
4├── validation.json
5├── validation_content_document.bin # 新增 ${output-prefix}_${json-keys}_document.bin
6└── validation_content_document.idx # 新增 ${output-prefix}_${json-keys}_document.idx
参数 描述
WORK_DIR 工作空间路径
MEGATRON_PATH Megatron代码的基础路径(***/Megatron-LM)
INPUT 输入数据的json/jsonl文件路径,要求jsonl格式
OUTPUT_PREFIX 输出二进制训练文件前缀
WORKERS 处理数据的工作进程数,根据机器配置选择,多进程可以加快处理速度
JSON_KEYS json文件中训练文本的字段名,若有多个,按空格拼接,比如“key0 key1 key2”,默认为“text”。本案例中训练文本在“content”下,因此设置:--json-keys content
TOKENIZER_MODEL_PATH tokenizer.model文件路径

Step2:模型格式转换(HF->Megatron)

将 Huggingface 格式的模型文件转换为 Megatron 格式。

Shell
1export WORK_DIR=/home/bml/storage/mnt/v-x2zt874luaxgmxbf/org/megatron_workspace/
2export MEGATRON_PATH=${WORK_DIR}/code/bml-megatron-llm/Megatron-LM/
3export HF_FORMAT_DIR=${WORK_DIR}/pretrained_models/
4export TOKENIZER_MODEL=${WORK_DIR}/pretrained_models/
5export MEGATRON_FORMAT_DIR=${WORK_DIR}/output/chinese-llama-2-7b_megatron_core_pp1_tp1/
6export PIPELINE_MODEL_PARALLEL=1
7export TENSOR_MODEL_PARALLEL=1
8bash ${MEGATRON_PATH}/scripts/checkpoint_convert/convert_llama_hf2megatron.sh
参数 描述
HF_FORMAT_DIR 加载的HuggingFace模型的路径
TOKENIZER_MODEL tokenizer.model文件所在的目录
MEGATRON_FORMAT_DIR 保存的Megatron模型checkpoint输出的路径
PIPELINE_MODEL_PARALLEL 流水切片数量,与训练保持一致。不同参数量下的切片数量不同,在转换模型时需进行针对性修改
TENSOR_MODEL_PARALLEL 张量切片数量,与训练保持一致。不同参数量下的切片数量不同,在转换模型时需进行针对性修改

导出的Megatron格式的checkpoint目录的文件结构如下:

Shell
1${MEGATRON_FORMAT_DIR}
2├── iter_0000001
3│   └── mp_rank_00
4│       └── model_optim_rng.pt
5└── latest_checkpointed_iteration.txt

Step3:预训练(使用作业建模大模型案例实现)

大模型案例中,我们提供了预置的模型以及数据,可直接实现训练。用户可根据需要替换数据,经过Step1处理后,替换案例的数据集路径即可。对于模型文件,三个案例均已预置Megatron格式的权重,为了流程介绍的完整,因此我们提供了Step2的模型转换,建议用户直接使用预置案例里转换好的大模型即可。

预训练模型训练完后,保存为Megatron格式,需要使用step4将其转换为Huggingface格式,便于后续使用。

Step4:模型格式转换(Megatron->HF)

您可以将训练获得的 Megatron 格式的模型转换为 Huggingface 格式,具体操作步骤如下。后续您可以使用转换后的 Huggingface 格式的模型进行服务在线部署。

执行以下命令,可将训练生成的 Megatron 格式的模型转换为 Huggingface 格式的模型。

Shell
1export WORK_DIR=/home/bml/storage/mnt/v-x2zt874luaxgmxbf/org/megatron_workspace/
2export MEGATRON_PATH=${WORK_DIR}/code/bml-megatron-llm/Megatron-LM/
3export MEGATRON_FORMAT_DIR=${WORK_DIR}/output/chinese-llama-2-7b_megatron_core_pp1_tp1/iter_0000001/
4export HF_FORMAT_DIR=${WORK_DIR}/output/chinese-llama-2-7b_megatron_core_pp1_tp1_post_pretrain_hf/
5export REF_HF_FORMAT_DIR=${WORK_DIR}/pretrained_models
6export HF_PIPELINE_MODEL_PARALLEL=2
7bash ${MEGATRON_PATH}/scripts/checkpoint_convert/convert_llama_megatron2hf.sh

部分参数介绍如下(其他参数设置参考“Step2:模型格式转换(HF->Megatron)”部分介绍):

参数 描述
MEGATRON_FORMAT_DIR 加载的Megatron模型checkpoint的路径
HF_FORMAT_DIR 保存的HuggingFace模型checkpoint的路径
REF_HF_FORMAT_DIR 参考的Huggingface模型目录,用于复制原始config、tokenizer文件
HF_PIPELINE_MODEL_PARALLEL 保存的HuggingFace模型checkpoint的流水切片数量(因为Huggingface官方的7B权重被划分为2片,所以这里也设为2,保持一致)

转换后的Huggingface的checkpoint目录的文件结如下:

Shell
1${HF_FORMAT_DIR}
2├── config.json
3├── generation_config.json
4├── pytorch_model-00001-of-00002.bin
5├── pytorch_model-00002-of-00002.bin
6├── pytorch_model.bin.index.json
7├── README.md
8├── special_tokens_map.json
9├── tokenizer_config.json
10└── tokenizer.model

Step5:快速导入并部署第三方模型

您可以按照以下步骤进行相关操作,可查看快速导入并部署第三方模型文档。

前提准备

需要您提前开通对象存储BOS服务。

导入模型

使用千帆大模型控制台,在左侧功能列模型管理中选择我的模型,进入创建模型的主任务界面。

  1. 点击“创建模型”按钮,进行模型新建,填写以下基本信息:

step5-1-创建模型.png

  1. 选择已完成的训练任务及运行,创建一个新的模型版本,具体字段包括:
  • 模型版本:平台自动生成,版本号从V1起递增。
  • 模型版本描述:非必填项,自定义的版本描述,记录模型的业务场景、使用方式等信息。
  • 模型来源选择BOS,填写相应的Bucket和模型地址。模型需要提前上传到BOS平台,可以登录BOS控制台或者使用BOS工具上传。

step4-2-存储来源BOS.png

导入HF系列模型
  • 输入输出模式多轮对话chat模型选择【对话模式】,单轮问答模型选择【续写模式】
  • 如果您选择对话模式还需配置历史对话和当前问题的prompt:平台将根据此配置自动拼接当前用户问题和历史轮次问答,方便用户在线测试或接入对话类应用。
  • 两种模式都支持【高级配置】,默认示例如下:
Python
1{
2    "load_model_class": "AutoModelForCausalLM",
3    "load_tokenizer_class": "AutoTokenizer",
4    "enable_auto_batch": true,
5    "custom_end_str": "",
6    "token_decode_return_blank": true,
7    "tokenizer_special_tokens": {}
8}
高级参数 说明
load_model_class 模型加载类,用于加载transformers模型;默认值 AutoModelForCausalLM
load_tokenizer_class tokenizer加载类,用于加载模型;默认值 AutoTokenizer
enable_auto_batch 处理请求时,是否支持auto batch;是否开启auto batch推理,增加服务吞吐;若模型batch推理不兼容,开启后可能导致效果有误;默认值:true
custom_end_str 自定义生成结束字符串;防止模型不断生成;默认为空值,表示不设置
token_decode_return_blank 指定英文token解码后是否带有空格,设置为false时,平台会在英文单词间加入空格;默认值为true
tokenizer_special_tokens 选填,需要添加到tokenizer的特殊token;例如 {"pad_token": "[PAD]"}

部署服务

进入【我的模型】点击刚导入的模型进入【详情】页,模型【版本状态】变为“就绪”说明模型导入成功; 点击【部署】按钮进入【创建服务】。

模型版本列表就绪状态.png

按下图流程完善服务部署,将服务部署至私有资源池。

完善服务部署1.png

完善服务部署2.png

上一篇
用BML评价短文本相似度
下一篇
用BML实现文本分类