Texto a SQL personalizado y rentable mediante la inferencia bajo demanda de Amazon Nova Micro y Amazon Bedrock

La generación de texto a SQL sigue siendo un desafío persistente en las aplicaciones empresariales de IA, particularmente cuando se trabaja con dialectos SQL personalizados o esquemas de bases de datos de dominios específicos. Si bien los modelos básicos (FM) demuestran un rendimiento sólido en SQL estándar, lograr una precisión de nivel de producción para dialectos especializados requiere un ajuste fino. Sin embargo, el ajuste introduce una compensación operativa: alojar modelos personalizados en una infraestructura persistente genera costos continuos, incluso durante períodos de utilización cero.

La inferencia bajo demanda de Amazon Bedrock con modelos Amazon Nova Micro ajustados ofrece una alternativa. Al combinar la eficiencia del ajuste LoRA (adaptación de bajo rango) con la inferencia sin servidor y de pago por token, las organizaciones pueden lograr capacidades personalizadas de texto a SQL sin los costos generales incurridos por el alojamiento de modelos persistentes. A pesar de la sobrecarga de tiempo de inferencia adicional que implica la aplicación de adaptadores LoRA, las pruebas demostraron una latencia adecuada para aplicaciones interactivas de texto a SQL, con costos que aumentan según el uso en lugar de la capacidad aprovisionada.

En esta publicación, demostramos dos enfoques para ajustar Amazon Nova Micro para la generación de dialectos SQL personalizados a fin de ofrecer rentabilidad y rendimiento listo para producción. Nuestra carga de trabajo de ejemplo mantuvo un costo de $0,80 mensuales con un tráfico de muestra de 22 000 consultas por mes, lo que resultó en ahorros de costos en comparación con una infraestructura modelo alojada persistentemente.

Requisitos previos

Para implementar estas soluciones, necesitará lo siguiente:

Una cuenta de AWS con facturación habilitada, permisos de IAM estándar y función configurada para acceder: Cuota para la instancia ml.g5.48xl para la capacitación de IA de Amazon SageMaker.

Descripción general de la solución

La solución consta de los siguientes pasos de alto nivel:

Prepare su conjunto de datos de entrenamiento de SQL personalizado con pares de E/S específicos para el dialecto SQL y los requisitos comerciales de su organización. Inicie el proceso de ajuste en el modelo de Amazon Nova Micro utilizando su conjunto de datos preparado y el enfoque de ajuste seleccionado. Personalización del modelo de Amazon Bedrock para una implementación optimizada Amazon SageMaker AI para un control y una personalización de la capacitación detallada Implemente el modelo personalizado en Amazon Bedrock para utilizar la inferencia bajo demanda, eliminando la administración de la infraestructura y pagando solo por el uso del token. Valide el rendimiento del modelo con consultas de prueba específicas para su dialecto SQL personalizado y casos de uso empresarial.

Para demostrar este enfoque en la práctica, proporcionamos dos rutas de implementación completas que abordan diferentes necesidades organizacionales. El primero utiliza la personalización del modelo administrado de Amazon Bedrock para equipos que priorizan la simplicidad y la implementación rápida. El segundo utiliza trabajos de capacitación en inteligencia artificial de Amazon SageMaker para organizaciones que requieren un control más granular sobre los hiperparámetros y la infraestructura de capacitación. Ambas implementaciones comparten el mismo proceso de preparación de datos y se implementan en Amazon Bedrock para realizar inferencias bajo demanda. Los siguientes son enlaces a cada ejemplo de código de GitHub:

Personalización de modelos administrados de Bedrock Trabajos de capacitación en inteligencia artificial de Amazon SageMaker

El siguiente diagrama de arquitectura ilustra el flujo de trabajo de un extremo a otro, que abarca la preparación de datos, ambos enfoques de ajuste y la ruta de implementación de Bedrock que permite la inferencia sin servidor.

1. Preparación del conjunto de datos

