

iGear 用了这个小魔法,模型训练速度提升 300%
source link: https://my.oschina.net/u/5389802/blog/5433177
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

iGear 用了这个小魔法,模型训练速度提升 300%
一个高精度AI模型离不开大量的优质数据集,这些数据集往往由标注结果文件和海量的图片组成。在数据量比较大的情况下,模型训练周期也会相应加长。那么有什么加快训练速度的好方法呢?
壕气的老板第一时间想到的通常是提升算力,增加资源。
如果足够有钱的话,基本不需要再继续看其他解决方案了。
但大多数情况下,面对昂贵的算力资源,我们不可能无限增加的。那在花了大价钱买到了有限资源的情况下,我们还可以通过什么方式加快模型训练,提高资源利用率呢?
本文将为大家介绍的就是 iGear 高性能缓存加速方案,我们先看一张简单的AI工作全流程服务示意图。
采集的数据通过 iGear 数据中台的筛选预处理、iGear 标注平台的标注后会形成优质训练数据集,这些数据集会流转到 iGear 训练平台来训练算法模型。 iGear 训练平台基于 Kubernetes 集群完成异构计算资源调度。在这个架构体系中计算和存储是分离的,数据集会放在远端的对象存储集群中,当运行模型训练任务时就需要访问远程存储来获取数据集,带来较高的网络 I/O 开销,也会造成数据集管理不便的问题。
本文提出的 iGear 高性能缓存加速方案要做的就是:
1.如何降低 I/O 开销,提高训练效率和 GPU 利用率?
2.如何管理数据集,提高用户易用性和便利性?
缓存方案概述
前文已经提及,数据集是存储在远端的对象存储集群中的。 为了提高数据集的易用性,常用方案是用 fuse 方式挂载给到训练任务,方便用户以普通文件目录的方式识别并使用数据集。 这种方式虽然满足了易用性,但高 I/O 的开销使得用户必须手动或者用脚本的方式将数据集提前同步到计算节点,这会增加用户在训练过程中的心智负担。 针对上述问题,我们对训练数据集做了优化,当用户开始准备训练时,通过 JuiceFS 实现数据集缓存引擎,为用户提供数据集缓存和预热功能,这既可以降低对远端对象存储的访问,又可以减少用户操作。充分利用计算集群本地存储来缓存数据集,通过两级缓存(训练节点的系统缓存+训练节点的磁盘缓存),加速模型训练速度,一定程度上也能提高 GPU 的利用率。
JuiceFS 是一款开源的面向云环境设计的高性能共享文件系统,在数据组织管理和访问性能上进行了大量针对性的优化,社区版本也有非常好的文档支撑,这里就不赘述了。
缓存方案测试
我们之前使用的方案是使用 fuse 的方式直接挂载对象存储系统,将 S3 的 bucket 通过挂载的方式挂载到本地,提供访问远端对象存储数据的能力。优化后的高性能缓存加速方案,后端也是基于对象存储,只是在此基础之上提供了缓存、预热等功能,优化了存储的性能。 基于此我们做了以下两组对比实验,两组实验都是基于同一套对象存储,且其它条件保持一致。
- 开启或关闭高性能缓存加速的性能对比
- 使用高性能缓存加速方案和使用 fuse 挂载的性能对比
在服务器物理机环境下,我们使用 PyTorch /examples 仓库中提供的 ResNet50 v1.5 进行模型训练,对其进行单机单卡、单机多卡的结果复现,同时对比执行过程花费的时长。
硬件:Tesla V100-SXM2-32GB
驱动:Nvidia 450.80.02
操作系统:Ubuntu 20.04.1 LTS
测试工具:PyTorch ResNet50 v1.5提供的脚本
数据集:ImageNet
实验一:开启高性能缓存加速 VS 关闭高性能缓存加速
ResNet50 v1.5 batch_size = 128, worker=8
从上图可以看出,在没有缓存的情况下,训练任务处理的图片数并没有随着算力的增加而明显变化,说明已经到了 I/O 瓶颈阶段。而使用缓存后,随着算力的增加,处理的图片数也相应增加。 这证明使用缓存加速后,大大降低了 I/O 开销,同等算力情况下,训练速度也有了很大提升,其中单机 1 卡的训练速度提升了 22.3%,单机 4 卡的速度提升了 218%,单机8卡的速度提升了 **230% **。
从模型训练时间角度来看,训练时间从未使用缓存加速的 1381 min 降低到 565 min,只用了原来 1/3 的时间就完成了模型训练。
第一组实验对比了数据集缓存前后的性能差异,验证了使用高性能缓存方案来加速 iGear 训练任务的必要性。
实验二:高性能缓存加速 VS fuse挂载
当前较为通用的方案是采用 fuse 的方式来挂载远端的对象存储到本地,提供用户对数据集的访问请求。为了对比目前普通 fuse 挂载的方案和高性能缓存加速的优化方案,我们设计了第二组实验:
ResNet50 v1.5 batch_size = 128, worker=8
从模型训练时间角度来看,fuse 挂载方案训练时间为 1448 min,高性能缓存加速优化方案可将训练时间减少到 565 min,将近 fuse 挂载方案的 1/3。
因此,相比于传统直接使用对象存储,我们的高性能存储在训练速度上和训练时间上都有大幅度的提升。
第二组实验对比了不同方案下的模型训练时间,验证了使用高性能缓存方案来加速 iGear 训练任务的重要性。
面对昂贵且有限的算力资源,我们可以通过高性能缓存加速方案去大幅加速 iGear 平台上训练任务的速度,极大地缩短模型训练时间,同时提高了 GPU 资源的利用率。如果算力进一步提升,收益也不仅仅止步于当前的测试环境。
本文作者:iGear老司机,原文地址:https://mp.weixin.qq.com/s/Lh5UEVw4-gCe6wAVcmznxg
如有帮助的话欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)
Recommend
-
65
很长一段时间以来,我在单个 GTX 1070 显卡上训练模型,其单精度大约为 8.18 TFlops。后来谷歌在 Colab 上启用了免费的 Tesla K80 GPU,配备 12...
-
53
在本文中,Ibotta(美国版「返利网」)机器学习和数据科学经理 Evan Harris 介绍了他们的开源项目 sk-dist。这是一个分配 scikit-learn 元估计器的 Spark 通用框架,它结合了 Spark 和 scikit-learn 中的元素,可以将 sklearn 的训练速度...
-
7
Teacher模型线上授课,蒸馏训练速度提升2.3倍 - 飞桨PaddlePaddle的个人空间 - OSCHINA - 中文开源技术交流社区 ...
-
8
让模型训练速度提升两到四倍,「彩票假设」作者的这个全新PyTorch库火了-51CTO.COM 让模型训练速度提升两到四倍,「彩票假设」作者的这个全新PyTorch库火了 作者:机器之心 2022-04-06 11:10:00 ...
-
8
编辑导语:运营人员要如何结合数据分析,找到营销敏感人群,提升触达和转化效果,降低营销成本?不妨看看本文作者的案例剖析吧。在本篇文章里,作者结合Amazon SageMaker Canvas产品进行了营销场景建模实践,一起来看。
-
8
前段时间,我在群里看到有人在反馈,账户转化差,ROI很差,账户量级怎么也起不来。 不光是群里,我私下跟几个大的甲方投放负责人交流的时候,他们也提到了最近转化差的问题。
-
2
V2EX › Rust Rust 是有什么黑魔法吗?每次用了就忘 ser...
-
4
2023-05-31 02:33 Meta 发布 Megabyte AI 模型,较 Transformer 速度提升 4 成 据 IT 之家消息,近日 Meta 团队开发了一款名为 Megabyte 的 AI 模型以抗衡 Transformer,据称 Megabyte 解决了 Transformer 模型所面临的问题,并且...
-
10
ChatGPT企业版上线啦!🌟自助训练AI,速度提升2倍🚀安全可靠! 探索无限可能! 详情请见:https://www.chenweiliang.com/cwl-30862.html
-
1
荣耀邓斌解读魔法OS 8.0:用AI大模型提升对用户真实意图理解能力|荣耀_新浪科技_新浪网
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK