Treinar um modelo - SageMaker IA da Amazon

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 SageMaker recursos de IA para treinamento e as infraestruturas, como Amazon AWS Elastic Container Registry (Amazon ECR), Amazon Elastic Compute Cloud (Amazon), Amazon Simple Storage Service (Amazon S3)). EC2 Para obter mais informações sobre estimadores de estrutura integrados de SageMaker IA, 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 XGBoost algoritmo com Amazon SageMaker AI integrado de SageMaker IA é usado ao longo deste tutorial sem a pré-avaliação dos modelos.

dica

Se você quiser que a SageMaker IA encontre um modelo apropriado para seu conjunto de dados tabular, 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 criar um estimador de SageMaker IA para treinamento. Este tutorial usa o algoritmo XGBoost incorporado para o estimador genérico de SageMaker IA.

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 de IA. 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 notebook SageMaker AI está sendo executada.

    • role: O perfil 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 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 estimador de SageMaker IA, 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 XGBoost treinamento de SageMaker IA é especificado usandosagemaker.image_uris.retrieve.

    • role— A função AWS Identity and Access Management (IAM) que a SageMaker IA usa para realizar tarefas em seu nome (por exemplo, ler resultados de treinamento, chamar artefatos de modelos 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 (Amazon EBS) e um alto desempenho de rede. Para obter mais informações sobre os tipos de instância de EC2 computação, consulte Tipos de EC2 instância da Amazon. Para obter mais informações sobre faturamento, consulte os preços do Amazon SageMaker AI.

    • 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 S3, onde a SageMaker IA 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 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 (NLP), use o SageMaker AI Distributed para paralelismo de dados ou paralelismo de modelos. Para obter mais informações, consulte Treinamento distribuído na Amazon SageMaker AI.

  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, consulteXGBoost hiperparâ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 hiperparâmetros de SageMaker IA. Para obter mais informações, consulte Ajuste automático do modelo com SageMaker IA.

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

    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 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 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 A IA armazena o artefato do modelo em seu bucket 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.