Nuestra demostración utiliza el conjunto de datos sql-create-context. Este conjunto de datos es una combinación seleccionada de conjuntos de datos WikiSQL y Spider que contienen más de 78 000 ejemplos de preguntas en lenguaje natural combinadas con consultas SQL en diversos esquemas de bases de datos. Este conjunto de datos proporciona una base ideal para el ajuste de texto a SQL debido a su variedad en complejidad de consultas, desde declaraciones SELECT simples hasta uniones complejas de múltiples tablas con agregaciones.

Formato y estructura de datos.

Los datos de formación están estructurados como se describe en la documentación. Esto implica la creación de archivos JSONL que contienen instrucciones del sistema junto con consultas de usuario y las correspondientes respuestas SQL de diversa complejidad. Luego, el conjunto de datos de entrenamiento formateado se divide en conjuntos de entrenamiento y validación, se almacena como archivos JSONL y se carga en Amazon Simple Storage Service (Amazon S3) para el proceso de ajuste.

Registro convertido de muestra

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "Eres un poderoso modelo de texto a SQL. Tu trabajo es responder preguntas sobre una base de datos. Puedes usar el siguiente esquema de tabla como contexto: CREATE TABLE head (age INTEGER)" } ], "messages": [ { "role": "user", "content": [ { "text": "Devuelve la consulta SQL que responde a la siguiente pregunta: ¿Cuántas cabezas? de los departamentos tienen más de 56 años ?" } ] }, { "rol": "asistente", "contenido": [ { "texto": "SELECCIONAR CUENTADE la cabeza DONDE edad > 56" } ] } ] }

Enfoque de ajuste de Amazon Bedrock

La personalización del modelo de Amazon Bedrock proporciona un enfoque simplificado y totalmente administrado para ajustar los modelos de Amazon Nova sin la necesidad de aprovisionar o administrar infraestructura de capacitación. Este método es ideal para equipos que buscan una iteración rápida y una sobrecarga operativa mínima mientras logran un rendimiento de modelo personalizado adaptado a su caso de uso de texto a SQL.

Utilizando las capacidades de personalización de Amazon Bedrock, los datos de capacitación se cargan en Amazon S3 y los trabajos de ajuste se configuran a través de la consola o API de AWS. Luego, AWS maneja la infraestructura de capacitación subyacente. El modelo personalizado resultante se puede implementar mediante inferencia bajo demanda, manteniendo el mismo precio basado en tokens que el modelo básico de Nova Micro sin margen de beneficio adicional, lo que lo convierte en una solución rentable para cargas de trabajo variables. Este enfoque es adecuado cuando necesita personalizar rápidamente un modelo para dialectos SQL personalizados sin administrar la infraestructura de aprendizaje automático, desea minimizar la complejidad operativa o necesita inferencia sin servidor con escalado automático.

2a. Creación de un trabajo de ajuste con Amazon Bedrock

Amazon Bedrock admite ajustes mediante la consola de AWS y el SDK de AWS para Python (Boto3). La documentación de AWS contiene orientación general sobre cómo enviar un trabajo de capacitación con ambos enfoques. En nuestra implementación, utilizamos AWS SDK para Python (Boto3). Consulte el cuaderno de muestra en nuestro repositorio de ejemplos de GitHub para ver nuestra implementación paso a paso.

Configurar hiperparámetros

Después de seleccionar el modelo a ajustar, configuramos nuestros hiperparámetros para nuestro caso de uso. Para el ajuste fino de Amazon Nova Micro en Amazon Bedrock, se pueden personalizar los siguientes hiperparámetros para optimizar nuestro modelo de texto a SQL:

Rango de parámetros/Restricciones Propósito Qué utilizamos Épocas 1 a 5 Número de pasadas completas a través del conjunto de datos de entrenamiento 5 épocas Tamaño de lote Fijo en 1 Número de muestras procesadas antes de actualizar los pesos del modelo 1 (fijado para Nova Micro) Tasa de aprendizaje 0,000001–0,0001 Tamaño de paso para optimización de descenso de gradiente 0,00001 para convergencia estable Tasa de aprendizaje Pasos de calentamiento 0 a 100 Número de pasos para aumentar gradualmente el aprendizaje tasa 10

