Sage-A1.5 sur une carte de 24 GB : 136 tokens/s, et un mode de vérification qui double le travail sur les questions faciles

Agent de recherche 35B du Shanghai AI Lab sur une RTX 4090 : 136 tokens/s, une question juste 3 fois sur 3, vérification deux fois plus lente sur le facile.

Trente-cinq milliards de paramètres sur le disque, environ trois milliards au travail pour chaque mot. C'est cet écart qui permet à Sage-A1.5, un agent de recherche ouvert du Shanghai AI Laboratory, de tenir sur une seule carte gaming. Nous avons fait tourner le fichier compressé des auteurs eux-mêmes sur une RTX 4090, une carte gaming de 24 GB, sur notre cloud (InferenceKey Cloud), avec des logiciels open source standard. Sa mécanique d'agent y a fonctionné : il a distribué des tâches, a demandé à notre code de chercher, et a répondu. Il a écrit environ 136 tokens par seconde, une longue réponse en 11 secondes, et a répondu juste à notre unique question de recherche en trois parties dans les trois exécutions de test. Son nouveau Verification Mode, qui lui fait vérifier son propre travail, a donné les mêmes bonnes réponses sur des questions faciles, mais a pris 2,2 fois plus de temps et deux fois plus de tokens. Le modèle tourne sur un worker GPU que vous contrôlez, et les outils tournent dans votre propre code. Laissez le mode de vérification désactivé pour les recherches simples, et testez-le sur vos cas difficiles.

La même question sur le hafnium posée à Sage-A1.5 sur une RTX 4090, Verification Mode désactivé puis activé. Désactivé : 13,6 s, 5 appels d'outils, 1 159 tokens. Activé : 24,7 s, 9 appels d'outils, 2 320 tokens. Les deux réponses 'Copenhagen, Dirk Coster and George de Hevesy' encadrées en vert comme justes. Des cadres orange sur les tours 8 à 10 du côté activé, avec la légende 'already confirmed, still checking again'. En bas : sur 12 exécutions, 25,0 s contre 11,2 s et 1 890 tokens contre 934

L'image montre une même question posée deux fois sur la même carte : dans quelle ville le hafnium a-t-il été découvert, et par qui. Les deux exécutions ont répondu juste, et celle avec le mode activé a continué de vérifier des faits qu'elle avait déjà lus.

Trois chiffres de notre test de Sage-A1.5 sur une RTX 4090 : 136 tokens par seconde pour une requête, premier token en 0,2 s, et un prompt de 92 662 tokens lu à 2 987 tokens par seconde. 21,3 GiB de mémoire avec un contexte de 32K, texte seul, 23,1 GiB à 64K avec la vision et 23,4 GiB à 128K en texte seul, le tout sur une carte de 24 GB. Une question de recherche avec Agentic Orchestration et trois sous-agents sur Wikipédia, juste dans 3 exécutions sur 3, de 50 à 72 s par exécution

Ce que vous voulez savoirCe que nous avons mesuré
Plus petite carte qui l'a fait tourner à pleine vitesseune RTX 4090, 24 GB
Verification Mode sur des questions facilesmêmes réponses, 2,2 fois plus de temps, deux fois plus de tokens

35 milliards de paramètres, 3 milliards éveillés pour chaque mot

Sage-A1.5 est gros sur le disque et petit en mouvement, et c'est pour cela qu'une seule carte gaming peut le servir. C'est un modèle mixture-of-experts. Imaginez une équipe de 256 spécialistes, plus un généraliste toujours présent dans la pièce. Pour chaque mot qu'il écrit, le modèle consulte 8 spécialistes. Les autres attendent. Ainsi, sur 35 milliards de paramètres, seuls environ 3 milliards travaillent à chaque étape, selon la page du projet. La vitesse suit les 3 milliards, et la facture mémoire suit les 35.

Le modèle est réentraîné à partir de deux autres : le modèle ouvert 35B de l'équipe Qwen et Agents-A1, l'agent précédent du laboratoire lui-même, publié en juin. Le papier, signé par Wenjie Lou et 98 co-auteurs, a été mis en ligne le 20 octobre. Le modèle complet et le fichier compressé, environ 22 GB, sont tous deux sous Apache-2.0 : utilisables commercialement et téléchargeables sans formulaire. Un petit fichier en plus permet au modèle de lire des images, et deux modes que vous activez vous-même en font un agent :

  • Agentic Orchestration. Vous donnez au modèle un outil qui distribue des tâches. Le modèle découpe alors une question en tâches et confie chacune à un sous-agent, qui cherche et lit de son côté, puis fait son rapport. C'est un chercheur principal qui envoie trois assistants à la bibliothèque en même temps.
  • Verification Mode. Une ligne ajoutée aux instructions du modèle lui dit de vérifier son propre travail avant de répondre. Les auteurs disent qu'il n'a besoin de rien d'autre d'installé.

Les scores des auteurs viennent du modèle non compressé et n'ont pas été reproduits ici

Sur BrowseComp, qui demande des faits difficiles à trouver sur le web, les auteurs annoncent 81,7 sur 100, contre 91,2 pour Kimi-K3, le meilleur modèle de leur tableau. Dans un test séparé, mode activé contre désactivé, sur les 1 266 questions de BrowseComp, Verification Mode a fait passer le score de 72,5 % à 82,9 %. Nous ne pouvons pas dire si le 81,7 inclut déjà ce gain. Leurs autres scores sont en annexe.

Notre test : une RTX 4090, le fichier des auteurs, nos propres questions

La limite d'abord : une poignée de questions faciles, appuyées sur Wikipédia, sur une seule carte, un agent à la fois. Cela vérifie la mécanique (appels d'outils, distribution des tâches, retour des réponses), pas l'étendue de ses capacités de recherche.

Nous avons servi le fichier compressé des auteurs avec llama.cpp, le logiciel ouvert qui fait tourner des modèles sur une seule machine, sur une RTX 4090 de notre cloud. Nous avons utilisé les réglages recommandés par les auteurs. Toutes les requêtes sont passées par notre plateforme, comme une application l'appellerait, et nous avons aussi vérifié la vitesse directement contre llama.cpp.

Les questions étaient les nôtres. Chacune demandait quelques faits tirés de Wikipédia : qui a découvert le rhénium et où, d'après quelle ville le hafnium a été nommé, quand le technétium a été trouvé. Le modèle cherchait et lisait des pages en direct au moyen de deux outils que nous avons écrits. Pour l'orchestration, nous avons posé une seule question, exécutée trois fois : combien d'années se sont écoulées entre les découvertes de trois éléments, de sorte que chaque sous-agent en prenne un.

Environ 136 tokens par seconde, et une question de recherche juste dans les trois exécutions

Sur une RTX 4090, le modèle a écrit environ 136 tokens par seconde pour une requête, et le premier token est arrivé en un quart de seconde environ. Passer par notre plateforme n'a ajouté aucun délai mesurable : llama.cpp seul a donné la même vitesse. Une réponse de 1 489 tokens a pris environ 11 secondes.

Il lit aussi vite les longs prompts. Nous avons caché une étiquette inventée, 7342-ORCHID, dans un prompt de 92 662 tokens, à peu près la longueur d'un roman. Le modèle a tout lu en 31 secondes et a trouvé l'étiquette.

La question de recherche est revenue juste à chaque fois que nous l'avons posée. Dans chacune des trois exécutions de test, le modèle a distribué trois tâches à la fois, une par élément. Les trois sous-agents ont cherché sur Wikipédia et ont renvoyé leurs résultats. Le modèle principal a ensuite écrit la réponse : hafnium en 1923, rhénium en 1925, technétium en 1937, 14 ans entre le premier et le dernier. Chaque appel d'outil est sorti exactement au format dont notre code avait besoin pour l'exécuter. Un test plus simple avec un seul appel de recherche est revenu propre 3 fois sur 3, en moins d'une seconde à chaque fois.

