View a markdown version of this page

Eseguire il training di un modello - 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à.

Eseguire il training di un modello

In questa fase, scegli un algoritmo di addestramento ed esegui un job di addestramento per il modello. L'SDK Amazon SageMaker Python fornisce classi per addestrare il modello orchestrando il ciclo di vita dell'apprendimento automatico (ML) accedendo alle funzionalità di SageMaker intelligenza artificiale per la formazione e le AWS infrastrutture, come Amazon Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon EC2), Amazon Simple Storage Service (Amazon S3). Per ulteriori informazioni sugli algoritmi integrati, consulta Built-in algoritmi e modelli preaddestrati in Amazon SageMaker.

Scegliere l'algoritmo di addestramento

Per scegliere l'algoritmo giusto per il tuo set di dati, in genere devi valutare diversi modelli per trovare i modelli più adatti ai tuoi dati. Per semplicità, l'algoritmo Algoritmo XGBoost con Amazon AI SageMaker integrato di SageMaker intelligenza artificiale viene utilizzato in questo tutorial senza la valutazione preliminare dei modelli.

Suggerimento

Se desideri che l' SageMaker intelligenza artificiale trovi un modello appropriato per il tuo set di dati tabulari, utilizza Amazon SageMaker Autopilot che automatizza una soluzione di apprendimento automatico. Per ulteriori informazioni, consulta SageMaker Pilota automatico.

Creazione ed esecuzione di un processo di addestramento

Dopo aver capito quale modello utilizzare, inizia a creare un lavoro di formazione. Questo tutorial utilizza l'algoritmo integrato XGBoost.

