View a markdown version of this page

Implantar o modelo do Amazon EC2 - 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á.

Implantar o modelo do Amazon EC2

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

Implante o modelo nos serviços de hospedagem de SageMaker IA

Para hospedar um modelo por meio do Amazon EC2 usando o Amazon SageMaker AI, implante o modelo no Criar e executar um trabalho de treinamento qual você treinou.

Use a ModelBuilder classe para criar e implantar seu modelo. ModelBuildersuporta o encadeamento de recursos, para que você possa passar ModelTrainer diretamente pelo treinado para criar e implantar seu modelo.

from sagemaker.serve import ModelBuilder # Build and deploy using resource chaining from the trained model model_builder = ModelBuilder( model=xgb_model_trainer, role_arn=role, instance_type='ml.t2.medium' ) # Build creates a SageMaker Model resource model = model_builder.build() # Deploy creates a SageMaker Endpoint resource endpoint = model_builder.deploy(endpoint_name="xgboost-endpoint")
  • model— O ModelTrainer objeto treinado. ModelBuildervincula automaticamente a saída do treinamento à implantação.

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

O build() método cria um recurso de modelo de SageMaker IA e deploy() cria um recurso de endpoint de SageMaker IA. Para obter mais informações, consulte a SageMaker IA ModelBuilder no Amazon SageMaker Python SDK. Para recuperar o nome do endpoint, execute o seguinte código:

endpoint.endpoint_name

Esse endpoint permanece ativo na instância de ML e você pode fazer predições instantâneas a qualquer momento, a menos que o desligue posteriormente. Copie o nome desse endpoint e salve-o para reutilizar e fazer previsões em tempo real em outras instâncias do SageMaker Studio ou do notebook SageMaker AI.

dica

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

(Opcional) Reutilize ou invoque um endpoint existente

Depois de implantar o modelo em um endpoint, você pode invocá-lo de qualquer outro notebook ou aplicativo usando a Endpoint classe do sagemaker-core. O código de exemplo a seguir mostra como obter um endpoint existente e fazer previsões. Re-use o nome do endpoint da etapa de implantação acima.

from sagemaker.core.resources import Endpoint endpoint = Endpoint.get(endpoint_name="xgboost-endpoint") # Make a prediction response = endpoint.invoke( body=test_data, content_type="text/csv" ) result = response.body.read().decode('utf-8')

(Opcional) Faça prediçõ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 da IA. SageMaker Depois que o treinamento do modelo for concluído, você poderá usar o transformador de lote para ler os dados de entrada de um bucket S3 especificado e fazer previsões.

Para executar um trabalho de transformação em lote
  1. Execute o código a seguir para converter as colunas de atributos 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 e execute um trabalho de transformação em lote.

    # Build a model from the trained ModelTrainer model_builder = ModelBuilder(model=xgb_model_trainer, role_arn=role) model = model_builder.build(model_name="xgboost-batch-model") # Create and run the batch transform job from sagemaker.core.resources import TransformJob transform_job = TransformJob.create( model_name=model.model_name, transform_input={ "data_source": { "s3_data_source": { "s3_data_type": "S3Prefix", "s3_uri": batch_input } }, "content_type": "text/csv", "split_type": "Line" }, transform_output={ "s3_output_path": batch_output }, transform_resources={ "instance_type": "ml.m4.xlarge", "instance_count": 1 } ) transform_job.wait()
  4. Quando o trabalho de transformação em lote é concluído, a SageMaker IA 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 da tarefa 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.