Ciao a tutti, sono una che ci prova da giorni ma non ne esce... Sto cercando di usare il modello Llama 3 8B con la pipeline di Hugging Face Transformers per generare testi, ma anche con una GPU da 16GB di VRAM mi esce sempre l'errore: `Cuda out of memory. Tried to allocate ...`. Ho seguito la guida ufficiale per installare transformers (v4.34.1) e accelerate, ho provato a caricare il modello con `device_map='auto'` e a usare il quantization_config, ma niente. Ecco il codice:
```python
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B")
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Meta-Llama-3-8B",
device_map='auto',
load_in_8bit=True # Ho provato anche 4bit e nessun quantizzatore
)
generator = pipeline('text-generation', model=model, tokenizer=tokenizer)
response = generator('Prompt di prova')
```
Ho letto che potrebbe essere il tokenizzatore che non si sposta correttamente su GPU, o forse la cache di attenzione che occupa troppa memoria... Ma come si risolve? Sto sviluppando su un laptop con RTX 3080Ti, Python 3.10, CUDA 12.1. Qualcuna ha trovato un workaround efficace per modelli così grandi senza dover scalare le dimensioni del batch o accorciare i token di output?
```python
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B")
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Meta-Llama-3-8B",
device_map='auto',
load_in_8bit=True # Ho provato anche 4bit e nessun quantizzatore
)
generator = pipeline('text-generation', model=model, tokenizer=tokenizer)
response = generator('Prompt di prova')
```
Ho letto che potrebbe essere il tokenizzatore che non si sposta correttamente su GPU, o forse la cache di attenzione che occupa troppa memoria... Ma come si risolve? Sto sviluppando su un laptop con RTX 3080Ti, Python 3.10, CUDA 12.1. Qualcuna ha trovato un workaround efficace per modelli così grandi senza dover scalare le dimensioni del batch o accorciare i token di output?