Livro online de engenharia de ML
(github.com/stas00)- 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
- treinamento do modelo open source BLOOM-176B em 2022
- treinamento do modelo multimodal IDEFICS-80B em 2023
- treinamento de modelos RAG na Contextual.AI em 2024
- 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 quenccl-teststorch-distributed-gpu-test.py: ferramenta para testar rapidamente a conectividade entre nósmamf-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 ano2023-2026e a URL do repositório GitHub
1 comentários
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
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.
Ex.: https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
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?
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
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.
Como dá para ganhar experiência com essas coisas sem estar empregado?
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.
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.
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.
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.
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