文档首页 > > 常见问题> 一般性问题> 如何提升训练效率,同时减少与OBS的交互?

如何提升训练效率,同时减少与OBS的交互?

分享
更新时间: 2020/01/23 GMT+08:00

场景描述

在使用Modelarts进行自定义深度学习训练时,训练数据通常存储在对象存储服务(OBS)中,且训练数据较大时(如200GB以上),每次都需要使用GPU资源池进行训练,且训练效率低。

希望提升训练效率,同时较少与对象存储OBS的交互。可通过如下方式进行调整优化。

优化原理

对于ModelArts提供的GPU资源池,每个训练节点会挂载500GB的NVMe类型SSD提供给用户免费使用。此SSD挂载到“/cache”目录,“/cache”目录下的数据生命周期与训练作业生命周期相同,当训练作业运行结束以后“/cache”目录下面所有内容会被清空,腾出空间,供下一次训练作业使用。因此,可以在训练过程中将数据从OBS拷贝到“/cache”目录,然后每次从“/cache”目录读取数据,直到训练结束。训练结束以后“/cache”目录的内容会自动被清空。

优化方式

以TensorFlow代码为例。

优化前代码如下所示:

1
2
3
4
...
tf.flags.DEFINE_string('data_url', '', 'dataset directory.')
FLAGS = tf.flags.FLAGS
mnist = input_data.read_data_sets(FLAGS.data_url, one_hot=True)

优化后的代码示例如下,将数据拷贝至“/cache”目录。

1
2
3
4
5
6
7
...
tf.flags.DEFINE_string('data_url', '', 'dataset directory.')
FLAGS = tf.flags.FLAGS
import moxing as mox
TMP_CACHE_PATH = '/cache/data'
mox.file.copy_parallel('FLAGS.data_url', TMP_CACHE_PATH)
mnist = input_data.read_data_sets(TMP_CACHE_PATH, one_hot=True)
分享:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问