Nota: Estos hiperparámetros se optimizaron para nuestro conjunto de datos y caso de uso específicos. Los valores óptimos pueden variar según el tamaño y la complejidad del conjunto de datos. En el conjunto de datos de muestra, esta configuración proporcionó un equilibrio mejorado entre la precisión del modelo y el tiempo de capacitación, y se completó en aproximadamente 2 a 3 horas.

Analizar métricas de entrenamiento

Amazon Bedrock genera automáticamente métricas de capacitación y validación, que se almacenan en la ubicación de salida de S3 especificada. Estas métricas incluyen:

Pérdida de entrenamiento: mide qué tan bien se ajusta el modelo a los datos de entrenamiento. Pérdida de validación: indica el rendimiento de la generalización en datos no vistos.

Gráfico que muestra la métrica de validación de pérdida de entrenamiento

Las curvas de pérdida de entrenamiento y validación muestran un entrenamiento exitoso: ambas disminuyen consistentemente, siguen patrones similares y convergen a valores finales comparables.

3a. Implementación con inferencia bajo demanda

Una vez que su trabajo de ajuste se complete exitosamente, puede implementar su modelo Nova Micro personalizado mediante inferencia bajo demanda. Esta opción de implementación proporciona escalamiento automático y precios de pago por token, lo que la hace ideal para cargas de trabajo variables sin la necesidad de aprovisionar recursos informáticos dedicados.

Invocando el modelo personalizado de Nova Micro

Después de la implementación, puede invocar su modelo personalizado de texto a SQL utilizando el ARN de implementación como ID del modelo en la API de Amazon Bedrock Converse.

# Utilice el ARN de implementación como ID del modelo development_arn = "arn:aws:bedrock:us-east-1::deployment/" # Prepare la solicitud de inferencia respuesta = bedrock_runtime.converse( modelId=deployment_arn, message=[ { "role": "user", "content": [ { "text": """Esquema de base de datos: CREATE TABLE sales ( id INT, product_name VARCHAR(100), categoría VARCHAR(50), ingresos DECIMAL(10,2), fecha_venta FECHA ); Pregunta: ¿Cuáles son los 5 productos principales por ingresos en la categoría Electrónica?""" } ] } ], inferenceConfig={ "maxTokens": 512, "temperature": 0.1, # Baja temperatura para generación de SQL determinista "topP": 0.9 } ) # Extraer la consulta SQL generada sql_query = respuesta['salida']['mensaje']['contenido']['texto'] print(f"SQL generado: {sql_query}")

Enfoque de ajuste fino de la IA de Amazon SageMaker

Si bien el enfoque de Amazon Bedrock agiliza la personalización del modelo a través de una experiencia de capacitación administrada, las organizaciones que buscan un control de optimización más profundo podrían beneficiarse del enfoque de IA de SageMaker. SageMaker AI proporciona un amplio control sobre los parámetros de entrenamiento que pueden afectar significativamente la eficiencia y el rendimiento del modelo. Puede ajustar el tamaño del lote para optimizar la velocidad y la memoria, ajustar la configuración de abandono en todas las capas para evitar el sobreajuste y configurar programas de tasa de aprendizaje para la estabilidad del entrenamiento. Para el ajuste fino de LoRA específicamente, puede utilizar SageMaker AI para personalizar los factores de escala y los parámetros de regularización con diferentes configuraciones optimizadas para conjuntos de datos multimodales frente a conjuntos de datos de solo texto. Además, puede ajustar el tamaño de la ventana de contexto y la configuración del optimizador para que coincida con los requisitos de su caso de uso específico. Consulte el siguiente cuaderno para ver el ejemplo de código completo.

1b. Preparación y carga de datos.

El proceso de preparación y carga de datos para el enfoque de ajuste de IA de SageMaker es idéntico a la implementación de Amazon Bedrock. Ambos enfoques convierten el conjunto de datos SQL al formato de esquema bedrock-conversation-2024, dividen los datos en conjuntos de entrenamiento y prueba y cargan los archivos JSONL directamente a S3.

# Prefijo de S3 para datos de entrenamiento Training_input_path = f's3://{sess.default_bucket()}/datasets/nova-sql-context' # Cargar conjuntos de datos en S3 train_s3_path = sess.upload_data( path="data/train_dataset.jsonl", bucket=bucket_name, key_prefix=training_input_path ) test_s3_path = sess.upload_data( path="data/test_dataset.jsonl", bucket=bucket_name, key_prefix=training_input_path ) print(f'Datos de entrenamiento cargados en: {train_s3_path}') print(f'Datos de prueba cargados en: {test_s3_path}')

2b. Creación de un trabajo de ajuste con Amazon SageMaker AI

Seleccione el ID del modelo, la receta y el URI de la imagen:

# Configuración de Nova model_id = "nova-micro/prod" receta = "https://raw.githubusercontent.com/aws/sagemaker-hyperpod-recipes/refs/heads/main/recipes_collection/recipes/fine-tuning/nova/nova_1_0/nova_micro/SFT/nova_micro_1_0_g5_g6_48x_gpu_lora_sft.yaml"stance_type = "ml.g5.48xlarge"stance_count = 1 # URI de imagen específica de Nova image_uri = f"708977205387.dkr.ecr.{sess.boto_region_name}.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest" print(f'ID de modelo: {model_id}') print(f'Receta: {receta}') print(f'Tipo de instancia: {tipo_instancia}') print(f'Recuento de instancias: {recuento_instancia}') print(f'URI de imagen: {image_uri}')

Configurar recetas de entrenamiento personalizadas

Un diferenciador clave al utilizar Amazon SageMaker AI para el ajuste del modelo Nova es la capacidad de personalizar una receta de entrenamiento. Las recetas son pilas de capacitación preconfiguradas proporcionadas por AWS para ayudarlo a comenzar a entrenar y realizar ajustes rápidamente. Si bien mantienen la compatibilidad con el conjunto de hiperparámetros estándar (épocas, tamaño de lote, tasa de aprendizaje y pasos de preparación) de Amazon Bedrock, las recetas amplían las opciones de hiperparámetros a través de:

Parámetros de regularización: oculto_dropout, atención_dropout y ffn_dropout para evitar el sobreajuste. Configuración del optimizador: coeficientes beta personalizables y configuraciones de disminución de peso. Controles de arquitectura: rango de adaptador y factores de escala para el entrenamiento de LoRA. Programación avanzada: programas de ritmo de aprendizaje personalizados y estrategias de calentamiento.

El enfoque recomendado es comenzar con la configuración predeterminada para crear una línea de base y luego optimizarla según sus necesidades específicas. A continuación se muestra una lista de algunos de los parámetros adicionales que puede optimizar.

Rango de parámetros/Restricciones Propósito max_length 1024–8192 Controlar el tamaño máximo de ventana de contexto para secuencias de entrada global_batch_size 16,32,64 Número de muestras procesadas antes de actualizar los pesos del modelo hide_dropout 0.0–1.0 Regularización para estados de capas ocultas para evitar el sobreajuste capas de red directasweight_decay 0,0–1,0 L2 Fuerza de regularización para pesos de modelo Adapter_dropout 0,0–1,0 Regularización para parámetros del adaptador LoRA

La receta completa que utilizamos se puede encontrar aquí.

Crear y ejecutar un trabajo de capacitación de SageMaker AI

Después de configurar su modelo y receta, inicialice el objeto ModelTrainer y comience a entrenar:

de sagemaker.train importar ModelTrainer trainer = ModelTrainer.from_recipe(training_recipe=recipe, receta_overrides=recipe_overrides, compute=compute_config, stop_condition=stopping_condition, output_data_config=output_config, role=role, base_job_name=job_name, sagemaker_session=sess, Training_image=image_uri) # Configurar canales de datos desde 1 s3_uri=test_s3_path, s3_data_type="Converse", s3_data_distribution_type="FullyReplicated" ) ) # Comenzar el entrenamiento Training_job = trainer.train( input_data_config=[train_input,val_input], wait=False )

Después del entrenamiento, registramos el modelo con Amazon Bedrock a través de la API create_custom_model_deployment de Amazon Bedrock, lo que permite la inferencia bajo demanda a través de la API inversa utilizando el ARN del modelo implementado, indicaciones del sistema y mensajes de usuario.

En nuestro trabajo de entrenamiento de SageMaker AI, utilizamos parámetros de receta predeterminados, incluida una época de 2 y un tamaño de lote de 64; nuestros datos contenían 20 000 líneas, por lo que el trabajo de entrenamiento completo duró 4 horas. Con nuestra instancia ml.g5.48xlarge, el costo total para ajustar nuestro modelo Nova Micro fue de $65.

4. Pruebas y evaluación

Para evaluar nuestro modelo, realizamos pruebas tanto operativas como de precisión. Para evaluar la precisión, implementamos un enfoque LLM como juez en el que recopilamos preguntas y respuestas SQL de nuestro modelo ajustado y utilizamos un modelo de juez para calificarlas con respecto a las respuestas reales.

def get_score(system, user, asistente, generate): formatted_prompt = ( "Usted es un profesor de ciencia de datos que está introduciendo a los estudiantes a SQL. " f"Considere la siguiente pregunta y esquema:" f"{user}" f"{system}" "Aquí está la respuesta correcta:" f"{assistant}" f"Aquí está la respuesta del estudiante:" f"{generated}" "Proporcione una puntuación numérica de 0 a 100 sobre qué tan bien el estudiante " "la respuesta coincide con la respuesta correcta. Coloque la puntuación en etiquetas XML." ) _, resultado = Ask_claude(formatted_prompt) patrón = r'(.*?)' coincidencia = re.search(patrón, resultado) devuelve match.group(1) si coincide con "0"

Para las pruebas operativas, recopilamos métricas que incluyen TTFT (tiempo hasta el primer token) y OTPS (tokens de salida por segundo). En comparación con el modelo básico de Nova Micro, experimentamos un tiempo de inicio en frío hasta el primer token con un promedio de 639 ms en 5 ejecuciones (aumento del 34%). Este aumento de latencia se debe a la aplicación de adaptadores LoRA en el momento de la inferencia en lugar de incorporarlos a los pesos del modelo. Sin embargo, esta elección arquitectónica ofrece beneficios de costos sustanciales, ya que el modelo Nova Micro ajustado cuesta lo mismo que el modelo base, lo que permite precios bajo demanda con flexibilidad de pago por uso y sin compromisos mínimos. Durante el funcionamiento normal, nuestro tiempo hasta el primer token promedia 380 ms en 50 llamadas (aumento del 7%). La latencia de un extremo a otro totaliza aproximadamente 477 ms para una generación de respuesta completa. La generación de tokens mantiene una tasa de aproximadamente 183 tokens por segundo, lo que representa solo una disminución del 27% con respecto al modelo base y, al mismo tiempo, sigue siendo muy adecuado para aplicaciones interactivas.

Gráfico que muestra la comparación del tiempo hasta el inicio en frío del primer token y el inicio en caliente para un modelo nova mico personalizado

Resumen de costos

Costos únicos:

Costo de capacitación del modelo de Amazon Bedrock: $0,001 por 1000 tokens × número de épocas Para 2000 ejemplos, 5 épocas y aproximadamente 800 tokens cada uno = $8,00 Costo de capacitación del modelo de IA de SageMaker: utilizamos la instancia ml.g5.48xlarge, que cuesta $16,288/hora La capacitación duró 4 horas con un conjunto de datos de 20 000 líneas = $65,15 Costos continuos Almacenamiento: $1,95 por mes por modelo personalizado Inferencia bajo demanda: Mismo precio por token que el Nova Micro básico Tokens de entrada: $0,000035 por 1000 tokens (Amazon Nova Micro) Tokens de salida: $0,00014 por 1000 tokens (Amazon Nova Micro)

Ejemplo de cálculo para la carga de trabajo de producción:

