Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Model Sharding

ia

Définition

Le Model Sharding (partage de modele) designe l'ensemble des techniques de partition d'un LLM sur plusieurs GPUs pour l'inference, permettant de depasser la limite de VRAM d'un seul GPU. C'est le terme generique englobant le Tensor Parallelism, le Pipeline Parallelism, et les techniques hybrides, appliqués specifiquement au contexte de l'inference plutot qu'a l'entrainement. Les deux approches principales de sharding pour l'inference : (1) Tensor Parallelism — partition des matrices de poids sur plusieurs GPUs (communications all-reduce frequentes, excellent avec NVLink), (2) Pipeline Parallelism — partition des couches en stages (moins de communication mais latence plus elevee). Une technique specifique a l'inference est le Sequential Sharding (aussi appele naive tensor parallel) : le premier GPU charge les couches 0-N/4, le deuxieme N/4-N/2, etc. Les activations sont passees sequentiellement entre GPUs. C'est simple a implementer mais sous-optimal pour le throughput car un seul GPU travaille a la fois. Tensor offloading est une forme extreme de sharding CPU-GPU : les couches non utilisees sont stockees en RAM CPU et chargees en VRAM GPU layer par layer lors de l'inference. llama.cpp avec --n-gpu-layers 0 (CPU seulement) ou un parametre partiel permet ce mode. Tres lent (transfers PCIe = goulot d'etranglement) mais permet de faire tourner des modeles 70B sur un laptop sans GPU. Le sharding automatique est disponible dans plusieurs frameworks : vLLM (--tensor-parallel-size N), HuggingFace Accelerate (device_map='auto' distribue intelligemment les couches entre CPU et GPU(s) disponibles selon leur VRAM), et LM Studio/Ollama qui gèrent automatiquement le sharding selon le hardware detecte.

Sharding automatique avec HuggingFace Accelerate

from transformers import AutoModelForCausalLM
import torch

# device_map='auto' : Accelerate distribue les couches automatiquement
# selon la VRAM disponible sur chaque GPU et la RAM CPU
model = AutoModelForCausalLM.from_pretrained(
    'meta-llama/Meta-Llama-3.1-70B-Instruct',
    torch_dtype=torch.bfloat16,
    device_map='auto'     # Automatique multi-GPU + CPU offload si necessaire
)
# Afficher la distribution
print(model.hf_device_map)  # {'model.layers.0': 0, 'model.layers.1': 0, ... 'model.layers.60': 1, ...}

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis