O desafio da geração de texto para SQL em aplicações empresariais
A conversão de linguagem natural para consultas SQL permanece como um dos desafios mais complexos em aplicações de inteligência artificial empresarial, especialmente quando envolvem dialetos SQL customizados ou esquemas de banco de dados específicos de cada domínio. Embora os modelos de fundação (FMs) demonstrem um desempenho sólido com SQL padrão, alcançar precisão adequada para produção com dialetos especializados exige ajustes finos no modelo.
Acontece que o ajuste fino introduz uma questão operacional delicada: manter modelos customizados em infraestrutura persistente gera custos contínuos, mesmo durante períodos sem qualquer utilização. A Amazon Bedrock oferece uma alternativa através de inferência sob demanda com modelos Amazon Nova Micro ajustados. Ao combinar a eficiência do ajuste fino LoRA (Adaptação de Rank Baixo) com inferência serverless baseada em tokens pagos, as organizações conseguem implementar capacidades de texto para SQL customizadas sem os custos adicionais de hospedagem em modelo persistente.
Este artigo apresenta duas abordagens práticas para ajuste fino do Amazon Nova Micro, visando à geração de dialetos SQL customizados, entregando tanto eficiência de custos quanto desempenho pronto para produção. No exemplo de carga de trabalho demonstrado, manteve-se um custo mensal de apenas USD 0,80 com aproximadamente 22.000 consultas por mês — economias significativas se comparadas a infraestrutura de modelo hospedado permanentemente.
Preparação do ambiente e visão geral da solução
Pré-requisitos
Para implantar essas soluções, você precisará de:
- Uma conta AWS com faturamento habilitado
- Permissões padrão de IAM e papel configurados para acessar Amazon Bedrock, modelo Nova Micro, Amazon SageMaker AI e customização de modelo em Bedrock
- Cota para instância ml.g5.48xl no Amazon SageMaker AI para treinamento
Arquitetura geral
A solução segue uma sequência lógica de etapas:
- Preparar dataset de treinamento SQL customizado com pares entrada-saída específicos do dialeto SQL e requisitos de negócio da sua organização
- Iniciar o processo de ajuste fino no modelo Amazon Nova Micro usando o dataset preparado
- Escolher entre duas abordagens: customização de modelo gerenciada via Amazon Bedrock ou treinamento granular com Amazon SageMaker AI
- Implantar o modelo customizado na Bedrock para usar inferência sob demanda, eliminando gerenciamento de infraestrutura e pagando apenas pelo uso de tokens
- Validar desempenho do modelo com consultas de teste específicas para seu dialeto SQL e casos de uso

