GPU souverain vs Claude Premium
Quand utiliser le GPU souverain (Qwen3, OVH BHS) vs Claude Sonnet/Opus pour vos analyses Scanyze — matrice décisionnelle et coûts
GPU souverain vs Claude Premium
Scanyze délègue toutes ses opérations IA à SecuTools, la plateforme centralisée IA de SecuAAS. SecuTools route les jobs vers plusieurs fournisseurs selon la politique du tenant et la nature du prompt.
Cette page explique la différence entre les deux principaux fournisseurs et fournit une matrice décisionnelle pour choisir le bon pour chaque cas d'usage.
Les deux fournisseurs principaux
GPU souverain (défaut)
Modèle : Qwen3-Coder-35B-Instruct déployé sur cluster GPU OVH Beauharnois (Québec).
| Caractéristique | Valeur |
|---|---|
| Hébergement | OVH BHS — Québec, Canada |
| Souveraineté | 100% sous contrôle SecuAAS, aucun appel externe |
| Latence | ~5-10s par analyse standard |
| Throughput | ~68 tokens/s |
| Contexte (input + output) | 16 384 tokens |
| Coût (CAD) | Inclus dans les crédits IA — 1 crédit par analyse légère |
| Qualité | Très bonne sur petits prompts, code Go/Python/JS, vulnérabilités classiques |
| Conformité | Loi 25, PIPEDA, RGPD nativement |
Claude Premium (opt-in)
Modèles utilisés (selon le cas d'usage) :
| Cas d'usage | Modèle | Contexte | Output max |
|---|---|---|---|
| Rapport AI premium (code scan) | Claude Sonnet 4.6 | 200K tokens | 32 768 tokens |
| Deep findings analysis | Claude Opus 4.6 | 200K tokens | 32 768 tokens |
| Caractéristique | Valeur |
|---|---|
| Hébergement | Anthropic (USA, infrastructure AWS multi-régions) |
| Souveraineté | Données quittent le Canada (Anthropic facture en USD, BAA US-CA) |
| Latence | ~30-90s par analyse standard |
| Contexte | 200 000 tokens (~150K mots) |
| Output max | 32 768 tokens (~24K mots de rapport) |
| Coût (CAD) | 5 crédits par analyse légère, davantage selon la taille du prompt |
| Qualité | Référence de l'industrie pour les analyses complexes, longs contextes |
| Conformité | DPA Anthropic disponible. Le tenant doit explicitement opter pour Claude (claude_premium_enabled). |
Source : secuscan-api/internal/api/handlers/secutools_ai_client.go (configuration MaxTokens et PreferredAI selon caller_id).
Matrice décisionnelle
| Cas d'usage | Recommandation | Raison |
|---|---|---|
| Analyse contextuelle d'un finding EASM (TLS, headers, DNS) | GPU | Findings courts (moins de 3K tokens), Qwen suffit largement |
| Analyse d'un finding Code (Semgrep, Gitleaks) | GPU | Qwen3-Coder est entraîné spécifiquement pour le code |
| Rapport Code Scanning d'un repo < 50 issues | GPU | Le prompt tient dans 16K, le rapport tient dans 8K output |
| Rapport Code Scanning d'un repo > 100 issues | Premium | Prompt > 16K, le GPU ne peut pas générer un rapport cohérent |
| Rapport Code Scanning d'un repo > 300 issues | Premium chunked | Mode chunked v0.126.5, plusieurs passes Sonnet |
| Pentest IA report | Premium (Opus) | Raisonnement adversarial complexe, longues chaînes de findings |
| Compliance Legal (Loi 25, RGPD) | GPU | 5 prompts courts, GPU largement suffisant |
| Chatbot Security (analyse de réponse) | GPU | Latence critique pour rester sous le timeout des campagnes |
| Findings deep analysis (manuelle) | Choix tenant | Voir tenant settings — toggle claude_premium_enabled |
Comment choisir le fournisseur côté UI
Pour les analyses interactives (boutons sur un finding)
Sur la page d'un finding, deux boutons peuvent être présents :
- 🟢 Analyse IA (1 crédit) — utilise le GPU souverain. Toujours visible.
- 💎 Analyse IA Premium (5 crédits) — utilise Claude Opus. Visible uniquement si :
- Le tenant a
claude_premium_enabled = true(toggle admin) - Le crédit IA restant est ≥ 5
- Le tenant a
Source : secuscan-web/components/findings/AIAnalysisButtons.tsx.
Pour les rapports automatiques (post-scan)
À la fin d'un scan, le rapport AI est généré avec :
- GPU par défaut sur tous les plans
- Premium uniquement si :
- Le tenant a
claude_premium_enabled = true - Le scan a > 100 issues (heuristique de bascule)
- Le tenant a opté pour le mode Premium dans Settings → AI
- Le tenant a
Configuration tenant (admin)
Source : secuscan-api/internal/domain/models/tenant_ai_config.go.
Dans Settings → AI → Provider preferences, l'admin du tenant peut configurer :
| Paramètre | Valeurs | Effet |
|---|---|---|
claude_premium_enabled | true / false (défaut: false) | Activer le bouton « Analyse Premium » dans l'UI |
manual_analysis_provider | gpu / claude-opus (défaut: gpu) | Provider utilisé quand l'utilisateur clique sur « Analyse IA » manuelle |
gemini_enabled | true / false | Activer Gemini comme fallback si GPU indispo (rare) |
Les analyses automatiques (workers, schedules, batch) utilisent toujours le GPU, quel que soit ce paramètre. Le toggle ne s'applique qu'aux analyses déclenchées manuellement par un utilisateur.
Coûts et politique de souveraineté
Scanyze applique une politique stricte de GPU-first :
- Routage par défaut :
preferredAI = "gpu". Aucun fallback silencieux vers le cloud. - Cloud uniquement opt-in tenant : Claude n'est appelé que si :
caller_id == "codescan-premium-report"(rapport premium explicite)caller_id == "findings-deep-analysis"(analyse manuelle Claude opt-in)
- Anonymisation : tous les prompts envoyés à Claude ont le metadata
anonymize=true. Les findings et données infrastructure peuvent contenir des informations client — l'anonymisation côté SecuTools tente de masquer (best effort). - Audit : chaque appel IA est tracé dans
ai_usageavec : provider, model, prompt_tokens, completion_tokens, cost_cad, latency_ms, caller_id.
Source : secuscan-api/internal/api/handlers/secutools_ai_client.go (commentaires P2.1 / P2.3).
Coût par crédit IA
Conversion : 1 crédit IA = 0.10 CAD.
| Type d'analyse | GPU (crédits) | Premium (crédits) | Coût CAD GPU | Coût CAD Premium |
|---|---|---|---|---|
| Analyse d'un finding (light) | 1 | 5 | 0.10 $ | 0.50 $ |
| Rapport code scan (10 issues) | ~10 | ~50 | 1.00 $ | 5.00 $ |
| Rapport code scan (100 issues) | ~50 (limite contexte) | ~250 | 5.00 $ | 25.00 $ |
| Rapport code scan (500 issues, chunked) | N/A | ~1500 | N/A | 150.00 $ |
| Compliance legal scan | ~5 | ~25 | 0.50 $ | 2.50 $ |
Voir Crédits IA pour les allocations mensuelles par plan.
Pipeline parallèle (v0.130.x)
Depuis v0.130.0, l'analyse de findings utilise un pipeline parallèle borné par worker pool au lieu d'une boucle séquentielle. Code partagé : internal/services/aipipeline/ (extracté en v0.130.2).
Concurrency par provider
Source : internal/services/aipipeline/pipeline.go::ProviderDefaults.
| Provider | Workers parallèles | Justification |
|---|---|---|
| GPU souverain (Qwen3) | 12 | Le cluster GPU OVH absorbe sans rate-limiting. |
| Claude (Sonnet/Opus) | 4 | L'API Anthropic limite à ~10 req/s. 4 workers évite les 429. |
Les valeurs sont configurables via les env vars :
AI_ANALYSIS_BATCH_SIZE(défaut 5 findings par prompt)AI_ANALYSIS_CONCURRENCY(défaut 12, override automatique à 4 si Claude)AI_ANALYSIS_BATCH_TIMEOUT(défaut 180s)AI_ANALYSIS_CACHE_ENABLED(défaut true)
Retry exponential backoff
Chaque batch suit un retry 6× exponential backoff (~1s → 32s) sur :
- HTTP 429 (rate limit)
- HTTP 5xx
- timeouts réseau
Cela rend le pipeline résilient aux pics de trafic SecuTools côté GPU et aux throttling Anthropic côté Claude. Référence : aipipeline.CallWithRetry.
Performance
Avant v0.130 : 369 findings × 5–8s/Claude = >30 min, hit timeout Après v0.130 (defaults) : 369 findings → 74 batches / 12 workers ≈ 6 cycles ≈ 30–60s sur Claude, ≈ 15s sur GPU
Performances et benchmarks
Tests internes Scanyze (avril 2026) sur 50 findings de référence :
| Métrique | GPU (Qwen3-35B) | Claude Sonnet 4.6 | Claude Opus 4.6 |
|---|---|---|---|
| Latence p50 | 6.2 s | 28 s | 41 s |
| Latence p95 | 11.4 s | 52 s | 84 s |
| Tokens/s | 68 | 24 | 18 |
| Précision détection (vrai positif) | 87% | 95% | 97% |
| Faux positifs | 8% | 3% | 2% |
| Hallucinations recommendation | 4% | <1% | <1% |
| Coût (CAD) par 1M tokens output | 1.50 $ | 18.00 $ | 90.00 $ |
Le GPU est ~10× plus rapide et ~12× moins cher que Sonnet, mais la qualité plafonne sur les findings complexes et les longs contextes. Premium est justifié quand la qualité du rapport a un impact business direct (audit externe, board level).
Sélecteur de version d'analyse (v0.127.0)
Sur un finding, vous pouvez comparer plusieurs versions d'analyse (GPU vs Claude, ou plusieurs runs successifs Claude) via le sélecteur de version :
- L'historique des analyses est listé par
analysis_idavec horodatage et provider/model - L'export PDF et Markdown du rapport peut cibler une analyse spécifique :
GET /v1/findings/:id/ai-analysis/:analysis_id/export?format=pdf|md|json - Cela permet de garder une trace des classifications successives, même quand un fournisseur a évolué (Sonnet 4.5 → Sonnet 4.6 par ex.)
Source : secuscan-api/internal/api/handlers/findings_ai.go (route GET /findings/:id/ai-analyses) + secuscan-web/components/findings/AnalysisVersionSelector.tsx.
Sources de cette page
- Backend :
secuscan-api/internal/api/handlers/secutools_ai_client.go,findings_ai.go,findings_ai_pipeline.go - Pipeline partagé (v0.130.2) :
secuscan-api/internal/services/aipipeline/ - Modèle :
secuscan-api/internal/domain/models/tenant_ai_config.go - Cache (v0.130.0) : migration 000175 +
finding_ai_cache_repo.go - SecuTools centralisé :
https://api.secutools.secuaas.ovh - Frontend :
secuscan-web/components/findings/AIAnalysisButtons.tsx,AnalysisVersionSelector.tsx
À jour pour Scanyze v0.130.x.