从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 前瞻期望
本页介绍了常规的数据采集、处理、模型开发及训练流程,并且介绍了 AI 训练平台的内部结构。(看样子 UP 主应该是自动驾驶行业的)
内部结构基于云原生。使用交互式开发方式,可以在线加载数据集和训练。平台支持 Pytorch、TensorFlow 和 Caffe 等多种深度学习框架,支持单机单卡、单机多卡、多机多卡训练。
1.2 流程复盘
-
首先进行需求定调,明确平台定位。是采用自研方式,还是基于 Kubeflow 等已有平台进行二次开发。
-
进行深一步的需求收集。为了考察需求方没有考虑到的内容,调研现有云计算平台如华为云ModelArts、百度和阿里等厂商平台作为参考。
-
功能细化以及可行性分析
- 将功能细化为算法管理、训练管理和模型管理三个部分。
- 调研开源方案。
- 做 kubeflow 的落地可行性分析.
- 落地推进
- 可落地架构设计及技术选型:包括开发语言服务架构等。
- 继续细化平台功能模块。
- 做整体规划和任务排期。
- 招募相关研发人员。
- 开发落地。各模块分别开发以及整体串联。
这张涉及到的是各个模块的开发时间规划,可以看到整个项目是由 10 个人 来完成的。
开发周期从 2020 年底开始延续到2021年底。其中主要功能模块使用7个月的时间进行开发,剩下的时间进行功能测试及优化。
1.3 实施编排
更为细化的时间节点和任务要求。
2 平台功能层面
2.1 功能框架
- 算法管理模块管理代码镜像。
- 样本配置包括数据集及其描述等。
- 将上述两个部分送入训练管理模块进行训练。训练模块要支持不同训练框架运行任务实例。
整体功能模块包括数据管理、算法管理、训练管理和模型管理四大部分。
- 数据管理:支持数据上传、数据浏览、标注等功能。
- 算法管理:使用算法依赖和用户代码构建算法镜像。
- 训练管理:支持多框架训练和硬件资源调度。
- 模型管理:模型托管、模型压缩/转换、推理评估。
2.2 功能详述&演示
工作空间
类似于网盘功能。用于管理数据集和代码等。
交互编码
用于创建和管理支持多种训练框架的 notebook 环境。提供 notebook 代码编写页面入口。
算法管理
算法打包成镜像。
新增算法。
镜像管理
官方基础镜像。
平台构建镜像:算法管理构建出的镜像。
用户自定义镜像:用户本地构建的镜像。
训练管理
- 创建任务:任务名称、算法来源、数据集、模型权重文件、模型定义文件、训练方式定义。
- 每次训练生成一个版本。
- 版本中查看配置信息、日志和资源情况。
- 任务可视化:打开 TensorBoard。
模型管理
- 模型管理
- 压缩转换
- 推理评估
资源看板
- GPU、内存、CPU资源查看。
- 用户作业队列查看。
系统配置
- AI系统配置:配置代码黑名单、定义不同后缀文件对应的文件类型。
- AI训练配置:固定一些模板。
3 平台技术实现
3.1 整体架构
- 资源调度层面采用 K8S
- 日志采集通过 filebeat 采集到 Kafka
- 指标监控采用 Prometheus
- 将数据汇存到 TIDB
- 存储涉及 SFS 和 OBS (对象存储)
- Harbor 镜像仓库
- 上层服务治理采用 istio
- 借鉴 kubeflow 组件
3.2 库 & 表结构
公司内部的库表结构就不说了。
3.3 服务部署
逻辑隔离,分为四块。
- training-zoo:业务服务。
- training-job:用户提交上来的 job。
- training-task:提交到后台的页面服务:tensorboard、notebook 和模型可视化服务。
- training-Common:公共组件。如 grafana、prometheus。
展望未来next
参考资料
[1] 刘宇博. 基于云计算的人工智能训练平台的研究与设计[D].北京邮电大学,2019.
[2] komlei. AI训练平台TZ全盘详细总结 AI训练平台TZ全盘详细总结_哔哩哔哩_bilibili