Les commandes et le code restent en anglais dans toutes les langues. Remplacez les espaces réservés en majuscules par les valeurs de votre compte et de votre tâche payante ; ne collez pas de vraies clés dans des carnets ou des journaux partagés.
De la configuration à une exécution reproductible
- Décrire Modèle, enseignant et objectif
- Délimiter Données, confidentialité et budgets
- Valider Compatibilité de l’adaptateur et de l’environnement
- Figer le plan Paramètres résolus et empreintes
- Exécuter Uniquement le projet examiné
Décrire: Modèle, enseignant et objectif. Délimiter: Données, confidentialité et budgets. Valider: Compatibilité de l’adaptateur et de l’environnement. Figer le plan: Paramètres résolus et empreintes. Exécuter: Uniquement le projet examiné
Définir un projet et protéger ses données
Il s’agit du contrat de projet complet du schéma 1.0. Enregistrez l’exemple du mode automatique dans training.json. Résolvez les chemins relatifs depuis ce fichier, indiquez l’identifiant réel d’un modèle de référence inclus dans votre offre et gardez la clé API dans l’environnement secret du processus. La configuration sélectionne séparément le modèle de référence et le modèle étudiant entraînable ; les poids du modèle de référence ne sont jamais téléchargés.
- Les clés inconnues sont rejetées. Tous les chemins doivent rester dans la racine du projet et les répertoires de sortie qui lui appartiennent.
- Le partage avec le modèle de référence se limite aux sources d’entraînement approuvées. Les données de validation et de test final ne lui sont jamais transmises.
- TrainingClient reste disponible pour les intégrations existantes fondées sur les tâches payantes et les sessions.
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
schema_version |
string |
"1.0" |
Utilisez exactement 1.0. Les autres versions de schéma sont rejetées tant qu’elles ne sont pas explicitement prises en charge. |
mode |
enum |
Obligatoire / sans valeur par défaut | Obligatoire : automatic ou advanced. Le mode Automatique résout les valeurs par défaut compatibles ; le mode Avancé expose les contrôles explicites.
|
objective |
string |
Obligatoire / sans valeur par défaut | Description de tâche obligatoire, de 10 à 4 000 caractères. Précisez le public, les capacités et le résultat attendu. |
model.path |
string |
Obligatoire / sans valeur par défaut | Chemin obligatoire vers un répertoire de modèle local dans la racine du projet, ou identifiant de dépôt associé à une révision immuable. Jamais un endpoint d’inférence du modèle de référence. |
model.adapter |
string |
Obligatoire / sans valeur par défaut | Identifiant obligatoire d’un adaptateur enregistré. transformers-causal-lm sélectionne l’adaptateur Transformers pour modèles de langage causal. |
model.revision |
string | null |
null |
Les modèles locaux sont identifiés par empreinte. Les dépôts exigent une révision immuable de 40 ou 64 caractères. |
teacher.provider |
string |
Obligatoire / sans valeur par défaut | Identifiant fournisseur obligatoire issu de votre offre payante active. Il ne transfère pas la propriété du modèle. |
teacher.reference_model_id |
integer |
Obligatoire / sans valeur par défaut | Entier positif obligatoire parmi les modèles inclus dans cette offre fournisseur ; remplacez les espaces réservés. |
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
data.sources |
string[] |
[] |
Chemins vers les sources d’entraînement JSONL locales comportant un champ text. Les leçons du modèle de référence peuvent les compléter si teacher_sharing vaut approved_only. |
data.teacher_sharing |
enum |
"approved_only" |
approved_only autorise le contenu d’entraînement examiné ; none interdit l’envoi de contenu client à l’enseignant. Les données d’évaluation réservées sont toujours exclues. |
data.validation_path |
string | null |
null |
Fichier JSONL de validation indépendante facultatif. En son absence, le plan examiné définit une partition déterministe avant l’entraînement. |
data.test_path |
string |
Obligatoire / sans valeur par défaut | Fichier de test final indépendant obligatoire, jamais utilisé par la préparation avec l’enseignant ni par l’optimisation. |
data.deduplicate |
boolean |
true |
Supprimez les exemples dupliqués ou qui se chevauchent entre les partitions ; signalez les exclusions sans révéler de texte privé. |
data.seed |
integer |
42 |
Entier non négatif pour les partitions déterministes et une initialisation reproductible lorsque le moteur le permet. |
{
"schema_version": "1.0",
"mode": "automatic",
"objective": "Classify support messages as billing, account_access or technical_issue.",
"model": {"path": "./models/student", "adapter": "transformers-causal-lm", "revision": null},
"teacher": {"provider": "openai", "reference_model_id": 123},
"data": {
"sources": ["./data/train.jsonl"], "teacher_sharing": "none",
"validation_path": "./data/validation.jsonl", "test_path": "./data/test.jsonl",
"deduplicate": true, "seed": 42
},
"runtime": {"target": "customer_datacenter", "devices": "auto"},
"training": {"method": "auto"},
"curriculum": {"topics": ["intent", "ambiguous_requests", "class_balance"], "max_improvement_cycles": 3, "stop_on_regression": true},
"budgets": {"max_training_minutes": 120, "max_teacher_requests": 1000, "max_storage_gib": 20},
"checkpoints": {"keep_last": 3},
"evaluation": {"rubric": "./rubric.json", "baseline_required": true},
"output": {"directory": "./runs/german-001", "format": "safetensors"}
}
Choisir le mode d’entraînement automatique ou avancé
Le mode automatique résout une fois des paramètres compatibles et les consigne dans le plan examiné. Le mode avancé exige des paramètres explicites et n’accepte que des combinaisons compatibles d’architecture, de méthode, de précision et de matériel. Les valeurs par défaut ne garantissent ni la mémoire nécessaire ni les performances dans tous les cas. Toute combinaison non prise en charge échoue avant les téléchargements coûteux ou la mise à jour des poids.
- SFT met à jour les paramètres admissibles du modèle. LoRA et QLoRA produisent des adaptateurs qui nécessitent le modèle de base correspondant.
- En DDP, le lanceur approuvé fournit les rangs des nœuds et les paramètres de rendez-vous ; les nœuds doivent s’accorder sur le nombre de processus, les versions et les empreintes.
- L’architecture du modèle, le tokenizer et les limites de contexte restent obligatoires. Chaque famille supplémentaire nécessite un adaptateur avec des capacités propres vérifiées.
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
runtime.target |
enum |
Obligatoire / sans valeur par défaut | Obligatoire : fusionpointai_hosting, customer_datacenter ou colab. Sélectionne un environnement existant ; n’achète pas de matériel. |
runtime.devices |
"auto" | integer[] |
"auto" |
auto sélectionne les périphériques approuvés compatibles ; une liste explicite contient des indices GPU visibles, uniques et non négatifs. |
runtime.distributed.backend |
enum |
"none" |
none pour un processus, ou ddp avec un adaptateur pris en charge et un lanceur multi-processus approuvé. |
runtime.distributed.nodes |
integer |
1 |
Entier positif. Une valeur supérieure à un exige DDP, un accès convenu aux nœuds, des rangs et un rendez-vous sécurisé ; cette valeur ne réserve aucune capacité. |
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
training.method |
enum |
"auto" |
Valeur parmi auto, SFT, LoRA ou QLoRA. Le mode automatique résout auto ; le mode avancé utilise une méthode prise en charge explicitement. |
training.epochs |
number | "auto" |
"auto" |
Nombre positif fini ou auto uniquement en mode Automatique ; le nombre effectif d’étapes est aussi limité par la durée et les ressources approuvées. |
training.learning_rate |
number | "auto" |
"auto" |
Nombre positif fini inférieur à 1 ou auto uniquement en mode Automatique. Les politiques de l’adaptateur et commerciales peuvent fixer des limites plus strictes. |
training.batch_size |
integer | "auto" |
"auto" |
Entier positif par périphérique ou auto uniquement en mode Automatique ; l’adéquation à la mémoire est vérifiée avant exécution. |
training.gradient_accumulation_steps |
integer | "auto" |
"auto" |
Entier positif ou auto uniquement en mode Automatique. La taille effective du lot tient compte du nombre de processus et de l’accumulation. |
training.max_sequence_length |
integer | "auto" |
"auto" |
Entier positif dans les limites du tokenizer et du modèle, ou auto uniquement en mode Automatique ; le contexte du modèle n’est jamais prolongé silencieusement. |
training.precision |
enum |
"auto" |
auto, fp32, fp16 ou bf16 selon le matériel et le moteur ; valeur explicite en mode Avancé. |
training.lora.rank |
integer |
16 |
Rang positif de l’adaptateur. Utilisé uniquement avec LoRA/QLoRA et les modules cibles admissibles. |
training.lora.alpha |
number |
32 |
Valeur positive finie de mise à l’échelle de l’adaptateur. Utilisée uniquement avec LoRA/QLoRA. |
training.lora.dropout |
number |
0.05 |
Valeur finie comprise entre 0 inclus et 1 exclu. Utilisée uniquement avec LoRA/QLoRA. |
training.lora.target_modules |
"auto" | string[] |
"auto" |
auto résout les noms de modules pris en charge dans le plan ; vous pouvez aussi fournir une liste non vide de noms admissibles. |
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
curriculum.topics |
string[] |
[] |
Noms de thèmes ordonnés. Une liste vide permet au mode Automatique de proposer les prérequis ; le mode Avancé exige une séquence explicite et examinée. |
curriculum.max_improvement_cycles |
integer |
3 |
Entier positif, maximum 10. Arrêtez plus tôt si un budget est épuisé, s’il n’y a plus de progrès ou en cas de régression. |
curriculum.stop_on_regression |
boolean |
true |
Si true, arrête l’amélioration en cas de régression définie par la grille. Si false, une régression entraîne tout de même un échec de l’acceptation finale. |
{
"schema_version": "1.0",
"mode": "advanced",
"model": {"path": "./models/student", "adapter": "transformers-causal-lm", "revision": null},
"teacher": {"provider": "openai", "reference_model_id": 123},
"objective": "Classify support messages as billing, account_access or technical_issue.",
"data": {"sources": ["./data/train.jsonl"], "teacher_sharing": "none", "validation_path": "./data/validation.jsonl", "test_path": "./data/test.jsonl"},
"runtime": {"target": "customer_datacenter", "devices": [0, 1], "distributed": {"backend": "ddp", "nodes": 1}},
"training": {
"method": "LoRA",
"epochs": 3,
"learning_rate": 0.0002,
"batch_size": 1,
"gradient_accumulation_steps": 16,
"max_sequence_length": 2048,
"precision": "bf16",
"lora": {"rank": 16, "alpha": 32, "dropout": 0.05}
},
"curriculum": {
"topics": ["intent", "ambiguous_requests", "class_balance"],
"max_improvement_cycles": 3,
"stop_on_regression": true
},
"checkpoints": {"every_steps": 100, "keep_last": 3, "resume_validation": "strict"},
"budgets": {"max_training_minutes": 120, "max_teacher_requests": 1000, "max_storage_gib": 20},
"evaluation": {"rubric": "./rubric.json", "baseline_required": true},
"output": {"directory": "./runs/german-advanced-001", "format": "safetensors"}
}
Définir des budgets limités et des critères d’acceptation mesurables
Chaque projet dispose de budgets explicites de durée, de requêtes à l’enseignant et de stockage. Arrêtez-vous dès qu’un budget est épuisé, qu’un contrôle d’intégrité échoue, qu’une régression survient ou qu’il n’y a plus de progrès. Enregistrez un état de reprise valide et expliquez les critères non satisfaits. Une grille définit des tâches d’acceptation indépendantes ; elle ne transforme pas un score d’exemple en résultat obtenu.
- La grille d’exemple utilise une échelle normalisée de 0 à 1 et des critères obligatoires distincts. Tous les critères obligatoires doivent être satisfaits.
- Toute modification des données, du modèle, de l’évaluation, de la topologie ou des budgets exige un nouveau plan examiné, plutôt qu’une reprise forcée avec des paramètres incompatibles.
- Les exports contiennent des fichiers de modèle ou d’adaptateur validés, le tokenizer et les manifestes, mais ni identifiants secrets, ni données de cache sans rapport, ni code de modèle non examiné.
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
budgets.max_training_minutes |
number |
Obligatoire / sans valeur par défaut | Budget d’exécution positif fini en minutes, obligatoire ; comprend le temps réel de préparation et d’évaluation après le démarrage de l’exécution. |
budgets.max_teacher_requests |
integer |
Obligatoire / sans valeur par défaut | Entier positif obligatoire ; compte les tentatives de préparation, d’examen et de nouvelle tentative. Échec fermé avant dépassement. |
budgets.max_storage_gib |
number |
Obligatoire / sans valeur par défaut | Budget positif fini de stockage possédé, en GiB et obligatoire ; couvre données, points de contrôle et artefacts. Ne supprimez jamais de fichiers sans rapport. |
checkpoints.every_steps |
integer |
100 |
Intervalle positif en étapes entre points de contrôle. Enregistrez aussi un point atomique valide lors d’une mise en pause réussie. |
checkpoints.keep_last |
integer |
3 |
Entier de 1 à 5. Supprimez uniquement les anciens points de contrôle appartenant à l’exécution après validation d’un plus récent. |
checkpoints.resume_validation |
enum |
"strict" |
strict uniquement. Rejette toute modification des empreintes du modèle, des données, de la configuration, de l’évaluateur ou de la topologie distribuée. |
evaluation.rubric |
string |
Obligatoire / sans valeur par défaut | Chemin obligatoire vers une grille valide, avec évaluateurs épinglés et critères obligatoires mesurables. |
evaluation.baseline_required |
boolean |
true |
true uniquement dans le présent contrat. Évaluez la référence intacte avant toute mise à jour des poids. |
output.directory |
string |
Obligatoire / sans valeur par défaut | Nouveau répertoire d’exécution dédié obligatoire. Les exécutions existantes peuvent être examinées ou reprises, jamais écrasées par run.
|
output.format |
enum |
"safetensors" |
safetensors ou adapters, uniquement si pris en charge. Un export d’adaptateur exige le modèle de base et le tokenizer épinglés. |
| Champ ou interface | Type ou résultat | Valeur par défaut ou code de sortie | Comportement et validation |
|---|---|---|---|
schema_version |
string |
"1.0" |
Schéma de grille 1.0, distinct de la version du paquet. |
name |
string |
Obligatoire / sans valeur par défaut | Nom non vide de grille obligatoire, utilisé dans les rapports. |
scale.minimum |
number |
0 |
Borne inférieure du score normalisé : 0 pour ce schéma. |
scale.maximum |
number |
1 |
Borne supérieure du score normalisé : 1 pour ce schéma. |
criteria |
object[] |
Obligatoire / sans valeur par défaut | Liste non vide. Chaque critère obligatoire doit réussir ; les identifiants doivent être uniques. |
criteria[].id |
string |
Obligatoire / sans valeur par défaut | Identifiant stable de critère obligatoire, conservé dans les rapports. |
criteria[].description |
string | null |
null |
Texte explicatif facultatif. Une description n’est pas un évaluateur sémantique. |
criteria[].metric |
string |
Obligatoire / sans valeur par défaut | Métrique enregistrée obligatoire : exact_match, macro_f1, text_similarity, chrf ou évaluateur personnalisé enregistré. |
criteria[].minimum_score |
number |
Obligatoire / sans valeur par défaut | Seuil fini obligatoire entre 0 et 1. Un seuil d’exemple ne garantit pas le résultat. |
regression.maximum_score_drop |
number |
0.02 |
Baisse absolue normalisée maximale autorisée par rapport à la référence intacte, de 0 à 1 ; évaluée pour chaque critère conservé. |
final_test.path |
string |
Obligatoire / sans valeur par défaut | Obligatoire ; doit désigner le même fichier indépendant que data.test_path. |
final_test.allow_training_use |
boolean |
false |
false uniquement. Rejette toute configuration qui permet aux réponses du test réservé d’entrer dans l’entraînement ou les entrées de l’enseignant. |
SDK 0.2.0 CONFIGURATION RULES
Unknown fields, duplicate IDs, nonfinite numbers and unsafe paths are rejected.
All model, data, rubric and output paths must resolve inside the project root.
Automatic mode resolves "auto" once; save all resolved values in the plan manifest.
Advanced mode requires explicit method, epochs, learning_rate, batch_size,
gradient_accumulation_steps, max_sequence_length and precision.
SFT does not consume LoRA options. LoRA/QLoRA require a compatible adapter.
Model files and pinned revisions are verified within the project root.
Use the CLI for explicit GPU indexes; Python callers can set CUDA_VISIBLE_DEVICES
before starting Python and keep runtime.devices set to auto.
No automatic execution of untrusted model code, shell commands or plugins.
All three budgets must be finite, positive and explicitly supplied.
Storage includes owned checkpoints, datasets and artifacts, not unrelated files.
Held-out test data must not be sent to the teacher or used for weight updates.
CLI overrides are limited to the documented flags; never silently override a plan.
RUBRIC RULES
Every criterion requires a registered metric and minimum_score; descriptions are not semantic evaluators.
Built-in metrics: exact_match, macro_f1, text_similarity and chrf.
Custom deterministic scorers use register_evaluator(name, scorer, version="...").
Evaluator versions and scoring configuration are pinned in the plan.
0 <= minimum_score <= 1 for the example's normalized scale.
All required criteria must pass; do not average away a failed criterion.
The final_test.path must match data.test_path; allow_training_use must be false.
Scores and budgets in examples are requested settings, not measured results.