Home / Inteligência Artificial / Como acelerar o fine-tuning de LLMs com dados não estruturados usando SageMaker Unified Studio e Amazon S3

Como acelerar o fine-tuning de LLMs com dados não estruturados usando SageMaker Unified Studio e Amazon S3

Em 2026, a AWS anunciou uma integração entre o Amazon SageMaker Unified Studio e os buckets de uso geral do Amazon S3, facilitando o uso de dados não estruturados armazenados no S3 para casos de uso em machine learning (ML) e análise de dados. Este artigo apresenta um guia prático para integrar buckets S3 com o Amazon SageMaker Catalog e realizar o fine-tuning do modelo Llama 3.2 11B Vision Instruct para a tarefa de Visual Question Answering (VQA) usando o SageMaker Unified Studio.

\n\n

Contexto e objetivo do fine-tuning

\n

O modelo base Llama 3.2 11B Vision Instruct, acessado via SageMaker JumpStart, já apresenta desempenho robusto com uma pontuação de Average Normalized Levenshtein Similarity (ANLS) de 85,3% no dataset DocVQA. O ANLS é uma métrica que avalia a similaridade entre a resposta prevista pelo modelo e a resposta correta em tarefas de VQA. No entanto, para aplicações que exigem maior precisão, o fine-tuning com dados específicos é fundamental.

\n

Para isso, utilizamos o dataset DocVQA disponível no Hugging Face, que contém 39.500 exemplos compostos por imagens, perguntas e respostas. O objetivo é criar três versões do modelo fine-tuned utilizando conjuntos de dados com 1.000, 5.000 e 10.000 imagens para comparar o impacto do volume de dados na performance.

\n\n

Pré-requisitos essenciais

\n

    \n

  • Conta AWS ativa.
  • \n

  • Domínio SageMaker Unified Studio configurado via quick setup, com Identity Center habilitado.
  • \n

  • Dois projetos criados no SageMaker Unified Studio: um para o perfil produtor de dados e outro para o consumidor que realizará o fine-tuning. Veja mais em Create a project.
  • \n

  • Aplicação serverless do MLflow gerenciada pelo SageMaker para rastreamento das experiências e métricas, configurada conforme criando aplicação serverless MLflow.
  • \n

  • Bucket S3 previamente populado com o dataset DocVQA, obtido via API do Hugging Face.
  • \n

  • Solicitação de aumento de cota para instâncias p4de.24xlarge para treinamento, conforme Requesting a quota increase.
  • \n

\n\n

Arquitetura da solução e fluxo de trabalho

\n

A arquitetura contempla seis etapas principais:

\n

    \n

  1. Criação de uma role IAM com permissão de leitura para o bucket S3 contendo o dataset DocVQA.
  2. \n

  3. Projeto produtor de dados usa essa role para descobrir e catalogar o dataset no SageMaker Catalog.
  4. \n

  5. Enriquecimento opcional do dataset com metadados empresariais, como README e glossário.
  6. \n

  7. Publicação do dataset no SageMaker Catalog para consumo.
  8. \n

  9. Projeto consumidor assina o dataset publicado, tornando-o disponível para o time de desenvolvimento.
  10. \n

  11. Pré-processamento do dataset e fine-tuning do modelo em três versões, com acompanhamento via MLflow e avaliação pelo ANLS.
  12. \n

\n\n

Preparação e ingestão dos dados no Amazon S3

\n

Para iniciar, utilizamos a API Datasets do Hugging Face para baixar e salvar os splits de treino e validação do DocVQA localmente, conforme o código abaixo:

\n

import os\nfrom datasets import load_dataset\n\nos.makedirs("data", exist_ok=True)\ntrain_data = load_dataset("HuggingFaceM4/DocumentVQA", split="train[:10000]", cache_dir="./data")\ntrain_data.save_to_disk("data/train")\nval_data = load_dataset("HuggingFaceM4/DocumentVQA", split="validation[:100]", cache_dir="./data")\nval_data.save_to_disk("data/validation")\n

\n

Em seguida, sincronizamos esses dados para o bucket S3 que será usado durante o treinamento.

\n\n

Catalogação e publicação do dataset no SageMaker Unified Studio

\n

No projeto produtor, adicionamos o bucket S3 via Data → Add data → Add S3 location, selecionando a role IAM criada para garantir acesso seguro. O dataset aparece então no catálogo do projeto.

\n

Opcionalmente, adicionamos metadados empresariais para facilitar a governança e documentação, como um arquivo README. Após isso, publicamos o dataset no SageMaker Catalog para que outros projetos possam consumi-lo.

\n\n

Consumo do dataset e ambiente de desenvolvimento

\n

No projeto consumidor, assinamos o dataset publicado para que ele fique disponível para o time de ML. Criamos um espaço com JupyterLab dentro do SageMaker Unified Studio para desenvolver, configurar e executar o fine-tuning.

\n

É recomendado configurar o espaço com 100 GB de armazenamento e definir o tempo de inatividade para 6 horas, pois o treinamento pode levar até 4 horas usando a instância ml.p4de.24xlarge.

\n\n

Fine-tuning do modelo Llama 3.2 11B Vision Instruct

\n

O processo de fine-tuning é realizado em três conjuntos de dados com tamanhos variados (1k, 5k e 10k imagens) para avaliar o impacto do volume de dados na performance do modelo.

\n

O dataset é transformado em estrutura própria para o fine-tuning, contendo subdiretórios images e arquivos metadata.jsonl com exemplos no formato:

\n

{"file_name": "images/img_0.jpg", "prompt": "qual é a data mencionada nesta carta?", "completion": "1/8/93"}\n{"file_name": "images/img_1.jpg", "prompt": "qual o nome da pessoa de contato mencionada na carta?", "completion": "P. Carter"}\n

\n

O treinamento é orquestrado por uma função parametrizada que utiliza o SageMaker JumpStart para acessar o modelo base, ajustando hiperparâmetros e configurando a instância de treinamento. O MLflow é integrado para registrar automaticamente hiperparâmetros, metadados do job e resultados.

\n\n

Avaliação dos modelos fine-tuned com a métrica ANLS

\n

A métrica ANLS é usada para avaliar a qualidade das respostas geradas pelo modelo nas tarefas de VQA, considerando variações e pequenos erros textuais. O MLflow facilita a comparação entre as versões treinadas.

\n

O pipeline de avaliação inclui funções para codificação das imagens, formatação do payload para inferência, cálculo da métrica ANLS e registro dos resultados.

\n\n

Dicas práticas e limitações

\n

    \n

  • O uso da instância ml.p4de.24xlarge é recomendado devido ao tamanho do modelo e necessidade de memória.
  • \n

  • Solicite aumento de cota antecipadamente para evitar bloqueios no treinamento.
  • \n

  • Configure o tempo de inatividade e armazenamento do espaço JupyterLab para evitar interrupções e falta de espaço.
  • \n

  • O processo de sincronização de dados via AWS CLI com access grants pode ser adaptado conforme a linguagem e SDK preferidos.
  • \n

  • O fine-tuning pode ser aplicado a outros tipos de dados não estruturados além de imagens, como documentos, logs e textos.
  • \n

\n\n

Links úteis para implementação

\n

Marcado:

Deixe um Comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *