更新时间:2024-11-21 GMT+08:00
分享

准备资源

创建专属资源池

本文档中的模型运行环境是ModelArts Standard,用户需要购买专属资源池,具体步骤请参考创建资源池

资源规格要求:

计算规格:用户可参考表2

硬盘空间:至少200GB。

昇腾资源规格:

  • Ascend: 1*ascend-snt9b表示昇腾单卡。
  • Ascend: 8*ascend-snt9b表示昇腾8卡。

推荐使用“西南-贵阳一”Region上的昇腾资源。

创建OBS桶

ModelArts使用对象存储服务(Object Storage Service,简称OBS)进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。具体过程请参考创建OBS桶,例如桶名:standard-llama2-13b。

由于ModelArts创建训练作业时,需要将作业日志输出至OBS桶中,因此创建OBS桶为必选项。用户可通过OBS Browser+obsutil等工具访问和管理OBS桶,将代码、模型文件、数据集等数据上传或下载进行备份。

创建VPC

虚拟私有云(Virtual Private Cloud)可以为您构建隔离的、用户自主配置和管理的虚拟网络环境,操作指导请参考创建虚拟私有云和子网

创建SFS Turbo

SFS Turbo HPC型文件系统为用户提供一个完全托管的共享文件存储。SFS Turbo文件系统支持无缝访问存储在OBS对象存储桶中的对象,用户可以指定SFS Turbo内的目录与OBS对象存储桶进行关联,然后通过创建导入导出任务实现数据同步。通过OBS与SFS Turbo存储联动,可以将最新的训练数据导入到SFS Turbo,然后在训练作业中挂载SFS Turbo到容器对应ckpt目录,实现分布式读取训练数据文件。

创建SFS Turbo文件系统前提条件:

  1. 创建SFS Turbo文件系统前,确认已有可用的VPC。
  2. 需要由IAM用户设置SFS Turbo FullAccess权限,用于授权ModelArts云服务使用SFS Turbo。

详细操作指导请参考创建SFS Turbo文件系统

图1 创建SFS Turbo

其中,文件系统类型推荐选用500MB/s/TiB或1000MB/s/TiB,应用于AI大模型场景中。存储容量推荐使用 6.0~10.8TB ,以存储更多模型文件。

图2 SFS类型和容量选择

创建ECS服务器

弹性云服务器(Elastic Cloud Server,ECS)是由CPU、内存、操作系统、云硬盘组成的一种可随时获取、弹性可扩展的云服务器。具体过程请参考ECS文档购买一个Linux弹性云服务器。创建完成后,单击“远程登录”,可直接访问ECS服务器。

注意:CPU架构必须选择鲲鹏计算;镜像推荐选择EulerOS;ECS服务器确保可以访问公网,用于获取镜像和构建镜像。

图3 购买ECS

ECS服务器挂载SFS Turbo

ECS服务器中手动挂载SFS Turbo步骤如下:

  1. 用户可通过CloudShell或SSH等方式登录并访问ECS服务器,进入ECS终端界面。创建/mnt/sfs_turbo目录作为挂载目录 ,命令为:mkdir /mnt/sfs_turbo。
  2. 单击用户创建的SFS Turbo,查看基本信息图4,找到并复制挂载命令。
  3. 在ECS的终端中粘贴SFS Turbo挂载命令,完成挂载。
  4. 挂载完成后,可通过后续的步骤获取到代码和数据,并上传至/mnt/sfs_turbo路径下。
图4 SFS Turbo基本信息

ModelArts网络关联SFS Turbo

OBS-SFS Turbo联动方案涉及VPC、SFS Turbo HPC型文件系统、OBS对象存储服务和ModelArts资源池。如果要使用训练作业挂载SFS Turbo功能,则需要配置ModelArts和SFS Turbo间网络直通,以及配置ModelArts网络关联SFS Turbo。

如果ModelArts网络关联SFS Turbo失败,则需要授权ModelArts云服务使用SFS Turbo,具体操作请参见配置ModelArts和SFS Turbo间网络直通

图5 ModelArts网络关联SFS Turbo

SFS Turbo模式下执行流程

SFS Turbo作为完全托管的共享文件存储系统,在本方案中作为主要的存储介质应用于训练作业。因此,后续需要准备的原始数据集原始Hugging Face权重文件以及训练代码都需要上传至SFS Turbo中。而基于SFS Turbo所执行的训练流程如下:

  1. 将SFS Turbo挂载至ECS服务器后,可直接访问SFS Turbo。通过CloudShell远程登录ECS并将代码包上传至SFS Turbo中。
  2. 表1获取基础镜像,随后通过准备镜像中的步骤执行代码包中llm_train/AscendSpeed/Dockerfile文件,构建新的镜像,并上传至SWR中。
  3. 新构建的镜像中,包含有ModelLink、MindSpeed、Megatron-LM等代码,在集群中启动容器即可通过/home/ma-user/AscendSpeed路径访问。
  4. 在ModelArts中创建训练作业如:预训练,执行代码包中例如:scripts/llama2/0_pl_pretrain_13b.sh 的脚本,开始训练。
  5. 在训练中,程序会自动执行对数据集预处理、权重转换、执行训练等操作,具体可通过训练启动脚本说明和参数配置训练的数据集预处理说明训练的权重转换说明了解其中的操作。
  6. 训练完成后在SFS Turbo中保存训练的模型结果。(多机情况下,只有在rank_0节点进行数据预处理,权重转换等工作,所以原始数据集和原始权重,包括保存结果路径,都应该在共享目录下)

相关文档