Implementación del modelo en Amazon EC2 - Amazon SageMaker AI

Implementación del modelo en Amazon EC2

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

Implementación del modelo en los servicios de alojamiento de SageMaker AI

Para alojar un modelo a través de Amazon EC2 con Amazon SageMaker AI, implemente el modelo que ha entrenado en Creación y ejecución de un trabajo de entrenamiento llamando al método deploy del estimador xgb_model. 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): serializa los datos de entrada de varios formatos (una matriz, lista, archivo o búfer NumPy) en una cadena con formato CSV. Usamos esto porque el algoritmo XGBoost acepta archivos de entrada en formato CSV.

El método deploy crea un modelo que puede implementarse, configura el punto de conexión de los servicios de alojamiento de SageMaker AI y lanza el punto de conexión para alojar el modelo. Para obtener más información, consulte el SageMaker AI generic Estimator's deploy class method en el Amazon SageMaker Python SDK. 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 volver a utilizarlo y realizar predicciones en tiempo real en otros lugares de SageMaker Studio o en las instancias de cuaderno de SageMaker AI.

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) Uso del predictor de SageMaker AI para reutilizar el punto de conexión alojado

Tras implementar el modelo en un punto de conexión, puede configurar un nuevo predictor de SageMaker AI emparejando el punto de conexión y realizando predicciones en tiempo real de forma continua en cualquier otro cuaderno. El siguiente código de ejemplo muestra cómo utilizar la clase SageMaker AI Predictor para configurar un nuevo objeto predictor utilizando el mismo punto de conexión. 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 AI Predictor en el Amazon SageMaker Python SDK.

(Opcional) Predicciones con la transformación por lotes

En lugar de alojar un punto de conexión en producción, puede ejecutar un trabajo de inferencia en lotes único para realizar predicciones en un conjunto de datos de prueba mediante la transformación por lotes de SageMaker AI. Una vez finalizado el entrenamiento del modelo, puede extender el estimador a un objeto transformer, que se basa en la clase SageMaker AI 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 complete el trabajo de transformación por lotes, SageMaker AI creará los datos de predicción test.csv.out guardados en la ruta batch_output, que deben tener el siguiente formato: s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. Ejecute la 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.