Per eseguire il processo di addestramento di un modello
  1. Importa l'SDK Amazon SageMaker Python e inizia recuperando le informazioni di base dalla tua sessione AI corrente. SageMaker

    from sagemaker.core.helper.session_helper import Session, get_execution_role sagemaker_session = Session() region = sagemaker_session.boto_region_name print(f"AWS Region: {region}") role = get_execution_role() print(f"RoleArn: {role}")
    Nota

    Controlla la versione dell'SDK SageMaker Python eseguendo. sagemaker.__version__ Questo tutorial è basato su sagemaker>=3.0. Se l'SDK non è aggiornato, installa la versione più recente eseguendo il seguente comando:

    ! pip install -qU sagemaker

    Se esegui questa installazione nelle istanze di SageMaker Studio o notebook in uscita, devi aggiornare manualmente il kernel per completare l'applicazione dell'aggiornamento della versione.

    Questa procedura restituisce le seguenti informazioni:

    • region— La AWS regione corrente in cui è in esecuzione l'istanza del notebook SageMaker AI.

    • role: il ruolo IAM utilizzato dall'istanza del notebook.

  2. Crea una configurazione di addestramento e imposta gli iperparametri per l'algoritmo XGBoost.

    Create una ModelTrainer utilizzando la sagemaker.train.ModelTrainer classe con gli iperparametri passati direttamente nel costruttore. Nel codice di esempio seguente, ModelTrainer viene denominato. xgb_model_trainer

    from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute, OutputDataConfig from sagemaker.core import image_uris s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container = image_uris.retrieve("xgboost", region, "1.2-1") print(container) compute = Compute( instance_type='ml.m4.xlarge', instance_count=1, volume_size_in_gb=5 ) xgb_model_trainer = ModelTrainer( training_image=container, role=role, compute=compute, output_data_config=OutputDataConfig(s3_output_path=s3_output_location), hyperparameters={ "max_depth": "5", "eta": "0.2", "gamma": "4", "min_child_weight": "6", "subsample": "0.7", "objective": "binary:logistic", "num_round": "1000" } )

    Per costruire l' SageMaker IAModelTrainer, specifica i seguenti parametri:

    • training_image: specifica l'URI dell'immagine del container di addestramento. In questo esempio, l'URI del contenitore di formazione SageMaker AI XGBoost viene specificato utilizzando. image_uris.retrieve

    • role— Il ruolo AWS Identity and Access Management (IAM) che l' SageMaker IA utilizza per eseguire attività per tuo conto (ad esempio, leggere i risultati della formazione, richiamare artefatti del modello da Amazon S3 e scrivere i risultati della formazione su Amazon S3).

    • compute— Un oggetto di Compute configurazione che specifica il tipo e il numero di istanze di calcolo ML di Amazon EC2 da utilizzare per l'addestramento dei modelli. Per questo esercizio di addestramento, utilizza una singola istanza ml.m4.xlarge con 4 CPU, 16 GB di memoria, uno storage Amazon Elastic Block Store (Amazon EBS) e prestazioni di rete elevate. Per ulteriori informazioni sui tipi di istanze di calcolo EC2, consulta Amazon EC2 Instance Types. Per ulteriori informazioni sulla fatturazione, consulta i prezzi di Amazon. SageMaker

    • hyperparameters— Un dizionario di iperparametri per l'algoritmo di addestramento. Tutti i valori devono essere stringhe.

    Suggerimento

    Se desideri eseguire un training distribuito di modelli di deep learning di grandi dimensioni, come le reti neurali convoluzionali (CNN) e i modelli di elaborazione del linguaggio naturale (NLP), utilizza SageMaker AI Distributed per il parallelismo dei dati o il parallelismo dei modelli. Per ulteriori informazioni, consulta Formazione distribuita in Amazon SageMaker AI.

    Suggerimento

    Puoi anche regolare gli iperparametri utilizzando la funzione di ottimizzazione degli iperparametri AI. SageMaker Per ulteriori informazioni, consulta Ottimizzazione automatica dei modelli con AI SageMaker.

  3. Configura l'input dei dati per l'allenamento.

    Utilizza la classe InputData per configurare un flusso di input di dati per l'addestramento. Il seguente codice di esempio mostra come configurare gli oggetti InputData per utilizzare i set di dati di addestramento e di convalida che hai caricato su Amazon S3 nella sezione Suddivisione del set di dati in set di dati di addestramento, di convalida e di test.

    from sagemaker.train.configs import InputData train_input = InputData( channel_name="train", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/train.csv") ) validation_input = InputData( channel_name="validation", data_source="s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv") )
  4. Inizia l'addestramento del modello.

    Per iniziare l'addestramento dei modelli, richiama il train metodo del trainer con i set di dati di addestramento e convalida. Per impostazione predefinita, il train metodo visualizza i registri di avanzamento e attende il completamento dell'addestramento.

    xgb_model_trainer.train(input_data_config=[train_input, validation_input])

    Per ulteriori informazioni sull’addestramento del modello, consulta Addestra un modello con Amazon SageMaker. Questo processo di addestramento del tutorial potrebbe richiedere fino a 10 minuti.

    Al termine del processo di formazione, è possibile scaricare un rapporto di formazione XGBoost e un rapporto di profilazione generato da Debugger. SageMaker Il report di addestramento XGBoost offre informazioni dettagliate sull'avanzamento e sui risultati dell'addestramento, ad esempio la funzione di perdita rispetto all'iterazione, l'importanza della funzionalità, la matrice di confusione, le curve di precisione e altri risultati statistici dell'addestramento. Ad esempio, puoi trovare la seguente curva di perdita del report di addestramento XGBoost che indica chiaramente che esiste un problema di overfitting.

    Il grafico nel report sull’addestramento di XGBoost.

    Esegui il seguente codice per specificare l'URI del bucket S3 in cui vengono generati i report di addestramento di Debugger e controlla se i report esistono.

    training_job = xgb_model_trainer._latest_training_job rule_output_path = training_job.output_data_config.s3_output_path + "/" + training_job.training_job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive

    Scarica i report di addestramento e di profiling XGBoost di Debugger nel workspace corrente:

    ! aws s3 cp {rule_output_path} ./ --recursive

    Esegui il seguente script IPython per ottenere il collegamento al file del report di addestramento XGBoost:

    from IPython.display import FileLink, FileLinks display("Click link below to view the XGBoost Training report", FileLink("CreateXgboostReport/xgboost_report.html"))

    Il seguente script IPython restituisce il collegamento al file del report di profiling di Debugger che mostra riepiloghi e dettagli relativi a utilizzo delle risorse dell'istanza EC2, risultati del rilevamento dei colli di bottiglia del sistema e risultati di profiling delle operazioni Python:

    # Note: In V3, debugger rule outputs can be accessed via the SageMaker console # or the boto3 DescribeTrainingJob API (DebugRuleEvaluationStatuses field). # Example using boto3: # import boto3 # sm = boto3.client("sagemaker") # resp = sm.describe_training_job(TrainingJobName=training_job.training_job_name) # rule_statuses = resp["DebugRuleEvaluationStatuses"] profiler_report_name = "ProfilerReport-1234567890" display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
    Suggerimento

    Se i report HTML non visualizzano i grafici nella JupyterLab vista, devi scegliere Trust HTML nella parte superiore dei report.

    Per identificare i problemi di formazione, come l'overfitting, la scomparsa dei gradienti e altri problemi che impediscono la convergenza del modello, utilizzate SageMaker Debugger e intraprendete azioni automatiche durante la prototipazione e l'addestramento dei modelli ML. Per ulteriori informazioni, consulta SageMaker Debugger Amazon. Per trovare un'analisi completa dei parametri del modello, consulta il taccuino di esempio Explainability with Amazon Debugger. SageMaker

Ora hai un modello XGBoost addestrato. SageMaker L'intelligenza artificiale memorizza l'artefatto del modello nel bucket S3. Per trovare la posizione dell'artefatto del modello, esegui il codice seguente per stampare l'attributo: model_data

xgb_model_trainer._latest_training_job.model_artifacts.s3_model_artifacts
Suggerimento

Per misurare le distorsioni che possono verificarsi durante ogni fase del ciclo di vita del machine learning (raccolta dati, addestramento e ottimizzazione dei modelli e monitoraggio dei modelli ML utilizzati per la previsione), usa Clarify. SageMaker Per ulteriori informazioni, consulta Spiegabilità del modello. Per un esempio completo, consulta il taccuino di esempio Fairness and Explainability with Clarify. SageMaker