Etapa 5: Implantar o modelo do Amazon EC2 - 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 5: Implantar o modelo do Amazon EC2

Para obter previsões, implante seu modelo no Amazon EC2 usando a Amazon. SageMaker

Implante o modelo em serviços SageMaker de hospedagem

Para hospedar um modelo por meio do Amazon EC2 usando a Amazon SageMaker, implante o modelo no qual você treinou Criar e executar um trabalho de treinamento chamando o deploy método do xgb_model estimador. Ao chamar o método deploy, você deve especificar o número e o tipo de instâncias EC2 ML que você deseja usar para hospedar o endpoint.

import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
  • initial_instance_count (int) – O número de instâncias para implantar o modelo.

  • instance_type (str) – O tipo de instância em que você deseja operar seu modelo implantado.

  • serializer(int) — Serializa dados de entrada de vários formatos (uma NumPy matriz, lista, arquivo ou buffer) em uma string formatada em CSV. Usamos isso porque o algoritmo XGBoost aceita arquivos de entrada no formato CSV.

O deploy método cria um modelo implantável, configura o endpoint dos serviços de SageMaker hospedagem e inicia o endpoint para hospedar o modelo. Para obter mais informações, consulte o método SageMaker genérico de classe de implantação do Estimator no SDK do Amazon Python SageMaker . Para recuperar o nome do endpoint gerado pelo método deploy, execute o seguinte código:

xgb_predictor.endpoint_name

Isso deve retornar o nome do endpoint do xgb_predictor. O formato do nome do endpoint é "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS". Esse endpoint permanece ativo na instância de ML e você pode fazer previsões instantâneas a qualquer momento, a menos que o desligue posteriormente. Copie o nome desse endpoint e salve-o para reutilizá-lo e fazer previsões em tempo real em outros lugares nas instâncias do SageMaker Studio ou SageMaker do notebook.

dica

Para saber mais sobre como compilar e otimizar seu modelo para implantação em instâncias ou dispositivos Edge do Amazon EC2, consulte Compilar e implantar modelos com o Neo.

(Opcional) Use o SageMaker Predictor para reutilizar o endpoint hospedado

Depois de implantar o modelo em um endpoint, você pode configurar um novo SageMaker preditor emparelhando o endpoint e fazendo previsões em tempo real continuamente em qualquer outro notebook. O código de exemplo a seguir mostra como usar a classe SageMaker Predictor para configurar um novo objeto preditor usando o mesmo endpoint. Reutilize o nome do endpoint que você usou para o xgb_predictor.

import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )

O Preditor xgb_predictor_reuse se comporta exatamente da mesma forma que o xgb_predictor original. Para obter mais informações, consulte a classe SageMaker Predictor no SDK do Amazon SageMaker Python.

(Opcional) Faça previsões com o Transformador de Lotes

Em vez de hospedar um endpoint em produção, você pode executar um trabalho único de inferência em lote para fazer previsões em um conjunto de dados de teste usando a transformação em lote. SageMaker Depois que o treinamento do modelo for concluído, você poderá estender o estimador a um transformer objeto, que se baseia na classe SageMakerTransformer. O transformador em lote lê os dados de entrada de um bucket S3 especificado e faz previsões.

Para executar um trabalho de transformação em lote
  1. Execute o código a seguir para converter as colunas de recursos do conjunto de dados de teste em um arquivo CSV e fazer o upload para o bucket do S3:

    X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
  2. Especifique URIs de entrada e saída do bucket S3 para o trabalho de transformação em lote, conforme mostrado a seguir:

    # The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
  3. Crie um objeto transformador especificando o número mínimo de parâmetros: os parâmetros instance_count e instance_type para executar o trabalho de transformação em lote e output_path para salvar os dados de previsão, conforme mostrado a seguir:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Inicie o trabalho de transformação em lote executando o método transform() do objeto transformer conforme mostrado a seguir:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Quando o trabalho de transformação em lote estiver concluído, SageMaker cria os dados de test.csv.out previsão salvos no batch_output caminho, que devem estar no seguinte formato:s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. Execute o seguinte AWS CLI para fazer o download dos dados de saída do trabalho de transformação em lote:

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

    Isso deve criar o arquivo test.csv.out no diretório de trabalho atual. Você poderá ver os valores flutuantes que são previstos com base na regressão logística do trabalho de treinamento do XGBoost.