Quantisierung von Modellen auf einer 6-GB-Laptop-GPU
Ich habe versucht, Large Language Models auf eine RTX 3050 Laptop-GPU zu bringen. Diese Karte verfügt über nur 6 GB VRAM. Ich wollte herausfinden, welche Modelle mit einer 4-Bit-Quantisierung funktionieren und welche scheitern.
Ich habe ein einzelnes Skript verwendet, um drei Modelle zu quantisieren:
- Phi-3.5-mini (3.8B)
- Llama-3.2-3B
- Qwen2.5-3B (VibeThinker)
Die Ergebnisse: Phi und Llama funktionierten gut. Phi reduzierte sich von 7,6 GB auf 2,2 GB in 34 Minuten. Llama und VibeThinker folgten einem ähnlichen Weg. Diese Modelle passen problemlos darauf.
Dann habe ich es mit Qwen2.5-7B versucht. Es ist fehlgeschlagen. Der Prozess stürzte beim zweiten Layer mit einem Out-of-Memory-Fehler ab.
Warum es fehlgeschlagen ist: Die GPTQ-Quantisierung erstellt für jeden Layer eine Hessian-Matrix. Bei einem 7B-Modell erfordert diese Berechnung mehr Speicher, als eine 6-GB-Karte bereitstellen kann. Ich habe mehrere Lösungsansätze versucht:
- Kleinere Kalibrierungsdatensätze: Keine Änderung.
- Auslagerung der Hessian-Matrizen auf die CPU: Es dauerte länger, stürzte aber dennoch ab.
- Verwendung von AWQ statt GPTQ: Es stürzte an der gleichen Stelle ab.
- Nur CPU-Nutzung: Es funktioniert, ist aber zu langsam. Es dauert etwa 16 Minuten pro Layer.
Wichtige Erkenntnisse für kleine GPUs:
- Rechnen Sie mit einer 3-fachen Reduzierung der Modellgröße.
- Streben Sie für die GPU-Quantisierung ein Limit von 3 bis 4 Milliarden Parametern an.
- Achten Sie auf Ihr KV-Budget. Selbst wenn die Dateigrößen ähnlich sind, variiert der während der Inferenz genutzte Speicher.
- Die Quantisierung verbraucht mehr Speicher als das Serving. Überwachen Sie während des Prozesses Ihren Arbeitsspeicher (RAM).
Modellvergleich (W4A16): • Phi-3.5-mini: 2,27 GB | 68,7 tok/s • Llama-3.2-3B: 2,26 GB | 66,0 tok/s • VibeThinker-3B: 2,07 GB | 43,9 tok/s
Alle drei Modelle bearbeiteten grundlegende Mathematik und Primzahl-Logik nach der Quantisierung korrekt.
Optional learning community: https://t.me/GyaanSetuAi