Eseguire il training di un modello - Amazon SageMaker

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 questo passaggio, scegli un algoritmo di addestramento ed esegui un processo di addestramento per il modello. Amazon SageMaker Python SDK fornisce stimatori di framework e stimatori generici per addestrare il modello mentre orchestrate il ciclo di vita dell'apprendimento automatico (ML) accedendo alle SageMaker funzionalità per la formazione e alle infrastrutture AWS , come Amazon Elastic Container Registry (Amazon), Amazon Elastic Compute Cloud (Amazon), ECR Amazon Simple Storage EC2 Service (Amazon S3). Per ulteriori informazioni sugli stimatori di framework SageMaker integrati, consulta Frameworks nella documentazione di Amazon Python SageMaker . SDK Per ulteriori informazioni sugli algoritmi integrati, consulta Algoritmi integrati 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 SageMaker XGBoostalgoritmo con Amazon SageMaker integrato viene utilizzato in tutto questo tutorial senza la valutazione preliminare dei modelli.

Suggerimento

Se desideri SageMaker trovare un modello appropriato per il tuo set di dati tabulari, usa Amazon SageMaker Autopilot che automatizza una soluzione di machine learning. Per ulteriori informazioni, consulta SageMaker Pilota automatico.

Creazione ed esecuzione di un processo di addestramento

