Points clés
- L'architecture se compose de trois éléments: serveur GPU exécutant Ollama (ou vLLM) → exécuteur CI pouvant l'atteindre via le réseau → action personnalisée qui POSTE la différence RP et analyse un verdict structuré. Même forme sur GitHub Actions, GitLab CI, Buildkite et Jenkins.
- Stack par défaut en mai 2026: Ollama + Qwen3-Coder 30B (Apache 2.0) + une action GitHub personnalisée légère. Infrastructure totale : une boîte GPU, un exécuteur.
- Dimensionnement du matériel : RTX 4090 (24 GB, env. 2 299 €) gère 15–25 développeurs ; L40S ou A6000 Ada (48 GB, env. 8 999–9 999 €) s'étend à 50 ; H100 (80 GB, env. 27 000+ €) ou multi-GPU pour 100+.
- L'économie bascule en faveur du self-host à environ 15–25 sièges GitHub Advanced Security payants (19 $/dev/mois) — une génération RTX 4090 paie pour elle-même en 5–10 mois à cette taille d'équipe.
- L'avantage de sécurité est réel, pas seulement du marketing. Le code source ne quitte jamais votre réseau ; la sortie sortante peut être prouvée nulle avec
tcpdump; la surface d'audit entière est un processus Ollama et un fichier journal. - Les faux positifs sont la taxe opérationnelle. Planifiez une boucle de réglage le premier mois : itération de prompt, seuils de sévérité et un chemin d'ingestion de rétroaction du critique afin que le prompt s'améliore au fil du temps.
- La latence est acceptable. Un GPU 24 GB exécutant Qwen3-Coder 30B examine une différence RP typique de 200 lignes en moins de 30 secondes. Le temps d'attente de l'auteur RP est dominé par d'autres travaux CI, pas par l'examen.
- Ne remplacez pas complètement la révision humaine. Le LLM local est une porte de triage — il détecte les problèmes évidents, signale les changements risqués et libère les humains des appels de jugement que les LLM se trompent encore.
Faits Rapides
- Modèle recommandé: Qwen3-Coder 30B à Q4_K_M (~17 GB VRAM, Apache 2.0).
- Exécution recommandée: Ollama pour la simplicité de configuration ; vLLM si vous avez besoin d'une concurrence plus élevée sur le même GPU.
- GPU minimum pour les équipes sérieuses: RTX 4090 (24 GB). Les cartes plus petites forcent le modèle 7B et une qualité de révision notablement pire.
- Concurrence sur un seul GPU 24 GB: confortablement 1–3 révisions simultanées sur Qwen3-Coder 30B ; queue au-delà.
- Cible de latence: moins de 30 secondes pour une différence de 200 lignes. Au-delà, le comportement de l'auteur RP change et les révisions sont contournées.
- Posture d'audit: zéro sortie sortante sur le serveur GPU est prouvable ; la surface entière est
ollama serve+ un seul fichier journal. - Parité avec GitHub Advanced Security (19 $/dev/mois): 15–25 sièges payants couvrent une génération RTX 4090 en 5–10 mois.
- Parité GitLab CI: architecture identique, remplacez l'action GitHub par un travail CI appelant le même point de terminaison HTTP.
Comparaison d'Architecture : Trois Véritables Options pour la Révision de Code en CI
Trois architectures couvrent effectivement tous les configurations de révision RP en mai 2026. Self-Hosted Local LLM en est une — le bon choix quand le code source ne peut pas quitter votre réseau ou quand l'économie des sièges favorise l'infrastructure fixe.
📍 En une phrase
La révision de code LLM local auto-hébergée se rentabilise plus rapidement que GitHub Advanced Security à 15–25 sièges payants et garde le code source à l'intérieur de votre réseau — la bonne architecture pour les équipes avec contrainte de confidentialité ou de nombre de sièges.
💬 En termes simples
Trois options existent pour la révision de code IA en CI. GitHub Advanced Security est la plus facile à activer et la plus chère à l'échelle. Une API LLM cloud (OpenAI, Anthropic) est bon marché pour commencer et envoie chaque diff à un tiers. Self-Hosted Local LLM a le coût de configuration le plus élevé et est la seule option qui garde votre base de code à l'intérieur de votre périmètre — et à environ 15–25 sièges payants, elle devient la moins chère des trois sur un an.
| Architecture | Complexité de Configuration | Coût (10 Développeurs) | Coût (50 Développeurs) | Latence RP | Meilleur pour |
|---|---|---|---|---|---|
| GitHub Advanced Security | Bas (une bascule) | $190/Mo | $950/Mo | Sub-minute (géré) | Teams <15 sièges payants sans contrainte de confidentialité |
| API LLM Cloud (OpenAI / Anthropic) | Bas–Moyen (clé API + action) | ~$50–200/Mo (utilisation) | ~$300–1 200/Mo (utilisation) | Secondes | Équipes à l'aise d'envoyer le code source à une API tierce |
| LLM Local sur GPU dédié | Moyen–Élevé (serveur GPU + exécuteur + action) | env. 2 299 € matériel (une seule fois) | env. 8 999+ € matériel (une seule fois) | 10–30 secondes (GPU unique) | Équipes sensibles à la confidentialité, 15+ sièges payants, contextes de conformité EU |
| LLM Local sur infra partagée (GPU existante) | Moyen (juste exécuteur + action) | €0 marginal (capacité existante) | €0 marginal (capacité existante) | Variable (dépend de la contention) | Équipes exécutant déjà une infra GPU pour ML ou analytics |
La Stack Recommandée : Ollama + Qwen3-Coder + une Action GitHub Légère
La stack production la plus simple se compose de trois composants. Chacun est open source, gratuit et bien documenté ; la surface d'intégration entre eux est HTTP.
- Serveur GPU exécutant Ollama (ou vLLM pour une concurrence plus élevée). Ollama expose une API HTTP compatible OpenAI sur
localhost:11434par défaut ; liez-la à une interface réseau privée ou à un proxy inverse avec auth avant d'exposer aux exécuteurs. - Modèle optimisé pour le codage: Qwen3-Coder 30B à Q4_K_M est la norme de mai 2026 — plus forte direction open-weight coding, contexte 256K, licence Apache 2.0, s'adapte à une GPU 24 GB. Pour les GPU 8–16 GB, utilisez Qwen3-Coder 7B en comprenant que la qualité de révision baisse notablement.
- Intégration CI: un exécuteur GitHub Actions auto-hébergé sur le même réseau que le serveur GPU, ou vos exécuteurs GitHub-hébergés existants atteignant le serveur GPU via un réseau privé (Tailscale, WireGuard ou appairage VPC).
- Action GitHub personnalisée (JavaScript ou composite) qui récupère la différence RP via l'API GitHub, la POSTE au point de terminaison Ollama avec un prompt de révision, analyse la réponse structurée et poste les commentaires en ligne de la RP.
- Optionnel: un petit cache Redis ou SQLite codé par hash fichier + hash diff pour éviter les re-révisions de fichiers inchangés dans les exécutions CI suivantes.
- Parité GitLab: la même architecture, avec un travail GitLab CI remplaçant l'action GitHub. L'appel LLM est identique.
💡Tip: Liez ollama serve à une interface réseau privée (ou 127.0.0.1 si l'exécuteur est sur le même hôte) et mettez auth devant avant toute exposition cross-host. Le OLLAMA_HOST=0.0.0.0:11434 par défaut sans auth est acceptable pour une expérience single-machine, mais une défaillance de sécurité dans tout autre contexte.
Un Flux de Travail GitHub Actions Fonctionnant
Le flux de travail minimum viable est d'environ 50 lignes YAML. Ce modèle s'exécute sur l'ouverture et la synchronisation RP, récupère la différence, appelle Ollama et poste un commentaire en arrière. Les déploiements production ajoutent la mise en cache, les seuils de sévérité et l'option de bloquer la RP sur un verdict "block".
- L'exécuteur doit pouvoir atteindre
OLLAMA_HOSTvia le réseau — auto-hébergé sur le même VPC, ou via Tailscale / WireGuard si le serveur GPU est ailleurs. - Le prompt système impose une réponse JSON structurée pour que l'action puisse se brancher sur le verdict proprement. Sans
format: "json"et un schéma strict dans le prompt, vous passerez du temps opérationnel à analyser la sortie free-form. - Le checkout
fetch-depth: 0est nécessaire pour calculer une vraie diff contre la branche de base — les checkouts superficiels produisent des diffs malformées. - Pour les dépôts au-dessus d'environ 50K lignes de code modifié par RP, tronquez ou fragmentez la diff avant d'envoyer. Le contexte 256K sur Qwen3-Coder 30B est généreux, mais le contexte de travail pratique est plus proche de 64K–128K (voir Best Local Coding Models in 2026).
- Pour la profondeur du design de prompt — prompts système vs utilisateur, exemples, résultats structurés — voir System Prompt vs User Prompt: What's the Difference.
# .github/workflows/local-llm-review.yml
name: Local LLM Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: self-hosted # ou n'importe quel exécuteur pouvant atteindre OLLAMA_HOST
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate diff
id: diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > /tmp/pr.diff
echo "size=$(wc -c < /tmp/pr.diff)" >> "$GITHUB_OUTPUT"
- name: Call local LLM for review
id: review
env:
OLLAMA_HOST: ${{ secrets.OLLAMA_HOST }} # ex. http://gpu-server.internal:11434
run: |
DIFF=$(jq -Rs . < /tmp/pr.diff)
curl -sS "$OLLAMA_HOST/api/chat" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"qwen3-coder:30b\",
\"stream\": false,
\"format\": \"json\",
\"messages\": [
{\"role\": \"system\", \"content\": \"You are a senior code reviewer. Return JSON: {verdict: 'approve'|'comment'|'block', summary: string, comments: [{path, line, severity, message}]}\"},
{\"role\": \"user\", \"content\": $DIFF}
]
}" > /tmp/review.json
echo "verdict=$(jq -r '.message.content | fromjson | .verdict' < /tmp/review.json)" >> "$GITHUB_OUTPUT"
- name: Post review comment
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = JSON.parse(JSON.parse(fs.readFileSync('/tmp/review.json')).message.content);
const body = `### Local LLM Review: \`${review.verdict}\`\n\n${review.summary}`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body
});
- name: Block on critical verdict
if: steps.review.outputs.verdict == 'block'
run: exit 1
📌Note: Ce flux de travail est intentionnellement minimal. Les déploiements production ajoutent : un cache codé par hash fichier + diff pour sauter les re-révisions de fichiers inchangés, les seuils de sévérité (bloc seulement sur severity >= "high"), la publication de commentaires en ligne (au lieu d'un seul commentaire de synthèse), les variantes de prompt par langue et l'ingestion de rétroaction du critique pour améliorer le prompt au fil du temps.
Dimensionnement du Matériel par Taille d'Équipe
Une RTX 4090 (24 GB) gère confortablement une équipe de 15–25 développeurs. Le goulot d'étranglement sur une seule GPU n'est pas le débit par révision — c'est la concurrence aux moments de chasse aux RP (lundi matin, fin de sprint). Les règles de dimensionnement ci-dessous supposent Qwen3-Coder 30B à Q4_K_M et une différence RP typique de 50–500 lignes.
| Taille d'Équipe | GPU | VRAM | Révisions Simultanées | Prix Approximatif (Mai 2026) |
|---|---|---|---|---|
| ~5 Développeurs | RTX 4070 / 4070 Ti | 12–16 GB | 1 (seulement Qwen3-Coder 7B) | env. 899–1 099 € |
| 15–25 Développeurs | RTX 4090 / 5090 | 24–32 GB | 1–3 (Qwen3-Coder 30B) | env. 2 299–2 799 € |
| 25–50 Développeurs | L40S / A6000 Ada | 48 GB | 3–6 | env. 8 999–9 999 € |
| 50–100 Développeurs | 2× RTX 4090 ou 1× H100 | 48 GB / 80 GB | 6–10 | env. 5 000 € (2× 4090) ou 27 000+ € (H100) |
| 100+ Développeurs | Multi-GPU H100 ou H200 | 160 GB+ | 10+ avec vLLM | env. 50 000+ € |
💡Tip: Pour les équipes franchissant le seuil de 50 développeurs, passez de Ollama à vLLM. Ollama privilégie la facilité d'utilisation ; vLLM privilégie le débit sur les GPU partagées. Le même modèle Qwen3-Coder 30B s'exécute sur les deux — seul le serveur d'inférence change.
Partage GPU Across Builds et Autres Charges
Une GPU dédiée pour la révision de code est l'architecture la plus simple mais pas la seule. Les équipes exécutant déjà une infra GPU pour l'inférence ML ou l'entraînement peuvent partager — avec le compromis que la contention fait monter en flèche la latence de révision.
- GPU dédiée pour la révision seulement: modèle le plus simple. La latence est prévisible ; la planification de capacité est simple ; les modes de défaillance sont isolés. La recommandation pour toute équipe n'exécutant pas déjà une infra GPU.
- GPU partagée avec inférence ML: faisable si la charge inférence a une enveloppe stable (par ex., un petit service d'intégration s'adaptant à 4–6 GB). Le modèle de révision occupe le reste du VRAM. Les collisions de planification sont rares sur ce motif.
- GPU partagée avec entraînement ML: fortement déconseillé. Les travaux d'entraînement font sauter l'utilisation du VRAM au limite et affament le modèle de révision, causant des latences de révision de 30–120 secondes qui érodent la confiance des développeurs dans le système.
- vLLM avec attention paginée: purpose-built pour le service LLM haute-concurrence. La même RTX 4090 qui gère 1–3 révisions simultanées sous Ollama peut gérer 4–8 sous vLLM, au prix d'une configuration plus complexe. Ça vaut le coup au-delà de 25 développeurs.
- Multi-tenant sur H100: à l'échelle 100+ développeurs, partitionnez un H100 en tranches MIG ou exécutez vLLM avec des quotas par tenant. C'est du territoire plateforme-engineering ; n'improvisez pas.
Comparaison des Coûts avec GitHub Advanced Security
L'économie bascule en faveur du self-host à environ 15–25 sièges payants. C'est une comparaison à payback d'un an ; les horizons plus longs rendent l'auto-hébergement plus favorable.
- GitHub Advanced Security (Code Security): 19 $/développeur/mois au prix catalogue (vérifiez sur la page de tarification GitHub ; les remises de volume sont disponibles pour les clients enterprise).
- API LLM Cloud (ex. OpenAI, Anthropic): environ 50–200 $/mois par développeur actif au volume RP typique ; varie énormément selon la taille de la base de code et la conception du prompt de révision.
- Self-Hosted Local LLM, build RTX 4090: environ 2 299 € de matériel une seule fois (GPU + un boîtier serveur de base). Consommation électrique : ~50W au repos, ~350W sous charge — disons env. 18–28€/mois en électricité à l'utilisation typique. Pas de frais par siège.
- Parité à 10 développeurs: GHAS 190 $/mois vs self-hosted env. 25€/mois exploité + env. 2 299 € capex. Capex se rentabilise en ~14 mois.
- Parité à 25 développeurs: GHAS 475 $/mois vs self-hosted env. 25€/mois exploité + env. 2 299 € capex. Capex se rentabilise en ~5–6 mois.
- Parité à 50 développeurs: GHAS 950 $/mois vs self-hosted env. 40€/mois exploité + env. 7 500 € capex (GPU 48 GB). Capex se rentabilise en ~8 mois.
- Le chiffre capex domine les mathématiques. Si vous achetez une GPU spécifiquement pour cela, la rentabilité est réelle. Si vous avez une capacité GPU existante, le coût marginal est plus proche de zéro et l'auto-hébergement gagne immédiatement.
📌Note: Ces chiffres sont des comparaisons de prix catalogue. Les tarifs GHAS négociés pour les grandes entreprises décalent la parité ; la capacité GPU existante l'effondre. Refaites les mathématiques avec vos coûts réels avant de vous engager sur un achat de matériel.
Modèle de Sécurité et Posture d'Audit
L'affirmation de sécurité titre — "le code source ne quitte jamais votre réseau" — est vraie, prouvable, et le plus fort argument pour cette architecture. La surface d'audit est assez petite pour être défendue dans un examen de procurement.
- Le modèle ne voit que la diff que votre action envoie. Pas de télémétrie, pas d'appels réseau cachés. Confirmable avec
tcpdumpounft monitorsur l'interface sortante du serveur GPU — sous opération état-stable, vous devriez voir zéro paquets sortants vers les hôtes non-internes. - La surface d'audit complète est un processus et un fichier journal.
ollama serveest l'intégralité de la pile LLM. Ses logs (corps de requête, latence, événements de chargement de modèle) sont l'enregistrement d'audit. Pas de tableau de bord SaaS à interroger, pas de politique de conservation tiers à lire. - L'isolement du réseau est simple. Liez
ollama serveà une interface privée ; mettez un proxy inverse avec auth mTLS ou shared-secret devant ; refusez sortant sur le namespace réseau du serveur GPU sauf vers votre sous-réseau exécuteur CI. Motif zero-trust standard, pas de magie LLM-spécifique. - Les poids du modèle sont des artefacts statiques signés par le vendeur. Tirez-les une seule fois via Ollama, épinglez le digest et le modèle ne peut pas changer sans action opérateur. C'est une histoire de chaîne d'approvisionnement plus forte qu'une API SaaS où le modèle amont peut être silencieusement échangé.
- Posture de conformité: zéro sortie de données est simple à documenter pour SOC 2, ISO 27001, GDPR et la classification EU AI Act limited-risk. La partie la plus difficile de la conformité auto-hébergée est généralement de documenter le serveur d'inférence lui-même ; Ollama et vLLM sont tous deux bien documentés.
- Le modèle voit toujours votre code. L'auto-hébergé ne signifie pas privé du modèle — cela signifie privé des tiers. Les scénarios d'insider-threat (ingénieur avec accès serveur GPU lit les logs contenant les diffs RP passées) sont toujours dans le scope ; rotez les logs et limitez l'accès en conséquence.
Conception de Prompt pour la Révision de Code
Le déterminant unique le plus grand du taux de faux positifs est le prompt système. Un prompt vague "examinez ce code" produit des commentaires de révision vagues ; un prompt spécifique avec seuils de sévérité et résultats structurés produit des retours actionnables.
- La sortie structurée est non-négociable. Imposez JSON avec un schéma strict (
verdict,summary,comments[]). Sans cela, l'action passe 30% de son code à analyser la sortie free-form et les modes de défaillance sont subtils. - Pour le guide complet sur l'application de la sortie structurée sur les modèles, voir structured output and JSON mode.
- Les seuils de sévérité appartiennent au prompt, pas à l'action. Dites au modèle ce qui compte comme
critique,haut,moyen,bas; dites-lui de filtrer les résultats bas-sévérité sauf explicitement demandés. C'est beaucoup plus fiable que le filtrage post-hoc sur un champ sévérité free-form. - Ancrez le prompt avec des exemples. Un prompt 1–2-shot avec une diff réelle et une JSON de révision idéale surpasse massif zero-shot pour le même modèle et la même taille de diff.
- Distinguez l'intention "révision" de "commentaire". Un commentaire critique ("envisagez d'extraire ceci vers un helper") et un blocker ("ceci introduit une injection SQL") ont besoin d'actions différentes en CI. Tagguez-les dans la sortie structurée et faites bloquer l'action seulement sur les bloqueurs.
- Les variantes de prompt par langue aident au-delà d'une certaine taille. Une base de code polyglotte bénéficie d'un prompt qui référence les idiomes de langue pertinents (Pythonic vs Rust idiomatique). C'est optionnel au-dessous d'environ 25 développeurs ; précieux au-dessus.
- Pour l'ancrage de l'ingénierie de prompt plus profond — prompts système vs utilisateur, résultats structurés, few-shot prompting — voir System Prompt vs User Prompt: What's the Difference.
Gestion des Faux Positifs Sans Éroder la Confiance des Développeurs
Les faux positifs sont la taxe opérationnelle sur la révision de code LLM. Un taux de 5% est acceptable ; 20% est intolérable ; la différence est principalement itération de prompt et une boucle de rétroaction, pas le modèle.
- Fixez un seuil "block" haut. Un verdict
blockqui s'active sur chaque problème lint mineur entraîne les développeurs à contourner la vérification. Réservezblockaux problèmes de sécurité, aux tests cassés et aux défaillances de correctness clairs. - Rendez les commentaires non-bloquants bon marché. Les commentaires en ligne où le modèle est incertain devraient être tagués ("tentative" / "envisager") pour que les auteurs puissent les rejeter rapidement sans cérémonie.
- Construisez une boucle de rétroaction au mois un. Ajoutez une réaction (👍 / 👎) à chaque commentaire de révision. Périodiquement (hebdomadairement fonctionne) examinez les 👎s et mettez à jour le prompt système avec des instructions explicites "ne pas signaler X" pour les catégories les plus courantes de faux positifs.
- Taux-limites le volume de commentaires par RP. Une seule RP ne devrait pas recevoir plus de 5–10 commentaires du LLM ; au-delà, le rapport signal-bruit s'effondre. Limitez l'action au niveau du prompt ("retour au maximum N commentaires").
- Suivez la corrélation verdict-to-merge hebdomadairement. Si 80% des verdicts
blockfusionnent de toute façon, votre seuil est trop agressif. Si 0% des verdictscommentobtiennent toute action humaine, votre prompt produit du bruit.
Pièges Opérationnels au Deuxième Mois
Le setup obtient l'attention ; les opérations sont ignorées. Les défaillances ci-dessous sont celles qui font que les équipes abandonnent le projet après la période lune de miel.
- Les mises à jour de modèle cassent les prompts. Une nouvelle version Qwen3-Coder change subtilement le formatage de sortie ; l'analyse JSON structurée échoue en CI ; les révisions cessent de poster. Épinglez le digest du modèle avec
ollama show <model> --modelfile; mettez à niveau dans une branche staging avant de promouvoir. - Fragmentation mémoire GPU sous longue uptime. Un serveur GPU exécutant 24/7 peut fragmenter le VRAM et refuser les allocations nouvelles après des semaines d'opération. Redémarrez
ollama servehebdomadairement via un travail cron ; c'est bon marché et évite complètement le mode de défaillance. - Contention exécuteur CI. Un exécuteur auto-hébergé hébergeant à la fois le serveur LLM et d'autres travaux CI verra la latence de révision monter en flèche sous charge de build. Séparez l'exécuteur et le serveur GPU quand la taille d'équipe dépasse ~25 développeurs.
- Croissance taille diff. Les tailles RP dérivent vers le haut ; finalement une RP dépasse le contexte de travail pratique du modèle et les révisions dégradent silencieusement. Ajoutez un garde dans l'action qui divise ou tronque les diffs au-dessus d'env. 30K tokens et avertit l'auteur.
- Puissance et refroidissement. Une RTX 4090 continuellement chargée tire env. 350W sous inférence et produit une quantité signifiante de chaleur. Une salle serveur de taille placard sans refroidissement actif affamera la GPU ; l'affamement coûte la latence et les développeurs remarquent.
- Rotation de log oubliée. Ollama enregistre chaque corps de requête par défaut. Après trois mois de révisions RP, le fichier journal est grand et contient les diffs RP historiques en texte clair. Rotez les logs hebdomadairement ; archivez ou purgez par votre politique de conservation de données.
Erreurs Courantes lors de la Configuration de la Révision de Code LLM Local
- Erreur 1 : commencer avec un modèle 7B sur une GPU 16 GB. Les révisions Qwen3-Coder 7B sont notablement pires que les révisions 30B ; les développeurs perdent rapidement confiance et le projet est étagéré. Si vous ne pouvez pas adapter le 30B, mettez à niveau la GPU ou utilisez une API cloud pour les six premiers mois pendant que vous sécurisez le budget.
- **Erreur 2 : bloquer les RP sur les verdicts
blockdès le jour un.** Le premier mois est calibrage ; traitez toute sortie comme conseiller jusqu'à ce que vous ayez mesuré le taux de faux positifs. Promouvez le blocage seulement après que le taux soit au-dessous d'env. 5%. - **Erreur 3 : exposez
ollama servesur0.0.0.0:11434sans auth.** C'est l'équivalent ère-LLM de laisser Redis liée à une interface publique. Liez-la à une interface privée et mettez auth devant avant toute exposition cross-host. - Erreur 4 : ignorez le cache. Re-révisez les fichiers inchangés à chaque exécution CI gaspille env. 80% du budget d'inférence sur une RP typique. Un petit cache hash fichier + hash diff (Redis ou SQLite) réduit la latence de révision et la charge GPU dramatiquement.
- Erreur 5 : exécutez les travaux entraînement sur la même GPU. L'entraînement fait monter en flèche l'utilisation du VRAM à la limite et affame le modèle de révision. Utilisez des GPU séparées ou, si vous devez partager, exécutez l'entraînement sur un planning strict qui ne chevauche pas les heures RP de pointe.
- Erreur 6 : construisez l'action GitHub sans boucle de rétroaction. Un système de révision sans réactions 👍/👎 ne peut pas s'améliorer. Construisez la boucle la semaine un ; collectez des données ; itérez sur le prompt mensuellement.
Sources
- Documentation Ollama — Référence officielle API HTTP pour
/api/chat,/api/generate, sortie structurée et gestion des modèles. - Documentation vLLM — Documentation serveur inférence haute-débit ; le chemin de mise à niveau au-delà d'Ollama pour les équipes haute-concurrence.
- Documentation GitHub Actions — Référence officielle pour les exécuteurs auto-hébergés, les secrets et le SDK JavaScript Actions utilisé dans le flux de travail ci-dessus.
- Tarification GitHub Advanced Security — Référence prix catalogue pour la comparaison des coûts ; vérifiez par rapport à vos termes réellement négociés.
- Fiche Technique Qwen3-Coder — Architecture, fenêtre de contexte et conditions de licence pour le modèle de révision recommandé.
- Référence GitLab CI/CD — Référence équivalente pour les équipes GitLab ; la portion LLM-call du flux de travail est identique.
FAQ
Un serveur GPU unique peut-il gérer CI pour 50 développeurs ?
Une GPU unique 24 GB (RTX 4090) gère confortablement 15–25 développeurs ; 50 développeurs ont besoin d'une carte 48 GB (L40S, A6000 Ada) ou un changement de Ollama à vLLM sur le même matériel. Le goulot d'étranglement est la concurrence aux moments chasse-RP — lundi matin, fin de sprint — pas le débit état-stable. Pour 100+ développeurs, planifiez pour multi-GPU ou du matériel classe H100.
La révision de code local affecte-t-elle la latence RP ?
Typiquement non — la latence de révision est 10–30 secondes sur une GPU unique 24 GB pour une diff typique de 200 lignes, et le temps d'attente auteur RP est dominé par d'autres travaux CI (build, test, lint) qui prennent bien plus longtemps. L'exception est les très grandes RP (au-dessus d'env. 30K tokens diff) où la révision peut prendre 60–90 secondes ; tronquez ou divisez celles-ci au niveau action.
Comment puis-je auditer ce que le modèle voit ?
Ollama enregistre chaque corps de requête par défaut dans son fichier journal (l'emplacement varie par OS ; vérifiez journalctl -u ollama sur systemd ou le répertoire log Ollama). Chaque diff RP qui va en révision est dans ce journal. Combiné avec tcpdump sur l'interface sortante du serveur GPU pour prouver zéro sortie de données. La surface d'audit complète est un processus et un fichier journal — bien plus simple à auditer qu'une API révision code SaaS.
Puis-je bloquer les RP basées sur la sortie du modèle local ?
Oui. L'action retourne un champ verdict ; si le verdict est block, l'action GitHub sort non-zéro, ce qui fait échouer la vérification, ce qui bloque fusion si la règle branch protection nécessite le passage de la vérification. La recommandation est de commencer avec block désactivé (beratend seulement) le premier mois, mesurer le taux de faux positifs, et promouvoir le blocage une fois le taux au-dessous d'env. 5%.
Cela fonctionne-t-il avec GitLab CI ?
Oui — architecture identique. Remplacez l'action GitHub par un travail GitLab CI qui exécute le même curl au point de terminaison Ollama et poste la réponse en arrière à la demande fusion via l'API GitLab. Le modèle, le prompt, le cache, le modèle de sécurité et le dimensionnement du matériel sont tous identiques. Bitbucket Pipelines, Jenkins et Buildkite fonctionnent de la même manière.
Comment je garde le modèle à jour sans casser les pipelines ?
Épinglez le digest du modèle avec ollama show <model> --modelfile pour que CI production utilise une version exacte. Quand une nouvelle version modèle arrive, tirez-la sur un serveur staging, exécutez une petite suite fixture de diffs RP représentatives, comparez la sortie structurée à la version production, et promouvez seulement après que la suite de régression passe. Traitez les mises à jour modèle comme n'importe quelle autre mise à niveau de dépendance.
Puis-je utiliser ceci pour la génération de code en plus de la révision ?
Oui, mais les charges concourent pour la même GPU et ont des caractéristiques de latence différentes. La révision de code est asynchrone et tolère les réponses 30-secondes ; la génération de code interactif dans un éditeur a besoin de latence sub-2-secondes. Pattern recommandé : utilisez un modèle plus petit (Qwen3-Coder 7B) pour l'autocomplete d'éditeur sur les machines développeur et réservez le serveur GPU dédié aux charges de classe révision en CI.
Quel est le modèle de sécurité pour le serveur GPU ?
Traitez-le comme n'importe quel service interne : liez le serveur d'inférence à une interface privée, mettez l'authentification devant (auth mTLS, jetons shared-secret, ou accès VPN-seulement), restreignez sortant avec default-deny, et rotez les identifiants. L'ajout LLM-spécifique est l'audit de provenance poids du modèle — épinglez le digest, documentez la source, et confirmez sortie de données zéro avec captures paquets périodiques.
Plusieurs repos peuvent-ils partager un serveur GPU ?
Oui — le serveur GPU est juste un point de terminaison HTTP. N'importe quel nombre de repos peut l'appeler tant que le serveur a de la capacité. Pour les organisations avec 10+ repos actifs, ajoutez des limites taux par-repo au proxy inverse devant Ollama pour éviter qu'un repo bruyant (grand monorepo, pushes forcés fréquents) ne famine les autres.
Comment je gère les faux positifs en CI ?
Trois couches. Premièrement, design de prompt — fixez des seuils de sévérité hauts, imposez la sortie structurée, et tagguez les résultats tentatives. Deuxièmement, filtrage niveau action — bloquez seulement sur severity >= "high" ; montrez moyen/bas comme commentaires. Troisièmement, une boucle de rétroaction — laissez les développeurs réagir 👍/👎 sur chaque commentaire, puis examinez hebdomadairement les 👎s et mettez à jour le prompt système pour supprimer les catégories les plus courantes de faux positifs. Attendez un taux 5–10% après un mois de réglage ; au-dessous de 5% est réalisable avec itération soutenue.