TextLMDataBunch 内存问题 语言模型 Fastai
TextLMDataBunch Memory issue Language Model Fastai
我有一个包含 4500 万行数据的数据集。我有三个 6gb ram gpu。我正在尝试根据数据训练语言模型。
为此,我正在尝试将数据加载为 fastai 数据束。但是这部分总是因为内存问题而失败。
data_lm = TextLMDataBunch.from_df('./', train_df=df_trn,
valid_df=df_val, bs=10)
我该如何处理这个问题?
当你使用这个函数时,你的Dataframe被加载到内存中。由于您有一个非常大的数据框,这会导致您的内存错误。 Fastai 使用块大小处理标记化,因此您仍然应该能够对文本进行标记化。
以下是您应该尝试的两件事:
向您的 TextLMDataBunch.from_df
添加一个 chunksize 参数(默认值为 10k),以便标记化过程需要更少的内存。
如果这还不够,我建议不要将整个数据帧加载到内存中。不幸的是,即使您使用 TextLMDataBunch.from_folder
,它也只是加载完整的 DataFrame 并将其传递给 TextLMDataBunch.from_df
,您可能必须创建自己的 DataBunch 构造函数。如果您需要帮助,请随时发表评论。
我有一个包含 4500 万行数据的数据集。我有三个 6gb ram gpu。我正在尝试根据数据训练语言模型。
为此,我正在尝试将数据加载为 fastai 数据束。但是这部分总是因为内存问题而失败。
data_lm = TextLMDataBunch.from_df('./', train_df=df_trn,
valid_df=df_val, bs=10)
我该如何处理这个问题?
当你使用这个函数时,你的Dataframe被加载到内存中。由于您有一个非常大的数据框,这会导致您的内存错误。 Fastai 使用块大小处理标记化,因此您仍然应该能够对文本进行标记化。
以下是您应该尝试的两件事:
向您的
TextLMDataBunch.from_df
添加一个 chunksize 参数(默认值为 10k),以便标记化过程需要更少的内存。如果这还不够,我建议不要将整个数据帧加载到内存中。不幸的是,即使您使用
TextLMDataBunch.from_folder
,它也只是加载完整的 DataFrame 并将其传递给TextLMDataBunch.from_df
,您可能必须创建自己的 DataBunch 构造函数。如果您需要帮助,请随时发表评论。