目录

从0到1搭建人工智能训练平台要多久?

随着人工智能技术的发展和普及,训练一个常规的AI模型,似乎变成了当代大学生除了word和PPT外必备的生存技能。从入门到放弃的过程中,你大概会遇到环境配置和计算资源不足的天坑。别人用 8 卡训练,用 100 G 内存去存数据集。而你把他的baseline下载下来,吭哧吭哧改了半天,才能在你的电脑上跑。此时,一个简单易用的AI训练平台就显得尤为重要。

国内常用的平台有华为的 ModelArts 百度的 AI Stdio 还有阿里的天池实验室等。作为一名研究僧,笔者这些当然是都用过的了,他们能帮我们跳过环境配置和计算资源的问题。个人认为,华为的 ModelArts 功能最全,用起来最顺手。除了基础的数据管理、算法管理和训练管理功能。还支持自动标注,自动学习等。

对于学生而言,白嫖一些计算资源,用用这些平台还是蛮划算的。但是对公司而言,一小时 28 块钱的基础 GPU,钱还没赚到,就全都交了电费了。更何况公司自己也有计算资源。所以,涉及到数据处理的公司都想搭建自己的AI训练平台。那么这事到底可不可行呢?

先来看看国外是怎么做的。国外有亚马逊的 AWS 和 Floyd 的 Floydhub 等为公众开放的 AI 训练平台,其计算资源调度是通过 Kubernetes + Docker 的方式实现的。谷歌内部的 Deepmind,微软的 aether、philly 和 数学公式: $\pi$ 等训练平台,其实现原理也是以容器为核心,使用 Kubernetes 进行调度。国内的商汤科技、旷视科技,其内部使用的 AI 训练平台原理也大抵如此。$^{[1]}$

看来做一个AI训练平台技术路线还是挺清晰的。

那么从0到1搭建一个人工智能训练平台要多久呢?

答案是 1个专业团队一年时间

以下内容来自 b 站 UP 主 komlei 的分享:AI训练平台TZ全盘详细总结_哔哩哔哩_bilibili

本人按照视频脉络做出如下笔记。

AI训练平台TZ全盘详细总结

平台用途:服务于公司内部感知,决策团队,用于深度学习模型训练。内部研发平台。

1 平台落地回顾

1.1 前瞻期望

/img/从0到1搭建人工智能训练平台要多久/01.png

本页介绍了常规的数据采集、处理、模型开发及训练流程,并且介绍了 AI 训练平台的内部结构。(看样子 UP 主应该是自动驾驶行业的)

内部结构基于云原生。使用交互式开发方式,可以在线加载数据集和训练。平台支持 Pytorch、TensorFlow 和 Caffe 等多种深度学习框架,支持单机单卡、单机多卡、多机多卡训练。

1.2 流程复盘

/img/从0到1搭建人工智能训练平台要多久/02.png

  1. 首先进行需求定调,明确平台定位。是采用自研方式,还是基于 Kubeflow 等已有平台进行二次开发。

  2. 进行深一步的需求收集。为了考察需求方没有考虑到的内容,调研现有云计算平台如华为云ModelArts、百度和阿里等厂商平台作为参考。

  3. 功能细化以及可行性分析

  • 将功能细化为算法管理、训练管理和模型管理三个部分。
  • 调研开源方案。
  • 做 kubeflow 的落地可行性分析.
  1. 落地推进
  • 可落地架构设计及技术选型:包括开发语言服务架构等。
  • 继续细化平台功能模块。
  • 做整体规划和任务排期。
  • 招募相关研发人员。
  1. 开发落地。各模块分别开发以及整体串联。

/img/从0到1搭建人工智能训练平台要多久/03.png

这张涉及到的是各个模块的开发时间规划,可以看到整个项目是由 10 个人 来完成的。

开发周期从 2020 年底开始延续到2021年底。其中主要功能模块使用7个月的时间进行开发,剩下的时间进行功能测试及优化。

1.3 实施编排

/img/从0到1搭建人工智能训练平台要多久/04.png