Preparação do dataset
A demonstração utiliza o dataset sql-create-context, uma combinação curada de WikiSQL e datasets Spider contendo mais de 78 mil exemplos de perguntas em linguagem natural emparelhadas com consultas SQL em diversos esquemas de banco de dados. Esse dataset oferece uma base ideal para ajuste fino de texto para SQL devido à sua variedade em complexidade de consultas, desde simples instruções SELECT até joins multi-tabela complexos com agregações.
Formatação e estrutura dos dados
Os dados de treinamento são estruturados conforme descrito na documentação. Isso envolve criar arquivos JSONL contendo instruções de prompt do sistema emparelhadas com consultas do usuário e respostas SQL correspondentes de complexidade variada. O dataset de treinamento formatado é então dividido em conjuntos de treinamento e validação, armazenado como arquivos JSONL e carregado no Amazon Simple Storage Service (Amazon S3) para o processo de ajuste fino.
Um exemplo de registro convertido segue o padrão bedrock-conversation-2024:
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a powerful text-to-SQL model. Your job is to answer questions about a database. You can use the following table schema for context: CREATE TABLE head (age INTEGER)" } ], "messages": [ { "role": "user", "content": [ { "text": "Return the SQL query that answers the following question: How many heads of the departments are older than 56 ?" } ] }, { "role": "assistant", "content": [ { "text": "SELECT COUNT(*) FROM head WHERE age > 56" } ] } ] }
Abordagem 1: Ajuste fino gerenciado via Amazon Bedrock
A customização de modelo via Amazon Bedrock oferece uma abordagem totalmente gerenciada e simplificada para ajuste fino de modelos Amazon Nova sem necessidade de provisionar ou gerenciar infraestrutura de treinamento. Esse método é ideal para equipes que buscam iteração rápida e complexidade operacional mínima enquanto alcançam desempenho de modelo customizado adequado para seus casos de uso de texto para SQL.
Usando as capacidades de customização da Bedrock, os dados de treinamento são carregados no S3, e os trabalhos de ajuste fino são configurados através do console AWS ou API. A AWS então gerencia toda a infraestrutura de treinamento subjacente. O modelo customizado resultante pode ser implantado usando inferência sob demanda, mantendo o mesmo preço baseado em tokens do modelo Nova Micro base sem markup adicional — tornando-se uma solução econômica para cargas de trabalho variáveis.
Criando um trabalho de ajuste fino
A Amazon Bedrock suporta ajuste fino tanto via Console AWS quanto via AWS SDK para Python (Boto3). A documentação AWS contém orientação geral sobre como enviar um trabalho de treinamento com ambas as abordagens. Você pode consultar o notebook de exemplo em nosso repositório GitHub para ver a implementação passo a passo.
Configuração de hiperparâmetros
Após selecionar o modelo a ajustar, você configura os hiperparâmetros para seu caso de uso. Para ajuste fino do Amazon Nova Micro na Bedrock, você pode customizar os seguintes hiperparâmetros para otimizar seu modelo de texto para SQL:
- Epochs (1–5): Número de passagens completas pelo dataset de treinamento — utilizamos 5 epochs
- Batch Size (fixo em 1): Número de amostras processadas antes de atualizar os pesos do modelo
- Learning Rate (0.000001–0.0001): Tamanho do passo para otimização de gradiente descendente — utilizamos 0.00001 para convergência estável
- Learning Rate Warmup Steps (0–100): Número de passos para aumentar gradualmente a taxa de aprendizado — utilizamos 10
No dataset de exemplo, essa configuração proporcionou um equilíbrio melhorado entre precisão do modelo e tempo de treinamento, completando em aproximadamente 2-3 horas.
Análise de métricas de treinamento
A Bedrock gera automaticamente métricas de treinamento e validação, armazenadas em seu local de saída especificado no S3. Essas métricas incluem perda de treinamento (como o modelo se ajusta aos dados de treinamento) e perda de validação (indicador de desempenho de generalização em dados não vistos). As curvas de perda de treinamento e validação demonstram treinamento bem-sucedido: ambas decrescem consistentemente, seguem padrões similares e convergem para valores finais comparáveis.

