Skip to content
Guides7 min read

Les modèles de décision, un premier niveau d'étiquetage bon marché

Un modèle de décision note chaque option en un passage avant, sans écrire de texte. Il sert de premier niveau avant un LLM sur les questions à peu d'options.

Potato Team

Un modèle de décision étiquette une question à choix fixe en un seul passage avant et renvoie une probabilité pour chaque option, sans texte à générer. Utilisez-en un comme premier niveau d'une cascade d'étiquetage sur des questions à choix unique parmi une poignée d'options, envoyez à un LLM les items sur lesquels il hésite, et certifiez son seuil sur un échantillon humain en aveugle, parce que sa confiance peut rester élevée sur des entrées où il se trompe.

Un modèle de décision est un classifieur qui prend un texte et un ensemble de questions typées et renvoie une probabilité pour chaque réponse. Il ne génère aucun texte, donc il ne peut écrire ni prompt, ni justification, ni règle. Laya est un modèle ouvert de ce type. Sa fiche de modèle mentionne un checkpoint anglais sur un encodeur ModernBERT-large de 421 millions de paramètres, sous licence Apache 2.0, et un checkpoint multilingue de 322 millions de paramètres. L'API /v1/systemone fournit le même type de réponse par HTTP, depuis Jev hébergé, OpenJev ou le propre serveur de Laya.

Où un premier niveau fait faire des économies

Une cascade d'étiquetage essaie des modèles dans l'ordre, en général du moins coûteux au plus performant, et ne transmet un item que quand le modèle courant n'est pas assez confiant. Quand un corpus compte une forte part d'items faciles, un modèle bon marché qui les étiquette avec confiance laisse au LLM un reste plus petit et plus difficile. L'économie dépend de cette part, donc mesurez-la sur vos propres données avant de bâtir un plan dessus.

Un modèle de décision convient au premier niveau parce qu'il répond à toutes les options en un seul passage : une question à cinq étiquettes coûte un passage avant et aucun texte généré. Ses probabilités de sortie servent de score de confiance, donc il n'a besoin ni de question de suivi ni d'échantillonnage répété. Il tourne aussi sur CPU. La fiche de modèle indique de 193 à 464 ms par requête sur CPU avec les checkpoints préchargés, et 39,5 ms pour le checkpoint anglais sur un GPU T4.

Les limites rapportées pour Laya

Quatre de ces limites viennent de la fiche de modèle de Laya, et la cinquième, sur les échelles de notation, de la documentation de Potato :

  • Beaucoup d'options. Sur le benchmark d'intentions Banking77, la fiche indique pour Laya une exactitude de 0,425 sur 77 étiquettes, contre 0,870 pour Jev sur 72. Les options se partagent un budget de tokens fixe, si bien que les longues listes d'étiquettes s'évincent les unes les autres. La documentation de Potato note aussi que Laya signale une température hors plage sur les questions de 11 options ou plus, et la borne.
  • Autres écritures sur le checkpoint anglais. La fiche indique pour le checkpoint anglais une exactitude de 0,000 et une confiance de 0,952 sur du texte khmer. Un seuil de confiance ne peut pas repérer une erreur dont le modèle est sûr.
  • Exactitude en zero-shot. La fiche indique que les checkpoints de base sont proches du hasard en zero-shot sur son benchmark de décisions typées, à 0,362 contre 0,318 pour une référence aléatoire et 0,461 pour la classe majoritaire, et qualifie Laya de « base rapide à spécialiser, pas un moteur de décision zero-shot ».
  • Calibration brute. La fiche indique que laya est livré trop confiant, avec une erreur de calibration attendue moyenne de 0,466 qui tombe à 0,081 après réajustement des températures sur vos propres données. La calibration varie selon le domaine, donc un seuil choisi sur les données de quelqu'un d'autre ne se transpose pas.
  • Échelles de notation. La documentation de Potato constate que sur les schémas likert et slider, les scores de Laya suivent à peine l'échelle, quelle que soit la formulation de la question.

Prises ensemble, ces limites invitent à réserver le modèle de décision aux questions à choix unique avec peu d'options, dans la langue pour laquelle son checkpoint a été entraîné. Choisissez son seuil à partir d'étiquettes humaines sur votre propre corpus.

Un modèle de décision dans Potato

Potato 2.11 ajoute deux types de points de terminaison pour les modèles de décision. laya exécute Laya dans le processus Potato et demande l'extra decision, pip install 'potato-annotation[decision]', qui entraîne torch et transformers. systemone dialogue avec tout serveur qui expose l'API /v1/systemone et ne demande qu'une base_url. Les deux fonctionnent sur les schémas radio, select, likert et slider, et le Solo Mode ne démarre pas si l'un d'eux doit étiqueter un schéma multiselect, de spans ou de texte libre.

Dans le moteur d'étiquetage, un modèle de décision est une source decision placée en tête de la cascade. Cet extrait de l'exemple textuel fourni avec Potato place Laya devant un petit LLM Ollama et certifie la paire par rapport à une cible de 10 % d'erreur, avec la confiance par défaut de Potato de 90 % :

yaml
labeling_engine:
  enabled: true
  sources:
    - id: laya
      kind: decision
      endpoint_type: laya
      model: convaiinnovations/laya
      options:
        device: cpu
    - id: llm
      kind: llm
      endpoint_type: ollama
      model: llama3.2:3b
      base_url: http://localhost:11434
      max_tokens: 200
  cascade: [laya, llm]
  contracts:
    - id: accuracy
      kind: selective_risk
      schema: sentiment
      error: 0.1
      confidence: 0.9

Le moteur choisit le seuil de confiance de Laya sur une moitié d'un échantillon humain en aveugle et le teste sur l'autre moitié, si bien que le seuil vient de votre corpus et non de la fiche de modèle. Tant que la moitié dev de l'échantillon n'a pas fixé de seuil pour Laya, le LLM étiquette chaque item. Ensuite, le LLM ne voit plus que les items sur lesquels Laya hésite, plus l'échantillon de calibration.

Dans l'exécution documentée dans le README de l'exemple, avec Gemma 12B comme LLM, le seuil de Laya n'a jamais été fixé et le LLM a fourni toutes les étiquettes acceptées : mesurez donc ce qu'apporte le premier niveau sur votre propre corpus avant de compter dessus. Comme le moteur teste séparément les étiquettes acceptées de chaque niveau, un échec confiant comme le cas du khmer apparaît sous forme d'erreurs dans l'échantillon de certification, à condition que l'échantillon couvre ce type d'entrée. Le contrat distributional peut aussi utiliser le vecteur de probabilités complet de Laya, ce qui convient aux questions subjectives sur lesquelles les annotateurs se partagent.

Dans le Solo Mode, un modèle de décision se place dans labeling_models et comme premier niveau de confidence_routing. Le Solo Mode demande aussi un modèle génératif sous revision_models, parce que les modèles de décision ne peuvent pas écrire les prompts et les règles que produit sa boucle de révision.

Tester un modèle de décision avant une exécution complète

Faites tourner le modèle sur quelques dizaines d'items que vous avez déjà étiquetés avant d'y faire passer tout un corpus. Le bouton Try on 10 items du Solo Mode le fait pour un prompt, et dans le moteur, potato label run suivi de potato label status montre combien d'étiquettes il manque encore au seuil de chaque niveau et quelle source a produit des erreurs. Un niveau qui échoue à la certification n'accepte rien, et il envoie les items au-dessus de son seuil à des personnes plutôt qu'au LLM, ce qui dépense le budget d'étiquettes humaines sur des items que le LLM aurait pu étiqueter. Si le niveau du modèle de décision échoue sans cesse à la certification, retirez-le de la cascade.

Pour aller plus loin