CS336: Modelagem de Linguagem do Zero
(cs336.stanford.edu)- Modelos de linguagem são a base das aplicações modernas de NLP e abrem um novo paradigma em que um único sistema de uso geral lida com diversas subtarefas
- Este curso faz você implementar diretamente todo o processo de desenvolvimento de modelos de linguagem, da coleta e limpeza de dados para pré-treinamento à construção do Transformer, treinamento e avaliação antes da implantação
- As tarefas começam com a implementação de tokenizador, arquitetura de modelo e otimizador, e se expandem para otimização em GPU, implementação de FlashAttention2 em Triton e código de treinamento distribuído
- Para acompanhar, é preciso ter domínio de Python e engenharia de software, familiaridade com PyTorch, conceitos de sistemas como hierarquia de memória, além de conhecimentos de cálculo, álgebra linear, probabilidade, estatística e machine learning
- Com 5 unidades focadas em implementação, o curso limita a consulta a código existente e o uso direto de LLMs para resolver tarefas, recomendando depuração em CPU antes do treinamento e benchmarking em GPU
Objetivos e escopo do curso
- Modelos de linguagem são a pedra fundamental das aplicações modernas de processamento de linguagem natural (NLP) e abrem um novo paradigma em que um único sistema de uso geral executa várias subtarefas
- À medida que as áreas de AI, ML e NLP continuam crescendo, uma compreensão profunda de modelos de linguagem se torna importante tanto para cientistas quanto para engenheiros
- Inspirado em cursos de sistemas operacionais que constroem um sistema operacional inteiro do zero, o curso acompanha todo o processo de desenvolvimento de um modelo de linguagem feito diretamente pelo aluno
- O escopo cobre da coleta e limpeza de dados de pré-treinamento à construção do modelo Transformer, treinamento do modelo e avaliação antes da implantação
Requisitos
- A maior parte das tarefas é feita em Python, e o curso oferece o mínimo de scaffolding em comparação com outras disciplinas de AI
- A quantidade de código que precisa ser escrita é pelo menos uma ordem de grandeza maior do que em outras disciplinas, então proficiência em Python e engenharia de software é muito importante
- Uma parte significativa do curso envolve executar modelos de linguagem neurais com rapidez e eficiência em GPUs distribuídas por várias máquinas
- Espera-se forte familiaridade com PyTorch e com conceitos básicos de sistemas, como hierarquia de memória
- É preciso ter conforto com notação e operações de matrizes e vetores, probabilidade, distribuição gaussiana, média, desvio padrão, além de fundamentos de machine learning e deep learning
- O curso tem 5 unidades e é fortemente voltado à implementação, então é necessário reservar bastante tempo
Estrutura das tarefas
- Assignment 1 Basics implementa o tokenizador, a arquitetura do modelo e o otimizador necessários para treinar um modelo de linguagem Transformer padrão, além de treinar um modelo mínimo
- Assignment 2 Systems faz profiling e benchmarking do modelo e das camadas do Assignment 1 com ferramentas avançadas, otimiza o FlashAttention2 com uma implementação própria em Triton e cria código de treinamento distribuído com eficiência de memória
- Assignment 3 Scaling busca entender a função de cada componente do Transformer e ajusta scaling laws para prever o escalonamento do modelo consultando a API de treinamento
- Assignment 4 Data transforma dumps brutos do Common Crawl em dados de pré-treinamento utilizáveis e melhora o desempenho do modelo com filtragem e remoção de duplicatas
- Assignment 5 Alignment and Reasoning RL aplica fine-tuning supervisionado e reinforcement learning para treinar o LM a raciocinar na resolução de problemas matemáticos
- A Parte 2 opcional do Assignment 5 implementa e aplica métodos de alinhamento de segurança como DPO
Computação em GPU e custos
- Para quem for acompanhar de casa, é possível concluir as tarefas usando computação em GPU de provedores de nuvem
- Em 28 de março de 2026, o preço público de uma única GPU B200 era de Modal US$ 6,25/hora, Lambda Labs US$ 6,69/hora, RunPod US$ 4,99/hora, Nebius US$ 5,50/hora ou spot por US$ 3,05/hora, e Together US$ 7,49/hora
- A Modal oferece US$ 30 de computação gratuita por mês, cobra apenas pela computação efetivamente usada e simplifica a transição entre desenvolvimento local e experimentos em larga escala com GPU
- Para reduzir custos e aumentar a praticidade, recomenda-se primeiro depurar a corretude da implementação na CPU e usar a quantidade de GPUs recomendada nas tarefas para execuções de treinamento ou benchmarking de operações em GPU
Funcionamento do curso e regras de envio
- As aulas acontecem às segundas e quartas, das 15:00 às 16:20, no Skilling Auditorium, e as gravações estão disponíveis na playlist do YouTube
- Todas as perguntas relacionadas ao curso devem ser feitas em canais públicos do Slack, e todos os avisos também serão feitos no Slack
- Todas as tarefas devem ser enviadas pelo Gradescope até o prazo final, e envios por e-mail não são aceitos
- É possível reenviar quantas vezes quiser até o prazo; apenas a última submissão será avaliada
- Enviar parcialmente é melhor do que não enviar nada
- Cada aluno pode usar 6 late days, e 1 late day estende o prazo em 24 horas
- É possível usar no máximo 3 late days por tarefa
- Se o aluno considerar que houve um erro objetivo na correção, pode solicitar revisão pelo Gradescope em até 3 dias após a divulgação da nota
Política de colaboração e ferramentas de AI
- Grupos de estudo são permitidos, mas cada aluno deve entender e concluir sua própria tarefa, e deve haver uma entrega por aluno
- Se houve trabalho em grupo, os nomes dos integrantes do grupo de estudo devem ser escritos no topo da tarefa
- Prompts para LLMs como o ChatGPT são permitidos para perguntas de programação de baixo nível ou perguntas conceituais de alto nível sobre modelos de linguagem
- É proibido usar diretamente um LLM para resolver os problemas
- Ao fazer as tarefas, recomenda-se fortemente desativar autocompletar com AI, como Cursor Tab e GitHub CoPilot, embora autocompletar não baseado em AI, como sugestão de nomes de função, seja permitido
- Como o material do curso já contém o necessário para a implementação própria, não se deve consultar código de implementações existentes online, a menos que isso seja explicitamente permitido no handout da tarefa
1 comentários
Comentários do Hacker News
Concluí recentemente a versão 2025 do curso, assisti aos vídeos e fiz a maior parte das tarefas, mas pulei algumas partes mais caras. Só as duas primeiras tarefas já exigiram uma quantidade enorme de reflexão e depuração e, mesmo tendo alguma base em fundamentos de deep learning, levei meses usando um pouco do tempo depois do trabalho e nos fins de semana
É difícil imaginar como os alunos de Stanford conseguem entregar tarefas a cada 2 semanas. Os professores e TAs claramente colocaram muito esforço no desenho do curso, nos slides com tendências atualizadas e na preparação de tarefas excelentes, e é muito gratificante ver tudo se encaixando ao construir um modelo de linguagem real a partir de componentes pequenos e validar partes centrais do pipeline de LLM por conta própria
Dito isso, eu gostaria que os requisitos do ambiente de execução fossem explicados com mais clareza. O harness funciona melhor em Linux + GPU NVIDIA e espera versões ou arquiteturas específicas de CUDA; isso pode ser óbvio para pesquisadores, mas é raro em ambientes pessoais. Para acompanhar em casa, a segunda melhor opção é Windows + WSL2 + GPU NVIDIA ou GPUs alugadas em várias plataformas, mas nenhuma das duas é fácil nem barata. Também seria bom haver orientação sobre como aproveitar o curso ao máximo sem ter uma GPU compatível, e também aprendi que, no Mac OS, se você não tomar cuidado com a análise de memória, o código Python pode travar e forçar uma reinicialização
Também há um certo exagero nestes comentários sobre o custo de alugar GPU. A maior parte do desenvolvimento pode ser feita localmente, e basta usar uma GPU sob demanda por curtos períodos quando necessário. A tarefa 1 pode ser executada inteiramente na máquina local sem GPU, e as tarefas 1 e 2 em sua maior parte podem ser resolvidas com apenas algumas horas de aluguel. Mesmo sem tomar muito cuidado e continuando a usar GPU alugada, o custo fica em torno de 200 dólares, e, se você estiver disposto a reduzir a escala do problema, é fácil baixar para menos de 50 dólares. Acho que podemos deixar isso mais claro em uma tabela, assim como as formas de ajuste
Se houver feedback adicional ou problemas, seria ótimo abrir uma issue no repositório, porque é difícil corrigir problemas que desconhecemos
Há alguns dias implementei uma versão melhorada do gpt-1 com o Claude. Não sou engenheiro de machine learning, só um engenheiro backend comum, mas no fim ficou como uma mistura do gpt-1 com o modded-nanogpt do KellerJordan
Consegui reproduzir os resultados do artigo original do gpt-1 com um PC gamer, e nem precisei de muita VRAM. Com uma NVIDIA GeForce RTX 2060 SUPER, reproduzi a maior parte dos resultados com apenas 1 hora de treino, então, se você tem interesse em pré-treinamento de LLM, recomendo tentar do mesmo jeito
O código está aqui: https://github.com/epoyraz/modded-gpt-1
Ou então é só perguntar ao Claude 4.8 ou ao Codex 5.5
Tenho boas lembranças do cs224d que o richardsocher dava. Foi criado antes da era dos transformers e hoje está um pouco datado, mas, na época, era uma introdução excelente à aplicação de deep learning em processamento de linguagem natural
https://cs224d.stanford.edu
Dizem que é “computação com GPU para autoestudo”, mas a B200 recomendada começa em 4,99 dólares por hora. Fico em dúvida se isso é realmente necessário para começar
Estou montando um LLM do zero e, nas fases iniciais, não precisei de nada acima de uma 4090 na Vast.ai
Neste ano tivemos a sorte de conseguir GPUs Blackwell para os alunos de Stanford, então a descrição das tarefas foi escrita principalmente com isso como referência
Por outro lado, ao aprender e experimentar como projetar kernels de computação ou blocos de IP, o hardware necessário tende a ser muito mais potente ou ter muito mais capacidade. Os experimentos ficam deliberadamente no extremo oposto da otimização, e em cada etapa são feitos para serem fáceis de ler, inspecionar e depurar, então o modelo ou bitstream resultante fica muito inflado e nada otimizado
Rodar com seus próprios prompts um modelo que outra pessoa finalizou e otimizou para uso em algo como uma 4090 ainda é um experimento, mas um experimento barato. É parecido com pegar um bitstream de FPGA de outra pessoa, projetado e sintetizado para uma FPGA de 20 dólares, carregar nessa mesma FPGA e inserir seus próprios sinais de entrada. Mas os experimentos que você fará neste curso, enquanto aprende a projetar seu próprio modelo, não são desse tipo
Essa aula parece interessante, mas também tenho curiosidade sobre os pré-requisitos. Dizem que é preciso estar familiarizado com fundamentos de machine learning e deep learning, então queria saber se há materiais bons para estudar esses temas com foco em implementação, ou experiências com gravações de aulas de Stanford
Porém, CS336 cobre muito mais técnicas de ponta, então nessa parte a versão de 2026 é importante
Aula: https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1246...
Vídeos das aulas: https://www.youtube.com/playlist?list=PLoROMvodv4rOaMFbaqxPD...
Material: https://web.stanford.edu/~jurafsky/slp3/
Realmente excelente. No último mês venho fazendo algo parecido e, como desafio, não usei nenhuma biblioteca além da biblioteca padrão do Python, nem mesmo numpy
Comecei com Word2Vec, depois fiz RNN e LSTM, e agora estou com cerca de metade da arquitetura transformer implementada
Criei um grupo para acompanhar essa disciplina usando os vídeos no YouTube e os materiais de aula que foram publicados online. É difícil, mas recompensador, e fomos avançando em 1 vídeo de aula por semana
Mais de 30 pessoas começaram, mas na sessão final restaram apenas 8
Quero tentar, mas estou preocupado porque ainda não acho que tenha a capacidade necessária. Talvez algum dia consiga
Tenho curiosidade sobre qual seria a GPU mínima para acompanhar essa aula em casa. Tenho uma 5080 16GB, será que realmente precisa de algo além disso?
Fiz as duas primeiras tarefas de forma independente ao longo de um ano e aprendi bastante. Queria saber que aulas você fez depois disso
O que senti falta em CS336 foi a forma como os componentes de reinforcement learning foram apresentados, e nessa parte as aulas 5 e 6 de CME 295 foram melhores
https://cme295.stanford.edu/syllabus/
Também ouvi dizer que a disciplina de modelos de difusão, CME 296, é boa e parece um próximo passo interessante
https://cme296.stanford.edu/syllabus/