Integración de Amazon Redshift ML con Amazon Bedrock - Amazon Redshift

Integración de Amazon Redshift ML con Amazon Bedrock

En esta sección se describe cómo utilizar la integración de Amazon Redshift ML con Amazon Bedrock. Con esta característica, puede invocar un modelo de Amazon Bedrock mediante SQL y puede utilizar los datos de un almacenamiento de datos de Amazon Redshift para crear aplicaciones de IA generativa, como la generación de texto, el análisis de opiniones o la traducción.

Creación o actualización de un rol de IAM para la integración de Amazon Redshift ML con Amazon Bedrock

En esta sección se describe cómo crear un rol de IAM para usar con la integración de Amazon Redshift ML con Amazon Bedrock.

Agregue la siguiente política al rol de IAM que utilice con la integración de Amazon Redshift ML con Amazon Bedrock:

  • AmazonBedrockFullAccess

Para permitir que Amazon Redshift asuma un rol para interactuar con otros servicios, agregue la siguiente política de confianza al rol de IAM:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Si el clúster o el espacio de nombres está en una VPC, siga las instrucciones que se indican en Agrupe y ajuste la configuración para la administración de Amazon Redshift ML.

Si necesita una política más restrictiva, puede crear una que incluya solo los permisos de Amazon Bedrock especificados en las siguientes páginas:

Para obtener información sobre la creación de un rol de IAM, consulte Creación de un rol de IAM en la Guía del usuario de AWS Identity and Access Management.

Creación de un modelo externo para la integración de Amazon Redshift ML con Amazon Bedrock

En esta sección se muestra cómo crear un modelo externo para usarlo como interfaz para Amazon Bedrock dentro del almacenamiento de datos de Amazon Redshift.

Para invocar un modelo de Amazon Bedrock desde Amazon Redshift, primero debe ejecutar el comando CREATE EXTERNAL MODEL. Este comando crea un objeto modelo externo en la base de datos y una función de usuario asociada que se utiliza para generar contenido de texto con Amazon Bedrock.

El siguiente ejemplo de código muestra un comando CREATE EXTERNAL MODEL básico:

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:');

El comando CREATE EXTERNAL MODEL tiene una interfaz unificada y coherente con Amazon Bedrock para todos los modelos fundacionales (FM) que admiten mensajes. Esta es la opción predeterminada cuando se usa el comando CREATE EXTERNAL MODEL o cuando se especifica explícitamente el tipo de solicitud que será UNIFIED. Para obtener más información, consulte la Documentación de la API de conversión en la Documentación de la API de Amazon Bedrock.

Si un FM no admite mensajes, debe establecer la configuración de request_type en RAW. Si establece request_type en RAW, debe crear la solicitud enviada a Amazon Bedrock cuando utilice la función de inferencia en función del FM seleccionado.

El parámetro PROMPT del comando CREATE EXTERNAL MODEL es una petición estática. Si necesita una petición dinámica para la aplicación, debe especificarla cuando utilice la función de inferencia. Para obtener más detalles, consulte Ingeniería de peticiones para la integración de Amazon Redshift ML con Amazon Bedrock siguiente.

Para obtener más información sobre la instrucción CREATE EXTERNAL MODEL y sus parámetros y configuración, consulte CREATE EXTERNAL MODEL.

Uso de un modelo externo para la integración de Amazon Redshift ML con Amazon Bedrock

En esta sección se muestra cómo invocar un modelo externo para generar texto en respuesta a las peticiones proporcionadas. Para invocar un modelo externo, utilice la función de inferencia con la que ha creado CREATE EXTERNAL MODEL.

Inferencia con modelos de tipo solicitud UNIFIED

La función de inferencia para los modelos con tipo de solicitud UNIFIED tiene los tres parámetros siguientes que se transfieren a la función en orden:

  • Texto de entrada (obligatorio): este parámetro especifica el texto de entrada que Amazon Redshift transfiere a Amazon Bedrock.

  • Configuración de inferencia y campos de solicitud de modelo adicionales (opcionales): Amazon Redshift transfiere estos parámetros a los parámetros correspondientes de la API del modelo de conversión.

