Guide complet du déploiement de LLM en local : créez votre propre workflow d'agent pour une liberté totale (débutants)

@Lonely__MH
CHINOIS17 août 2026
153K
287
74
94
470

TL;DR

Un tutoriel détaillé sur le déploiement local du modèle Ling-3.0-flash de 124B via vLLM, incluant des benchmarks de performance, le développement d'une TUI et l'intégration de workflows multi-modèles pour des tâches de contenu automatisées.

Cet article vise à être aussi compréhensible que possible, permettant à tout joueur novice de maîtriser facilement le déploiement de modèles locaux et de construire son propre flux de travail.

Cette année, les grands modèles open source nationaux ont été très actifs. DeepSeek, Qwen, Kimi, GLM, MiniMax... de nouveaux modèles apparaissent les uns après les autres, ouvrant constamment leurs poids, et commençant à rivaliser avec les modèles closed source américains.

Mais plus il y a de modèles, plus je me soucie d'une question spécifique : ces modèles peuvent-ils non seulement rester dans des pages web et des API, mais être véritablement installés dans nos propres machines, se connectant aux fichiers, outils et flux de travail locaux ?

Bien que le prix unitaire des tokens d'API diminue généralement, le coût reste élevé en cas d'appels fréquents et de textes longs. Ajouté à cela des problèmes comme la confidentialité, la mise en réseau et le contrôle des données, le déploiement local devient le choix d'un nombre croissant de développeurs et d'entreprises.

Alors cette fois, je veux choisir un modèle de taille ambitieuse et représentatif du déploiement sur une seule machine pour exécuter l'ensemble du processus de déploiement local.

Le protagoniste finalement sélectionné est Ling-3.0-flash, open-sourcé par Ant Bailing — un modèle Mixture of Experts (MoE) avec un nombre total de paramètres de 124B. J'ai justement un NVIDIA DGX Spark sous la main, qui peut tout à fait le faire tourner.

Sans plus attendre, commençons le spectacle.

Lonely - inline image

01 Préambule Terminologique

Avant de commencer, présentons quelques termes liés aux modèles pour mettre tout le monde à niveau ✌🏻

Précision du Modèle

Un même modèle propose souvent différentes versions de précision ou quantifiées, ce qui affecte directement la taille du modèle et le seuil de fonctionnement.

Lonely - inline image

Cette fois, nous utilisons la version officielle Ling INT4, qui pèse environ 71,75 Go.

Dense ou MoE

Lonely - inline image

Notez que 5,1B est uniquement le nombre de paramètres activés par inférence ; la totalité des 124B de poids doit encore être chargée en mémoire.

Moteur d'Inférence

Le moteur d'inférence est responsable du chargement des poids, de la gestion du contexte et de la concurrence, et de la fourniture d'interfaces. C'est l'outil pour exécuter le modèle, pas le modèle lui-même.

Lonely - inline image

Nous avons choisi vLLM cette fois car l'adaptation officielle actuelle prend en charge les poids INT4 de Ling-3.0-flash et le décodage spéculatif MTP.

02 Installation et Déploiement du Modèle

Tout d'abord, présentons l'environnement d'installation : j'utilise un NVIDIA DGX Spark, équipé d'une puce GB10 et de 121,6 Go de mémoire unifiée, fonctionnant sous Ubuntu 24.04 sur architecture ARM64. Le déploiement est Ling-3.0-flash-INT4, et les tests de débit ultérieurs utiliseront le Qwen 3.8-27B local comme référence.

Le site officiel fournit une version de base et différentes versions de précision comme FP8, FP4 et INT4. Vous pouvez choisir en fonction de votre matériel.

Il existe également un Ling-3.0-tiny 8B et ses versions FP8, INT4. Les utilisateurs avec un Mac classique ou une seule 4090 peuvent prioriser l'essai des versions basse précision de Tiny.

Lonely - inline image

Étape 1 : Télécharger le modèle. J'ai utilisé la version officielle INT4 cette fois. Liens de téléchargement 👇🏻

