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.
Tópicos
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 Estimatordeploy
, 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
(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
Para executar um trabalho de transformação em lote
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')
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)
Crie um objeto transformador especificando o número mínimo de parâmetros: os parâmetros
instance_count
einstance_type
para executar o trabalho de transformação em lote eoutput_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 )
Inicie o trabalho de transformação em lote executando o método
transform()
do objetotransformer
conforme mostrado a seguir:transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
Quando o trabalho de transformação em lote estiver concluído, SageMaker cria os dados de
test.csv.out
previsão salvos nobatch_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