Nel corso dell’ultimo anno abbiamo assistito al selvaggio West dei Large Language Models (LLM). Il ritmo con cui sono state rilasciate nuove tecnologie e modelli è stato sorprendente! Di conseguenza, abbiamo molti standard e modi diversi di lavorare con i LLM.
In questo articolo esploreremo uno di questi argomenti, ovvero il caricamento del tuo LLM locale attraverso diversi standard (di quantizzazione). Con lo sharding, la quantizzazione e le diverse strategie di salvataggio e compressione, non è facile sapere quale metodo è adatto a te.
Negli esempi utilizzeremo Zefiro 7Buna variante perfezionata del Mistral 7B con cui è stato addestrato Ottimizzazione diretta delle preferenze (DPO).
🔥 MANCIA: dopo ogni esempio di caricamento di un LLM, si consiglia di riavviare il notebook per evitare errori OutOfMemory. Il caricamento di più LLM richiede RAM/VRAM significativa. Puoi reimpostare la memoria eliminando i modelli e reimpostando la cache in questo modo:
# Delete any models previously created
del model, tokenizer, pipe# Empty VRAM cache
import torch
torch.cuda.empty_cache()
Puoi anche seguire insieme al Taccuino di Google Colab per assicurarsi che tutto funzioni come previsto.
Il modo più semplice e semplice per caricare il tuo LLM è tramite 🤗 Trasformatori. HuggingFace ha creato un’ampia suite di pacchetti che ci consentono di fare cose straordinarie con i LLM!
Inizieremo installando HuggingFace, tra gli altri, dal suo ramo principale per supportare i modelli più recenti:
# Latest HF transformers version for Mistral-like models
pip install git+https://github.com/huggingface/transformers.git
pip install accelerate bitsandbytes xformers
Dopo l’installazione, possiamo utilizzare la seguente pipeline per caricare facilmente il nostro LLM:
from torch import bfloat16
from transformers import pipeline# Load in your LLM without any compression tricks
pipe = pipeline(
"text-generation",
model="HuggingFaceH4/zephyr-7b-beta",
torch_dtype=bfloat16,
device_map="auto"
)
Fonte: towardsdatascience.com