Implante o modelo na 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á.

Implante o modelo na Amazon EC2

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

Implante o modelo em serviços SageMaker de hospedagem

Para hospedar um modelo na Amazon EC2 usando a Amazon SageMaker, implante o modelo em que você treinou Criar e executar um trabalho de treinamento chamando o deploy método do xgb_model estimador. Ao chamar o deploy método, você deve especificar o número e o tipo de instâncias de EC2 ML que deseja usar para hospedar um 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 CSV formatada. Usamos isso porque o XGBoost algoritmo aceita arquivos de entrada em CSV formato.

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 Amazon Python SageMaker . SDK 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 EC2 instâncias da Amazon ou dispositivos de ponta, consulte Compile and deploy models with 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 Amazon SageMaker Python SDK.

(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 CSV arquivo 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 o bucket S3 URIs de entrada e saída 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 baixar os 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. XGBoost