Implantação com inferência sob demanda
Após concluir com sucesso o trabalho de ajuste fino, você pode implantar seu modelo Nova Micro customizado usando inferência sob demanda. Essa opção de implantação oferece escalabilidade automática e preço por token, tornando-a ideal para cargas de trabalho variáveis sem necessidade de provisionar recursos computacionais dedicados.
Após a implantação, você invoca seu modelo customizado usando o ARN de implantação como ID do modelo na API Converse da Amazon Bedrock:
# Use the deployment ARN as the model ID
deployment_arn = "arn:aws:bedrock:us-east-1::deployment/"
# Prepare the inference request
response = bedrock_runtime.converse(
modelId=deployment_arn,
messages=[
{
"role": "user",
"content": [
{
"text": """Database schema: CREATE TABLE sales ( id INT, product_name VARCHAR(100), category VARCHAR(50), revenue DECIMAL(10,2), sale_date DATE ); Question: What are the top 5 products by revenue in the Electronics category?"""
}
]
}
],
inferenceConfig={
"maxTokens": 512,
"temperature": 0.1, # Low temperature for deterministic SQL generation
"topP": 0.9
}
)
# Extract the generated SQL query
sql_query = response['output']['message']['content'][0]['text']
print(f"Generated SQL: {sql_query}")
Abordagem 2: Ajuste fino com Amazon SageMaker AI
Enquanto a abordagem Bedrock simplifica a customização de modelo através de uma experiência de treinamento gerenciada, organizações que buscam controle de otimização mais profundo podem se beneficiar da abordagem SageMaker AI. O Amazon SageMaker AI oferece controle extenso sobre parâmetros de treinamento que impactam significativamente a eficiência e desempenho do modelo.
Você pode ajustar o tamanho do lote para otimização de velocidade e memória, ajustar regularização dropout nas camadas para prevenir sobreajuste, e configurar cronogramas de taxa de aprendizado para estabilidade de treinamento. Para ajuste fino LoRA especificamente, você pode customizar fatores de escala e parâmetros de regularização com diferentes configurações otimizadas para datasets multimodais versus apenas texto.
Preparação de dados e carregamento
O processo de preparação e carregamento de dados para a abordagem SageMaker AI é idêntico à implementação Bedrock. Ambas as abordagens convertem o dataset SQL para o formato de schema bedrock-conversation-2024, dividem os dados em conjuntos de treinamento e teste, e carregam os arquivos JSONL diretamente no S3:
# S3 prefix for training data
training_input_path = f's3://{sess.default_bucket()}/datasets/nova-sql-context'
# Upload datasets to 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'Training data uploaded to: {train_s3_path}')
print(f'Test data uploaded to: {test_s3_path}')
Criando um trabalho de ajuste fino com SageMaker AI
Você seleciona o ID do modelo, a receita de treinamento e a URI de imagem:
# Nova configuration
model_id = "nova-micro/prod"
recipe = "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"
instance_type = "ml.g5.48xlarge"
instance_count = 1
# Nova-specific image URI
image_uri = f"708977205387.dkr.ecr.{sess.boto_region_name}.amazonaws.com/nova-fine-tune-repo:SM-TJ-SFT-latest"
print(f'Model ID: {model_id}')
print(f'Recipe: {recipe}')
print(f'Instance type: {instance_type}')
print(f'Instance count: {instance_count}')
print(f'Image URI: {image_uri}')
Receitas customizadas de treinamento
Um diferencial importante ao usar Amazon SageMaker AI para ajuste fino de modelo Nova é a capacidade de customizar uma receita de treinamento. As receitas são pilhas de treinamento pré-configuradas fornecidas pela AWS para ajudá-lo a iniciar rapidamente. Enquanto mantêm compatibilidade com o conjunto padrão de hiperparâmetros da Bedrock (epochs, tamanho do lote, taxa de aprendizado e warmup steps), as receitas estendem as opções de hiperparâmetros através de:
- Parâmetros de regularização: hidden_dropout, attention_dropout, ffn_dropout para prevenir sobreajuste
- Configurações de otimizador: Coeficientes beta customizáveis e configurações de weight decay
- Controles de arquitetura: Rank de adaptador e fatores de escala para treinamento LoRA
- Agendamento avançado: Cronogramas customizados de taxa de aprendizado e estratégias de warmup
Você pode consultar a receita completa que foi utilizada. Para o trabalho de treinamento SageMaker AI neste exemplo, foram usados parâmetros de receita padrão incluindo 2 epochs e tamanho de lote de 64. Com dados contendo 20 mil linhas, o trabalho de treinamento completo durou 4 horas usando a instância ml.g5.48xlarge, com custo total de USD 65 para ajuste fino do modelo Nova Micro.
Testes e avaliação de desempenho
A avaliação do modelo abrangeu testes tanto operacionais quanto de precisão. Para avaliar a precisão, implementou-se uma abordagem “LLM-as-a-Judge” onde coletaram-se perguntas e respostas SQL do modelo ajustado fino, usando um modelo juiz para pontuação comparada às respostas corretas (ground truth).
Para testes operacionais, coletaram-se métricas incluindo TTFT (Tempo para Primeiro Token) e OTPS (Tokens de Saída por Segundo). Comparado ao modelo Nova Micro base, experimentou-se tempo de início frio até primeiro token em média de 639 ms em 5 execuções — um aumento de 34%. Esse aumento de latência provém da aplicação de adaptadores LoRA no tempo de inferência em vez de incorporá-los aos pesos do modelo. Contudo, essa escolha arquitetural entrega benefícios substanciais de custo, já que o modelo Nova Micro ajustado custa o mesmo que o modelo base, permitindo preço sob demanda com flexibilidade de pagamento por uso e sem compromissos mínimos.
Durante operação normal, o tempo até primeiro token em média é de 380 ms em 50 chamadas — um aumento de apenas 7%. A latência end-to-end total é aproximadamente 477 ms para geração completa de resposta. A geração de tokens mantém uma taxa de aproximadamente 183 tokens por segundo, representando apenas 27% de diminuição do modelo base, mantendo-se altamente adequada para aplicações interativas.

Análise de custos
Custos únicos (one-time):
- Treinamento de modelo Amazon Bedrock: USD 0,001 por 1 mil tokens × número de epochs. Para 2 mil exemplos, 5 epochs e aproximadamente 800 tokens cada = USD 8,00
- Treinamento de modelo SageMaker AI: Instância ml.g5.48xlarge custa USD 16,288/hora. Treinamento de 4 horas com dataset de 20 mil linhas = USD 65,15
Custos contínuos (ongoing):
- Armazenamento: USD 1,95 por mês por modelo customizado
- Inferência sob demanda: Mesmo preço por token do Nova Micro base
- Tokens de entrada: USD 0,000035 por mil tokens
- Tokens de saída: USD 0,00014 por mil tokens
Exemplo de cálculo para carga de trabalho em produção:
Para 22 mil consultas por mês (100 usuários × 10 consultas/dia × 22 dias úteis), com média de 800 tokens de entrada + 60 tokens de saída por consulta:
- Custo de entrada: (22.000 × 800 / 1.000) × 0,000035 = USD 0,616
- Custo de saída: (22.000 × 60 / 1.000) × 0,00014 = USD 0,184
- Custo mensal total de inferência: USD 0,80
Essa análise valida que, para casos de uso customizados de texto para SQL, ajuste fino de modelo Nova usando PEFT LoRA na Amazon Bedrock é significativamente mais econômico que auto-hospedagem de modelos customizados em infraestrutura persistente. Abordagens auto-hospedadas podem ser adequadas para casos que requerem máximo controle sobre infraestrutura, configurações de segurança ou requisitos de integração. Mas o modelo de custo sob demanda da Amazon Bedrock oferece economias significativas para a maioria das cargas de trabalho de texto para SQL em produção.
Escolhendo a abordagem adequada
Ambas as implementações compartilham o mesmo modelo de implantação serverless e preço sob demanda, permitindo que você escolha baseado na expertise e requisitos da sua equipe, não em restrições de custo.
Escolha customização de modelo Amazon Bedrock quando:
- Você precisa de iteração rápida, possui expertise limitada em infraestrutura ML, ou deseja minimizar complexidade operacional enquanto alcança desempenho de modelo customizado
Escolha treinamento SageMaker AI quando:
- Você requer controle fino sobre parâmetros, possui requisitos específicos de infraestrutura ou conformidade, precisa integrar com pipelines MLOps existentes, ou quer otimizar cada aspecto do processo de treinamento
Começando
Pronto para construir sua própria solução de texto para SQL econômica? Acesse nossas implementações completas:
- Notebook de Ajuste Fino Bedrock: Abordagem gerenciada e simplificada
- Notebook de Ajuste Fino SageMaker AI: Customização avançada e controle
Ambas as abordagens usam o mesmo modelo de implantação econômico, então você pode escolher baseado na expertise da sua equipe e requisitos, em vez de restrições de custo.
Fonte
Cost-efficient custom text-to-SQL using Amazon Nova Micro and Amazon Bedrock on-demand inference (https://aws.amazon.com/blogs/machine-learning/cost-efficient-custom-text-to-sql-using-amazon-nova-micro-and-amazon-bedrock-on-demand-inference/)
Leave a Reply