火山引擎机器学习平台是一套服务于专业算法工程师,整合云原生的工具+算力(GPU、CPU云服务器),进行一站式AI算法开发和迭代的平台。下面整理了如何从零开始接入机器学习平台。
MLP已经预置训练框架镜像,支持一键提交分布式训练任务,可以显著压缩从POC到正式生产开发环境的项目周期。首次接入需要进行数据迁移、权限配置、产品功能/性能POC等任务,将AI开发从POC到上生产环境的周期压缩到1~2周。再次资源扩缩容、资源迁移只需要进行资源更配,小时级即可切换。
完成火山引擎账号注册及企业认证,详细指导见文档。
- 请 登录主账号 或拥有 AdministratorAccess 的子账号
- 推荐存储、网络资源与机器学习平台计算实例保持同地域-可用区,以达到最佳性能体验。具体可以与机器学习平台产品解决方案对接人沟通确认,本文档以 华北2(北京)-可用区 B 为例。
开通关联服务,包括网络、存储、镜像仓库等资源,详细指导见文档。
打开 VPC 控制台,创建/复用 私有网络和子网。
打开 私有网络控制台-安全组,在前述私有网络下,对默认安全组「配置规则」或「创建安全组」,需要保证以下联通性。
访问规则 | 策略 | 协议类型 | 端口范围 | 目的地地址 | 描述 |
---|---|---|---|---|---|
出方向 | 允许 | 按需 | 按需 | 按需 | 按需选择需要放开的流量 |
入方向 | 允许 | 2222 | 开发机 SSH 登录 | ||
10000 | 开发机/ 自定义任务 WebIDE | ||||
12222 | 自定义训练框架通信 | ||||
3389 | rdp 远程桌面 | ||||
80 | http 默认端口 | ||||
TCP | 80 | apig-sg-xx | 限定网段访问或者只容许 API 网关的访问 | ||
443 | https 默认端口 | ||||
5082 | 按需,CloudFS 依赖 | ||||
5092 | 按需,CloudFS 依赖 | ||||
ALL | 本安全组 | 组内互通 |
保障公网访问体验,不使用平台共享网络,使用专享公网网络。访问公网及公网登录依赖。
打开 私有网络控制台-公网IP,【申请公网IP】,地域-可用区 与算力资源相同,线路规格按需配置。
若需要保障公网访问体验,使用专享公网网络,不使用平台共享网络则需要,使用SNAT功能访问公网 及公网登录依赖。
若需要保障公网访问体验,使用专享公网网络,不使用平台共享网络则需要。
访问API网关,网络类型选公网,其他配置按需选择。
打开 镜像仓库控制台,根据提示开通火山引擎镜像仓库服务。
使用已注册的火山引擎主账号登录机器学习平台,进入平台会自动弹出跨服务授权的页面,提交表单后即可完成对象存储、镜像仓库等依赖服务的跨服务授权。
到此所有需要的服务均已开通,下一步则由主账号为普通开发者创建对应的子用户账号(可选)。
打开 对象存储控制台,根据提示开通火山引擎对象存储服务。
打开 文件存储 vePFS 控制台,实例列表-创建文件系统(可能需要 10~20 分钟)以及实例的挂载服务
vePFS支持通过fileset设置子路径,提供更细粒度的数据权限控制。
使用已注册的火山引擎主账号登录访问控制,参考帮助文档创建子账号并配置权限。如果非火山引擎主账号,需要具备MLPlatformAdmin权限才可以添加子账号。
推荐按需授予如下权限:
更多预置权限参考:预置策略。
使用已注册的火山引擎主账号登录,打开 机器学习平台控制台-全局配置,首次进入弹出跨服务授权页面,完成对象存储、镜像仓库等依赖服务的跨服务授权。
为了连通用户和平台之间的私网环境、挂载 vePFS、NAS 等文件系统等操作,需要进行私网配置。根据 CPU / GPU 算力资源、vePFS 资源所在的可用区,配置同可用区的子网。支持关联多个子网,直接关联默认安全组。
说明
绑定 VPC 后,公网类型可以选择两种,专享网络和共享网络,专享网络需要绑定自己购买的 NAT 网关、 EIP 、API 网关,可获得更好的公网体验,建议生产环境使用。
共享网络为平台所有租户共享带宽,目前可免费使用公网,测试环境可以使用,正式生成环境不建议使用。
说明
完成上述所有配置后,请联系火山引擎机器学习平台产品解决方案对接人,为您 后台校验配置。同时请继续进行后续配置。
若使用镜像仓库标准版实例,则需要在机器学习平台进行全局配置,完成标准版实例的授权,并指定镜像归档位置。
若使用文件存储 vePFS,则需要在机器学习平台进行全局配置,完成绑定实例、添加挂载权限。
采用vepfs+机器学习平台方案,在代金券到期/vepfs不续费场景删除vePFS时需要先在机器学习平台-全局配置-vepfs中解绑vepfs实例。
若在机器学习平台挂载了两个vePFS实例,请注意以下事项:
- 通过CLI(命令行)和SDK挂载vePFS时,需要指定一个vePFS实例ID,否则无法提交挂载vePFS实例的负载任务。更多请参考命令行工具
- 使用vePFS存储TensorBoard日志同理,也需要指定实例ID。
说明
上述配置全部完成并校验无误后,联系机器学习平台产品解决方案对接人为您扩容计算节点资源,并添加资源组下单 Quota。根据算力规模不同,所需的时间不尽相同,请耐心等待通知再进行后续操作。
您获得资源开通成功通知,即可通过资源组创建资源,开始AI开发工作。
主账号登录机器学习平台,选择左侧导航的【资源组管理】-【资源组】,可以新建资源组。如果非主账号,需要额外具备billFullAccess权限才可以创建资源组。
主账号可以将资源组资源按照业务需求、项目要求进一步按照队列进行拆分。可以在【资源组】列表页的资源组的操作中【创建队列】,也可以在左侧导航的【队列】中新建队列。
使用开发机、自定义任务、在线服务选择【实例规格】时请留意,A100/A800等高性能GPU存在两种规格:
- 高性能计算GPU型:例如A100,ml.hpcpni2.28xlarge,支持RDMA网络通信,高性能。通常整机多实例计算选择此规格。
- GPU型:例如A100,ml.pni2.28xlarge,支持TCP网络通信,普通性能,通常单卡单机选择此规格。
对支持RDMA网络的高性能GPU,例如A100、A800、H100等,您可按照示例测试任务进行测试。
下面提供典型的示例训练任务 ,可以进行常用模型的训练吞吐、通信性能测试。
该任务测试NCCL AllReduce操作的性能与正确性,基于nccl-tests。
通过自定义任务功能,只需要填写任务的基本信息、环境配置、资源配置然后提交NCCL Test任务。
(1)填写基本信息
默认自动生成任务名称、授权可见范围,客户也可以自定义修改。
(2)填写环境配置
在环境配置中,可以选择预置镜像、配置入口命令。
平台预置包含 cuda 和 pytorch 镜像的所有 tag ,建议在镜像入口直接选择预置镜像中的pytorch:1.13.1
。
NCCL任务有两类,分别选择不同的入口命令:
第一种 standard_nccl.sh 为标准递增带宽测试,测试时间短,可验证正确性和带宽上限,入口命令:/opt/ml-platform/test/network/standard_nccl.sh
第二种 high_bw_nccl.sh 为长时间高带宽测试,可验证机器通讯的稳定性:/opt/ml-platform/test/network/high_bw_nccl.sh
(3)填写资源配置
在资源配置中,先选择已经创建的队列,然后可以选择MPI框架、实例规格数量。
自定义任务的实例规格支持所有GPU机型、任意卡数,以128台A800为例,选择MPI框架,实例数选择【128】,实例规格选择【ml.hpcpni2l.28xlarge】。
以任务类型: high_bw_nccl
为例,NCCL version 2.13.4+cuda11.7,测试发现A800 * 8 与A100* 8相比,在多机通讯中几乎无差异。
节点数 | A100 * 8 | A800 * 8 |
---|---|---|
1 | 231.64±0.11 | 155.90±0.10 |
2 | 97.06±0.86 | 97.20±0.27 |
4 | 97.2 | 97.21±0.25 |
8 | 97.15 | 95.98±1.85 |
16 | 90±3 | 94.57±0.51 |
在两个A100-80G下每张卡的测试效果:
测试Pytorch自带ResNet模型的DDP分布式训练速度,主要测试GPU运算性能,通讯流量较小。
通过自定义任务功能,只需要填写任务的基本信息、环境配置、资源配置即可提交NCCL Test任务。
(1)填写基本信息
默认自动生成任务名称、授权可见范围,客户也可以自定义修改。
(2)填写环境配置
在环境配置中,可以选择预置镜像、配置入口命令。
平台预置包含 cuda 和 pytorch 镜像的所有 tag ,建议在镜像入口直接选择预置镜像中的pytorch:1.13.1
。
入口命令:/opt/ml-platform/test/train/resnet/ddp.sh
入口命令的可选参数:
--num-iters NUM_ITERS number of benchmark iterations (default: 100) --batch-size BATCH_SIZE input batch size (default: 32) --num-warmup-batches NUM_WARMUP_BATCHES number of warm-up batches that don't count towards benchmark (default: 30) --num-batches-per-iter NUM_BATCHES_PER_ITER number of batches per benchmark iteration (default: 10) --num-classes NUM_CLASSES number of classes (default: 1000)
(3)填写资源配置
在资源配置中,先选择已经创建的队列,然后可以选择 PytorchDDP框架、实例规格数量。
自定义任务的实例规格支持所有GPU机型、任意卡数,以128台A800为例,选择 PytorchDDP框架,实例数选择【128】,实例规格选择【ml.hpcpni2l.28xlarge】。
输出指标为每张卡上的速度,测试发现A800 * 8 与A100* 8相比,在多机样本吞吐中几乎无差异。
节点配置 | A100 * 8( images/s) | A800 * 8( images/s) |
---|---|---|
2 | 775.9±10.1 | 774.7±11.0 |
4 | 778.6±12.7 | 771.2±5.4 |
8 | 756.1±10.6 | 762.2±4.6 |
16 | 737.3±17.9 | 740.4±8.8 |
在8卡A100上的平均速度约为792 images/s 。
使用 Megatron-DeepSpeed 在开启 Zero3 的情况下进行不同大小的 GPT 训练,该任务对计算和通讯性能都有较高的要求,主要用来测试大模型训练的稳定性。
通过自定义任务功能,只需要填写任务的基本信息、环境配置、资源配置即可提交测试任务。
(1)填写基本信息
默认自动生成任务名称、授权可见范围,客户也可以自定义修改。
(2)填写环境配置
在环境配置中,可以选择预置镜像、配置入口命令。
平台预置 1.13.1 的 pytorch 镜像, CUDA 和 Python 版本不限,建议在镜像入口直接选择预置镜像中的pytorch:1.13.1
。
入口命令:/opt/ml-platform/test/train/megatron/deepspeed-175b.sh
,或/opt/ml-platform/test/train/megatron/deepspeed-13b.sh
自定义参数的入口命令
export MP_SIZE=2 export PP_SIZE=2 export NUM_LAYER=12 export HIDDEN_SIZE=768 export NUM_ATTN_HEAD=12 export SEQ_LEN=1024 /opt/ml-platform/test/train/megatron/deepspeed.sh
(3)填写资源配置
在资源配置中,先选择已经创建的队列,然后可以选择 PytorchDDP框架、实例规格数量。
175b 至少 A100/A800 6机, 13b 至少 A100/A800 2卡 或 A30 8卡 。以128台A800为例,选择 PytorchDDP框架,实例数选择【128】,实例规格选择【ml.hpcpni2l.28xlarge】。
该任务为压测任务,参数未经过调优,训练速度不具备实际参考价值。 对应机器能够维持高负载长时间运行即可。
使用完毕,如测试结束、不再使用资源,请及时退订资源,避免不必要的费用开销。
请注意,您在机器学习平台全局配置中对各个关联云产品进行取消授权,并前往各个云产品的控制台删除相关实例。