Tutorial: Creación de modelos de inferencia remota - Amazon Redshift

Tutorial: Creación de modelos de inferencia remota

El siguiente tutorial trata los pasos para crear un modelo de bosque de corte aleatorio que se ha entrenado e implementado previamente en Amazon SageMaker, fuera de Amazon Redshift. El algoritmo de bosque de corte aleatorio detecta puntos de datos anómalos dentro de un conjunto de datos. La creación de un modelo con inferencia remota le permite incorporar su modelo de bosque de corte aleatorio de SageMaker a Amazon Redshift. A continuación, en Amazon Redshift, se utiliza SQL para realizar predicciones en un punto de conexión remoto de SageMaker.

Puede utilizar un comando CREATE MODEL para importar un modelo de machine learning desde un punto de conexión de Amazon SageMaker y preparar una función de predicción de Amazon Redshift. Al utilizar la operación CREATE MODEL, proporciona el nombre del punto de conexión del modelo de machine learning de SageMaker.

En este tutorial, creará un modelo de machine learning de Amazon Redshift mediante un punto de conexión del modelo de SageMaker. Una vez que el modelo de machine learning esté listo, podrá usarlo para realizar predicciones en Amazon Redshift. En primer lugar, se entrena y crea un punto de conexión en Amazon SageMaker y, a continuación, se obtiene el nombre de ese punto de conexión. Luego, se utiliza el comando CREATE MODEL para crear un modelo con Amazon Redshift ML. Por último, se realizan predicciones en el modelo mediante la función de predicción que genera el comando CREATE MODEL.

Ejemplos de casos de uso

Puede usar modelos de bosque de corte aleatorio y la inferencia remota para la detección de anomalías en otros conjuntos de datos, como la predicción de un rápido aumento o disminución en transacciones de comercio electrónico. También puede predecir cambios significativos en el clima o la actividad sísmica.

Tareas

  • Requisitos previos

  • Paso 1: Implementar el modelo de Amazon SageMaker

  • Paso 2: Obtener el punto de conexión del modelo de SageMaker

  • Paso 1: Cargar los datos desde Amazon S3 en Amazon Redshift

  • Paso 4: Crear un modelo con Amazon Redshift ML

  • Paso 3: Realizar predicciones con el modelo

Requisitos previos

Para completar este tutorial, necesita los siguientes requisitos previos:

Paso 1: Implementar el modelo de Amazon SageMaker

  1. Para implementar el modelo, vaya a la consola de Amazon SageMaker y seleccione Notebook instances (Instancias de bloc de notas) en el apartado Notebook del panel de navegación.

  2. Elija Open Jupyter (Abrir Jupyter) para el cuaderno de Jupyter que se creó con la plantilla de CloudFormation.

  3. Elija bring-your-own-model-remote-inference.ipynb.

  4. Configure los parámetros para almacenar la entrada y la salida del entrenamiento en Amazon S3 sustituyendo las siguientes líneas por su bucket y prefijo de Amazon S3.

    data_location=f"s3://{bucket}/{prefix}/", output_path=f"s3://{bucket}/{prefix}/output",
  5. Elija el botón fast-forward (avance rápido) para ejecutar todas las celdas.

Paso 2: Obtener el punto de conexión del modelo de SageMaker

En la consola de Amazon SageMaker, en el apartado Inference (Inferencia) del panel de navegación, seleccione Endpoints (Puntos de conexión) y busque el nombre de su modelo. Debe copiar el nombre del punto de conexión del modelo cuando cree el modelo de inferencia remota en Amazon Redshift.

Paso 3: Cargar los datos desde Amazon S3 en Amazon Redshift

Use el editor de consultas v2 de Amazon Redshift para ejecutar los siguientes comandos de SQL en Amazon Redshift. Estos comandos descartan la tabla rcf_taxi_data si existe, crean una tabla con el mismo nombre y cargan el conjunto de datos de muestra en la tabla.

DROP TABLE IF EXISTS public.rcf_taxi_data CASCADE; CREATE TABLE public.rcf_taxi_data (ride_timestamp timestamp, nbr_passengers int); COPY public.rcf_taxi_data FROM 's3://sagemaker-sample-files/datasets/tabular/anomaly_benchmark_taxi/NAB_nyc_taxi.csv' IAM_ROLE default IGNOREHEADER 1 FORMAT AS CSV;

Paso 4: Crear un modelo con Amazon Redshift ML

Ejecute la siguiente consulta para crear un modelo en Amazon Redshift ML mediante el punto de conexión del modelo de SageMaker que obtuvo en el paso anterior. Reemplace randomcutforest-xxxxxxxxx por el nombre de su propio punto de conexión de SageMaker.

CREATE MODEL public.remote_random_cut_forest FUNCTION remote_fn_rcf(int) RETURNS decimal(10, 6) SAGEMAKER '<randomcutforest-xxxxxxxxx>' IAM_ROLE default;

Comprobar el estado del modelo (opcional)

Puede utilizar el comando SHOW MODEL para saber cuándo está listo el modelo.

Para comprobar el estado del modelo, utilice la siguiente operación SHOW MODEL.

SHOW MODEL public.remote_random_cut_forest

El resultado muestra el nombre del punto de conexión y de la función de SageMaker.

+--------------------------+-----------------------------------------+ | Model Name | remote_random_cut_forest | +--------------------------+-----------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Wed, 15.06.2022 17:58:21 | | Model State | READY | | | | | PARAMETERS: | | | Endpoint | <randomcutforest-xxxxxxxxx> | | Function Name | remote_fn_rcf | | Inference Type | Remote | | Function Parameter Types | int4 | | IAM Role | default-aws-iam-role | +--------------------------+-----------------------------------------+

Paso 5: Realizar predicciones con el modelo

El algoritmo de bosque de corte aleatorio de Amazon SageMaker está diseñado para detectar puntos de datos anómalos dentro de un conjunto de datos. En este ejemplo, el modelo está diseñado para detectar picos en trayectos en taxi debido a eventos importantes. Puede usar el modelo para predecir eventos anómalos mediante la generación de una puntuación de anomalías para cada punto de datos.

Utilice la siguiente consulta para calcular puntuaciones de anomalías en todo el conjunto de datos de taxis. Tenga en cuenta que se hace referencia a la función que utilizó en la instrucción CREATE MODEL en el paso anterior.

SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data;

Comprobar si hay anomalías altas y bajas (opcional)

Ejecute la siguiente consulta para encontrar cualquier punto de datos con puntuaciones superiores a tres desviaciones estándar de la puntuación media.

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean + 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score > ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

Ejecute la siguiente consulta para encontrar cualquier punto de datos con puntuaciones superiores a tres desviaciones estándar de la puntuación media.

WITH score_cutoff AS ( SELECT STDDEV(public.remote_fn_rcf(nbr_passengers)) AS std, AVG(public.remote_fn_rcf(nbr_passengers)) AS mean, (mean - 3 * std) AS score_cutoff_value FROM public.rcf_taxi_data ) SELECT ride_timestamp, nbr_passengers, public.remote_fn_rcf(nbr_passengers) AS score FROM public.rcf_taxi_data WHERE score < ( SELECT score_cutoff_value FROM score_cutoff ) ORDER BY 2 DESC;

Para obtener más información sobre Amazon Redshift ML, consulte la siguiente documentación:

Para obtener más información sobre machine learning, consulte la siguiente documentación: