Il modello più grande e migliore della famiglia Llama 2 ha 70 miliardi di parametri. Un parametro fp16 pesa 2 byte. Il caricamento di Llama 2 70B richiede 140 GB di memoria (70 miliardi * 2 byte).
In un precedente articolo ho mostrato come è possibile eseguire un modello da 180 miliardi di parametri, Falcon 180B, su 100 GB di RAM della CPU grazie alla quantizzazione.
Il Llama 2 70B è sostanzialmente più piccolo del Falcon 180B.
Può adattarsi interamente a una singola GPU consumer?
Questo è impegnativo. Una GPU consumer di fascia alta, come NVIDIA RTX 3090 o 4090, ha 24 GB di VRAM. Se quantizziamo Llama 2 70B con una precisione di 4 bit, avremo ancora bisogno di 35 GB di memoria (70 miliardi * 0,5 byte). Il modello potrebbe adattarsi a 2 GPU consumer.
Con la quantizzazione GPTQ, possiamo ridurre ulteriormente la precisione a 3 bit senza perdere molto nelle prestazioni del modello. Un parametro a 3 bit pesa 0,375 byte in memoria. Llama 2 70B quantizzato a 3 bit peserebbe comunque 26,25 GB. Non si adatta a una GPU consumer.
Potremmo ridurre la precisione a 2 bit. Potrebbe contenere 24 GB di VRAM ma poi anche le prestazioni del modello calerebbero significativamente studi precedenti sulla quantizzazione a 2 bit.
Per evitare di perdere troppo nelle prestazioni del modello, potremmo quantizzare strati o parti importanti del modello con una precisione maggiore e le parti meno importanti con una precisione inferiore. Il modello verrebbe quantizzato con precisione mista.
ExLlamaV2 (licenza MIT) implementa la quantizzazione a precisione mista.
In questo articolo, mostro come utilizzare ExLlamaV2 per quantizzare modelli con mix…
Fonte: towardsdatascience.com