惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
爱范儿
爱范儿
罗磊的独立博客
V
V2EX
量子位
Last Week in AI
Last Week in AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
Jina AI
Jina AI
博客园 - 叶小钗
小众软件
小众软件
博客园 - 【当耐特】
Y
Y Combinator Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
博客园 - 聂微东
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
P
Proofpoint News Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
有赞技术团队
有赞技术团队
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
模型研发周期中的数据存储
微信公众号 · 2024-05-26 · via 陈少文的网站

1. 基于对象存储的数据交付

如上图,在模型研发过程中,主要涉及三个子平台,分别是:

  • 数据平台

数据平台主要负责数据相关的管理,比如: 数据接入、数据处理,最终生成训练所需的数据。

数据平台将原始数据存储到对象存储中,在处理时,从对象存储中获取数据,进行处理,完成之后存储到对象存储中。

  • 训练平台

训练平台主要负责模型的训练,比如: 提供模型的开发环境,支持模型的分布式训练。

训练平台会给算法同学提供一个带有 AI 算力卡的 Jupyer 环境,以支持算法同学的线上开发和调试。他们将代码存储在实时性高的存储设备中,通过挂载的方式访问 checkpoint、模型等文件。

启动大型分布式训练任务时,数据会被逐层预热直至 AI 算力卡的显存中,然后训练模型,最终得到模型。

  • 推理平台

推理平台主要负责模型的上线、流量的管理,比如: 模型的量化、模型的转换、模型的部署等。

推理平台从对象存储中获取模型,开启工作流,部署模型并实现推理流量的治理。

数据平台、训练平台、推理平台通常有不同的技术负责人,不能强求各平台使用统一的数据定义、使用的规范。

因此这里强调的是数据交付,我们只需要定义好数据交付,至于各个平台内部如何实现,选择怎样的挂载方式、加速组件等,都由各个平台自己决定。

从成本、性能、交付便捷性等方面考虑,基于对象存储的数据交付是一个非常好的选择。很多数据湖方案的底层也是基于对象存储。

2. 数据平台

虽然 AI 加速卡擅长数据处理,但数据平台通常并不会使用这些昂贵的设备对数据进行处理。

AI 任务主要占用的是 AI 算力卡资源。在我们线上的集群中,GPU、NPU 卡的显存使用率经常能达到 90%,但节点上的 CPU、Memory 资源使用率却只有 10% 左右。

而加速计算节点又是高配的机器,它们的通常配备了几百 GB、甚至几个 TB 的 Memory,200 核心起步的 CPU 计算能力。这意味着,在加速计算节点上,我们还有大量的资源可用。

数据平台的工作负载非常适合与 AI 任务进行混合部署。

如上图,数据平台的存储主要分为两类:

  • 持久存储,比如录入的数据、训练需要的数据等
  • 临时存储,比如处理数据过程中加速的数据、支撑数据集全文检索的 ES 存储卷等

3. 训练平台

如上图,在训练的过程中主要涉及三个存储交互:

  • 算法开发,存储算法同学的代码

代码是小文件,同时对实时性要求比较高,不适合存储在 JuiceFS 中,可以采用 NFS 存储,通过不同目录进行隔离区分个人和团队。

  • 训练数据,存储训练数据

训练数据的特征时,小文件特别多,对元数据的访问速度要求比较高,可以采用 JuiceFS 多区企业版。

  • 模型数据、Checkpoint 数据

存储 Checkpoint 时,训练任务处于暂停状态。Checkpoint 的存储速度会影响训练的效率。

模型数据、Checkpoint 数据的暂存,也应该采用 JuiceFS,但可以降级为单区的企业版或者社区版。

训练完成之后,我们应该设置一个归档任务,将训练过程中的模型、数据等数据存储到对象存储中。

JuiceFS 应该作为一种临时存储,作为加速层,不应该长时间存储数据。

4. 推理平台

我们通常在一个区域训练,但是需要在多个区域进行推理。

进行多区推理的原因可能有:

  • 上层服务在多云部署,需要就近推理
  • 单个云的 AI 算力卡资源不足
  • 多云高可用

但这也带来了新的问题,模型怎样在多个云区域进行分发。

如上图,模型的原始数据应该存储在对象存储上,通过公网或者专线进行模型的跨云分发。比如,从阿里云的 OSS 同步模型数据到腾讯云的 COS,公有云的对象存储同步速度比较快。

在每个区域中,借助 JuiceFS 单区企业版或者社区版,将模型加载到 JuiceFS 通过 PVC 挂载到集群的推理 Pod 中,实现模型的推理。

在同一个区域中的多个 Kubernetes 集群,可以共用一个 JuiceFS 存储。