Versions de modèles
L'écran Versions de modèles permet d'enregistrer les versions d'un modèle avec l'empreinte de ses poids et sa licence, de demander leur approbation, de déployer une version en canari ou à 100 pour cent, et de revenir en arrière. Chemin dans le portail : /llm/versions. Il est utilisé par les administrateurs du tenant qui publient des versions de modèles ; les approbations sont décidées par un tenant_admin ou un security_officer dans la Boîte des approbations. L'écran est construit dans portal/src/screens/kit-data.tsx (ModelVersions, modelVersionsCfg, modelRollbackCfg, Rollout).
Ce que montre l'écran
- La section Modèle avec le sélecteur Choisissez un modèle, rempli par
GET /v1/models(nom affiché et identifiant). Sans modèle : « Aucun modèle enregistré. Enregistrez un modèle dans le registre des modèles pour gérer ses versions. » et le lien Ouvrir le registre des modèles. - Une fois un modèle choisi, deux onglets : Versions et État du déploiement.
Onglet Versions : la table Versions (GET /v1/models/{model_id}/versions, la plus ancienne d'abord), un bouton d'actualisation et Nouvelle version.
| Colonne | Contenu |
|---|---|
| Version | Libellé de version, par exemple 1.2.0. |
| Statut | draft, pending_approval, canary, active, superseded ou rolled_back. |
| Licence (SPDX) | Expression SPDX de la licence. |
| Empreinte des poids | Colonne liée à weights.digest. |
| Créé | Date de création. |
Vide : « Aucune version. Enregistrez une version avec l'empreinte de ses poids et sa licence. » Un clic sur une ligne ouvre un panneau avec l'enregistrement complet.
Onglet État du déploiement : la section État du déploiement avec le JSON de GET /v1/models/{model_id}/rollout (active_version, canary_version, canary_percent et l'historique history des publications, canaris et retours arrière), puis le panneau Revenir en arrière (« Interrompt le canari ou restaure la version précédente. ») avec un champ Raison et Exécuter.
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Choisissez un modèle | Choisit le modèle dont les versions sont affichées. | GET /v1/models | lecteurs LLM |
| Nouvelle version | Panneau avec Version (obligatoire), Licence (SPDX) (par exemple Apache-2.0), Poids (JSON source, digest, size_bytes, obligatoire) et Capacités ; Créer enregistre la version en draft. | POST /v1/models/{model_id}/versions | portail : tenant_admin ; serveur : tenant_admin, platform_admin |
| Demander l'approbation (menu de ligne) | Ouvre une demande d'approbation pour une version draft (statut pending_approval) et affiche la réponse avec son approval_id. | POST /v1/models/{model_id}/versions/{version}/approval | portail : tenant_admin ; serveur : tenant_admin, platform_admin |
| Déployer (menu de ligne) | Formulaire avec Part canari (%) (défaut 10, de 1 à 100) et Raison (tous deux obligatoires). 100 publie la version en active ; moins lance un canari sur cette part du trafic. | POST /v1/models/{model_id}/versions/{version}/rollout | portail : tenant_admin ; serveur : tenant_admin, platform_admin |
| Clic sur une ligne | Panneau avec l'enregistrement de la version. | aucun | lecteurs LLM |
| Bouton d'actualisation | Relit les versions. | GET /v1/models/{model_id}/versions | lecteurs LLM |
| Exécuter (Revenir en arrière) | Après la confirmation « Revenir en arrière ? Cette action sensible est consignée dans le journal d'audit. », interrompt le canari en cours ou restaure la version active précédente. | POST /v1/models/{model_id}/rollback | portail : tenant_admin ; serveur : tenant_admin, platform_admin |
Rôles
- Lecture (
GET /v1/models/{model_id}/versions,GET /v1/models/{model_id}/rollout) : les rôlesREADdeservices/control-plane/src/eai/domains/llm/lifecycle.py:tenant_admin,platform_admin,security_officer,finops,developer,auditor,viewer. - Écriture (versions, demande d'approbation, déploiement, retour arrière) :
ADMINdu même fichier,tenant_adminetplatform_admin. Le portail n'affiche les boutons qu'auxROLES.modelWritersdeportal/src/lib/kit.ts, soittenant_admin; les autres rôles voient « Nécessite l'un de ces rôles » à la place du formulaire Revenir en arrière. - Approbation : la demande est décidée par
tenant_adminousecurity_officer; son demandeur ne peut pas la décider. - Chaque route demande un tenant (
tenant_requiredsinon).
Tâches courantes
Publier une première version
-
Choisir le modèle. Sélectionnez-le dans Choisissez un modèle. Résultat attendu : les onglets Versions et État du déploiement. En cas d'échec : « Aucun modèle enregistré » signifie qu'il faut d'abord enregistrer le modèle dans le Registre des modèles.
-
Enregistrer la version. Cliquez sur Nouvelle version, saisissez Version et Licence (SPDX), et remplissez Poids, pour que les poids publiés puissent être vérifiés plus tard :
{"source": "https://<models-host>/llama/1.0.0", "digest": "sha256:<64-hex>", "size_bytes": 16000000000}<64-hex>: le SHA-256 des poids, 64 caractères hexadécimaux en minuscules. Lasourcecommence parhttps://,oci://,hf://,s3://ouregistry://. Résultat attendu : notification Créé, une ligne avec Statutdraft. En cas d'échec : « La version du modèle est invalide :<champs>. » cite les champs fautifs. -
Demander l'approbation. Menu de ligne > Demander l'approbation. Résultat attendu : la réponse montre
pending_approvalet unapproval_id. En cas d'échec : « La version du modèle est à l'état<statut>, cette transition est interdite. » signifie que la version n'est pasdraft. -
La faire approuver. Un
tenant_adminou unsecurity_officerautre que vous l'approuve dans la Boîte des approbations. Résultat attendu : l'approbation estapproved. En cas d'échec : une approbation ne se demande que sur une versiondraft; si elle est rejetée, enregistrez une nouvelle version. -
Publier. Menu de ligne > Déployer, Part canari (%)
100, une Raison, puis Déployer. Résultat attendu : Statutactive, et État du déploiement l'affiche commeactive_version. En cas d'échec : « La version<version>n'a pas d'approbation accordée : elle ne peut pas être publiée. »
Lancer un canari, puis revenir en arrière
- Lancer le canari. Sur une version approuvée, Déployer avec Part canari (%)
10et une Raison, pour qu'un appelant sur dix reçoive la nouvelle version (un même appelant reçoit toujours la même version). Résultat attendu : Statutcanary, État du déploiement montrecanary_versionetcanary_percent10. En cas d'échec : « Le modèle<model_id>n'a aucune version active : un canari exige une référence, publiez d'abord à 100 pour cent. » - Revenir en arrière si besoin. Dans État du déploiement, saisissez une Raison dans Revenir en arrière, cliquez sur Exécuter et confirmez. Résultat attendu : la version canari passe en
rolled_backet la version active garde tout le trafic. En cas d'échec : « Le modèle<model_id>n'a aucune version précédente vers laquelle revenir. »
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
« La version du modèle est invalide : <champs>. » (model_version_invalid, 422) | version, licence, weights.source, weights.digest ou weights.size_bytes faux. | Corrigez les champs cités : empreinte sha256: suivie de 64 caractères hexadécimaux, taille supérieure à 0, licence SPDX. |
« La version <version> du modèle <model_id> existe déjà. » (model_version_exists, 409) | Libellé de version en double. | Utilisez une nouvelle Version. |
« La version du modèle est à l'état <statut>, cette transition est interdite. » (model_version_state, 409) | Approbation demandée sur une version qui n'est pas draft, ou déploiement de la version déjà active. | Vérifiez le Statut avant l'action. |
« La version <version> n'a pas d'approbation accordée : elle ne peut pas être publiée. » (model_version_not_approved, 403) | Aucune approbation accordée pour cette version. | Demandez l'approbation et faites-la décider. |
« Le modèle <model_id> n'a aucune version active : un canari exige une référence, publiez d'abord à 100 pour cent. » (model_rollout_no_baseline, 409) | Canari sans version active. | Publiez une première version à 100. |
« Le modèle <model_id> n'a aucune version précédente vers laquelle revenir. » (model_rollback_unavailable, 409) | Rien à annuler. | Aucune action nécessaire, ou publiez une autre version. |
« Le paramètre canary_percent est invalide. » (parameter_invalid, 422) | Part canari (%) hors de 1 à 100. | Saisissez un entier de 1 à 100. |
| Colonne Empreinte des poids vide | La liste renvoie l'empreinte dans le champ plat weights_digest, alors que la colonne lit weights.digest. | Ouvrez le panneau de la ligne pour lire weights_digest. |
| « Nécessite l'un de ces rôles » à la place de Revenir en arrière, pas de bouton Nouvelle version | Votre rôle n'est pas tenant_admin. | Demandez à un administrateur du tenant. |