Etapa 4: 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á.

Etapa 4: Treinar um 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 SageMaker de treinamento e as infraestruturas, como Amazon Elastic Container Registry (Amazon ECR) Container Service (Amazon ECR), Amazon AWS Elastic Compute Cloud (Amazon EC2), Amazon Simple Storage Service (Amazon S) Simple Storage (Amazon S3). 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 Use algoritmos SageMaker integrados da Amazon ou modelos pré-treinados.

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 Use o algoritmo XGBoost 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 ter 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 integrado do XGBoost para o estimador SageMaker genérico.

Para executar um trabalho de treinamento de modelo
  1. Importe o SDK do Amazon SageMaker Python 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 função do IAM usada pela instância de caderno.

    nota

    Verifique a versão do SDK 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 estimador XGBoost usando a classe sagemaker.estimator.Estimator. No código de exemplo a seguir, o estimador XGBoost é 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 o URI da imagem de contêiner de treinamento. Neste exemplo, o URI do contêiner de treinamento SageMaker XGBoost é especificado usando. sagemaker.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, artefatos de modelos de chamadas do Amazon S3 e gravar resultados de treinamento no Amazon S3).

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

    • volume_size – O tamanho, em GB, do volume de armazenamento do EBS para anexar à 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 de sessão que gerencia as interações com as operações SageMaker da API 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 relatório do XGBoost que fornece insights sobre o progresso e os resultados do treinamento, e a regra ProfilerReport() cria um relatório sobre a utilização de recursos de computação do EC2. Para ter mais informações, consulte SageMaker Relatório de treinamento do Debugger 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 (NLP), use SageMaker Distributed para paralelismo de dados ou paralelismo de modelos. Para ter mais informações, consulte Treinamento distribuído na Amazon SageMaker.

  3. Defina os Hiperparâmetros para o Algoritmo do XGBoost chamando o método set_hyperparameters do estimador. Para obter uma lista completa de hiperparâmetros do XGBoost, consulte Hiperparâmetros do XGBoost.

    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 ter mais informações, consulte Execute o 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.

    Após a conclusão do trabalho de treinamento, você pode baixar um relatório de treinamento do XGBoost e um relatório de criação de perfil gerado pelo Debugger. SageMaker O relatório de treinamento do XGBoost oferece insights 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 treinamento do XGBoost, que indica claramente que há um problema de ajuste excessivo.

    O gráfico no relatório de treinamento do XGBoost mostra a comparação entre a perda do trem e a perda de validação durante o processo de treinamento.

    Execute o código a seguir para especificar o URI do bucket do S3 em que os relatórios de treinamento do Depurador 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

    Faça o download dos relatórios de treinamento e criação de perfil do Depurador do XGBoost para o espaço de trabalho atual:

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

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

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

    O script IPython a seguir retorna o link do arquivo do relatório de criação de perfil do Depurador, que mostra resumos e detalhes da utilização de recursos da instância EC2, 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 relatórios HTML não renderizarem gráficos na JupyterLab exibição, você deverá escolher Confiar em 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 ter mais informações, consulte Use o Amazon SageMaker Debugger para depurar e melhorar o desempenho do modelo. 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 modelo XGBoost 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 ter 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.