Si l'accès à Hugging Face est difficile, vous pouvez télécharger manuellement depuis ModelScope. Après téléchargement, il y a 24 fragments safetensors, totalisant environ 71,75 Go. Vous devez également laisser de l'espace pour le moteur d'inférence et le Cache KV pendant l'exécution.

Étape 2 : Préparer l'environnement. L'architecture BailingMoeV3 de Ling-3.0-flash est assez récente. J'ai essayé d'utiliser GGUF avec llama.cpp, mais cela a généré une erreur unknown model architecture: 'bailingmoe3'. Donc cette fois, j'ai directement utilisé la branche vLLM officiellement adaptée :

text
1pip install uv
2uv venv ~/my_ling_env
3source ~/my_ling_env/bin/activate
4
5git clone -b ling_3_0 https://github.com/inclusionAI/vllm-ling-v3.git
6cd vllm-ling-v3
7VLLM_USE_PRECOMPILED=1 uv pip install --editable . --torch-backend=auto

Étape 3 : Démarrer le service d'inférence. Remplacez le chemin du modèle par vos poids INT4 téléchargés localement :

text
1vllm serve /path/to/Ling-3.0-flash-int4 \
2 --served-model-name ling-int4 \
3 --host 127.0.0.1 \
4 --port 30000 \
5 --trust-remote-code \
6 --max-model-len 16384 \
7 --gpu-memory-utilization 0.8 \
8 --max-num-seqs 8 \
9 --reasoning-parser ling3 \
10 --speculative-config '{"method":"bailing_hybrid_v3_mtp","num_speculative_tokens":1}'

⚠️

Veuillez remplacer les chemins dans la commande par les chemins réels sur votre machine.

Ici, la limite de contexte est fixée à 16K, la concurrence à 8, et le décodage spéculatif MTP est activé.

Remarque : MTP (Multi-Token Prediction) permet au modèle d'essayer de prédire plusieurs tokens à la fois. Les parties correctement prédites peuvent être adoptées directement, réduisant les cycles de calcul pour générer des tokens un par un et augmentant la vitesse de sortie.

Étape 4 : Vérifier le service. Une fois démarré, envoyez une simple requête :

bash
1curl -s http://127.0.0.1:30000/v1/chat/completions \
2 -H "Content-Type: application/json" \
3 -d '{"model":"ling-int4",
4 "messages":[{"role":"user","content":"Bonjour, présentez-vous en une phrase."}],
5 "stream":true}'

Le terminal commence à renvoyer du contenu en continu, indiquant que ce modèle 124B fonctionne localement.

Lonely - inline image

03 Test des Performances et Capacités du Modèle

  1. Débit de Tokens Lors du premier démarrage du modèle, j'ai exécuté une série de tests en utilisant le benchmark intégré de vLLM. Les 20 requêtes ont été complétées, avec un débit de sortie de 84,34 tok/s, un débit total de tokens de 133,10 tok/s, et un taux d'acceptation MTP de 67,35 %.
Lonely - inline image

Sortie du journal original 👇🏻

text
1============ Serving Benchmark Result ============
2Successful requests: 20
3Failed requests: 0
4Request rate configured (RPS): 2.00
5Benchmark duration (s): 60.71
6Total input tokens: 2960
7Total generated tokens: 5120
8Request throughput (req/s): 0.33
9Output token throughput (tok/s): 84.34
10Peak output token throughput (tok/s): 61.00
11Peak concurrent requests: 20.00
12Total token throughput (tok/s): 133.10
13---------------Time to First Token----------------
14Mean TTFT (ms): 19692.98
15Median TTFT (ms): 18877.99
16P99 TTFT (ms): 40039.02
17-----Time per Output Token (excl. 1st token)------
18Mean TPOT (ms): 44.61
19Median TPOT (ms): 44.09
20P99 TPOT (ms): 49.68
21---------------Inter-token Latency----------------
22Mean ITL (ms): 74.09
23Median ITL (ms): 72.39
24P99 ITL (ms): 280.71
25---------------Speculative Decoding---------------
26Acceptance rate (%): 67.35
27Acceptance length: 1.67
28Drafts: 3051
29Draft tokens: 3051
30Accepted tokens: 2055
31Per-position acceptance (%):
32 Position 0: 67.35
33==================================================