更为细化的时间节点和任务要求。

2 平台功能层面

2.1 功能框架

/img/从0到1搭建人工智能训练平台要多久/05.png

  • 算法管理模块管理代码镜像。
  • 样本配置包括数据集及其描述等。
  • 将上述两个部分送入训练管理模块进行训练。训练模块要支持不同训练框架运行任务实例。

/img/从0到1搭建人工智能训练平台要多久/06.png

整体功能模块包括数据管理、算法管理、训练管理和模型管理四大部分。

  • 数据管理:支持数据上传、数据浏览、标注等功能。
  • 算法管理:使用算法依赖和用户代码构建算法镜像。
  • 训练管理:支持多框架训练和硬件资源调度。
  • 模型管理:模型托管、模型压缩/转换、推理评估。

2.2 功能详述&演示

/img/从0到1搭建人工智能训练平台要多久/07.png

工作空间

类似于网盘功能。用于管理数据集和代码等。

/img/从0到1搭建人工智能训练平台要多久/08.png

交互编码

用于创建和管理支持多种训练框架的 notebook 环境。提供 notebook 代码编写页面入口。

/img/从0到1搭建人工智能训练平台要多久/09.png

/img/从0到1搭建人工智能训练平台要多久/10.png

算法管理

算法打包成镜像。

/img/从0到1搭建人工智能训练平台要多久/11.png

新增算法。

/img/从0到1搭建人工智能训练平台要多久/12.png

镜像管理

官方基础镜像。

平台构建镜像:算法管理构建出的镜像。

用户自定义镜像:用户本地构建的镜像。

/img/从0到1搭建人工智能训练平台要多久/13.png

训练管理

  • 创建任务:任务名称、算法来源、数据集、模型权重文件、模型定义文件、训练方式定义。
  • 每次训练生成一个版本。
  • 版本中查看配置信息、日志和资源情况。
  • 任务可视化:打开 TensorBoard。

/img/从0到1搭建人工智能训练平台要多久/14.png

模型管理

  • 模型管理
  • 压缩转换
  • 推理评估

/img/从0到1搭建人工智能训练平台要多久/15.png

资源看板

  • GPU、内存、CPU资源查看。
  • 用户作业队列查看。

/img/从0到1搭建人工智能训练平台要多久/16.png

系统配置

  • AI系统配置:配置代码黑名单、定义不同后缀文件对应的文件类型。
  • AI训练配置:固定一些模板。

/img/从0到1搭建人工智能训练平台要多久/17.png

3 平台技术实现

3.1 整体架构

/img/从0到1搭建人工智能训练平台要多久/18.png

  1. 资源调度层面采用 K8S
  2. 日志采集通过 filebeat 采集到 Kafka
  3. 指标监控采用 Prometheus
  4. 将数据汇存到 TIDB
  5. 存储涉及 SFS 和 OBS (对象存储)
  6. Harbor 镜像仓库
  7. 上层服务治理采用 istio
  8. 借鉴 kubeflow 组件

3.2 库 & 表结构

公司内部的库表结构就不说了。

/img/从0到1搭建人工智能训练平台要多久/19.png

3.3 服务部署

逻辑隔离,分为四块。

  1. training-zoo:业务服务。
  2. training-job:用户提交上来的 job。
  3. training-task:提交到后台的页面服务:tensorboard、notebook 和模型可视化服务。
  4. training-Common:公共组件。如 grafana、prometheus。

展望未来next

/img/从0到1搭建人工智能训练平台要多久/21.png

/img/从0到1搭建人工智能训练平台要多久/22.png

/img/从0到1搭建人工智能训练平台要多久/23.png

/img/从0到1搭建人工智能训练平台要多久/24.png

/img/从0到1搭建人工智能训练平台要多久/25.png

参考资料

[1] 刘宇博. 基于云计算的人工智能训练平台的研究与设计[D].北京邮电大学,2019.

[2] komlei. AI训练平台TZ全盘详细总结 AI训练平台TZ全盘详细总结_哔哩哔哩_bilibili