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:
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:
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.
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
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:
La scheda Train mostra anche la posizione del set di dati di addestramento e il percorso degli artefatti del modello:
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:
Se hai registrato le metriche di valutazione, la scheda Evaluate mostra le metriche delle prestazioni come punteggio, errore medio assoluto e errore quadratico medio:
La scheda Evaluate mostra anche la posizione del set di dati di valutazione:
La scheda Lineage mostra la relazione tra l'esperimento MLFlow, la versione del modello, l'immagine del contenitore e il Model Package Group:
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:CreateActionosagemaker: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 AI
Approved. SageMakerLe 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,.productionsagemaker: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- Il ciclo di vita del pacchetto modello SageMaker AI viene aggiornato automaticamente quando l'alias viene salvato.stage-status
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.
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.