一个高精度 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 资源的利用率。如果算力进一步晋升,收益也不仅仅止步于以后的测试环境。
如有帮忙的话欢送关注咱们我的项目 Juicedata/JuiceFS 哟!(0ᴗ0✿)