En el siguiente ejemplo de código se muestra cómo utilizar una función de inferencia de tipo UNIFIED:

SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500)) FROM some_data;

Inferencia con modelos de tipo solicitud RAW

La función de inferencia para los modelos con tipo de solicitud RAW solo tiene un parámetro de tipo de datos SUPER. La sintaxis de este parámetro depende del modelo de Amazon Bedrock utilizado.

En el siguiente ejemplo de código se muestra cómo utilizar una función de inferencia de tipo RAW:

SELECT llm_titan_func( object( "inputText", "Summarize the following text: " | input_text, "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500) ) ) FROM some_data;

Funciones de inferencia como funciones específicas del principal

Las funciones de inferencia de los modelos de Amazon Bedrock se pueden ejecutar como funciones exclusivas del nodo principal cuando la consulta que las utiliza no hace referencia a ninguna tabla. Esto puede resultar útil si quiere hacer una pregunta rápidamente a un LLM.

En el siguiente ejemplo de código se muestra cómo utilizar una función de inferencia específica del principal:

SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');

Notas sobre el uso de la función de inferencia

Tenga en cuenta lo siguiente cuando utilice funciones de inferencia con la integración de Amazon Redshift ML con Amazon Bedrock:

  • Los nombres de los parámetros de todos los modelos de Amazon Bedrock distinguen entre mayúsculas y minúsculas. Si los parámetros no coinciden con los requeridos por el modelo, es posible que Amazon Bedrock los ignore discretamente.

  • El rendimiento de las consultas de inferencia está limitado por las cuotas de tiempo de ejecución de los distintos modelos que ofrece Amazon Bedrock en las distintas regiones. Para obtener más información, consulte ¿Qué es Amazon Bedrock? en la Guía del usuario de Amazon Bedrock.

  • Si necesita un rendimiento coherente y garantizado, considere la posibilidad de obtener un rendimiento aprovisionado para el modelo que necesita de Amazon Bedrock. Para obtener más información, consulte Aumentar la capacidad de invocación de modelos con el rendimiento aprovisionado en Amazon Bedrock en la Guía del usuario de Amazon Bedrock.

  • Las consultas de inferencia con grandes cantidades de datos pueden tener excepciones de limitación. Esto se debe a las cuotas de tiempo de ejecución limitadas de Amazon Bedrock. Amazon Redshift vuelve a intentar las solicitudes varias veces, pero las consultas pueden seguir limitándose porque el rendimiento de los modelos no aprovisionados puede ser variable.

  • Si encuentra excepciones que imponen limitaciones provenientes de Amazon Bedrock, por ejemplo, Too many requests, please wait before trying again., incluso con pequeñas cantidades de datos, compruebe las cuotas en Service Quotas en su cuenta de Amazon Bedrock. Compruebe que la cuota de cuenta aplicada sea como mínimo igual al valor de la cuota predeterminada de AWS para las solicitudes de InvokeModel para el modelo que está utilizando.

Ingeniería de peticiones para la integración de Amazon Redshift ML con Amazon Bedrock

En esta sección se muestra cómo utilizar las peticiones estáticas con un modelo externo.

Para utilizar peticiones de prefijo y sufijo estáticas para el modelo externo, indíquelas mediante los parámetros PROMPT y SUFFIX de la instrucción CREATE EXTERNAL MODEL. Estas peticiones se agregan a todas las consultas que utilizan el modelo externo.

En el siguiente ejemplo se muestra cómo agregar peticiones de prefijo y sufijo a un modelo externo:

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:', SUFFIX 'Respond in an analytic tone');

Para utilizar peticiones dinámicas, puede proporcionarlas al utilizar la función de inferencia concatenándolas en la entrada de la función. En el siguiente ejemplo se muestra cómo utilizar peticiones dinámicas con una función de inferencia:

SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.') FROM some_data