Faire tourner mini-me sur Kronk
Ce guide montre comment brancher mm sur Kronk, le serveur d'inférence Go d'Ardan Labs, via son point d'accès compatible OpenAI. Il suppose que Kronk est installé (brew install ardanlabs/kronk/kronk, ou go install github.com/ardanlabs/kronk/cmd/kronk@latest) et que vous savez construire mm.
Étapes
-
Téléchargez le modèle. Kronk charge un modèle installé à la première requête, mais un modèle non installé donne une erreur
model not found:kronk model pull mradermacher/Qwopus3.5-4B-Coder.Q8_0 -
Lancez le serveur. Il écoute sur
127.0.0.1:11435:kronk server start -
Lancez la configuration de démo depuis son répertoire (son
skillsDirvaut../../skills) :cd demos/kronk ../../mm -config agent.kronk.yaml -
Vérifiez la bannière.
provider: kronkconfirme le fournisseur, etctx: 131072 (/v1/kronk/models)est la fenêtre avec laquelle Kronk sert le modèle, lue au démarrage, que le modèle soit chargé ou non.
Variantes
-
Un autre modèle. Mettez dans
model:l'id exactement comme Kronk le liste surGET /v1/models:provider/modelID. Kronk refuse un id sans son provider avecmust use provider/modelID. L'id du téléchargement n'est pas toujours celui que Kronk sert. Par exemple Qwen3.5 2B, un modèle plus petit :kronk model pull unsloth/Qwen3.5-2B-GGUF:Q4_K_M --local # --local : serveur arrêté curl -s localhost:11435/v1/models # le liste comme unsloth/Qwen3.5-2B-Q4_K_Mmodel: unsloth/Qwen3.5-2B-Q4_K_M # pas unsloth/Qwen3.5-2B-GGUF:Q4_K_M, qui donne un 404Mesuré sur Kronk 1.33.2 :
ctx: 131072 (/v1/kronk/models), et les appels d'outils marchent. -
Un profil Kronk. Kronk liste aussi des profils de configuration,
provider/modelID/PROFIL, par exemplemradermacher/Qwopus3.5-4B-Coder.Q8_0/AGENT. Un profil, c'est le même fichier GGUF, servi avec les réglages de cette clé dans~/.kronk/models/model_config.yaml. Rien n'est téléchargé deux fois. Les profilsAGENTviennent dumodel_config.yamllivré avec Kronk ; vous pouvez y ajouter les vôtres, puis relancer Kronk. Celui de Qwopus dit :mradermacher/Qwopus3.5-4B-Coder.Q8_0/AGENT: context-window: 65536 sampling-parameters: max_tokens: 8192 temperature: 1 top_k: 20 top_p: 0.95Un profil est un
model:valide. Ce qu'il change pourmm:- La fenêtre : oui. C'est celle du profil, ici 65536 au lieu des 131072 que Kronk choisit pour le modèle simple. La bannière l'affiche (
ctx: 65536 (/v1/kronk/models)), et la compaction se déclenche à 75 % de cette fenêtre. Une fenêtre plus petite prend aussi moins de mémoire sur le serveur. - L'échantillonnage : seulement pour les clés que
mmn'envoie pas. Une valeur de la requête l'emporte sur celle du profil. Mesuré sur Kronk 1.33.2 :temperature: 0dans la requête a donné trois fois de suite la même réponse malgré letemperature: 1du profil, etmax_tokens: 5a coupé la réponse à 5 tokens malgré les 8192 du profil.mmenvoie toujourstemperature,top_petmax_tokens: ses valeurs par défaut, fusionnées avec lesamplingdu fichier (voirsampling). Lestemperature,top_petmax_tokensdu profil ne s'appliquent donc jamais, et ses autres clés seulement quandsamplingne les donne pas, icitop_k: 20. C'est vrai même pour un fichier sans blocsampling::mmenvoie alorstemperature: 0,top_p: 0.9,max_tokens: 4096(vérifié dans une trace). Pour avoir les valeurs d'un profil, écrivez-les danssampling;mm initle fait pour vous (ci-dessous). - Le raisonnement : non.
enable_thinkingetchat_template_kwargsdanssamplingvalent aussi par requête.
mm initliste les profils avec une ligne qui dit ce qu'ils sont, et la fenêtre les affiche commeQwopus3.5-4B-Coder.Q8…/AGENT. Quand vous choisissez un profil,mm initlit son échantillonnage auprès de Kronk et le recopie dans lesamplingdu fichier. Les valeurs recopiées sonttemperature,top_p,top_k,min_p, etmax_tokensquand le profil le plafonne. Elles remplacent celles de la table des familles et du GGUF, chacune marquée[server] Kronk profile AGENT:sampling: # [server] Kronk profile AGENT (model_config.yaml), read from the server: # mm's values replace a profile's, so they are copied here temperature: 1.0 top_p: 0.95 top_k: 20 min_p: 0.0 max_tokens: 8192 - La fenêtre : oui. C'est celle du profil, ici 65536 au lieu des 131072 que Kronk choisit pour le modèle simple. La bannière l'affiche (
-
Écrire le fichier avec l'assistant.
mm init --provider kronkliste les modèles de Kronk et lit auprès de Kronk la fenêtre, l'échantillonnage et le chat template du modèle choisi. Voir Créer un agent. -
Laisser mm télécharger le modèle. Avec
autoPull: true, mm télécharge au démarrage un modèle que Kronk ne liste pas, viaPOST /v1/kronk/models/pull, et affiche la progression. VoirautoPull. -
Depuis une sandbox Docker.
kronk server startn'écoute que sur la boucle locale, qu'une sandbox ne peut pas atteindre. Sur l'hôte, lancez-le aveckronk server start --api-host 0.0.0.0:11435, et autorisezlocalhost:11435dans la politique réseau de la sandbox. Quand aucunbaseUrlne répond,mmse replie alors tout seul surhttp://host.docker.internal:11435/v1. -
Une fenêtre plus grande ou plus petite. La fenêtre est celle de Kronk, par modèle : réglez
context-windowpour le modèle dans~/.kronk/models/model_config.yamlet relancez Kronk.mmlit la nouvelle valeur au démarrage. -
Un Kronk protégé. Dans les modes
authenticatedoufull-protected, exportez un jeton dansKRONK_TOKEN(ou nommez une autre variable dansapiKeyEnv). Un jeton refusé donne un avertissement au démarrage qui nomme la variable. -
Libérer la mémoire.
/unloadet l'outilunload_modeldéchargent le modèle viaPOST /v1/kronk/models/unload. Voir Libérer la mémoire d'un modèle. -
Garder votre propre
agent.yaml.AGENT_PROVIDER=kronk ./mmmarche tant que le fichier laissebaseUrlvide.
Ce qui diffère des autres serveurs
- Pas de ligne
Reading the prompt …: Kronk n'envoie pas d'avancement pendant qu'il lit, doncfirstTokenTimeoutdoit couvrir tout le prompt et le chargement du modèle. - Le raisonnement se coupe avec
chat_template_kwargs: {enable_thinking: false}, comme avec llama.cpp ; Kronk ignorereasoning_effort: none. Le résumé d'une compaction le fait tout seul. Voir Couper le raisonnement d'un modèle.
Voir aussi
- Fournisseurs : une implémentation par protocole — ce qui a été mesuré sur Kronk.
- Référence de configuration — valeurs par défaut des fournisseurs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
|