Le temps dépend de la possibilité pour les sous-agents de tourner côte à côte, et le réglage par défaut de notre plateforme les met en file d'attente. Après un déploiement, elle envoie au modèle une requête à la fois, donc les trois sous-agents ont attendu leur tour et l'exécution a pris 72,0 secondes. Un appel d'API a monté la limite à deux, et les exécutions ont alors pris 50 et 56 secondes. Statut : le réglage par défaut est toujours à un, et l'appel est en annexe.

La partie vision fonctionne aussi. Nous lui avons montré le propre graphique de benchmarks des auteurs et demandé une valeur. Il a lu 80,0 sur la bonne barre, et 50,0 comme le meilleur des modèles plus grands, les deux corrects.

Le piège, c'est le temps qu'il passe à réfléchir. Ce modèle raisonne longuement avant de répondre. Une définition en deux phrases a pris 14,4 secondes, parce qu'il a d'abord raisonné sur 1 905 tokens. Même 17 x 23 a demandé 336 tokens de raisonnement. À 136 tokens par seconde, cela convient à une tâche de recherche, et c'est lent pour une fenêtre de chat.

Verification Mode a doublé le travail sur les questions faciles et n'a changé aucune réponse

Sur nos questions faciles, Verification Mode n'a rien apporté de mesurable. Les 12 réponses étaient justes avec le mode désactivé comme avec le mode activé.

DésactivéActivé
Réponses justes6 sur 66 sur 6
Temps moyen11,2 s25,0 s
Appels d'outils en moyenne4,06,5
Tokens écrits en moyenne9341 890

Le travail en plus était surtout de la répétition. Avec le mode activé, le raisonnement s'est rempli de tours "Let me verify" alors que les faits étaient déjà confirmés. L'écart a varié : dans l'autre exécution sur le hafnium, le mode activé a fait un appel d'outil de moins que le mode désactivé. Une exécution a pris 52,7 secondes parce qu'une recherche Wikipédia a expiré et que le modèle a réessayé.

Cela ne contredit pas les auteurs. Leur gain est venu sur BrowseComp, où les faits sont difficiles à trouver et où une première piste fausse est fréquente.

Quel GPU : une vraie carte de 24 GB à pleine vitesse, environ un cinquième de la vitesse ou moins en dessous

La plus petite carte qui a fait tourner Sage-A1.5 à pleine vitesse était une vraie RTX 4090 de 24 GB. Avec les réglages de notre exemple, de la place pour 32 768 tokens de conversation et deux requêtes à la fois, il a utilisé 21,3 des 23,5 GiB de la carte. La configuration de la fiche du modèle, 64K tokens avec la vision, a culminé à 23,1 GiB. 128K tokens, texte seul, a culminé à 23,4 GiB, ce qui laisse la carte presque pleine. Toutes ces configurations ont tenu, sans perte de vitesse.

En dessous de 24 GB, le modèle ne tourne que si une partie passe dans la mémoire principale de l'ordinateur. Llama.cpp peut y garer certains spécialistes et laisser le processeur les exécuter, ce qui est beaucoup plus lent. Nous avons simulé des cartes plus petites sur la même 4090, en sortant des spécialistes jusqu'à ce que la mémoire de la carte reste sous chaque limite.

  • 16 GB simulés : 14,4 GiB sur la carte, environ 5,6 fois plus lent, et la question de recherche est encore revenue juste en 98 secondes.
  • 12 GB simulés : 10,8 GiB sur la carte, et la question est revenue juste en 93 secondes.
  • 8 GB simulés : 3,0 GiB avec tous les spécialistes en mémoire principale. Une exécution de recherche sur deux a épuisé sa limite de 12 étapes au bout de 270 secondes sans réponse. La nouvelle tentative a été juste.
  • Pas essayé : de vraies cartes de 16 et 12 GB, la RTX 3090, les cartes de 32 GB, le modèle non compressé.

Les vitesses simulées dépendent du processeur et de la mémoire de l'ordinateur, prenez-les donc comme une tendance, pas comme une promesse. Les réglages plus petits demandent aussi de la mémoire principale libre pour les spécialistes garés, jusqu'à environ 17 GB quand ils y passent tous.

Sur InferenceKey : prêt en 104 secondes, après une correction de la commande de la fiche du modèle

Un modèle d'agent 35B ne devrait pas avoir besoin d'un moteur sur mesure, et celui-ci n'en a pas eu besoin. Entre l'appel de déploiement et le service, il s'est écoulé 104,1 secondes, avec la version de llama.cpp que notre plateforme livre déjà : télécharger le fichier de 21,7 GB, le charger, répondre. Notre plateforme fait tourner un modèle sur un worker, une machine GPU que vous possédez ou louez et que vous y connectez, et son llama.cpp par défaut a chargé Sage-A1.5 sans modification. La première fois sur une machine neuve, llama.cpp doit aussi être compilé pour la carte, ce qui a pris dix minutes et demie. Ensuite, un redémarrage prend de 4 à 7 secondes.

Le seul problème sur lequel vous tomberez est dans la fiche du modèle elle-même. Sa commande llama.cpp utilise un réglage de raisonnement appelé deepthink, que llama.cpp n'a pas. Le serveur s'arrête au démarrage avec "Unknown reasoning format: deepthink". Nous avons aussi vérifié une version bien plus récente de llama.cpp, et il n'y existe toujours pas. La correction consiste à écrire deepseek à la place. Statut : corrigé dans notre exemple, toujours présent dans la fiche des auteurs.

Un second manque est de notre côté. Les auteurs activent Verification Mode avec un réglage que notre plateforme ne transmet pas encore au modèle. Notre exemple ajoute à la place la même ligne d'activation aux instructions du modèle. Nous avons vérifié que le modèle voit exactement le même prompt dans les deux cas. Statut : ouvert de notre côté, contourné dans l'exemple.

Faut-il l'essayer ? Oui sur une carte de 24 GB : la mécanique d'agent a fonctionné

  • Si vous voulez un agent qui cherche, lit et rend compte sur votre propre matériel, essayez-le.
  • Si la justesse sur les questions difficiles compte pour vous, testez Verification Mode sur vos propres cas difficiles.
  • Si vous avez besoin de réponses de chat rapides, cherchez ailleurs. Il réfléchit sur des centaines ou des milliers de tokens avant des réponses courtes.
  • Si votre carte a 16 GB ou moins, attendez-vous à une fraction de la vitesse, et seulement avec beaucoup de mémoire principale.

Pour poser à Sage-A1.5 la même question de recherche sur votre propre carte, avec des sous-agents et avec Verification Mode désactivé puis activé, lancez python main.py depuis l'exemple Sage-A1.5 du SDK. Il faut un projet InferenceKey avec un token SDK et une clé d'API, et un worker NVIDIA privé de 24 GB ou plus. Il supprime le déploiement quand il a fini.

Pour les ingénieurs

Crédits

  • Sage-A1.5 : Shanghai AI Laboratory (l'organisation InternScience sur Hugging Face, publié sous le nom Alpha-Innovator sur la page du projet), papier de Wenjie Lou et 98 co-auteurs, arXiv 2610.28578. Ils ont entraîné le modèle, construit les deux modes, publié les poids BF16, le GGUF Q4_K_M officiel et le projecteur de vision sous Apache-2.0, et enregistré une démo llama.cpp sur Mac sur la page du projet.
  • Modèles de base : Qwen3.6-35B-A3B de l'équipe Qwen, et Agents-A1, l'agent précédent des auteurs (open source depuis le 2026-06-26, 35B-A3B, Apache-2.0).
  • Service : le projet llama.cpp.
  • Données de nos questions : Wikipédia, via son API publique.
  • Où nous l'avons repéré : la vidéo d'actualités d'AI Search du 2026-10-25 (segment Sage-A1.5 à 36:10).
  • Notre part : le déploiement à travers la plateforme, les questions et les outils, les mesures, l'échelle de VRAM, l'exemple du SDK et la vidéo de démo.

Modèle et fichiers

  • InternScience/Sage-A1.5-Q4_K_M-GGUF, sha 10b179b52f2c841030db327627e707d076b4c8cf, créé le 2026-10-21, dernière modification le 2026-10-22, Apache-2.0, sans accès restreint.
    • Sage-A1.5-Q4_K_M.gguf : 21 713 463 520 B ("MoE weights + built-in MTP layer"), arch GGUF qwen35moe. Environ 5 bits par paramètre en moyenne pour environ 35B paramètres, à peu près un tiers de la taille du dépôt BF16.
    • Sage-A1.5-mmproj.gguf : 899 282 880 B. Ensemble, environ 22,6 GB.
  • InternScience/Sage-A1.5 (BF16), sha 0e3205cf, créé le 2026-10-15, dernière modification le 2026-10-22 : 14 shards safetensors d'environ 5,37 GB plus model-mtp.safetensors de 1,69 GB, environ 72 GB.
  • Qwen3_5MoeForConditionalGeneration : 40 couches (30 à attention linéaire, 10 à attention complète), 256 experts, 8 par token plus un expert partagé, hidden 2048, 1 couche MTP, tour de vision de 27 couches, max_position_embeddings 262 144. 35B au total, environ 3B actifs par token (page du projet).
  • Note mémoire de la fiche : "~20.2 GiB for the Q4_K_M weights plus ~0.84 GiB for the projector, plus the KV cache... A single 24 GB GPU comfortably serves the model at moderate context lengths".
  • Échantillonnage recommandé : temperature 1.0, top_p 0.95, top_k 20, min_p 0.0, presence_penalty 1.5, repetition_penalty 1.0.

Benchmarks des auteurs (BF16, non reproduits)

BenchmarkSage-A1.5Autres modèles du tableau des auteurs
GAIA95,1Agents-A1 96,0, Kimi-K3 92,2, GLM-5.3 92,2, GPT-5.6-sol 88,3
BrowseComp81,7 (82,8 avec orchestration)Kimi-K3 91,2, GPT-5.6-sol 90,4, GLM-5.3 76,2, Agents-A1 75,5, Qwen3.6-35B-A3B 67,9
SWE-bench Pro61,2GPT-5.6-sol 64,6, GLM-5.3 64,6, Kimi-K3 63,3, Ornith-1.5 59,6, Qwen3.6-35B-A3B 49,5, Agents-A1 43,6
HLE avec outils55,1GPT-5.6-sol 64,5
IFBench81,6
FrontierScience-Research48,3
CMT80,0meilleur modèle plus grand 50,0

La fiche dit que la quantification Q4_K_M "trades a small amount of accuracy". SWE-bench Pro a utilisé le harness mini-SWE-agent, température 1.0, top-p 0.95, contexte de 200K, hors ligne. Sur GAIA, le prédécesseur Agents-A1 (96,0) obtient un meilleur score que Sage-A1.5 (95,1) dans le propre tableau des auteurs. Les modèles phares actuels (Claude Opus 5.5, GPT-6.1 Sol) ne figurent pas dans le tableau.

Installation

  • Une RTX 4090 24 GB (24 080 MiB) sur notre cloud (InferenceKey Cloud), limite de puissance de 203 W (450 W d'origine), AMD EPYC 7402, driver 580.142, une image de conteneur CUDA 13.
  • Backend llamacpp intégré, tag llama.cpp b9748 (la version fixée par défaut du worker, sans surcharge). Il contient déjà LLM_ARCH_QWEN35MOE.
  • Un manager InferenceKey local (depuis origin/main 9e53fe57) a amorcé le worker. La production n'a pas été touchée.
  • Requêtes en streaming à travers l'endpoint compatible OpenAI sauf mention contraire. Vitesse recoupée directement contre llama-server.

Pas à pas avec l'exemple du SDK

  1. Clonez inferencekey-sdk et ouvrez examples/sage-a1-5-research-agent-llamacpp-private-nvidia/ (commit 3c5cc178).
  2. Compilez le binding Python en local avec maturin et installez requests>=2.31 (requirements.txt).
  3. Copiez .env.example vers .env et renseignez INFERENCEKEY_SDK_TOKEN, INFERENCEKEY_API_KEY, INFERENCEKEY_PROJECT et IK_WORKER_ID (un worker NVIDIA privé de 24 GB ou plus). Optionnel : IK_KEEP_ALIVE=1 garde le déploiement, SAGE_CONTEXT change le contexte (32768 par défaut ; 65536 et 131072 tiennent sur 24 GB en texte seul).
  4. Lancez python main.py. Le déroulé : ensure() d'un workload llamacpp fixe sur votre worker, wait_until_ready(3600), une question simple avec generate_text() (max_tokens 16 384), Agentic Orchestration, Verification Mode désactivé puis activé, réponses dans outputs/answers.json, puis delete() sauf si IK_KEEP_ALIVE=1.
  5. Le script exécute les outils (wiki_search, read_page) de votre côté contre l'API publique de Wikipédia, jusqu'à 5 sous-agents dans des threads parallèles. La machine qui le lance a besoin d'un accès à internet.

La commande que l'exemple déploie :

llama-server -hf InternScience/Sage-A1.5-Q4_K_M-GGUF --hf-file Sage-A1.5-Q4_K_M.gguf \
  --no-mmproj --alias sage-a1.5 -ngl 99 -fa on -c 32768 -np 2 --kv-unified \
  --jinja --reasoning-format deepseek \
  --temp 1.0 --top-p 0.95 --top-k 20 --min-p 0 --presence-penalty 1.5

Pour des sous-agents en parallèle, montez le max_in_flight de l'affectation de 1 à 2 avec PATCH /api/projects/<pid>/assignments/<workload>/<worker>.

Verification Mode à travers notre endpoint (le déclencheur exact du template, "protocol" en minuscules) :

system = "You are a careful research assistant." + "\n\nVerification protocol: enabled"

Directement contre llama-server, l'interrupteur documenté fonctionne : chat_template_kwargs={"verification": true}, avec un message système non vide et un booléen JSON (sinon le template renvoie un HTTP 400).

Délais

  • Compilation CUDA de llama.cpp b9748 (arch 89, 46 jobs) : 10 min 33 s.
  • De ensure() à prêt, llama.cpp déjà compilé : 104,1 s (téléchargement de 21,7 GB et chargement).
  • Redémarrages à chaud de llama-server : 4 à 7 s.

Vitesse (streaming, une requête, échantillonnage des auteurs)

CheminPromptTokensPremier tokenDécodage
Endpointessai de 300 mots1 489 / 1 8270,22 / 0,26 s137,5 / 135,0 tok/s
Endpoint"capital of Australia, one word"118 / 1250,32 / 0,24 s129,4 / 130,7 tok/s
llama-server en directessai1 525 / 3 2970,27 / 0,36 s134,0 / 135,3 tok/s
En direct, config 128Kprompt aiguille de 92 662 tokens110prefill 2 987 tok/s (31,0 s), décodage 99,6 tok/s, "7342-ORCHID" trouvé
En direct, 64K + mmprojgraphique des auteurs + question (2 124 tokens de prompt)1 628prefill 1,66 s, 131,7 tok/s, réponse juste

Pendant le décodage : environ 66 % d'utilisation du GPU et environ 175 W sur le plafond de 203 W, donc la carte est restée sous son plafond. Une 4090 sans plafond n'a pas été mesurée.

Appels d'outils et modes

  • Appel d'outil unique : 3 sur 3, un appel wiki_search avec des arguments JSON valides, de 0,87 à 0,98 s. Pas testé : beaucoup d'outils à la fois ni des schémas d'arguments imbriqués.
  • Orchestration (le modèle principal n'a que spawn_subagent, les sous-agents ont wiki_search et read_page, et renvoient {answer, status, evidence, unresolved_issues}), une question en trois parties (années entre les découvertes du hafnium, du rhénium et du technétium) : 3 exécutions de test sur 3 justes, plus la prise enregistrée pour la vidéo, juste aussi, donc 4 sur 4 au total. L'image de synthèse compte les 3 exécutions de test. Un spawn_subagent avec 3 tâches par exécution. 72,0 s avec max_in_flight à 1 (tours des sous-agents 9/7/3), 49,7 s (4/4/7) et 55,7 s (3/6/11) avec 2, prise enregistrée 48,3 s. Un sous-agent a fait 9 appels d'outils pour le hafnium parce que les sources hésitent entre 1922 et 1923.
  • Vérification, 3 questions (rhénium, hafnium, technétium) x 2 exécutions x désactivé/activé :
ModeExécutionsMoyenne sAppels d'outils en moyenneTokens de complétion en moyenneCaractères de raisonnement en moyenneJustes
désactivé611,24,09342 7786/6
activé625,06,51 8905 6626/6

Tours en moyenne : 5,0 désactivé, 7,5 activé. La dispersion est large : l'exécution sur le hafnium de l'image clé est passée de 5 à 9 appels d'outils (de 13,6 s à 24,7 s), tandis que l'autre exécution sur le hafnium a fait 6 appels d'outils activé contre 7 désactivé (15,9 s contre 15,5 s).

Nous n'avons pas vu la revue structurée "ce qui est établi, ce qui a échoué" du texte de démo des auteurs. Les tours en plus étaient de simples revérifications.

Échelle de VRAM

Pic de VRAM par nvidia-smi toutes les 1 s. Le texte principal les donne en GiB (21 760 MiB font environ 21,3 GiB ; 24 080 MiB sur la carte, 23,5 GiB, moins 23 920 MiB à 128K laissent 160 MiB). Plafonds émulés sur la même 4090 en déplaçant les experts de N couches vers la RAM système (--n-cpu-moe, 24 threads CPU). Vérification de l'agent : la question sur le rhénium, vérification désactivée, budget de 12 tours.

GPU ou plafondConfigPic de VRAMVitesseSortie OKRéel ou émulé
RTX 4090 24 GB-c 32768 -np 2 --kv-unified, texte seul, à travers la plateforme21 760 MiB135 à 137 tok/s ; orchestration 48 à 56 souiréel
RTX 4090 24 GB-c 65536 --mmproj, -fit off23 684 MiB138 tok/s ; agent 22,3 soui, graphique bien luréel
RTX 4090 24 GB-c 131072 texte seul, -fit off23 920 MiB137 à 139 tok/s ; agent 25,6 soui, aiguille de 92,7K trouvéeréel
Plafond de 16 GB-c 32768 -np 2 --n-cpu-moe 1614 708 MiB23,9 à 25,0 tok/s ; agent 98,0 soui (environ 5,6x plus lent)émulé
Plafond de 12 GB--n-cpu-moe 2411 052 MiB12,9 à 18,1 tok/s ; agent 92,8 souiémulé
Plafond de 8 GB--cpu-moe3 048 MiB14,1 à 14,9 tok/s ; agent 270,2 s, pas de réponse, nouvelle tentative juste en 104,1 spartiel, 1 sur 2émulé
RTX 4090 24 GB--spec-type draft-mtp -md <same GGUF>non : failed to allocate CUDA0 buffer of size 21416407552réel

--cpu-moe demande environ 17 GB de poids en RAM système. Pas essayé : de vraies cartes de 16 et 12 GB (aucune en stock sur notre cloud : 4080, 4080 SUPER, 5080, A4000, 2000 Ada, 4070 Ti, 3080 Ti), la RTX 3090 (la seule machine obtenue n'avait pas de SSH direct et a été arrêtée), les cartes de 32 GB, les poids BF16 avec vLLM, d'autres quantifications.

Problèmes et statut

  1. --reasoning-format deepthink dans la fiche du modèle : llama-server s'arrête avec "Unknown reasoning format: deepthink". Les valeurs valides dans b9748 sont none|deepseek|deepseek-legacy|auto, et b12000 (2026-10-30) n'a toujours pas deepthink. Corrigé dans l'exemple avec deepseek.
  2. L'endpoint laisse tomber chat_template_kwargs, top_k et min_p. ChatCompletionRequest ne les transporte pas. À travers l'endpoint, {"verification": "maybe"} et {"verification": true} sans message système renvoient tous deux 200, donc les kwargs n'atteignent jamais le template. Contournement : la ligne de déclenchement dans le message système, identique à l'octet près sur /apply-template avec et sans outils. Ouvert.
  3. L'endpoint sans streaming laisse tomber reasoning_content quand content est rempli. Avec max_tokens à 4 096, la première question simple a renvoyé 4 096 tokens de "Thinking Process:" en 30,7 s. L'exemple demande 16 384 (alors 14,4 s, 1 905 tokens) et passe les boucles d'agent en streaming.
  4. Compilation de llama.cpp sur le worker : "No CMAKE_CUDA_COMPILER could be found", parce que nvcc (13.0.88, /usr/local/cuda/bin) n'est pas dans le PATH de l'image de conteneur du worker. Contourné avec CUDACXX, PATH et CMAKE_BUILD_PARALLEL_LEVEL dans l'env du worker. Statut : ouvert dans le produit, pas encore suivi.
  5. wait_until_ready() reste bloqué sur un workload fixe qui sert déjà : worker_leases est vide pour l'affectation fixe privée, et la vérification de disponibilité ne lit que les leases Ready actifs. Statut : bug produit ouvert, pas encore suivi.
  6. max_in_flight vaut 1 après ensure(), donc les sous-agents font la queue. Monté à 2 avec le PATCH ci-dessus. Statut : ouvert, le réglage par défaut est toujours à 1.
  7. L'URL NATS locale valait tls:// par défaut alors que le nats-proxy local avait TLS désactivé. Corrigé avec un réglage nats:// et une réinstallation du worker. Concerne uniquement l'installation de test locale.
  8. MTP (la couche intégrée qui devine plusieurs tokens à la fois) depuis le même GGUF : --spec-type draft-mtp -md <same GGUF> charge le fichier une seconde fois et manque de mémoire sur 24 GB avec b9748.
  9. Une machine RTX 3090 a démarré sans SSH direct pendant 180 s et le manager l'a arrêtée.
  10. Incohérences de la fiche et de la page : les extraits de service de la page du projet nomment Alpha-Innovator/Agents-A1.5 (le dépôt est InternScience/Sage-A1.5), et elle écrit le déclencheur "Verification Protocol" alors que le template utilise "protocol". Nous avons utilisé la chaîne du template. La trace de la démo Mac des auteurs n'a aucun log de matériel, de quantification ni de débit, comme ils le disent eux-mêmes.

Vidéo de démo

Test de déploiement de Sage-A1.5 sur une RTX 4090 : terminal avec les appels d'outils des sous-agents, le tableau des réponses, '14 years' et '48.3 s total'. Cliquez pour lancer la vidéo

160,6 s, 1920x1080. Elle comprend un extrait de la démo llama.cpp sur Mac des auteurs, crédité à l'équipe Sage-A1.5, et leur tableau de benchmarks, attribué et signalé comme non reproduit par nous.

Sources

  • Fiche du modèle, BF16 : https://huggingface.co/InternScience/Sage-A1.5
  • Fiche du modèle, GGUF Q4_K_M : https://huggingface.co/InternScience/Sage-A1.5-Q4_K_M-GGUF
  • Papier : https://arxiv.org/abs/2610.28578
  • Page du projet : https://alpha-innovator.github.io/Sage-A1.5/
  • Prédécesseur : https://github.com/InternScience/Agents-A1
  • Exemple du SDK : https://github.com/inferencekey/inferencekey-sdk/tree/main/examples/sage-a1-5-research-agent-llamacpp-private-nvidia
  • Où nous l'avons repéré : https://www.youtube.com/watch?v=EfyQOAJjx1A