hf_mem estime la mémoire requise pour l'inférence, incluant les poids du modèle et un cache KV optionnel, pour Safetensors et GGUF pour les modèles du Hugging Face Hub en utilisant des requêtes HTTP Range, c'est-à-dire sans télécharger ni charger localement aucun poids.
Quand l'utiliser ?
- L'utilisateur demande combien de VRAM ou de mémoire un modèle nécessite pour fonctionner
- L'utilisateur veut savoir si un modèle tient sur son GPU ou une instance donnée
- L'utilisateur référence un ID de modèle Hugging Face ou une URL et pose des questions sur les exigences d'inférence
Quels sont les prérequis ?
uvinstallé (pouruvx)- Variable d'environnement
HF_TOKENou flag--hf-token(pour les modèles gérés ou privés uniquement)
Comment l'exécuter ?
Exécutez avec --model-id pointant vers le repository Hugging Face Hub qui vérifiera qu'il contient soit Safetensors (via model.safetensors, model.safetensors.index.json s'il est shardé, ou model_index.json pour Diffusers) soit des poids de modèle GGUF.
uvx hf-mem --model-id <model-id> --json-output
Si le repository contient des poids de modèle GGUF en plusieurs précisions / quantifications, les estimations seront par fichier, tandis que pour l'inférence vous ne chargerez pas tous ceux-ci mais plutôt une seule précision. Cela dit, pour GGUF vous pouvez aussi avoir besoin de fournir --gguf-file pour cibler le fichier (ou le chemin s'il est shardé) spécifique que vous voulez exécuter.
uvx hf-mem --model-id <model-id> --gguf-file <file-or-path> --json-output
De plus, hf-mem est livré avec un flag --experimental qui calculera aussi les exigences de mémoire du cache KV, utile pour les grands modèles de langage, ce qui s'applique aux LLMs (...ForCausalLM), VLMs (...ForConditionalGeneration), et modèles GGUF.
Selon la context window, elle sera lue par défaut ou surchargée avec --max-model-len à la manière de vLLM. Et, la même chose s'applique à la précision du cache KV, qui sera par défaut la précision du modèle sauf si défini manuellement via --kv-cache-dtype à la manière de vLLM aussi.
Pour Safetensors utilisez comme :
uvx hf-mem --model-id <model-id> --experimental [--max-model-len N] [--batch-size N] [--kv-cache-dtype auto|bfloat16|fp8|fp8_ds_mla|fp8_e4m3|fp8_e5m2|fp8_inc] --json-output
Et, pour GGUF utilisez comme :
uvx hf-mem --model-id <model-id> --gguf-file <file-or-path> --experimental [--max-model-len N] [--batch-size N] [--kv-cache-dtype auto|F32|F16|Q4_0|Q4_1|Q5_0|Q5_1|Q8_0|Q8_1|Q2_K|Q3_K|Q4_K|Q5_K|Q6_K|Q8_K|IQ2_XXS|IQ2_XS|IQ3_XXS|IQ1_S|IQ4_NL|IQ3_S|IQ2_S|IQ4_XS|I8|I16|I32|I64|F64|IQ1_M|BF16|TQ1_0|TQ2_0|MXFP4] --json-output
Exemples
Pour Transformers avec poids Safetensors :
uvx hf-mem --model-id MiniMaxAI/MiniMax-M2 --json-output
Pour Diffusers avec poids Safetensors :
uvx hf-mem --model-id Qwen/Qwen-Image --json-output
Pour Sentence Transformers avec poids Safetensors :
uvx hf-mem --model-id google/embeddinggemma-300m --json-output
Avec --experimental pour inclure l'estimation du cache KV pour LLMs et VLMs :
uvx hf-mem --model-id mistralai/Mistral-7B-v0.1 --experimental --json-output
Et, pour LLMs ou VLMs avec poids GGUF :
uvx hf-mem --model-id unsloth/Qwen3.5-397B-A17B-GGUF --gguf-file Q4_K_M --experimental --json-output