4 pontos por GN⁺ 2024-01-25 | 1 comentários | Compartilhar no WhatsApp
  • Machine Learning Engineering Open Book é um material aberto que reúne metodologias, ferramentas e comandos passo a passo para realizar com sucesso treinamento, fine-tuning e inferência de modelos LLM, VLM e RAG
  • O público-alvo são engenheiros e operadores de treinamento de LLM/VLM, e o material inclui muitos scripts e comandos prontos para copiar e executar para resolver problemas rapidamente
  • O conteúdo se baseia no know-how acumulado a partir das experiências de treinamento do BLOOM-176B em 2022, do IDEFICS-80B em 2023 e de modelos RAG na Contextual.AI em 2024
  • O escopo inclui escolha de nuvem, aceleradores, armazenamento, rede, orquestração, treinamento, inferência, depuração, testes e recursos, além de oferecer e-books em PDF e EPUB
  • É um repositório público de conhecimento que permite a comunidades com dificuldade de lidar diretamente com grandes clusters de computação para ML aprender indiretamente conhecimento operacional vindo de experiências reais de treinamento em larga escala

Objetivo do livro e público-leitor

  • Machine Learning Engineering Open Book é uma coletânea pública de conhecimento para treinamento, fine-tuning e inferência de grandes modelos de linguagem e modelos multimodais
  • Tem forte caráter técnico e inclui scripts e comandos prontos para copiar e executar para que engenheiros e operadores de treinamento de LLM/VLM possam aplicar rapidamente
  • O conteúdo do repositório começou como anotações pessoais para reencontrar rapidamente soluções pesquisadas no passado e que realmente funcionaram, e depois foi compartilhado com a comunidade mais ampla de ML

Escopo baseado em experiência

  • Grande parte do know-how foi acumulada em experiências reais de treinamento de modelos em larga escala
  • O foco é permitir que a comunidade aprenda indiretamente conhecimentos de áreas difíceis de vivenciar na prática devido ao alto custo de aluguel de grandes clusters de computação para ML

Tópicos organizados

  • Insights

    • AI Battlefield Engineering
    • como escolher um provedor de nuvem
  • Hardware

    • Compute: aceleradores, CPU, memória de CPU
    • Storage: sistemas de arquivos locais, distribuídos e compartilhados
    • Network: rede dentro do nó e entre nós
  • Orchestration

    • sistemas de orquestração para gerenciar contêineres e recursos
    • SLURM: Simple Linux Utility for Resource Management
  • Training / Inference

    • guias relacionados ao treinamento de modelos
    • insights relacionados à inferência de modelos
  • Development

    • depuração e troubleshooting para problemas simples e difíceis
    • The Art of Debugging Open book, com receitas e metodologias relacionadas
    • dicas e ferramentas para ajudar na criação de testes
  • Miscellaneous

    • recursos cronológicos sobre LLM/VLM

Tabelas comparativas e ferramentas para consulta rápida

  • A tabela comparativa de aceleradores de alto desempenho cobre TFLOPS teóricos e tamanho/velocidade da memória dos aceleradores
  • A tabela comparativa de rede cobre a velocidade teórica de redes entre nós e dentro do nó
  • Ferramentas usadas com frequência são oferecidas como atalhos separados
    • all_reduce_bench.py: ferramenta para medir throughput de rede com mais facilidade que nccl-tests
    • torch-distributed-gpu-test.py: ferramenta para testar rapidamente a conectividade entre nós
    • mamf-finder.py: ferramenta para localizar medições de TFLOPS realmente alcançáveis em aceleradores
  • Guias usados com frequência também são oferecidos como atalhos separados
    • soluções de depuração para aplicar rapidamente quando aplicações PyTorch travam ou quebram
    • cheat sheet e truques para usuários de SLURM
    • como criar modelos, datasets e tokenizers pequenos
    • coletânea pública de logbooks de treinamento de LLM/VLM

Formatos de distribuição e participação

  • O e-book é oferecido no Hugging Face Hub
  • O e-book deverá ser recompilado a cada poucas semanas, e também são fornecidas instruções para compilar diretamente a versão mais recente
  • Discussões sobre engenharia de ML podem ser feitas nas community discussions do repositório
  • Bugs, erros de digitação e sugestões de melhoria podem ser enviados por Issue ou PR
  • A licença do conteúdo é Attribution-ShareAlike 4.0 International
  • As informações de citação incluem Machine Learning Engineering Open Book, o ano 2023-2026 e a URL do repositório GitHub

