Implementación del modelo en Amazon EC2
Para obtener predicciones, implemente el modelo en Amazon EC2 mediante Amazon SageMaker AI.
Temas
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 methoddeploy, 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
(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
Para ejecutar un trabajo de transformación por lotes
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')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)Cree un objeto transformador que especifique el número mínimo de parámetros: los parámetros
instance_countyinstance_typepara ejecutar el trabajo de transformación por lotes y eloutput_pathpara 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 )Inicie el trabajo de transformación por lotes ejecutando el método
transform()del objetotransformercomo se muestra a continuación:transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()Cuando se complete el trabajo de transformación por lotes, SageMaker AI creará los datos de predicción
test.csv.outguardados en la rutabatch_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} ./ --recursiveEsto debería crear el archivo
test.csv.outen 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.