建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

再改一遍

发帖: 7粉丝: 0

发消息 + 关注

发表于2021年04月07日 21:56:47 48 2
直达本楼层的链接
楼主
显示全部楼层
[问题求助] MindSpore model.train中的dataset_sink_mode该如何理解?

【功能模块】

看教程的时候,model.train中的dataset_sink_mode我无论是直接从英文的角度理解还是机翻了之后理解都不是特别懂。

image.png


【操作步骤&问题现象】

我在新手教程中看到这么一段话,不知道是否意味着如果我用的是GPU,那么应该把参数设置为TRUE呢?

image.png

2、

我在自己实际实验的时候,发现如果把数据下沉模式设置为False,打印间隔为125,batch_size设为32,总数据量为60000(也就是一共可以分成1875份),那么就会像下面这样输出结果:


image.png

可是在其他都不变的情况下,如果我把数据下沉模式设置为TRUE,那么就只会打印step为1875的情况,前面的都没有打印。

image.png

我想问一下,造成这个不同的原因是什么? 看来我果然没有把数据下沉模式理解的很透彻。


据我所知,用MindSpore训练的时候,遵循这样的流程:

首先60000数据集要拿出一部分先放到内存空间中(比如自己指定开辟了容纳1K数据量的内存空间),然后将这1k数据shuffle之后,再逐次取32个数据(batch_size=32)像流水一样源源不断放到网络里进行训练。

我怀疑是不是如果把数据下沉模式设置为TRUE的话,那么就会让其中的某个环节被跳过呢?


总之,能帮我解释一下数据下沉模式这个参数到底是什么意思吗?感谢!



举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

chengxiaoli

发帖: 154粉丝: 25

级别 : 版主,版块专家

发消息 + 关注

发表于2021年04月08日 09:37:48
直达本楼层的链接
沙发
显示全部楼层

您好,欢迎体验MindSpore。

您遇到的疑惑我们正在分析,会尽快给出答复,请耐心等待下,谢谢。

评论
再改一遍 3 天前 评论

感谢!

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

Kakarotto

发帖: 0粉丝: 4

发消息 + 关注

发表于2021年04月09日 11:41:29
直达本楼层的链接
板凳
显示全部楼层
  1.  dataset_sink_mode=True时,数据处理(dataset加载及其处理)会和网络计算构成Pipeline方式,即:数据处理在逐步处理数据时,处理完一个batch的数据,会把数据放到一个队列里,这个队列用于缓存已经处理好的数据,然后网络计算从这个队列里面取数据用于训练,那么此时数据处理与网络计算就Pipeline起来了,整个训练耗时就是数据处理 / 网络计算耗时最长的那个。

    image.png

  2. dataset_sink_mode=False时,数据处理(dataset加载及处理)会和网络计算构成串行的过程,即:数据处理在处理完一个batch后,把这个batch的数据传递给网络用于计算,在计算完成后,数据处理再处理下一个batch,然后把这个新的batch数据传递给网络用于计算,如此的循环往复,直到训练完。该方法的总耗时是数据处理的耗时 + 网络计算的耗时 = 训练总耗时。

  3. 你对于数据处理的理解稍微有点偏差,我这么解释下:

    数据处理一般分加载、处理、batch 三个阶段,在加载阶段一般会获取整个数据集的meta信息,基于此meta信息可以进行数据集的shuffle(整个数据集的),也可做数据的分片,用于分布式训练,然后基于这个meta信息一个一个样本的从存储上加载至内存中,样本加载至内存后,会在处理操作(map操作)中一步一步的处理,最后传递至batch操作,组织成batch size大小。

    对于整个数据集的shuffle一般在数据集加载接口里面就可以使用,shuffle=True。

    参考:https://www.mindspore.cn/doc/api_python/zh-CN/r1.2/mindspore/dataset/mindspore.dataset.MindDataset.html#mindspore.dataset.MindDataset 

    image.png

  4. 你说的会建立一个空间大小用于shuffle数据,是我们的 dataset.shuffle(buffer_size=N)逻辑。

    参考:https://www.mindspore.cn/doc/api_python/zh-CN/r1.2/mindspore/dataset/mindspore.dataset.MindDataset.html#mindspore.dataset.MindDataset 中的shuffle(buffer_size)函数。

    image.png

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

邀请回答
您可以邀请3位专家

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200