Ensuite, j'ai effectué des tests de concurrence sur Ling et le Qwen 3.8-27B local. À 8 de concurrence, le débit agrégé de Ling était de 141,38 tok/s, tandis que celui de Qwen 3.8 était de 32,61 tok/s, une différence d'environ 4,34 fois lors de ce test.

🔥🔥🔥Comparaison des Tests de Charge Ling-3.0-Flash Vs Qwen3.8-27B

Lonely - inline image

Ling-3.0-flash

Lonely - inline image

Qwen 3.8 -27B

Lonely - inline image
Lonely - inline image

Certains pourraient se demander : pourquoi la concurrence unique de Ling n'est-elle que de 34,77 tok/s, mais à 8 de concurrence, elle devient 141,38 tok/s ? Les amis techniques pourraient aussi demander si ce score de concurrence unique est lent par rapport aux données officielles.

Ici, nous devons expliquer la méthode de test spécifique et les différences de vitesse causées par différentes méthodes d'évaluation :

  1. Méthode de Test et Vraie Chaîne de Bout en Bout : Ce test utilise une interface locale compatible OpenAI, en effectuant des tests de charge via des requêtes HTTP en streaming, et non un test d'inférence hors ligne détaché du cadre de service. Chaque requête Ling utilise une invite de texte long d'environ 150 tokens, générant jusqu'à 512 tokens. Le chronométrage commence à partir de la requête HTTP du client jusqu'à la fin de la réponse en streaming, incluant donc les appels HTTP locaux, la planification du service, le traitement du Tokenizer, le Prefill, le décodage token par token et le retour en streaming.
  2. Taux de Sortie d'un Flux Unique vs. Débit Agrégé de la Machine : Vitesse d'un flux unique (expérience utilisateur réelle) : À $c=1$, le taux de sortie de bout en bout est d'environ 35,34 tok/s (tests de conversation unique réels à 38+ tok/s), équivalent à plus de 35 caractères chinois par seconde, ce qui est extrêmement rapide visuellement ; Débit agrégé (sortie totale sous concurrence) : À mesure que la concurrence augmente, vLLM utilise le Continuous Batching pour combiner plusieurs requêtes en calculs GPU, exploitant pleinement la bande passante mémoire unifiée de Blackwell. À 8 de concurrence, le débit agrégé de la machine a grimpé à 141,38 tok/s.

Quant à la raison pour laquelle cela diffère de certains benchmarks officiels, la clé réside dans les critères de test. La précision du modèle, le moteur d'inférence, la longueur du contexte, le nombre de tokens d'entrée/sortie, l'échelle de concurrence, et l'utilisation d'inférence hors ligne ou de services HTTP affectent tous le résultat final. Ce n'est que lorsque ces conditions sont fondamentalement cohérentes que les nombres sont adaptés à une comparaison directe.

En termes simples : La vitesse varie en fonction des méthodes d'évaluation — si testé avec une concurrence extrêmement élevée (comme 32/64) ou dans un environnement de calcul pur sans protocoles réseau, les nombres de débit total sembleraient plus élevés ; dans nos appels de production quotidiens de conversation ou de codage en solo, la vitesse d'un flux unique de Ling de 35+ tok/s et une latence du premier token inférieure à 220 ms semblent déjà extrêmement fluides et sans décalage.

En concurrence unique, la vitesse moyenne d'un flux unique de Ling est d'environ 35,34 tok/s ; à 8 de concurrence, le débit agrégé atteint 141,38 tok/s. Le débit agrégé de Qwen3.8 à 8 de concurrence est de 32,61 tok/s. Lors de ce test, l'avantage de Ling se reflète principalement dans la vitesse de sortie et le débit en concurrence, avec des réponses sensiblement plus rapides en utilisation réelle.

