当前位置:网站首页>MindSpore:model.train中的dataset_sink_mode该如何理解?
MindSpore:model.train中的dataset_sink_mode该如何理解?
2022-08-04 09:03:00 【小乐快乐】
问题描述:
【功能模块】
看教程的时候,model.train中的dataset_sink_mode我无论是直接从英文的角度理解还是机翻了之后理解都不是特别懂。

【操作步骤&问题现象】
我在新手教程中看到这么一段话,不知道是否意味着如果我用的是GPU,那么应该把参数设置为TRUE呢?

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

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

我想问一下,造成这个不同的原因是什么? 看来我果然没有把数据下沉模式理解的很透彻。
据我所知,用MindSpore训练的时候,遵循这样的流程:
首先60000数据集要拿出一部分先放到内存空间中(比如自己指定开辟了容纳1K数据量的内存空间),然后将这1k数据shuffle之后,再逐次取32个数据(batch_size=32)像流水一样源源不断放到网络里进行训练。
我怀疑是不是如果把数据下沉模式设置为TRUE的话,那么就会让其中的某个环节被跳过呢?
总之,能帮我解释一下数据下沉模式这个参数到底是什么意思吗?
解决方案:
dataset_sink_mode=True时,数据处理(dataset加载及其处理)会和网络计算构成Pipeline方式,即:数据处理在逐步处理数据时,处理完一个batch的数据,会把数据放到一个队列里,这个队列用于缓存已经处理好的数据,然后网络计算从这个队列里面取数据用于训练,那么此时数据处理与网络计算就Pipeline起来了,整个训练耗时就是数据处理 / 网络计算耗时最长的那个。

dataset_sink_mode=False时,数据处理(dataset加载及处理)会和网络计算构成串行的过程,即:数据处理在处理完一个batch后,把这个batch的数据传递给网络用于计算,在计算完成后,数据处理再处理下一个batch,然后把这个新的batch数据传递给网络用于计算,如此的循环往复,直到训练完。该方法的总耗时是数据处理的耗时 + 网络计算的耗时 = 训练总耗时。
你对于数据处理的理解稍微有点偏差,我这么解释下:
数据处理一般分加载、处理、batch 三个阶段,在加载阶段一般会获取整个数据集的meta信息,基于此meta信息可以进行数据集的shuffle(整个数据集的),也可做数据的分片,用于分布式训练,然后基于这个meta信息一个一个样本的从存储上加载至内存中,样本加载至内存后,会在处理操作(map操作)中一步一步的处理,最后传递至batch操作,组织成batch size大小。
对于整个数据集的shuffle一般在数据集加载接口里面就可以使用,shuffle=True。
参考:mindspore.dataset.MindDataset — MindSpore master documentation

你说的会建立一个空间大小用于shuffle数据,是我们的 dataset.shuffle(buffer_size=N)逻辑。
参考:mindspore.dataset.MindDataset — MindSpore master documentation 中的
shuffle(buffer_size)函数。
边栏推荐
- 【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- cannot import name 'import_string' from 'werkzeug' [bug solution]
- TiCDC同步延迟问题处理
- 菲沃泰科创板上市:市值123亿 宗坚赵静艳夫妇身价76亿
- sql在字段重复时 对某个字段根据最新时间取数
- Occupy, fill in later
- [STM32] STM32F103 series name and package, memory
- It is found that several WRH tables are locked, what should I do?
- 如何设计一个注册中心
- 思想茶叶蛋 (Jul 31,2022)| 元宇宙(Metaverse)下了一枚什么样的蛋
猜你喜欢

leetcode单调栈经典例题——最大矩形

Grafana9.0发布,Prometheus和Loki查询生成器、全新导航、热图面板等新功能!
![No module named 'flask_misaka' has been resolved [BUG solution]](/img/cc/e379d23a41330d2335dd192e16e821.png)
No module named 'flask_misaka' has been resolved [BUG solution]

外包干了四年,秋招终于上岸了
![[Computer recording screen] How to use bandicam to record the game setting graphic tutorial](/img/a7/0ac5e2028c5f1b013da56b795143e7.jpg)
[Computer recording screen] How to use bandicam to record the game setting graphic tutorial

VRRP + MSTP configuration, huawei eNSP experiment 】 【

cannot import name ‘import_string‘ from ‘werkzeug‘【bug解决】
![[Punctuality Atom STM32 Serial] Chapter 4 STM32 First Experience Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1](/img/99/928e86f8a61a905a899dd5d3880def.png)
[Punctuality Atom STM32 Serial] Chapter 4 STM32 First Experience Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1

【正点原子STM32连载】第二章 STM32简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
随机推荐
【论文笔记】Delving into the Estimation Shift of Batch Normalization in a Network
将jpg图片转换成yuv420(NV12)数据文件
获取cpu的核数
继承和static关键字
技术实现 | 图像检索及其在高德的应用
cannot import name 'import_string' from 'werkzeug' [bug solution]
一道[CSCCTF 2019 Qual]FlaskLight的详解再遇SSTI
MATLAB绘图总结
字符串与正则表达式(C#)
ShuffleNet v2 network structure reproduction (Pytorch version)
csdn图片去水印 | 其他方法无效时的解决方案
leetcode每天5题-Day06
Oracle怎么获取当前库或者同一台服务器上某几个库的数据总行数?
Could you please talk about how the website is accessed?[Interview questions in the web field]
Fiddler(二)-手机抓包502错误解决方法
recursive thinking
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
Detailed explanation of telnet remote login aaa mode [Huawei eNSP]
leetcode二叉树系列(二叉搜索树篇)
leetcode动态规划系列(求路径篇)


