【问题标题】:How to determine the block size in training a dataset如何确定训练数据集的块大小
【发布时间】:2021-03-24 22:33:48
【问题描述】:

我想通过将先前训练的标记器应用到我的文本文件来构建训练数据集。我的文本文件大小为 7.02 GB(7,543,648,706 字节)。这是我写的:

from transformers import LineByLineTextDataset

dataset = LineByLineTextDataset(
    tokenizer=tokenizer,
    file_path="data.txt", block_size = ???
)

这里的“块大小”到底是什么意思?如何确定它的价值?

【问题讨论】:

    标签: python transformer


    【解决方案1】:

    深度学习模型的大多数实现无法处理可变长度的顺序输入数据(如果批量大小为 1,它们可以,但是,这是非常低效且不切实际的)。因此,它们采用固定长度的输入。

    例如,如果输入批次大小为 2:

    hello world
    my name is stack overflow
    

    它们应该被填充到最大长度(例如,10)

    hello world 0  0     0        0 0 0 0 0
    my    name  is stack overflow 0 0 0 0 0
    

    您的dataset 应该提供固定大小的批次,block_size 就是为此目的。如果输入太长,则会被截断为相同大小的块。

    【讨论】:

      【解决方案2】:

      如果我们查看source code

      batch_encoding = tokenizer(lines, add_special_tokens=True, truncation=True, max_length=block_size)
      

      block_size 是截断行以确保它们等长的大小。

      【讨论】:

        猜你喜欢
        • 2020-05-27
        • 1970-01-01
        • 2013-06-18
        • 2021-02-19
        • 1970-01-01
        • 2014-02-06
        • 2017-08-18
        • 2020-09-23
        • 1970-01-01
        相关资源
        最近更新 更多