2. Capacités Réelles

Les benchmarks ne reflètent qu'une partie des performances ; l'utilisabilité réelle dépend des performances du modèle sur des problèmes spécifiques. J'ai choisi trois directions pour des tests simples.

(1) Raisonnement Logique

J'ai préparé une variante du problème des poules et des lapins, un problème classique de lavage de voiture, et un problème de machine de lavage de voiture, principalement pour voir s'il peut comprendre avec précision les conditions plutôt que d'appliquer une réponse qui semble familière. Parmi eux, le problème des poules et des lapins incluait 4 oiseaux mécaniques à trois pattes pour briser les schémas conventionnels.

Lonely - inline image

(2) Limites de Sécurité : Ensuite, j'ai testé sa réaction aux opérations à haut risque : s'il exécute directement ou identifie les risques, confirme avec l'utilisateur et fournit des alternatives plus sûres.

Lonely - inline image

(3) Texte Long

Enfin, une série de tests de texte long. J'ai caché des informations clés dans un contexte long pour voir s'il pouvait trouver et répondre avec précision, tout en observant la vitesse de sortie et la stabilité sous texte long.

Lonely - inline image

04 De l'API au TUI, puis à l'Appel d'Outils

Nous avons terminé le déploiement du modèle et les tests de capacités, mais pour les utilisateurs ordinaires, curl est plus adapté pour vérifier les interfaces que pour une utilisation quotidienne. Pour parler à un modèle local pendant longtemps, une interface d'interaction plus pratique est nécessaire.

J'ai donc d'abord créé un TUI simple, une interface de chat fonctionnant dans le terminal. Ce n'est pas un logiciel complexe ; j'ai fait écrire un script Python par une IA pour encapsuler les appels d'interface locaux, la sortie en streaming et l'historique des conversations, puis je l'ai démarré avec une commande :

text
1python3 ling-3.0-chat.py

Ainsi, je n'ai pas à écrire curl à chaque fois. Ouvrez le terminal et discutez directement ; les réponses arrivent en streaming, et vous pouvez voir TPS, TTFT et les compteurs de tokens. J'ai effectué les tests de capacités précédents dans cette interface.

Cependant, à ce stade, le TUI n'est qu'un outil de chat textuel sans capacité d'appeler des outils. Le grand modèle est comme un "cerveau" responsable de la réflexion, mais il n'a ni "mains ni pieds" pour lire des fichiers, exécuter des commandes ou connaître l'état actuel du système.

Pour lui permettre d'appeler les capacités du système, nous devons ajouter l'appel d'outils. En termes simples, des opérations comme l'exécution de commandes, la lecture et l'écriture de fichiers sont encapsulées en tant qu'outils. Le modèle juge d'abord de quelles informations il a besoin, puis initie une utilisation d'outil ; le script Python l'exécute et remet le résultat au modèle pour un traitement ultérieur.

Par exemple, initialement, quand je lui ai demandé de vérifier les informations GPU du système, il ne connaissait pas l'utilisation réelle et pouvait seulement me dire comment vérifier. Après avoir ajouté l'appel d'outils, il a pu exécuter lui-même des commandes système et organiser les résultats de la requête directement dans le TUI.

Basé sur le même principe, vous pouvez continuer à connecter la recherche Web, les interfaces internes de l'entreprise, les bases de données, etc. Des outils spécifiques peuvent être étendus en fonction des besoins métier.

Lonely - inline image

05 Connexion à une Interface Visuelle

Pour un usage personnel, un TUI avec appel d'outils est en fait tout à fait suffisant. Pour aller plus loin et placer le modèle dans un poste de travail Agent plus complet, vous pouvez vous connecter à un framework agent comme Harness.

Cette fois, j'ai choisi DeepSeek Harness de Liang Sheng, qui n'ajoute pas seulement une page de chat mais fournit également la gestion du contexte, des espaces de travail, l'appel d'outils, le contrôle des autorisations et la planification des tâches, avec une interface Web intégrée. Il utilise une architecture "tout est un plugin", permettant une expansion fonctionnelle future.

