Aceleração do Ajuste Fino de Modelos de Linguagem com Dados Não Estruturados usando SageMaker Unified Studio e S3

Contexto da Integração

No ano anterior, a AWS anunciou uma integração significativa entre o Amazon SageMaker Unified Studio e os buckets de propósito geral do Amazon S3. Essa conexão simplifica bastante a forma como equipes trabalham com dados não estruturados armazenados no Amazon Simple Storage Service (Amazon S3) para casos de uso em aprendizado de máquina (ML) e análise de dados.

Este artigo demonstra como conectar buckets S3 ao Amazon SageMaker Catalog para realizar o ajuste fino do modelo Llama 3.2 11B Vision Instruct voltado para tarefas de resposta a perguntas visuais (VQA, sigla em inglês para Visual Question Answering). O fluxo prático mostra como fornecer ao modelo de linguagem uma imagem e uma pergunta para obter uma resposta — por exemplo, identificar a data de uma transação em um recibo itemizado.

Preparação Inicial e Desempenho Base

A AWS disponibiliza o modelo Llama 3.2 11B Vision Instruct através do Amazon SageMaker JumpStart. Fora da caixa, esse modelo base alcança uma pontuação ANLS (Similaridade de Levenshtein Normalizada Média — Average Normalized Levenshtein Similarity) de 85,3% no conjunto de dados DocVQA. O ANLS é uma métrica empregada para avaliar o desempenho de modelos em tarefas de resposta a perguntas visuais, medindo a similitude entre a resposta predita e a resposta esperada.

Embora 85,3% demonstre um desempenho inicial sólido, esse nível pode não ser suficiente para tarefas que exigem maior precisão. Para elevar o desempenho através do ajuste fino, utiliza-se o conjunto de dados DocVQA do Hugging Face, que contém 39.500 linhas de dados de treinamento, cada uma com uma imagem, uma pergunta e a resposta correspondente esperada.

Estratégia de Experimentação

O processo envolve a criação de três versões de modelos ajustados utilizando diferentes tamanhos de conjuntos de dados: 1.000, 5.000 e 10.000 imagens. Cada variação é avaliada usando o Amazon SageMaker com suporte a MLflow gerenciado e sem servidor para rastreamento de experimentos e medição de melhorias de acurácia. Todo o fluxo de ingestão de dados, desenvolvimento de modelo e avaliação de métricas é orquestrado pelo Amazon SageMaker Unified Studio.

Arquitetura da Solução

A arquitetura construída realiza a ingestão de dados, pré-processamento, treinamento do modelo e avaliação utilizando o Amazon SageMaker Unified Studio. O processo segue estas etapas principais:

  • Criar e configurar um papel de acesso IAM que concede permissões de leitura a um bucket S3 preexistente contendo o conjunto de dados DocVQA bruto e não processado
  • O projeto produtor de dados usa o papel de acesso para descobrir e adicionar o conjunto de dados ao catálogo do projeto
  • O projeto produtor enriquece o conjunto de dados com metadados opcionais e o publica no SageMaker Catalog
  • O projeto consumidor de dados se inscreve no conjunto de dados publicado, disponibilizando-o para a equipe de desenvolvimento de modelos de aprendizado de máquina
  • O projeto consumidor pré-processa os dados e os transforma em três conjuntos de treinamento de tamanhos variados (1k, 5k e 10k imagens)
  • Cada conjunto é utilizado para ajustar o modelo base de linguagem, com o MLflow rastreando experimentos e resultados de avaliação em relação à métrica ANLS

Pré-requisitos Necessários

Para preparar uma organização visando usar essa nova integração entre o Amazon SageMaker Unified Studio e buckets S3 de propósito geral, é necessário completar alguns passos em um domínio baseado em Identity Center:

  • Criar uma conta AWS
  • Criar um domínio Amazon SageMaker Unified Studio através de configuração rápida
  • Criar dois projetos dentro do domínio: um para a função de produtor de dados e outro para consumidor de dados
  • Garantir que o projeto consumidor tenha acesso a uma aplicação MLflow gerenciada sem servidor em execução
  • Pré-popular um bucket Amazon S3 com o conjunto de dados bruto
  • Solicitar aumento de cota de serviço para utilizar instâncias de computação p4de.24xlarge em trabalhos de treinamento

Fluxo de Implementação

Descoberta e Catalogação de Dados

Um projeto no Amazon SageMaker Unified Studio funciona como um limite dentro de um domínio onde equipes podem colaborar em casos de uso comerciais. Para trazer dados do S3 para um projeto, é necessário primeiro adicionar acesso aos dados e depois adicioná-los ao projeto. Nesta demonstração, utiliza-se um papel de acesso para facilitar esse processo.

Após criar o papel de acesso conforme documentado, no projeto produtor de dados, navega-se até Dados → Adicionar dados → Adicionar localização S3, fornecendo o nome do bucket e o prefixo contendo os dados brutos. O papel de acesso necessário aparece em um menu suspenso para seleção.

Dependendo das necessidades organizacionais, é possível enriquecer ainda mais esse ativo de dados através de junções com outras fontes, aplicação de transformações específicas do negócio, implementação de verificações de qualidade ou criação de características derivadas. Para este exemplo, trabalha-se com o conjunto de dados em sua forma atual para manter o foco na integração.

Em seguida, publica-se o bucket no SageMaker Catalog, adicionando opcionalmente metadados de negócio como um arquivo README e termos de glossário. Após a publicação através do menu Ações, o ativo de dados fica pronto para ser consumido por outros projetos.

Consumo e Desenvolvimento do Modelo

