View a markdown version of this page

Registra automaticamente i modelli SageMaker AI con Model Registry SageMaker - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Registra automaticamente i modelli SageMaker AI con Model Registry SageMaker

Quando si registra un modello MLFlow, SageMaker AI crea automaticamente una corrispondente versione del Model Package Group e del Model Package nel SageMaker Model Registry. Ciò consente di:

  • Registra i modelli dall'SDK MLFlow o dall'interfaccia utente MLFlow.

  • Allega una specifica di inferenza per consentire l'implementazione diretta agli endpoint AI. SageMaker

  • Registra le metriche di valutazione incluse come scheda modello nel Model Package.

  • Gestisci le fasi del ciclo di vita del modello (staging, produzione) e gli stati (in sospeso, attivi) tramite alias MLFlow.

  • Controlla le transizioni e la registrazione del ciclo di vita con le chiavi di condizione IAM e le policy basate sui tag delle risorse.

Nota

La sincronizzazione del Model Registry è una funzionalità opzionale. Per abilitarla, chiama l'UpdateMlflowAppAPI UpdateMlflowTrackingServer o con la sincronizzazione del Model Registry abilitata.

Registra e registra i modelli

Questa sezione spiega come preparare un modello per la registrazione, registrarlo nel SageMaker Model Registry e visualizzarlo in Studio.

Autorizzazioni IAM richieste

Il ruolo del server di tracciamento MLFlow o del servizio IAM dell'app MLFlow deve disporre delle seguenti autorizzazioni per registrare i modelli:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateModelPackageGroup", "sagemaker:DescribeModelPackageGroup", "sagemaker:CreateModelPackage", "sagemaker:UpdateModelPackage", "sagemaker:AddTags", "sagemaker:CreateAction", "sagemaker:AddAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }

Per ulteriori informazioni sulla configurazione dei ruoli IAM per le app MLFlow, consulta. Configura le autorizzazioni IAM per le app MLFlow

Prepara un modello per la registrazione

Prima di registrare un modello, lo si registra durante una sessione di allenamento. È possibile allegare facoltativamente una specifica di inferenza e metriche di valutazione, che vengono trasferite all' SageMaker AI Model Package al momento della registrazione.

Registra un modello

Utilizzate MLFlow SDK per registrare un modello durante una sessione di addestramento:

import mlflow from sklearn.datasets import make_regression from sklearn.ensemble import RandomForestRegressor from mlflow.models import infer_signature mlflow.set_tracking_uri(arn) mlflow.set_experiment("my-experiment") params = {"n_estimators": 3, "random_state": 42} X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False) with mlflow.start_run() as run: model = RandomForestRegressor(**params).fit(X, y) signature = infer_signature(X, model.predict(X)) mlflow.log_params(params) model_info = mlflow.sklearn.log_model( model, name="sklearn-model", signature=signature, input_example=X[:3] )

Registra una specifica di inferenza (opzionale)

Una specifica di inferenza definisce l'immagine del contenitore e i tipi di istanza necessari per implementare il modello. Se collegata a un modello registrato prima della registrazione, la specifica di inferenza viene automaticamente inclusa nell'AI Model SageMaker Package. Ciò consente l'implementazione diretta a un endpoint SageMaker AI dal Model Registry senza configurazioni aggiuntive.

sagemaker_mlflow.log_inference_specification()Da utilizzare per allegare una specifica di inferenza:

import sagemaker_mlflow # Get the logged model's artifact location logged_model = mlflow.MlflowClient().get_logged_model(model_info.model_id) inference_spec = { "Containers": [{ "Image": "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-inference:2.0.0-cpu-py310", "ModelDataSource": { "S3DataSource": { "S3Uri": logged_model.artifact_location + "/", "S3DataType": "S3Prefix", "CompressionType": "None", } }, }], "SupportedRealtimeInferenceInstanceTypes": ["ml.m5.xlarge"], } sagemaker_mlflow.log_inference_specification( model_info.model_id, inference_specification=inference_spec )
Nota

La specifica di inferenza deve seguire lo stesso schema del InferenceSpecification parametro dell' SageMaker API AICreateModelPackage. Per ulteriori informazioni, consulta l'InferenceSpecification SageMaker AI API Reference.

Dopo la registrazione, la specifica di inferenza viene archiviata come sagemaker_inference_specification.json artefatto insieme al modello:

Artefatto della specifica di inferenza nell'interfaccia utente MLFlow.

Metriche di valutazione dei log (opzionali)

Le metriche di valutazione forniscono un riepilogo standardizzato delle prestazioni del modello. Se registrati prima della registrazione, i risultati della valutazione vengono inclusi nell' SageMaker AI Model Package come scheda modello, rendendo le metriche visibili nell' SageMaker AI Model Registry e in Studio. Per ulteriori informazioni sulle schede modello, consulta Schema delle schede modello.

sagemaker_mlflow.evaluate()Da utilizzare per registrare le metriche di valutazione:

import sagemaker_mlflow import pandas as pd eval_df = pd.DataFrame(X, columns=["f1", "f2", "f3"]) eval_df["target"] = y dataset = mlflow.data.from_pandas( eval_df, source="s3://my-bucket/eval.csv", name="eval_set", targets="target" ) sagemaker_mlflow.evaluate(model_info, data=dataset, model_type="regressor")

Dopo la registrazione, il gruppo di valutazione viene archiviato come artefatto insieme al modello:

Artefatto del gruppo di valutazione nell'interfaccia utente MLFlow.

Registra i modelli utilizzando l'SDK

mlflow.register_model()Da utilizzare per registrare un modello nel Model SageMaker Registry. Questo crea automaticamente un Model Package Group (se non esiste) e una versione del Model Package in SageMaker AI.

model_uri = f"runs:/{run.info.run_id}/sklearn-model" mv = mlflow.register_model(model_uri, "MyRegisteredModel") print(f"Name: {mv.name}") print(f"Version: {mv.version}")

È inoltre possibile utilizzare create_registered_model per creare il Model Package Group prima di registrare le versioni:

from mlflow import MlflowClient client = MlflowClient() client.create_registered_model("MyRegisteredModel", tags={"team": "ml-platform"})

Dopo la registrazione, la versione del modello viene contrassegnata con l' SageMaker AI Model Package ARN. Puoi recuperarlo come segue:

mv = client.get_model_version("MyRegisteredModel", mv.version) sm_arn = mv.tags["sagemaker.model_package_arn"] print(f"SageMaker Model Package ARN: {sm_arn}")
Nota

Non utilizzare spazi in un nome del modello. Mentre MLFlow supporta i nomi dei modelli con spazi, SageMaker AI Model Package no. Il processo di registrazione ha esito negativo se si utilizzano spazi nel nome del modello.

Registrazione dei modelli utilizzando l’interfaccia utente MLflow

È possibile registrare un modello con il Model SageMaker Registry direttamente nell'interfaccia utente di MLFlow. Nel menu Modelli, scegliete Crea modello. I modelli creati in questo modo vengono aggiunti automaticamente al Registro dei SageMaker modelli.

Creazione del registro dei modelli all’interno dell’interfaccia utente MLflow.

Dopo aver registrato log per un modello durante il tracciamento dell’esperimento, vai alla pagina dell’esecuzione nell’interfaccia utente di MLflow. Scegliete il riquadro Artifacts e scegliete Registra modello per registrare la versione del modello sia in MLFlow che nel Model Registry. SageMaker

Registrate una versione del modello dalla pagina di esecuzione di MLFlow.

Visualizzazione dei modelli registrati in Studio

In Studio, scegli Modelli nel riquadro di navigazione a sinistra per visualizzare i modelli registrati. Per ulteriori informazioni su come iniziare a usare Studio, consulta Launch Amazon SageMaker Studio.

La pagina della versione del pacchetto modello in Studio mostra le metriche di formazione e i set di dati sincronizzati da MLFlow:

Panoramica della versione del pacchetto modello che mostra le metriche di formazione in Studio.

La scheda Train mostra anche la posizione del set di dati di addestramento e il percorso degli artefatti del modello:

Set di dati di addestramento e artefatti del modello in Studio.

Se hai registrato una specifica di inferenza, la sezione Contenitore mostra l'immagine del contenitore, la posizione dei dati del modello e i tipi di istanza supportati. La fase di distribuzione mostra Approvato, a indicare che il modello è pronto per la distribuzione:

Contenitori e tipi di istanza con specifiche di inferenza in Studio.

Se hai registrato le metriche di valutazione, la scheda Evaluate mostra le metriche delle prestazioni come punteggio, errore medio assoluto e errore quadratico medio:

Metriche di valutazione in Studio.

La scheda Evaluate mostra anche la posizione del set di dati di valutazione:

Set di dati di valutazione in Studio.

La scheda Lineage mostra la relazione tra l'esperimento MLFlow, la versione del modello, l'immagine del contenitore e il Model Package Group:

Grafico della derivazione del modello che mostra l'associazione dell'esperimento MLFlow in Studio.

Limitazioni

  • Non utilizzare spazi nei nomi dei modelli. SageMaker AI Model Package non supporta gli spazi e la registrazione ha esito negativo.

  • Se al ruolo manca l's3:GetObjectautorizzazione sui percorsi degli artefatti, le specifiche di inferenza e gli artefatti di valutazione vengono ignorati automaticamente. Il Model Package viene ancora creato ma senza dati di inferenza o valutazione.

  • Se il ruolo è mancante sagemaker:CreateAction osagemaker:AddAssociation, le associazioni di derivazione tra il modello MLFlow e il pacchetto di modelli SageMaker AI vengono ignorate automaticamente. Ciò non influisce sulla registrazione o sulla gestione del ciclo di vita.

  • L'impostazione di una fase e di uno stato del ciclo di vita non abilita il pulsante Deploy in Studio. Per abilitare la distribuzione con un clic dall'interfaccia utente, è necessario impostare separatamente lo stato di approvazione del Model Package utilizzando l'API AIApproved. SageMaker

  • Le modifiche alle autorizzazioni del ruolo del servizio IAM dell'app MLFlow possono richiedere fino a 15 minuti per avere effetto.

Gestisci le fasi del ciclo di vita del modello

Dopo aver registrato un modello, puoi gestirne la fase e lo stato del ciclo di vita nell' SageMaker AI Model Registry impostando gli alias della versione del modello MLFlow. Quando si imposta un alias utilizzando la convenzione di denominazione del ciclo di vita, il ciclo di vita del pacchetto di modelli AI corrispondente viene aggiornato automaticamente. SageMaker Per ulteriori informazioni sulle fasi del ciclo di vita del modello, consulta Stage models nel Model Registry. https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry-staging-construct.html

Autorizzazioni IAM per la gestione del ciclo di vita

Il ruolo del server di tracciamento MLFlow o del servizio IAM dell'app MLFlow richiede l'sagemaker:UpdateModelPackageautorizzazione per gestire le fasi del ciclo di vita. Questa azione è già inclusa nelle autorizzazioni di registrazione di base descritte sopra.

Limita le transizioni del ciclo di vita

Puoi utilizzare le chiavi di condizione IAM per controllare quali transizioni del ciclo di vita un ruolo è autorizzato a eseguire:

  • sagemaker:ModelLifeCycle/stage— La fase del ciclo di vita in fase di definizione. Valori:staging,. production

  • sagemaker:ModelLifeCycle/stageStatus— Lo stato del ciclo di vita da impostare. Valori:pending,. active

Esempio: Negare le promozioni di produzione

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:UpdateModelPackage", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ModelLifeCycle/stage": "production" } } } ] }

Esempio: consentire solo transizioni staging/pending

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:UpdateModelPackage", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ModelLifeCycle/stage": "staging", "sagemaker:ModelLifeCycle/stageStatus": "pending" } } } ] }

Quando una transizione del ciclo di vita viene negata dalla policy IAM, l'operazione di alias MLFlow ha esito negativo e restituisce un errore al chiamante.

Per ulteriori informazioni sul ciclo di vita del modello in SageMaker AI Model Registry, consulta Deploy a Model from the Registry.

Imposta le fasi del ciclo di vita utilizzando l'SDK

Utilizza il seguente formato di alias per impostare la fase e lo stato del ciclo di vita:

sagemakerlifecycle-stage-status

Fasi supportate:, staging production

Stati supportati:pending, active

Nota

I valori dello stadio e dello stato devono essere in minuscolo. Gli alias MLFlow supportano solo caratteri minuscoli, quindi valori come o non sono validi. Production Active

import mlflow mlflow.set_tracking_uri(arn) client = mlflow.MlflowClient() # Set lifecycle to staging/pending client.set_registered_model_alias("MyRegisteredModel", "sagemakerlifecycle-staging-pending", version) # Promote to production/active client.set_registered_model_alias("MyRegisteredModel", "sagemakerlifecycle-production-active", version)

Puoi verificare lo stato del ciclo di vita descrivendo l'AI Model Package: SageMaker

import boto3 sm = boto3.client("sagemaker") mv = client.get_model_version("MyRegisteredModel", version) sm_arn = mv.tags["sagemaker.model_package_arn"] desc = sm.describe_model_package(ModelPackageName=sm_arn) print(desc["ModelLifeCycle"]["Stage"]) # "staging" print(desc["ModelLifeCycle"]["StageStatus"]) # "pending"

Imposta le fasi del ciclo di vita utilizzando l'interfaccia utente MLFlow

Nell'interfaccia utente di MLFlow, accedi alla pagina della versione del modello. In Alias, aggiungete un alias utilizzando il formato. sagemakerlifecycle-stage-status Il ciclo di vita del pacchetto modello SageMaker AI viene aggiornato automaticamente quando l'alias viene salvato.

Impostazione di un alias per il ciclo di vita nell'interfaccia utente di MLFlow.

Visualizza le fasi del ciclo di vita in Studio

In Studio, accedi a Models e seleziona una versione del Model Package. La fase e lo stato del ciclo di vita sono visualizzati nella scheda Dettagli in Model Lifecycle.

Fase e stato del ciclo di vita del modello in Studio.

Impedisci gli aggiornamenti ai modelli registrati utilizzando i tag delle risorse

È possibile utilizzare le condizioni basate sui tag delle risorse IAM per impedire al server di tracciamento MLFlow o al ruolo dell'app MLFlow di modificare specifici gruppi di pacchetti modello o versioni di pacchetti modello specifici. Ciò consente di bloccare l'aggiornamento di singoli modelli tramite MLFlow dopo aver raggiunto un determinato stato.

Ad esempio, la seguente politica nega qualsiasi UpdateModelPackage Model Package che abbia il tag: locked=true

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:UpdateModelPackage", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/locked": "true" } } } ] }

Quando questa policy è collegata al server di tracciamento o al ruolo dell'app MLFlow, qualsiasi tentativo di aggiornare il ciclo di vita di un Model Package contrassegnato da MLFlow ha esito negativo e viene generato un errore di accesso negato.

Allo stesso modo, puoi limitare CreateModelPackage un Model Package Group per impedire la registrazione di nuove versioni:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:CreateModelPackage", "Resource": "arn:aws:sagemaker:region:account:model-package-group/group-name/*", "Condition": { "StringEquals": { "aws:ResourceTag/frozen": "true" } } } ] }
Nota

Le condizioni basate sui tag delle risorse si basano sui tag applicati alla risorsa SageMaker AI Model Package Group o Model Package (non al modello MLFlow). Puoi applicare questi tag tramite la console SageMaker AI, la CLI o l'SDK. Tag-based le condizioni possono richiedere fino a 15 minuti per propagarsi dopo l'applicazione di un tag.