Notez que DeepSeek Harness est encore en phase de prévisualisation pour développeurs et se met à jour rapidement, ce qui peut entraîner des changements incompatibles. Il existe de nombreux autres frameworks Agent open source ; vous pouvez choisir selon vos besoins.

Le processus de connexion n'est pas complexe : le cœur est d'ajouter un service de modèle personnalisé et de pointer l'adresse vers l'interface locale fournie par vLLM. En plus de configurer dans l'interface Web, vous pouvez également modifier le fichier de configuration comme indiqué :

text
1llm-pi-ai:
2 providers:
3 ling:
4 displayName: "Ling-3.0-flash (124B)"
5 api: openai-completions
6 baseURL: http://127.0.0.1:30000/v1
7 apiKeyEnv: OPENAI_API_KEY
8 models:
9 - id: ling-int4
10 name: Ling-3.0-flash (124B MoE)

Après avoir démarré l'interface Web, ouvrez l'adresse par défaut dans votre navigateur :

text
1http://localhost:3080

Ainsi, le chat quotidien, l'historique et le changement de modèle peuvent tous être effectués dans DeepSeek Harness. Harness lui-même fournit des opérations sur les fichiers, l'exécution de commandes et la planification de tâches, qui peuvent être étendues via des plugins. Pour une utilisation spécifique et des plugins tiers, les amis intéressés peuvent effectuer une recherche.

Notez que les outils que j'ai écrits dans le TUI Python ne migreront pas automatiquement. Pour les utiliser dans Harness, ils doivent être réintégrés selon son mécanisme de plugin. Voici l'effet d'intégration réel que j'ai réalisé pour Ling ; vous pouvez regarder l'enregistrement.

Lonely - inline image

06 Construction d'un Flux de Travail IA

À ce stade, le lien du modèle unique, du déploiement à l'interface et à l'appel d'outils pour Ling-3.0-flash, est entièrement établi.

Cependant, dans les projets réels, nous n'utilisons généralement pas un seul modèle. Différents modèles excellent dans différentes choses ; les combiner est souvent mieux que de laisser un seul modèle tout gérer.

L'avantage de Ling-3.0-flash est le traitement du texte et la vitesse de génération, mais il ne prend pas en charge l'entrée multimodale native. Si une tâche nécessite de comprendre des images ou des vidéos, vous pouvez connecter un modèle multimodal comme Qwen3.8-27B ; si vous avez besoin de générer une vidéo, vous pouvez connecter le récemment open-sourcé MiniMax H3. Chaque modèle gère ce qu'il fait de mieux, en passant les résultats au suivant.

Par exemple, pour construire un flux de travail de génération vidéo, Ling peut d'abord comprendre les exigences, écrire des scripts et diviser les storyboards, puis le modèle multimodal vérifie les documents de référence et la cohérence visuelle, et enfin, le modèle vidéo génère. Après la génération, un autre cycle de vérification visuelle peut être effectué pour modifier les invites et régénérer en fonction des résultats :

text
1Exigences et Documents
2→ Ling génère script et storyboards
3→ Le modèle multimodal vérifie les documents et les exigences visuelles
4→ MiniMax H3 génère la vidéo
5→ Le modèle multimodal vérifie les visuels et la continuité
6→ Ling ajuste les invites en fonction des retours
7→ L'humain effectue la révision finale

La vidéo ci-dessous montre l'effet réel des invites générées par Ling-3.0-flash puis transmises à MiniMax H3 pour génération.

Lonely - inline image

Une fois ce processus fixé, vous n'avez besoin que de changer les exigences et les documents pour une utilisation répétée. Cependant, exécuter plusieurs grands modèles localement simultanément a des exigences très élevées en VRAM et en mémoire. Ling INT4 fait environ 72 Go, Qwen3.8-27B BF16 fait environ 51,77 Go, plus le Cache KV et les modèles vidéo ; il est difficile de tous les garder résidents sur ce Spark.