1 comentários

 
GN⁺ 2024-01-25
Comentários do Hacker News
  • Trabalho diariamente com debug de configurações de treinamento de LLM para apoiar pesquisa, e fiquei pensando em como teria sido ótimo ter notas assim quando comecei

    • Sou desenvolvedor de jogos e estou tentando entrar em machine learning/deep learning, e o maior desafio tem sido encontrar um problema que não seja difícil demais para aprender na prática, mas que ainda tenha valor real. Acho que encontrei um, então queria opiniões.
      Hoje, na coleta de dados de captura de movimento para jogos/animação de filmes, existem dois sistemas: inercial e óptico. O inercial é mais fácil e barato, mas tem muitos erros e imprecisões na captura, então exige correção manual; o óptico é mais preciso e exige menos limpeza, mas o custo de hardware e espaço é alto.
      A ideia é usar um traje de captura de movimento inercial e gravar ao mesmo tempo uma sessão óptica, depois treinar um modelo de correção automática de dados de captura de movimento com machine learning. Em teoria, talvez desse para passar os dados gravados pelo sistema inercial pelo modelo e obter uma precisão próxima à do sistema óptico.
      Queria saber se isso faz sentido como primeiro projeto, como vocês abordariam e se existem projetos parecidos para consultar
  • Trabalho ajudando cientistas aplicados em tarefas ligadas a treinamento e deploy de modelos, e queria entender como posso ter mais contato com trabalho de engenharia mais de baixo nível, como otimização e performance.
    A empresa tem uma equipe de infraestrutura de ML, mas o foco deles é mais construir ferramentas em torno da plataforma do que fazer as workloads rodarem da forma mais otimizada possível.

    • Eu diria que otimização é impossível sem profiling. Um primeiro passo pode ser se familiarizar com ferramentas para entender a performance do modelo.
      Ex.: https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
    • Os materiais do Brendan Gregg sobre performance de sistemas e profiling são um ótimo ponto de partida. Boa parte dos problemas de performance em ML acaba se resumindo a Linux perf ou a descobrir o que exatamente está acontecendo em sistemas de agendamento de computação de alto desempenho, como o SLURM.
      https://www.brendangregg.com/linuxperf.html
  • Gostei especialmente da parte Unsolicited Advice na seção AI Battlefield. Ela trata de forma bem realista a carga emocional de sentir que você está sempre se afogando, com tudo andando numa velocidade caótica e o avanço implacável do desenvolvimento em IA.
    https://github.com/stas00/ml-engineering/blob/master/insight...

  • Quão difundido é o Slurm?

    • O Slurm está praticamente em todo lugar na comunidade de computação de alto desempenho (HPC). No lado de HPC, os concorrentes parecidos seriam basicamente os schedulers SGE [1] e Torque/PBS [2].
      Não sei os números exatos, mas imagino que uma grande maioria dos supercomputadores do Top 500 [3] esteja rodando Slurm. Como outros já comentaram, a maioria dos centros acadêmicos de computação para pesquisa também usa Slurm, e ele é dominante nos laboratórios nacionais do DoE nos EUA.
      E, como curiosidade, talvez seja lenda, mas dizem que o nome “Simple Linux Utility for Resource Management (SLURM)” é um acrônimo reverso vindo do refrigerante Slurm, de Futurama [4].
      [1] https://en.wikipedia.org/wiki/Oracle_Grid_Engine
      [2] https://github.com/adaptivecomputing/torque
      [3] https://www.top500.org/
      [4] https://futurama.fandom.com/wiki/Slurm
    • Segundo a Wikipedia, “o Slurm é usado como gerenciador de workloads em cerca de 60% dos supercomputadores do TOP500”. Tenho usado como frontend de gerenciamento de jobs na maioria dos clusters de computação nos últimos 10 anos.
    • O modelo Llama 2 também foi treinado com Slurm
    • A propósito, queria saber se alguém que trabalha com clusters físicos voltados principalmente a treinar modelos grandes com muitas GPUs já conseguiu fazer uma migração bem-sucedida de Slurm para Kubernetes
    • É usado na maioria dos clusters de computação de alto desempenho. Os lugares que ainda estão no Torque seriam exceção
  • Cliquei aleatoriamente na parte de reprodutibilidade, e ainda fico curioso sobre como alcançar reprodutibilidade em treinamento distribuído. Sincronização determinística não deixa tudo mais lento? Mesmo assim, ouvi dizer que pelo menos algumas grandes empresas conseguem reproduzir o treinamento.

    • Você provavelmente vai querer tornar as atualizações de treinamento o mais comutativas possível. Aí deixa de importar em que ordem as atualizações são aplicadas.
  • Como dá para ganhar experiência com essas coisas sem estar empregado?

    • Dá para ler materiais como o livro compartilhado e fazer pequenos projetos por conta própria.
      Não é tão diferente de aprender programação sem já ter um emprego na área.
      Claro, isso não quer dizer que qualquer uma das duas coisas seja fácil; exige bastante dedicação.
    • Se o objetivo é conseguir emprego, é preciso ter expectativas realistas.
      Comparado a áreas como desenvolvimento web, o mercado de contratação aqui é bem pequeno, e os projetos exigem especialistas com conhecimento muito profundo. Não é o tipo de trabalho em que ChatGPT ou Stack Overflow vão ajudar muito.
    • Faça projetos paralelos ou participe dos projetos paralelos de outras pessoas. O mais importante é se conectar com a comunidade e aprender a linguagem técnica para conseguir conversar com ela.
      Essa comunidade é relativamente pequena, e para começar é preciso juntar várias coisas: algum nível de machine learning, boa capacidade de programação, conhecimento de como aceleradores modernos funcionam e a habilidade de ler e entender artigos nessa linha.
    • Na minha experiência, o melhor caminho é projeto paralelo. Não aprenda só a habilidade em si; escolha um projeto viável que use a habilidade nova que você quer aprender e mergulhe nele.
      Escolher algo “viável” costuma ser a parte difícil, então não tenha medo de reavaliar depois de algumas semanas e ajustar suas expectativas se precisar.
      O importante é continuar em movimento.
    • Você pode fazer o curso da fast.ai. Com um pouco de esforço e criatividade, mesmo que leve mais de 2 semanas, provavelmente dá para ajustar um modelo e obter resultados de nível state of the art.
  • Quero experimentar isso, mas não tenho uma GPU decente. Queria saber como as pessoas realmente rodam essas coisas

  • Que contas do Twitter valeria a pena seguir para acompanhar as novidades?

  • Existe um PDF em algum lugar? Vejo instruções de build, mas não encontro o arquivo em si