Mudando para a perspectiva do projeto consumidor, é possível agora se inscrever no ativo de dados recém-publicado. Com a inscrição concluída, inicia-se o trabalho com os dados dentro de um ambiente JupyterLab gerenciado no Amazon SageMaker Unified Studio.

No projeto de desenvolvimento de ML, navegando até Computação → Espaços → Criar espaço e selecionando JupyterLab como tipo de aplicação, inicia-se um novo ambiente de desenvolvimento interativo. Considera-se importante definir o Tempo de Inatividade para 6 horas, permitindo que notebooks rodem completamente sem erros, e o Armazenamento do Espaço para 100 GB para acomodar a ingestão completa do conjunto de dados durante o ajuste fino.

Acesso aos Dados e Preparação

Com o espaço em execução, carrega-se o notebook de demonstração. A integração utiliza Amazon S3 Access Grants para facilitar o acesso seguro aos dados sem gerenciamento complexo de permissões.

Os dados podem ser acessados através da Interface de Linha de Comando AWS (AWS CLI), SDKs AWS e API REST do S3. Adicionalmente, é possível usar plugins Python e Java para chamar o serviço. O notebook utiliza a abordagem AWS CLI para obter credenciais temporárias de acesso ao plano de controle S3 e sincronizar os dados localmente.

Com o conjunto de dados agora acessível localmente, é necessário transformá-lo no formato requerido para ajuste fino. Criam-se três conjuntos de dados com tamanhos variados, cada um contendo um diretório de treinamento e validação com subdiretórios de imagens e arquivo metadata.jsonl com exemplos de treinamento:

{"file_name": "images/img_0.jpg", "prompt": "what is the date mentioned in this letter?", "completion": "1/8/93"}
{"file_name": "images/img_1.jpg", "prompt": "what is the contact person name mentioned in letter?", "completion": "P. Carter"}

Ajuste Fino e Rastreamento de Experimentos

Com os artefatos enviados para o S3, procede-se ao ajuste fino do modelo através do SageMaker JumpStart para acessar o modelo Llama 3.2 11B Vision Instruct pré-treinado. Criam-se três variantes ajustadas distintas para avaliação.

Um função de treinamento parametrizada facilita essa execução, manipulando múltiplos aspectos importantes: seleção do modelo com a versão mais recente disponível no JumpStart, obtenção automática de hiperparâmetros padrão usando a API retrieve_default() no SDK SageMaker, configuração de tamanho de lote (batch size) ajustado para 1 por dispositivo dadas as limitações de memória do modelo grande, e utilização de instâncias ml.p4de.24xlarge para trabalhos de treinamento.

A integração automática com MLflow registra hiperparâmetros, nomes de trabalhos e metadados de treinamento para rastreamento de experimentos, enquanto cada modelo treinado é automaticamente implantado em um ponto de acesso (endpoint) SageMaker para inferência. O processo de treinamento leva algumas horas usando esse tipo de instância.

Avaliação de Resultados

Os modelos ajustados são avaliados utilizando a métrica ANLS, que avalia saídas baseadas em texto medindo a similitude entre respostas preditas e esperadas, mesmo com pequenos erros ou variações. Essa métrica é particularmente útil em tarefas de resposta a perguntas visuais por conseguir lidar com pequenas variações nas respostas.

O MLflow rastreia experimentos e resultados para comparação direta. O fluxo de avaliação inclui funções para codificação de imagens para inferência do modelo, formatação de carga útil, cálculo de ANLS e registro de resultados. Uma função pipeline de treinamento orquestra o fluxo completo com execuções MLflow aninhadas para melhor organização de experimentos.

Resultados Alcançados

Após executar o pipeline completo três vezes para os três tamanhos de conjunto de dados diferentes, revisa-se os resultados da métrica ANLS no MLflow. Os dados evidenciam uma relação positiva entre o tamanho do conjunto de dados de treinamento e a pontuação ANLS:

  • Modelo docvqa-1000: 0.886
  • Modelo docvqa-5000: 0.894
  • Modelo docvqa-10000: 0.902
  • Modelo Base: 0.853

O modelo docvqa-10000 alcançou a maior pontuação ANLS de 0.902, representando um aumento de 4,9 pontos percentuais em relação ao modelo base (0.902 − 0.853 = 0.049). Essa melhoria valida a abordagem para tarefas de resposta a perguntas visuais.

Benefícios Principais

A integração entre o Amazon SageMaker Unified Studio e buckets S3 de propósito geral oferece diversos benefícios:

  • Descoberta e catalogação simplificadas de dados através de uma interface unificada
  • Acesso seguro aos dados através de S3 Access Grants sem necessidade de gerenciamento complexo de permissões
  • Colaboração tranquila entre produtores e consumidores de dados em diferentes projetos
  • Rastreamento de experimentos de ponta a ponta com integração gerenciada do MLflow

As organizações podem agora aproveitar seus ativos de dados S3 existentes de forma mais eficaz para cargas de trabalho de aprendizado de máquina, mantendo controles de governança e segurança.

Próximos Passos

Para aprofundar a exploração dessa abordagem, considere investigar técnicas adicionais de pré-processamento de dados, experimentar diferentes arquiteturas de modelos disponíveis através do SageMaker JumpStart, ou aumentar a escala para conjuntos de dados maiores conforme os requisitos de seu caso de uso exigirem.

O código de solução completo está disponível em um repositório GitHub para referência e implementação prática.

Fonte

Accelerating LLM fine-tuning with unstructured data using SageMaker Unified Studio and S3 (https://aws.amazon.com/blogs/machine-learning/accelerating-llm-fine-tuning-with-unstructured-data-using-sagemaker-unified-studio-and-s3/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *