突围大模型 : Alluxio助力AI大模型训练制胜宝典
0目录【白皮书】加速云端机器学习/深度学习架构和性能测试............................................................... 3【技术文章】将数据编排技术用于AI模型训练.................................................................................32Kubernetes 上的 Alluxio-通过CSI插件加速AI/ML训练............................................... 43如何用Alluxio加速云上深度学习训练?......................................................................57【应用案例】【知乎】多云缓存在知乎的探索:从UnionStore到Alluxio............................................... 74【蚂蚁】Alluxio在蚂蚁集团大规模训练中的应用....................................................... 108【微软】面向大规模深度学习训练的缓存优化实践....................................................118【腾讯】千节点Alluxio帮腾讯游戏AI “开挂”...............................................................134【BOSS直聘】Alluxio在BOSS直聘算法平台的落地实践............................................ 1481为助力企业、科研机构、高校在竞争日益白热化的AI/机器学习/大模型赛道全面胜出,在大模型的决胜局实现突围制胜。Alluxio特此发起:《Alluxio助力大模型训练计划》2【白皮书】加速云端机器学习/深度学习架构和性能测试文章作者:邱璐(Alluxio软件工程师)、范斌(Alluxio创始成员&开源社区副总裁)前言:此白皮书介绍了如何利用 Alluxio 加快数据访问, 实现云上分布式训练的端到端性能提速。部署 Alluxio 后,从云存储加载数据,缓存数据和训练都变得更加简单高效。本白皮书还展示了如何搭建一套端到端加载训练数据性能的测试框架, 以及 Alluxio 与其他训练主流数据供给方案的性能测试比对结果。一、问题描述为了提高AI场景下模型训练的准确性、加快速度并降低成本,许多公司都逐步开始在云上实施分布式训练的方案。但是采用这种解决方案时,有以下两个问题需要重点解决:1)数据的可访问性 (Data Accessibility):当数据量大且存储在远端服务中时,如何获取训练数据。2)数据的访问性能 (Performance):如何同时保证元数据访问的低延迟和数据访问的高吞吐量。二、训练中的I/O挑战我们在云上进行模型训练时,总是希望能达到高吞吐量和高效率, 但是给机器学习训练供给数据 时经常会遇到下述挑战:●低效的串行化的数据准备:如果采用传统方式(见下一章)访问云存储中的数据,往往要花 费较长的时间才能准备好训练集群所需数据。●数据访问速度慢:传统方式获取数据和元数据速度较慢,这将直接影响总体训练效率,甚至 成为训练瓶颈。●资源管理易出错:训练集群通常只分配了有限的存储容量,如果在训练前完整复制输入数据 至训练集群本地存储,配置和维护存储资源往往难度大且容易出错。3●数据不一致:如果复制训练数据到训练集群,通常需要额外的人工干预来确保云存储上的数 据与训练数据同步。三、解决方案概览Alluxio 是用于数据分析和机器学习应用的开源数据编排平台。Alluxio 不仅在训练作业和底层存 储之间提供了一个分布式缓存层,而且还负责连接到底层存储,主动或按需获取数据,根据用户 设置的策略缓存数据,并为训练框架高速提供数据。 使用 Alluxio 来加速机器学习和深度学习训练通常包括以下三个步骤:1)在训练集群中部署 Alluxio;2)通过将 Alluxio 服务挂载至训练节点的本地文件目录;3)使用训练脚本从 Alluxio 服务的挂载点,访问缓存在 Alluxio 中以及底层存储中的数据。图1:训练作业通过 Alluxio 访问底层对象存储中的数据下面我们将介绍该架构的基本功能和优势。41. 通过缓存方式更快访问共享数据Alluxio 通过在本地或靠近训练作业的节点缓存数据, 从而实现 I/O 操作的高吞吐量,避免了因 需要等待数据获取导致较低地 GPU 利用率。和传统方案将整个数据集复制到每台机器上不同,Alluxio 提供了一套共享的分布式缓存服务, 使得数据均匀地分布在集群的各个节点上。 这极大地提升了存储资源利用率,尤其是当训练数据 集远大于单个节点的存储容量时。 下图展示了 Alluxio 是如何进行分布式缓存的:图2:Alluxio 将底层对象存储中的数据进行分布式缓存在图2中,完整的数据集存储在底层对象存储中。 简单起见,我们选用两个文件(/path1/file1 和 /path2/file2)来代表该数据集。像/path1/file1这类小文件在 Alluxio 中以单个块存储,而 /path2/file2 这类大文件在Alluxio 中分成多个块存储。我们不在每台训练节点上存储所有文件 块,而是将文件块分布式地存储在多台机器上。如图中的块A和块B 存储在服务器 1 中,而块 C 存储在服务器 2 中。 另外每个块可以在多个服务器上保存多个副本,这样既可以防止数据丢失 又能提高读取并发度。图例中的块 A 同时在最左和最右端服务器中存有副本。为了把数据分布式加载到缓存中,用户可以选择手动预加载数据,或者由应用程序按需动态地缓 存数据。5方案1:分布式预加载用户可以使用以下命令行将一个 s3 bucket 挂载到Alluxio服务,并将s3中的所有数据加载到 Alluxio缓存中。预加载将由多个节点和每个节点中的多个线程分布式并发完成,加载速度得以提升。Mount(挂载)操作使用用户配置的 AWS 凭证将 S3 bucket s3://<bucket_name> 挂载到 Alluxio 命名空间中的路径 /s3。 完成这一步后,用户可以通过 Alluxio API (e.g. Alluxio 命令行, Java API, HDFS API) 指定 Alluxio 路径 /s3 来与存储在 S3 bucket 中的数据进行交互。 例如,用户可以运行命令 bin/alluxio fs ls/s3 列出 S3 bucket 内的所有文件或目录。运行 Alluxio 提供的 distributedLoad 命令可以将存储在 s3://<bucket_name> 下的所有文件从底层的存储系统 S3 加载到 Alluxio 分布式节点上。该命令运行完成后, 所有针对s3://<bucket_name> 中的文件数据
突围大模型 : Alluxio助力AI大模型训练制胜宝典,点击即可下载。报告格式为PDF,大小24.24M,页数158页,欢迎下载。