Avant le déploiement réel, assurez-vous de calculer la quantité de VRAM ou de mémoire unifiée dont chaque modèle a besoin. Lorsque les ressources sont insuffisantes, vous pouvez changer de modèle étape par étape, choisir des versions quantifiées ou répartir les modèles sur plusieurs appareils. Plusieurs modèles ne fonctionnent plus indépendamment mais collaborent autour de la même tâche — c'est un véritable flux de travail IA multi-modèles utilisable.

07 Réflexions Finales

Du déploiement du modèle, du TUI et de l'appel d'outils aux flux de travail multi-modèles, l'ensemble du lien est complet. Cet article vise à partager une méthode reproductible plutôt qu'une configuration fixe.

Les modèles open source continueront de se mettre à jour. À l'avenir, que vous changiez de modèles, de versions de quantification ou de moteurs d'inférence, le chemin du téléchargement des poids et du démarrage des services à la connexion des outils et des flux de travail ne changera pas beaucoup.

Si les conditions le permettent, je recommande toujours à tout le monde de déployer des modèles locaux personnellement :

  1. Contrôle des Données : Les fichiers, les conversations et les données métier restent sur votre machine ou votre intranet, avec les autorisations de répertoire et de commande restreintes par vous.
  2. Adapté à une Utilisation Haute Fréquence : Pas besoin de calculer les coûts de tokens par utilisation, réduisant la dépendance au réseau et aux services tiers.
  3. Personnalisation Facile : Les modèles, la précision de quantification, les moteurs d'inférence et les outils peuvent tous être ajustés, et les interfaces internes et les bases de données peuvent être connectées.

Alors que les modèles open source deviennent plus puissants, le déploiement local deviendra le choix de plus de personnes. Vous pouvez construire des outils et des flux de travail en fonction de vos besoins de tâche, des conditions de votre équipement et de votre budget. J'espère que tout le monde pourra avoir son propre Agent local à l'avenir, sans avoir à surveiller la consommation de tokens à chaque fois, atteignant véritablement sa propre "Liberté des Tokens" !

Ressources Connexes

📚 Résumé des Articles Précédents

  1. Guide Pratique Hermes Agent : De l'Anxiété X à l'Accumulation Automatique
  2. Guide Anti-Chute de Cheveux du Programmeur
  3. Connexion d'Hermes à iMessage
  4. Connexion d'Hermes à X Premium
  5. Guide Complet Hermes Agent
  6. Guide d'Introduction Hermes Agent : Modèles Auxiliaires
  7. Guide d'Introduction Hermes Agent
  8. Guide Avancé Hermes Agent
  9. Guide Incomplet Hermes Agent
  10. Guide Complet de l'Abonnement Claude Pro au Nigeria
  11. Tutoriel pour l'Enregistrement d'un Apple ID au Nigeria
  12. Abonnement ChatGPT Plus à Moitié Prix en Turquie
  13. Enregistrement d'un Apple ID Américain
  14. Abonnement Claude/ChatGPT/Gemini via Alipay
  15. Tutoriel Complet pour le Déploiement Local de LLM sur Mac
  16. Vérification de la Qualité IP
  17. Pourquoi Doubao Ne Recommande Pas Votre Marque
  18. Comment Expliquer à Votre Grand-Mère Que Ce Que Doubao a Dit N'est Pas Vrai

Si cela a été utile, veuillez suivre + mettre en favori + partager 👏🏻

Suivez @Lonely__MH pour des mises à jour continues sur des tutoriels adaptés aux débutants et des informations sur les outils IA.

Remixer dans YouMind

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind
Pour les créateurs

Transformez votre Markdown en un article 𝕏 impeccable

Quand vous publiez vos propres textes longs, la mise en forme 𝕏 des images, tableaux et blocs de code est pénible. YouMind transforme un brouillon Markdown complet en un article 𝕏 impeccable, prêt à publier.

Essayer Markdown vers 𝕏

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux