遵循 LM 教程时出现内存问题
Memory Issue while following LM tutorial
规格:
OS: Windows 10
CUDA:10.1
GPU:RTX 2060 6G 显存 (x2)
内存:32GB
教程:https://huggingface.co/blog/how-to-train
你好,我正在尝试训练自己的语言模型,但我遇到了一些记忆问题。我已经尝试 运行 在我的计算机上 Pycharm 中的一些代码,然后尝试在我的 Collab Pro Notebook 中复制。
首先是我的代码
from transformers import RobertaConfig, RobertaTokenizerFast, RobertaForMaskedLM, LineByLineTextDataset
from transformers import DataCollatorForLanguageModeling, Trainer, TrainingArguments
config = RobertaConfig(vocab_size=60000, max_position_embeddings=514, num_attention_heads=12, num_hidden_layers=6,
type_vocab_size=1)
tokenizer = RobertaTokenizerFast.from_pretrained("./MODEL DIRECTORY", max_len=512)
model = RobertaForMaskedLM(config=config)
print("making dataset")
dataset = LineByLineTextDataset(tokenizer=tokenizer, file_path="./total_text.txt", block_size=128)
print("making c")
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=True, mlm_probability=0.15)
training_args = TrainingArguments(output_dir="./MODEL DIRECTORY", overwrite_output_dir=True, num_train_epochs=1,
per_gpu_train_batch_size=64, save_steps=10000, save_total_limit=2)
print("Building trainer")
trainer = Trainer(model=model, args=training_args, data_collator=data_collator, train_dataset=dataset,
prediction_loss_only=True)
trainer.train()
trainer.save_model("./MODEL DIRECTORY")
"./total_text.txt"
是一个 1.7GB 的文本文件。
PyCharm 尝试
这段 pycharm 上的代码构建了数据集,然后会抛出一个错误,指出我首选的 gpu 运行ning 内存不足,而 Torch 已经使用了 3.7GiB 的内存。
我试过了:
- 导入 gc 执行 gc clear 以尝试刷新我的 gpu 上发生的一切
- 减少我的 gpu 的批量大小(训练只发生在批量大小为 8 的情况下,导致 200,000 多个 epoch,全部花费 1.17 秒)
- 设置我的
os.environ["CUDA_VISIBLE_OBJECTS"] =""
以便手电筒必须使用我的 CPU 而不是我的 GPU。仍然抛出相同的 gpu 内存错误...
由于 Torch 暂时强迫自己使用我的 GPU,我决定去 Collab。
合作尝试
Collab 对我的代码有不同的问题。它没有构建数据集的内存,并且由于 RAM 短缺而崩溃。我购买了Pro账户,然后将可用RAM增加到25GB,内存仍然不足。
干杯!
我得出的结论是我的训练文本文件太大了。从我发现的其他示例来看,训练文本约为 300MB,而不是 1.7GB。在这两种情况下,我都要求 PyCharm 和 Collab 完成一项非常耗费资源的任务。
规格: OS: Windows 10 CUDA:10.1 GPU:RTX 2060 6G 显存 (x2) 内存:32GB 教程:https://huggingface.co/blog/how-to-train
你好,我正在尝试训练自己的语言模型,但我遇到了一些记忆问题。我已经尝试 运行 在我的计算机上 Pycharm 中的一些代码,然后尝试在我的 Collab Pro Notebook 中复制。
首先是我的代码
from transformers import RobertaConfig, RobertaTokenizerFast, RobertaForMaskedLM, LineByLineTextDataset
from transformers import DataCollatorForLanguageModeling, Trainer, TrainingArguments
config = RobertaConfig(vocab_size=60000, max_position_embeddings=514, num_attention_heads=12, num_hidden_layers=6,
type_vocab_size=1)
tokenizer = RobertaTokenizerFast.from_pretrained("./MODEL DIRECTORY", max_len=512)
model = RobertaForMaskedLM(config=config)
print("making dataset")
dataset = LineByLineTextDataset(tokenizer=tokenizer, file_path="./total_text.txt", block_size=128)
print("making c")
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=True, mlm_probability=0.15)
training_args = TrainingArguments(output_dir="./MODEL DIRECTORY", overwrite_output_dir=True, num_train_epochs=1,
per_gpu_train_batch_size=64, save_steps=10000, save_total_limit=2)
print("Building trainer")
trainer = Trainer(model=model, args=training_args, data_collator=data_collator, train_dataset=dataset,
prediction_loss_only=True)
trainer.train()
trainer.save_model("./MODEL DIRECTORY")
"./total_text.txt"
是一个 1.7GB 的文本文件。
PyCharm 尝试
这段 pycharm 上的代码构建了数据集,然后会抛出一个错误,指出我首选的 gpu 运行ning 内存不足,而 Torch 已经使用了 3.7GiB 的内存。
我试过了:
- 导入 gc 执行 gc clear 以尝试刷新我的 gpu 上发生的一切
- 减少我的 gpu 的批量大小(训练只发生在批量大小为 8 的情况下,导致 200,000 多个 epoch,全部花费 1.17 秒)
- 设置我的
os.environ["CUDA_VISIBLE_OBJECTS"] =""
以便手电筒必须使用我的 CPU 而不是我的 GPU。仍然抛出相同的 gpu 内存错误...
由于 Torch 暂时强迫自己使用我的 GPU,我决定去 Collab。
合作尝试
Collab 对我的代码有不同的问题。它没有构建数据集的内存,并且由于 RAM 短缺而崩溃。我购买了Pro账户,然后将可用RAM增加到25GB,内存仍然不足。
干杯!
我得出的结论是我的训练文本文件太大了。从我发现的其他示例来看,训练文本约为 300MB,而不是 1.7GB。在这两种情况下,我都要求 PyCharm 和 Collab 完成一项非常耗费资源的任务。