Paso 5: Implementar el modelo en Amazon EC2 - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Paso 5: Implementar el modelo en Amazon EC2

Para obtener predicciones, implemente su modelo en Amazon EC2 mediante Amazon. SageMaker

Implemente el modelo en los servicios de SageMaker alojamiento

Para alojar un modelo a través de Amazon EC2 mediante Amazon SageMaker, implemente el modelo en el que se ha entrenado Creación y ejecución de un trabajo de entrenamiento llamando al deploy método del xgb_model estimador. Cuando llame al método deploy, debe especificar el número y el tipo de las instancias EC2 de machine learning que desee utilizar para alojar el punto de conexión.

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): el número de instancias en las que se va a implementar el modelo.

  • instance_type (str): el tipo de instancias en las que quiera que funcione el modelo implementado.

  • serializer(int): serialice los datos de entrada de varios formatos (una NumPy matriz, una lista, un archivo o un búfer) en una cadena con formato CSV. Usamos esto porque el algoritmo XGBoost acepta archivos de entrada en formato CSV.

El deploy método crea un modelo desplegable, configura el punto final de los servicios de SageMaker alojamiento y lanza el punto final para alojar el modelo. Para obtener más información, consulte el método de clase de despliegue SageMaker genérico de Estimator en el SDK de Amazon SageMaker Python. Para recuperar el nombre del punto de conexión generado por el método deploy, ejecute el siguiente código:

xgb_predictor.endpoint_name

Esto debería devolver el nombre del punto de conexión del xgb_predictor. El formato del nombre del punto de conexión es "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS". Este punto de conexión permanece activo en la instancia de machine learning y puede realizar predicciones instantáneas en cualquier momento, a menos que lo cierre más adelante. Copie el nombre de este punto de conexión y guárdelo para reutilizarlo y realizar predicciones en tiempo real en otras instancias de SageMaker Studio o SageMaker Notebook.

sugerencia

Para obtener más información sobre cómo compilar y optimizar su modelo para su implementación en instancias de Amazon EC2 o dispositivos perimetrales, consulte Compilación e implementación de modelos con Neo.

(Opcional) Utilice SageMaker Predictor para reutilizar el punto final alojado

Tras implementar el modelo en un punto final, puede configurar un nuevo SageMaker predictor emparejando el punto final y realizando predicciones en tiempo real de forma continua en cualquier otro bloc de notas. El siguiente código de ejemplo muestra cómo usar la clase SageMaker Predictor para configurar un nuevo objeto predictor utilizando el mismo punto final. Vuelva a utilizar el nombre del punto de conexión que utilizó para el 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() )

El predictor xgb_predictor_reuse se comporta exactamente igual que el xgb_predictor original. Para obtener más información, consulte la clase SageMaker Predictor en el SDK de Amazon SageMaker Python.

(Opcional) Predicciones con la transformación por lotes

En lugar de alojar un punto final en producción, puede ejecutar un trabajo de inferencia por lotes único para realizar predicciones en un conjunto de datos de prueba mediante la transformación SageMaker por lotes. Una vez finalizado el entrenamiento con el modelo, puede extender el estimador a un transformer objeto, que se basa en la SageMaker clase Transformer. El transformador por lotes lee los datos de entrada de un bucket de S3 específico y hace predicciones.

Para ejecutar un trabajo de transformación por lotes
  1. Ejecute el siguiente código para convertir las columnas de características del conjunto de datos de prueba en un archivo CSV y cargarlo en el bucket de 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 los URI del bucket de S3 de entrada y salida para el trabajo de transformación por lotes, como se muestra a continuación:

    # 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. Cree un objeto transformador que especifique el número mínimo de parámetros: los parámetros instance_count y instance_type para ejecutar el trabajo de transformación por lotes y el output_path para guardar los datos de predicción, como se muestra a continuación:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Inicie el trabajo de transformación por lotes ejecutando el método transform() del objeto transformer como se muestra a continuación:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Cuando se completa el trabajo de transformación por lotes, SageMaker crea los datos de test.csv.out predicción guardados en la batch_output ruta, que deben tener el siguiente formato:. s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction Ejecute lo siguiente AWS CLI para descargar los datos de salida del trabajo de transformación por lotes:

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

    Esto debería crear el archivo test.csv.out en el directorio de trabajo actual. Podrá ver los valores flotantes que se predicen en función de la regresión logística del trabajo de entrenamiento de XGBoost.