Dataset与Dataloader的关系

大语言模型微调及其应用的探索 跟踪前沿的技术

Dataset与Dataloader的关系

1. Dataset :指定数的来源

  1. 将数据导入到内存中
  2. 提供数据样本的总个数
  3. 获取某一个样本的方法

2. Dataloader:方便的获取批次数据

  1. 可以从不同的数据源获取样本数据
  2. 可以指定每个批次样本的个数
  3. 获取样本时的步幅大小
  4. 指定可同时加载数据的子进程数(CPU/2)
  5. 在否在每轮训练中将数据打乱

Dataset

  1. 如果是小数据集,Dataset会一次性将全部内容导入内存
  2. 如果是超大规模数据,则在 __init__中仅记录元信息
  3. 有哪些文件, 他们存放在那儿, 大小是多少
  4. 每次都通过 __getitem__获取一个样本(从文件中读)
  5. 效率问题则由work_num解决, 即多进程并行处理

通过Dataloader获取数据的方式

  1. 训练时, 我们一般通过for循环从Dataloader中获取数据
  2. 通过iterater+next获取一个批次的样本, 主要用于验证