Ragazzi, sto impazzendo con un progetto di text generation! Ho un dataset di 50k recensioni di prodotti in italiano e voglio addestrare GPT-2-medium usando Hugging Face Transformers. Ma ogni volta che lancio il training, dopo pochi step mi esplode l'errore classico 'RuntimeError: CUDA out of memory'. Ho già provato di tutto:
- Ridotto il batch size a 2
- Usato fp16 con amp
- Abbassato la lunghezza massima dei testi a 256 token
Ecco il loop di training che uso:
```python
from transformers import GPT2LMHeadModel, GPT2Tokenizer, Trainer, TrainingArguments
tokenizer = GPT2Tokenizer.from_pretrained('gpt2-medium')
model = GPT2LMHeadModel.from_pretrained('gpt2-medium').cuda()
training_args = TrainingArguments(
output_dir='./risultati',
per_device_train_batch_size=2,
fp16=True,
max_steps=5000
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset_tokenizzato
)
trainer.train() # BOOM! Errore CUDA
```
Hardware: RTX 3080 con 10GB VRAM, PyTorch 2.0, ultima versione di transformers. Qualcuno ha trucchi per ottimizzare la memoria oltre gradient checkpointing o data parallelism? Forse dovrei passare a un modello più piccolo o c'è un modo per caricare i dati in streaming? Grazie mille per i consigli!
- Ridotto il batch size a 2
- Usato fp16 con amp
- Abbassato la lunghezza massima dei testi a 256 token
Ecco il loop di training che uso:
```python
from transformers import GPT2LMHeadModel, GPT2Tokenizer, Trainer, TrainingArguments
tokenizer = GPT2Tokenizer.from_pretrained('gpt2-medium')
model = GPT2LMHeadModel.from_pretrained('gpt2-medium').cuda()
training_args = TrainingArguments(
output_dir='./risultati',
per_device_train_batch_size=2,
fp16=True,
max_steps=5000
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=dataset_tokenizzato
)
trainer.train() # BOOM! Errore CUDA
```
Hardware: RTX 3080 con 10GB VRAM, PyTorch 2.0, ultima versione di transformers. Qualcuno ha trucchi per ottimizzare la memoria oltre gradient checkpointing o data parallelism? Forse dovrei passare a un modello più piccolo o c'è un modo per caricare i dati in streaming? Grazie mille per i consigli!