Dopo aver capito quale modello usare, inizia a costruire uno stimatore per l'addestramento. SageMaker Questo tutorial utilizza l'algoritmo XGBoost integrato per lo stimatore generico. SageMaker

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

    import sagemaker region = sagemaker.Session().boto_region_name print("AWS Region: {}".format(region)) role = sagemaker.get_execution_role() print("RoleArn: {}".format(role))

    Questa procedura restituisce le seguenti informazioni:

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

    • role— Il IAM ruolo utilizzato dall'istanza del notebook.

    Nota

    Controlla la SDK versione di SageMaker Python eseguendo. sagemaker.__version__ Questo tutorial è basato su sagemaker>=2.20. Se non SDK è aggiornato, installa l'ultima versione eseguendo il seguente comando:

    ! pip install -qU sagemaker

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

  2. Crea uno XGBoost stimatore usando la classe. sagemaker.estimator.Estimator Nel codice di esempio seguente, lo XGBoost stimatore è denominato. xgb_model

    from sagemaker.debugger import Rule, ProfilerRule, rule_configs from sagemaker.session import TrainingInput s3_output_location='s3://{}/{}/{}'.format(bucket, prefix, 'xgboost_model') container=sagemaker.image_uris.retrieve("xgboost", region, "1.2-1") print(container) xgb_model=sagemaker.estimator.Estimator( image_uri=container, role=role, instance_count=1, instance_type='ml.m4.xlarge', volume_size=5, output_path=s3_output_location, sagemaker_session=sagemaker.Session(), rules=[ Rule.sagemaker(rule_configs.create_xgboost_report()), ProfilerRule.sagemaker(rule_configs.ProfilerReport()) ] )

    Per costruire lo SageMaker stimatore, specificate i seguenti parametri:

    • image_uri— Specificare l'immagine del contenitore di formazione. URI In questo esempio, il contenitore SageMaker XGBoost di formazione URI viene specificato utilizzandosagemaker.image_uris.retrieve.

    • role— Il ruolo AWS Identity and Access Management (IAM) SageMaker utilizzato per eseguire attività per tuo conto (ad esempio, leggere i risultati della formazione, chiamare gli artefatti del modello di chiamata da Amazon S3 e scrivere i risultati della formazione su Amazon S3).

    • instance_counteinstance_type: il tipo e il numero di istanze di calcolo Amazon EC2 ML da utilizzare per la formazione dei modelli. Per questo esercizio di formazione, utilizzi una singola ml.m4.xlarge istanza con CPUs 4,16 GB di memoria, uno storage Amazon Elastic Block Store (AmazonEBS) e prestazioni di rete elevate. Per ulteriori informazioni sui tipi di istanze di EC2 calcolo, consulta Amazon EC2 Instance Types. Per ulteriori informazioni sulla fatturazione, consulta i SageMaker prezzi di Amazon.

    • volume_size— La dimensione, in GB, del volume di EBS archiviazione da collegare all'istanza di formazione. Deve avere spazio sufficiente per archiviare i dati di addestramento se utilizzi la modalità File (la modalità File è attivata per impostazione predefinita). Se non specifichi questo parametro, il suo valore predefinito è 30.

    • output_path— Il percorso verso il bucket S3 in cui vengono SageMaker archiviati gli artefatti del modello e i risultati dell'allenamento.

    • sagemaker_session— L'oggetto della sessione che gestisce le interazioni con le SageMaker API operazioni e gli altri AWS servizi utilizzati dal processo di formazione.

    • rules— Specificare un elenco di regole integrate nel SageMaker Debugger. In questo esempio, la create_xgboost_report() regola crea un XGBoost report che fornisce informazioni dettagliate sull'avanzamento e sui risultati della formazione e la ProfilerReport() regola crea un rapporto sull'utilizzo delle risorse di EC2 calcolo. Per ulteriori informazioni, consulta SageMaker Report interattivo del debugger per XGBoost.

    Suggerimento

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

  3. Imposta gli iperparametri per l'XGBoostalgoritmo chiamando il metodo dello stimatore. set_hyperparameters Per un elenco completo degli XGBoost iperparametri, vedere. XGBoostiperparametri

    xgb_model.set_hyperparameters( max_depth = 5, eta = 0.2, gamma = 4, min_child_weight = 6, subsample = 0.7, objective = "binary:logistic", num_round = 1000 )
    Suggerimento

    È inoltre possibile regolare gli iperparametri utilizzando la funzione di ottimizzazione degli SageMaker iperparametri. Per ulteriori informazioni, consulta Ottimizzazione automatica del modello con SageMaker.

  4. Utilizza la classe TrainingInput per configurare un flusso di input di dati per l'addestramento. Il seguente codice di esempio mostra come configurare gli oggetti TrainingInput 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.session import TrainingInput train_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv" ) validation_input = TrainingInput( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv" )
  5. Per iniziare l'addestramento del modello, chiama il metodo fit dello strumento di valutazione con i set di dati di addestramento e di convalida. Impostando wait=True, il metodo fit visualizza i log di avanzamento e attende il completamento dell'addestramento.

    xgb_model.fit({"train": train_input, "validation": validation_input}, wait=True)

    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, puoi scaricare un rapporto di XGBoost formazione e un rapporto di profilazione generati da Debugger. SageMaker Il rapporto sull'XGBoostallenamento offre informazioni dettagliate sui progressi e sui risultati dell'allenamento, ad esempio la funzione di perdita rispetto all'iterazione, l'importanza delle funzionalità, la matrice di confusione, le curve di precisione e altri risultati statistici dell'allenamento. Ad esempio, è possibile trovare la seguente curva di perdita nel rapporto sull'XGBoostallenamento, che indica chiaramente l'esistenza di un problema di sovradattamento.

    Il grafico nel rapporto di XGBoost allenamento.

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

    rule_output_path = xgb_model.output_path + "/" + xgb_model.latest_training_job.job_name + "/rule-output" ! aws s3 ls {rule_output_path} --recursive

    Scarica i report di XGBoost formazione e profilazione del Debugger nell'area di lavoro corrente:

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

    Eseguite lo IPython script seguente per ottenere il collegamento al file del rapporto di formazione: XGBoost

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

    IPythonLo script seguente restituisce il collegamento al file del rapporto di profilazione del Debugger che mostra riepiloghi e dettagli sull'utilizzo delle risorse dell'EC2istanza, sui risultati del rilevamento dei colli di bottiglia del sistema e sui risultati della profilazione delle operazioni in Python:

    profiler_report_name = [rule["RuleConfigurationName"] for rule in xgb_model.latest_training_job.rule_job_summary() if "Profiler" in rule["RuleConfigurationName"]][0] profiler_report_name display("Click link below to view the profiler report", FileLink(profiler_report_name+"/profiler-output/profiler-report.html"))
    Suggerimento

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

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

Ora disponi di un modello addestrato. XGBoost SageMaker memorizza l'artefatto del modello nel tuo bucket S3. Per trovare la posizione dell'artefatto del modello, esegui il seguente codice per stampare l'attributo model_data dello strumento di valutazione xgb_model:

xgb_model.model_data
Suggerimento

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