Para 22.000 consultas al mes (100 usuarios × 10 consultas/día × 22 días hábiles):

Promedio de 800 tokens de entrada + 60 tokens de salida por consulta Costo de entrada: (22 000 × 800 / 1000) × 0,000035 = 0,616 Costo de salida: (22 000 × 60 / 1000) × 0,00014 = 0,184 Costo total de inferencia mensual: 0,80 USD

Este análisis valida que, para casos de uso de texto a SQL en dialecto personalizado, ajustar un modelo Nova utilizando PEFT LoRA en Amazon Bedrock es significativamente más rentable que los modelos personalizados autohospedados en infraestructura persistente. Los enfoques autohospedados pueden adaptarse a casos de uso que requieren un control máximo sobre la infraestructura, las configuraciones de seguridad o los requisitos de integración, pero el modelo de costos bajo demanda de Amazon Bedrock ofrece importantes ahorros de costos para la mayoría de las cargas de trabajo de producción de texto a SQL.

Conclusión

Estas opciones de implementación demuestran cómo el ajuste de Amazon Nova se puede adaptar a las necesidades organizativas y a los requisitos técnicos. Exploramos dos enfoques distintos que sirven a diferentes audiencias y casos de uso. Ya sea que elija la simplicidad administrada de Amazon Bedrock o un mayor control a través de la capacitación en IA de SageMaker, el modelo de implementación sin servidor y los precios bajo demanda significan que solo paga por lo que usa, mientras elimina la administración de la infraestructura.

El enfoque de personalización del modelo de Amazon Bedrock proporciona una solución administrada y optimizada que elimina la complejidad de la infraestructura. Los científicos de datos pueden centrarse en la preparación de datos y la evaluación de modelos sin gestionar la infraestructura de formación, lo que lo hace ideal para una experimentación y un desarrollo rápidos.

El enfoque de capacitación en IA de SageMaker ofrece un mayor control sobre cada aspecto del proceso de ajuste. Los ingenieros de aprendizaje automático (ML) obtienen un control granular sobre los parámetros de capacitación, la selección de infraestructura y la integración con los flujos de trabajo MLOps existentes, lo que permite la optimización del rendimiento, el costo y los requisitos operativos requeridos. Por ejemplo, puede ajustar los tamaños de lote y los tipos de instancias para optimizar la velocidad de entrenamiento, o modificar las tasas de aprendizaje y los parámetros de LoRA para equilibrar la calidad del modelo con el tiempo de entrenamiento según sus necesidades operativas específicas.

Elija la personalización del modelo de Amazon Bedrock cuando: necesite una iteración rápida, tenga experiencia limitada en infraestructura de aprendizaje automático o desee minimizar la sobrecarga operativa y al mismo tiempo lograr un rendimiento del modelo personalizado.

Elija la capacitación en IA de SageMaker cuando: requiera un control detallado de los parámetros, tenga requisitos de cumplimiento o de infraestructura específicos, necesite integración con canales MLOps existentes o desee optimizar cada aspecto del proceso de capacitación.

empezar

¿Listo para crear su propia solución rentable de texto a SQL? Accede a nuestras implementaciones completas:

Ambos enfoques utilizan el mismo modelo de implementación rentable, por lo que puede elegir en función de la experiencia y los requisitos de su equipo en lugar de las limitaciones de costos.

Sobre los autores

Foto de cabeza de un Zeek Granston

Zeek Granston

Zeek es un arquitecto asociado de soluciones de IA/ML centrado en la creación de soluciones eficaces de inteligencia artificial y aprendizaje automático. Se mantiene actualizado con las tendencias de la industria para ofrecer resultados prácticos a los clientes. Fuera del trabajo, a Zeek le gusta crear aplicaciones de inteligencia artificial y jugar baloncesto.

Felipe López

Felipe López es arquitecto senior de soluciones especializado en IA/ML en AWS. Antes de unirse a AWS, Felipe trabajó con GE Digital y SLB, donde se centró en productos de modelado y optimización para aplicaciones industriales.