Retour à l'accueil

Compression de GLM-5.1 sur 16 GB VRAM : astuces GQA

L'article décrit la compression du modèle GLM-5.1 (744 milliards de paramètres) à 388 MB pour exécution sur NVIDIA T4. Contournement des limitations GQA via attention symétrique, code de piratage de config et résultats d'inférence. Approche pour ML-hacking sur matériel limité.

Lobotomie de GLM-5.1 : 744B sur T4 sans erreurs
Advertisement 728x90

# Exécuter GLM-5.1 sur 16 Go de VRAM : Analyse des astuces architecturales

Le modèle GLM-5.1 de ZhipuAI, avec ses 744 milliards de paramètres, exige des ressources massives pour fonctionner. L'équipe a réussi une compression dynamique de son architecture MoE sur une NVIDIA T4 avec seulement 16 Go de VRAM, contournant les limitations de GQA et réécrivant la configuration. Le prototype résultant ne pèse que 388 Mo et exécute l'inférence sans erreurs de matrice.

Micro-bricolage : Réduction basique des paramètres

La première étape de compression a consisté à modifier le fichier config.json pour réduire drastiquement les besoins en calcul. En passant num_hidden_layers à 2, num_experts à 2 et hidden_size à 512, le modèle est descendu au niveau du matériel grand public.

Le chargement via transformers avec from_config() a révélé des dépendances cachées. La version nocturne supporte GLM-5.1, mais les paramètres par défaut ont provoqué des conflits.

Google AdInline article slot

Conflit de tenseurs dans GQA

L'inférence a buté sur une erreur de dimensions incompatibles :

RuntimeError: La taille du tenseur a (8) doit correspondre à celle du tenseur b (32) sur la dimension 1 non singleton

Le coupable : un lien rigide avec multi_query_group_num=32 dans l'attention à requêtes groupées (GQA). La hidden_size réduite générait 8 têtes de requête, mais le cœur attendait 32 têtes clé/valeur. Cela cassait scaled_dot_product_attention.

Correction de l'asymétrie d'attention

La solution a nécessité un piratage de configuration à l'exécution avec alignement forcé des paramètres :

Google AdInline article slot
import torch
from transformers import AutoConfig, AutoModelForCausalLM
from huggingface_hub import login

# 1. Pirater la config à la volée
config = AutoConfig.from_pretrained("livadies/GLM-5.1-Ghetto-MoE-2-Experts", force_download=True)

# 2. ÉLIMINER L'ASYMMÉTRIE (Corriger l'erreur 8 vs 32)
config.num_attention_heads = 8
config.num_key_value_heads = 8         # Strictement égal à num_attention_heads
config.multi_query_group_num = 8       # Surcharge du hardcode GLM
config.multi_query_attention = False   # Désactiver GQA
config.kv_channels = 64                # hidden_size (512) / 8 = 64
config.head_dim = 64

# 3. Synthétiser les poids avec une maths parfaite
model = AutoModelForCausalLM.from_config(config, torch_dtype=torch.float16)

# 4. Forcer toutes les matrices en fp16 pour éviter les clashes de dtype
model = model.half().to("cuda")

Ce code impose une symétrie 8:8, désactive GQA et fixe les canaux KV à 64 (512/8).

Résultats d'inférence et validation

Les poids safetensors générés (388 Mo) ont passé un test sur le prompt « Salut ! Comment t'appelles-tu ? ». Sortie :

们都skeresindx scooter perspective/legal很少... Génération est-il Aujourd'hui pas disgr.initState...

Google AdInline article slot

Malgré le charabia, l'absence d'erreurs confirme que le graphe de calcul est solide. Les experts MoE routent les tenseurs, les modules d'attention tournent en fp16 sur 16 Go de VRAM.

Principaux changements de config :

  • num_hidden_layers : 2 (contre des dizaines auparavant)
  • num_experts : 2
  • hidden_size : 512
  • num_attention_heads = num_key_value_heads = 8
  • multi_query_attention : False
  • kv_channels : 64, head_dim : 64

Enseignements clés

  • La compression dynamique MoE permet d'exécuter des modèles 744B sur une unique T4 — pas besoin de ferme GPU.
  • La surcharge de config à l'exécution contourne le GQA codé en dur (32 groupes).
  • Symétrie d'attention 8:8 + fp16 résout les conflits de tenseurs.
  • Prototype de 388 Mo préserve la logique du graphe de calcul de GLM-5.1.
  • Technique applicable à d'autres architectures MoE pour du hacking ML.

— Editorial Team

Advertisement 728x90

Lire ensuite