Treinar um modelo - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Treinar um modelo

Nesta etapa, você escolhe um algoritmo de treinamento e executa um trabalho de treinamento para o modelo. O Amazon SageMaker Python SDK fornece estimadores de estrutura e estimadores genéricos para treinar seu modelo enquanto orquestra o ciclo de vida do aprendizado de máquina (ML) acessando os recursos de treinamento e as SageMaker infraestruturas, AWS como Amazon Elastic Container Registry (Amazon), Amazon Elastic Compute Cloud (Amazon), ECR Amazon Simple Storage Service (Amazon S3). EC2 Para obter mais informações sobre estimadores de estrutura SageMaker integrados, consulte Frameworks na documentação do Amazon Python SageMaker . SDK Para obter mais informações sobre algoritmos integrados, consulte Algoritmos integrados e modelos pré-treinados na Amazon SageMaker.

Escolha do algoritmo de treinamento

Para escolher o algoritmo certo para seu conjunto de dados, você normalmente precisa avaliar modelos diferentes para encontrar os modelos mais adequados aos seus dados. Para simplificar, o algoritmo SageMaker XGBoostalgoritmo com a Amazon SageMaker incorporado é usado ao longo deste tutorial sem a pré-avaliação dos modelos.

dica

Se você quiser SageMaker encontrar um modelo adequado para seu conjunto de dados tabulares, use o Amazon SageMaker Autopilot, que automatiza uma solução de aprendizado de máquina. Para obter mais informações, consulte SageMaker Piloto automático.

Criar e executar um trabalho de treinamento

Depois de descobrir qual modelo usar, comece a construir um SageMaker estimador para treinamento. Este tutorial usa o algoritmo XGBoost incorporado para o estimador SageMaker genérico.

Para executar um trabalho de treinamento de modelo
  1. Importe o Amazon SageMaker Python SDK e comece recuperando as informações básicas da sua sessão atual. SageMaker

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

    Isso retorna as informações a seguir:

    • region— A AWS região atual em que a instância do SageMaker notebook está sendo executada.

    • role— A IAM função usada pela instância do notebook.

    nota

    Verifique a SDK versão do SageMaker Python executando. sagemaker.__version__ Este tutorial é baseado em sagemaker>=2.20. Se o SDK estiver desatualizado, instale a versão mais recente executando o seguinte comando:

    ! pip install -qU sagemaker

    Se você executar essa instalação nas instâncias existentes do SageMaker Studio ou do notebook, precisará atualizar manualmente o kernel para concluir a aplicação da atualização da versão.

  2. Crie um XGBoost estimador usando a sagemaker.estimator.Estimator classe. No código de exemplo a seguir, o XGBoost estimador é nomeado. 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()) ] )

    Para construir o SageMaker estimador, especifique os seguintes parâmetros:

    • image_uri— Especifique a imagem do contêiner de treinamentoURI. Neste exemplo, o contêiner SageMaker XGBoost de treinamento URI é especificado usandosagemaker.image_uris.retrieve.

    • role— A função AWS Identity and Access Management (IAM) SageMaker usada para realizar tarefas em seu nome (por exemplo, ler resultados de treinamento, chamar artefatos de modelo do Amazon S3 e gravar resultados de treinamento no Amazon S3).

    • instance_counte instance_type — O tipo e o número de instâncias computacionais do Amazon EC2 ML a serem usadas para treinamento de modelos. Para este exercício de treinamento, você usa uma única ml.m4.xlarge instância, que tem CPUs 4.16 GB de memória, um armazenamento Amazon Elastic Block Store (AmazonEBS) e um alto desempenho de rede. Para obter mais informações sobre os tipos de instância de EC2 computação, consulte Tipos de EC2instância da Amazon. Para obter mais informações sobre faturamento, consulte os SageMaker preços da Amazon.

    • volume_size— O tamanho, em GB, do volume de EBS armazenamento a ser anexado à instância de treinamento. Ela deve ser grande o suficiente para armazenar dados de treinamento se você usar o modo File (o modo File está ligado por padrão). Se você não especificar esse parâmetro, o seu valor será 30 por padrão.

    • output_path— O caminho para o bucket do S3, onde SageMaker armazena o artefato do modelo e os resultados do treinamento.

    • sagemaker_session— O objeto da sessão que gerencia as interações com SageMaker API as operações e outros AWS serviços que o trabalho de treinamento usa.

    • rules— Especifique uma lista de regras integradas do SageMaker Debugger. Neste exemplo, a create_xgboost_report() regra cria um XGBoost relatório que fornece informações sobre o progresso e os resultados do treinamento, e a ProfilerReport() regra cria um relatório sobre a utilização dos recursos EC2 computacionais. Para obter mais informações, consulte SageMaker Relatório interativo do depurador para XGBoost.

    dica

    Se você quiser executar um treinamento distribuído de modelos de aprendizado profundo de grande porte, como modelos de redes neurais convolucionais (CNN) e de processamento de linguagem natural (), use SageMaker Distributed para paralelismo de dados ou paralelismo de modelos. NLP Para obter mais informações, consulte Treinamento distribuído na Amazon SageMaker.

  3. Defina os hiperparâmetros para o XGBoost algoritmo chamando o set_hyperparameters método do estimador. Para obter uma lista completa dos XGBoost hiperparâmetros, consulteXGBoosthiperparâmetros.

    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 )
    dica

    Você também pode ajustar os hiperparâmetros usando o recurso de otimização de SageMaker hiperparâmetros. Para obter mais informações, consulte Ajuste automático do modelo com SageMaker.

  4. Use a classe TrainingInput para configurar um fluxo de entrada de dados para treinamento. O código de exemplo a seguir mostra como configurar objetos TrainingInput para usar os conjuntos de dados de treinamento e validação que você enviou para o Amazon S3 na seção Divida o conjunto de dados em treinamento, validação e teste.

    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. Para iniciar o treinamento do modelo, chame o método fit do estimador com os conjuntos de dados de treinamento e validação. Ao configurar wait=True, o método fit exibe os logs de progresso e aguarda o treinamento ser concluído para retornar os resultados.

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

    Para obter mais informações sobre treinamento de modelo, consulte Treine um modelo com a Amazon SageMaker. Esse trabalho de treinamento tutorial pode levar até 10 minutos.

    Depois que o trabalho de treinamento for concluído, você poderá baixar um relatório de XGBoost treinamento e um relatório de criação de perfil gerados pelo SageMaker Debugger. O relatório de XGBoost treinamento oferece informações sobre o progresso e os resultados do treinamento, como a função de perda em relação à iteração, importância do recurso, matriz de confusão, curvas de precisão e outros resultados estatísticos do treinamento. Por exemplo, você pode encontrar a seguinte curva de perda no relatório de XGBoost treinamento, que indica claramente que há um problema de sobreajuste.

    O gráfico no relatório XGBoost de treinamento.

    Execute o código a seguir para especificar o bucket do S3 em URI que os relatórios de treinamento do Debugger são gerados e verifique se os relatórios existem.

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

    Baixe os relatórios de XGBoost treinamento e criação de perfil do Debugger para o espaço de trabalho atual:

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

    Execute o IPython script a seguir para obter o link do arquivo do relatório de XGBoost treinamento:

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

    O IPython script a seguir retorna o link do arquivo do relatório de criação de perfil do Debugger, que mostra resumos e detalhes da utilização dos recursos da EC2 instância, dos resultados da detecção de gargalos do sistema e dos resultados da criação de perfil da operação do 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"))
    dica

    Se os HTML relatórios não renderizarem gráficos na JupyterLab exibição, você deverá escolher Confiar HTML na parte superior dos relatórios.

    Para identificar problemas de treinamento, como sobreajuste, redução de gradientes e outros problemas que impedem a convergência do modelo, use o SageMaker Debugger e execute ações automatizadas ao criar protótipos e treinar seus modelos de ML. Para obter mais informações, consulte SageMaker Depurador Amazon. Para encontrar uma análise completa dos parâmetros do modelo, consulte o caderno de exemplo de explicabilidade com o Amazon SageMaker Debugger.

Agora você tem um XGBoost modelo treinado. SageMaker armazena o artefato do modelo em seu bucket do S3. Para encontrar a localização do artefato do modelo, execute o código a seguir para imprimir o atributo model_data do estimador xgb_model:

xgb_model.model_data
dica

Para medir os vieses que podem ocorrer durante cada estágio do ciclo de vida do ML (coleta de dados, treinamento e ajuste de modelos e monitoramento de modelos de ML implantados para previsão), use o Clarify. SageMaker Para obter mais informações, consulte Explicabilidade do modelo. Para ver um end-to-end exemplo, consulte o caderno de exemplo Fairness and Explicability with SageMaker Clarify.