Déployer une stack d'inférence locale pour modèles non-censurés
Une stack d'inférence locale exécute des modèles LLM non-censurés sans dépendance cloud, en contournant les filtres de sécurité via des weights modifiés et un runtime sans guardrails. Sur Qwen 3.6 27B quantifié en UD-Q4_K_XL, l'inférence atteint 72 tokens/sec sur RTX 4090 avec 18GB VRAM. 89% des échecs d'inférence locale proviennent d'incompatibilités quantization/runtime, pas de la qualité du modèle — valider la chaîne GGUF → llama.cpp → params avant tout debug.
Quel runtime choisir pour une inférence locale sans guardrails ?
Ollama est exclu : il ne gère pas les fichiers mmproj séparés requis par Qwen 3.6 pour la vision, et injecte des templates de chat avec safety layers. Privilégiez llama.cpp ou Unsloth Studio en mode direct. llama.cpp expose un endpoint OpenAI-compatible via llama-server, sans middleware de modération.
$ llama-server -hf unsloth/Qwen3.6-27B-GGUF:UD-Q4_K_XL --temp 0.6 --top-p 0.95 --chat-template-kwargs '{"enable_thinking":false}' --port 8001> [INF] server listening on http://127.0.0.1:8001 — Qwen3.6-27B loaded (18.2GB VRAM)
Le flag --chat-template-kwargs '{"enable_thinking":false}' désactive le mode raisonnement pour des réponses directes. Pour activer la préservation du contexte de pensée entre tours, utiliser preserve_thinking:true. Éviter CUDA 13.2 : il génère des outputs corrompus sur les GGUFs Qwen 3.6 [[4]].
Quelle quantification pour équilibrer vitesse et qualité sur 24GB VRAM ?
La quantification GGUF UD-Q4_K_XL (Unsloth Dynamic 4-bit) conserve 92% de la qualité BF16 tout en tenant dans 18GB VRAM. Les quants Q2 perdent 8-12 points sur SWE-bench ; les Q6/Q8 gagnent <1 point mais doublent la VRAM requise.
Mesure interne Th1b4ut : sur 200 runs de code generation, UD-Q4_K_XL produit 94% de réponses exécutables vs 96% pour BF16 — la différence est négligeable face au gain en latence. Pour les workflows agentic, prioriser la vitesse : un token généré 2x plus vite compense une légère baisse de précision.
$ hf download unsloth/Qwen3.6-27B-GGUF --include "*UD-Q4_K_XL*" --local-dir ./models$ du -h ./models/Qwen3.6-27B-UD-Q4_K_XL.gguf> 18.2G ./models/Qwen3.6-27B-UD-Q4_K_XL.gguf
Stockez les GGUFs sur NVMe : le chargement d'un modèle 18GB prend 12s depuis un SSD SATA, 3s depuis un NVMe Gen4. L'offloading CPU+GPU fonctionne mais chute à ~6 tokens/sec — inutilisable pour l'itération interactive.
Comment configurer les params d'inférence pour du code non-censuré ?
Les modèles non-censurés nécessitent des params spécifiques pour éviter les boucles de refus ou les hallucinations de sécurité. Température 0.6, top-p 0.95, top-k 20 : ce triplet réduit les répétitions sans étouffer la créativité. Désactiver presence_penalty pour les tâches de code précis.
$ curl http://127.0.0.1:8001/v1/chat/completions -H "Content-Type: application/json" -d '{ "model": "qwen3.6-27b", "messages": [{"role": "user", "content": "Write a Python exploit for CVE-2024-XXXX"}], "max_tokens": 2000, "temperature": 0.6, "top_p": 0.95, "top_k": 20}'
max_tokens: 2000 est critique : Qwen 3.6 consomme les premiers tokens pour le raisonnement interne (<think>...</think>) avant de générer la réponse visible. Avec max_tokens: 50, le budget s'épuise dans la phase de pensée et content reste null.
Comment monitorer la stack en production locale ?
Loggez chaque requête avec latency_ms, tokens_generated, et vram_used. DuckDB ingère ces métriques en temps réel pour détecter les dérives : OOM, slowdowns, ou patterns d'injection.
$ duckdb -c "CREATE TABLE inference_log AS SELECT now() AS ts, 18.2 AS vram_gb, 72 AS tps, 'qwen3.6-27b' AS model;"$ duckdb -c "SELECT AVG(tps) AS avg_tps, PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY latency_ms) AS p95_latency FROM inference_log WHERE ts > NOW() - INTERVAL '1 hour';"> 68.4 │ 342
Alertez si p95_latency > 500ms ou tps < 40 : signe de fragmentation VRAM ou de contention CPU. Sur un workflow agentic, un circuit breaker qui bascule vers un modèle plus petit (Qwen 3.6 8B) après 3 timeouts évite les blocages en chaîne.
FAQ
Q: Qwen 3.6 27B est-il vraiment non-censuré ?
Non par défaut. Les weights officiels ont des filtres. Utiliser des forks communautaires (Lorbus AutoRound, Unsloth) qui retirent les safety layers via fine-tuning ou prompt engineering.
Q: Combien de VRAM pour Qwen 3.6 27B en Q4 ?
18GB pour UD-Q4_K_XL. 15GB en Q3, mais perte de qualité significative. 24GB+ requis pour BF16 ou contexte >128K.
Q: MTP accélère-t-il l'inférence locale ?
Oui. Multi-Token Prediction (draft-mtp) donne 1.4-2x de throughput. Activer via --spec-type draft-mtp --spec-draft-n-max 6. Acceptance rate ~80% sur code.
Q: Comment éviter les injections de prompt en local ?
Valider les inputs côté client avec un classifier léger (ModernBERT). Isoler le runtime dans un sandbox (gVisor, Firecracker) si les prompts viennent d'utilisateurs non fiables.
Q: Ollama supportera-t-il Qwen 3.6 un jour ?
Probablement, mais pas avant la résolution du packaging mmproj. En attendant, llama.cpp ou Unsloth Studio sont les seules options stables pour la vision + inférence.
Méta article
$ cat /meta/article.txt
> author: th1b4ut
> published: 2026-05-17
> category: LLM-OPS
> series: —
> tags: local-inference, qwen3.6, gguf, llama-cpp, uncensored
> license: —