2 pontos por GN⁺ 2025-08-21 | 1 comentários | Compartilhar no WhatsApp
  • Gemma 3 270M oferece código de exemplo para ser implementado diretamente usando apenas PyTorch
  • Este repositório tem finalidade educacional para entender e praticar diretamente a estrutura e o processo de treinamento de LLMs
  • O código funciona sem frameworks externos adicionais de LLM e pode ser executado até mesmo em um ambiente comum de notebook
  • Inclui vários exemplos extras e materiais práticos que ajudam de forma concreta no aprendizado de desenvolvedores e pesquisadores
  • Com apenas conhecimento básico de Python, qualquer pessoa pode experimentar passo a passo os princípios e os detalhes de implementação de LLMs

Significado e diferenciais do projeto open source

Este repositório fornece todo o código necessário para implementar, pré-treinar e ajustar diretamente modelos de linguagem de grande porte da família GPT. Diferentemente da maioria dos exemplos de grandes modelos de linguagem, ele permite experimentar e treinar localmente usando apenas PyTorch, sem bibliotecas externas especializadas em LLM. Em especial, até mesmo modelos leves como o Gemma 3 270M são fornecidos com código detalhado, o que oferece a pesquisadores iniciantes e desenvolvedores a vantagem prática de acompanhar a estrutura real da implementação e aprender os princípios em profundidade.

Principais conteúdos e estrutura do repositório

  • Disponibiliza o repositório de código oficial do livro "Build a Large Language Model (From Scratch)"
  • Inclui código de exemplo passo a passo cobrindo implementação direta de LLMs no estilo GPT, pré-treinamento e todas as etapas anteriores ao ajuste fino
  • Trata em detalhe a lógica de implementação de grandes modelos de linguagem e apresenta uma abordagem fácil de seguir até para iniciantes, com explicações claras, diagramas e código de exemplo em cada etapa
  • Explica detalhadamente a metodologia de treinamento de modelos em larga escala e o processo real de implementação, permitindo aprender na prática os métodos usados em serviços reais como o ChatGPT
  • Inclui exemplos relacionados a carregamento de pesos de modelos pré-treinados e ajuste fino

Guia de organização do repositório

  • Fornece links de referência e prática, como o repositório oficial do código-fonte, informações do livro e ISBN
  • Cada capítulo inclui notebooks Jupyter e scripts Python, permitindo consultar até exercícios passo a passo, atividades práticas e materiais complementares
  • Como materiais complementares e exemplos bônus, inclui diversos conteúdos práticos úteis para uso profissional direto, como mecanismo de Attention, Tokenizer, otimização de desempenho, análise de FLOPS, ajuste de hiperparâmetros e conversão de modelos Llama

Conhecimentos prévios e requisitos de hardware

  • Basta ter entendimento básico de programação em Python para compreender os princípios e as práticas de LLMs
  • Familiaridade com PyTorch não é obrigatória; conhecer apenas a sintaxe básica já é suficiente
  • Os exemplos podem ser executados em um notebook comum, sem necessidade de hardware de alto desempenho
  • Se houver GPU, ela será detectada automaticamente, melhorando a velocidade de treinamento

Materiais extras e conteúdo de reforço prático

  • Cada capítulo oferece código prático e notebooks de exercícios
  • Há um quiz book em PDF gratuito com 170 páginas (cerca de 30 questões por capítulo) para apoiar o aprendizado autodirigido
  • Em um curso em vídeo (17 horas e 15 minutos, na plataforma da Manning), o autor explica os principais conteúdos de todos os capítulos implementando o código diretamente

Orientações para pesquisa e participação na comunidade

  • Perguntas, opiniões e discussões são compartilhadas ativamente no fórum da Manning e no GitHub Discussions
  • Para manter a consistência entre o livro e o código, o código principal do repositório restringe contribuições externas, e recomenda-se discutir separadamente sugestões de complemento e correções

Referência e orientação para citação

  • Este projeto e seu código podem ser usados diretamente em pesquisa de desenvolvimento e experimentação com LLMs
  • Para citações em artigos e blogs técnicos, há orientações com exemplos em estilo Chicago e BibTeX

Resumo

Este repositório oferece a oportunidade de implementar e praticar diretamente, usando apenas PyTorch, grandes modelos de linguagem como o Gemma 3 270M. Diferentemente de outros projetos open source de LLM, seu maior diferencial é permitir aprender e experimentar os princípios centrais e o fluxo completo no ambiente mais simples possível. Ele inclui uma estrutura otimizada para desenvolvedores e pesquisadores iniciantes entenderem LLMs na prática, com exemplos, materiais complementares e exercícios.

1 comentários

 
GN⁺ 2025-08-21
Comentários no Hacker News
  • Olá, eu fiz este modelo com a melhor equipe. Na semana passada, quando ele apareceu na página principal, respondi a muitas perguntas. Se houver mais perguntas aqui também, terei prazer em responder. Pessoalmente, estou muito animado que agora todos vocês possam ter acesso a este modelo. Espero que façam bom uso dele. Vejam o link do Q&A anterior
    • Tenho curiosidade sobre o que você acha de usar 2/3 de todos os parâmetros em embeddings em um modelo tão pequeno. Fico pensando se usar um vocabulary em nível de byte e alocar mais para os parâmetros do transformer não reduziria a velocidade de processamento de tokens, mas aumentaria a precisão
    • É uma pergunta bem básica, mas queria entender por que, ao executar o modelo tflite na GPU no app AI edge gallery, ele só imprime '[multimodal][multimodal]', enquanto na CPU funciona normalmente
    • Não sou MLE (Machine Learning Engineer), então queria entender quais são as vantagens e desvantagens da reimplementação em PyTorch feita pelo OP
    • É um LM pequeno incrivelmente impressionante. Gostaria de saber se você pode compartilhar em que hardware ele foi treinado e quanto tempo o treinamento levou
    • Obrigado por fazer isso. Eu já implementei um chatbot do Discord com BERT no passado, então estou realmente empolgado com esse upgrade para 270M de parâmetros
  • Gostaria de saber se alguém (ou o OP) poderia compartilhar uma receita para fazer fine-tuning deste modelo e aplicá-lo a tarefas de linguagem natural como NER de alta complexidade. Quando o Gemma3 270M foi lançado na semana passada, tentei alguns tutoriais, mas não funcionou muito bem. A maioria dos tutoriais é voltada para chat ou roleplay, enquanto meu trabalho principal é extrair e refinar entidades de PDFs, então é difícil encontrar dicas específicas para esse tipo de uso. Acho que este modelo se encaixaria bem nesse cenário
    • Se for uma tarefa tradicional de NER (extração de entidades em spans de tokens sem sobreposição), provavelmente é melhor usar um modelo encoder-only (por exemplo, bert-large-NER) ou encoder-decoder (por exemplo, t5-base-conll03-english). Esses modelos de codificação recebem menos atenção hoje em dia, mas ainda têm pontos fortes em tarefas estabelecidas de NLP que não exigem geração, e com a mesma quantidade de parâmetros eu esperaria uma precisão de NER muito superior à de modelos decoder-only
    • Há a opção de usar a biblioteca Python gemma-llm (baseada em JAX). Vejam este tutorial relacionado
    • Você já testou talvez este modelo de NER? Gostaria de saber sua opinião sobre para quais usos ele seria especialmente adequado
  • Queria saber se isso está no mesmo espírito do que as pessoas faziam no passado com coisas do tipo '<modelo> inference written in vanilla Go, Python, Java, etc'
  • Pela minha experiência, sou um dev que só usou modelos comerciais grandes (sonnet, ChatGPT etc.). Queria saber para que esses modelos locais pequenos podem ser usados. Existem casos de uso prontos para usar ou no fim das contas sempre é necessário algum pós-processamento/treinamento adicional? A lacuna entre usuários de ferramentas comerciais e especialistas em modelos parece grande, e não sei bem como preencher esse meio-termo
    • Os usos mais comuns (fora educação) são os seguintes:
      • modelos privados on-device (latência menor do que API web, com processamento em edge)
      • pesquisa de algoritmos (prototipagem rápida e barata)
      • tarefas baratas de classificação/categorização (não exigem decoder LLM, mas às vezes respostas livres ajudam), verificação básica de consistência gramatical, roteadores (por exemplo, no estilo GPT-5) etc.
    • Excelente pergunta. Organizei uma resposta longa sobre isso, então vejam o link com a resposta detalhada
    • Resumo: é especialmente útil para resumo e uso de ferramentas muito simples. Roda em edge sem ida e volta pela internet, então o custo é zero
    • Também pode ser útil para confidencialidade e privacidade
  • É surpreendente que, em CPU de Mac, com cache KV + compilador, a velocidade seja maior do que em uma GPU A100
    • Isso pode ser resultado do tamanho pequeno do modelo, que não aproveita bem o desempenho da GPU. Por exemplo, o modelo Qwen3 0.6B é mais rápido em uma GPU A100, como mostrado neste link de referência
    • Ver que a versão compilada fica mais lenta do que eager na A100 sugere claramente que há partes que não estão otimizadas
    • Talvez seja porque CPU e GPU no Mac compartilham memória, enquanto na A100 os dados precisam ser transferidos para RAM/CPU se alguma operação não for suportada pela GPU
    • Será que é porque a GPU não consegue preencher a waveform e assim esconder a latência de memória?
  • Tenho curiosidade sobre para que embeddings de 270M poderiam ser usados, e se embeddings em nível de token são adequados ou se também saem bons embeddings de frase/documento. Para usar embeddings de frase/documento de forma significativa, seria necessário fazer fine-tuning separado?
  • Se alguém treinasse o modelo inteiro do zero, quanto tempo isso levaria em uma configuração de GPU razoável?
    • Como referência, um modelo de 124M, quando treinado em uma GPU 3090, processa cerca de 500 mil tokens por batch, e forward+backward leva cerca de 10 segundos. Para treinar todos os 6 trilhões de tokens (o volume de treino deste modelo), levaria cerca de 4 anos. Em resumo: "tempo demais"
    • Depende do que você chama de "razoável", mas normalmente, em ambiente doméstico, treinar tudo do zero realmente levaria muito tempo. Esse é justamente um dos motivos para este modelo ter sido lançado. Agora dá para obter resultados práticos em vários tipos de hardware só com fine-tuning, sem precisar treinar do zero
  • Queria saber se até modelos tão pequenos assim têm uso real no mundo real (tirando aprendizado e academia)
    • Têm! Na verdade, em vez de serem apenas material didático simples ou brinquedo, eles têm valor real de uso em tarefas repetitivas ou como modelos rápidos para desenvolvedor em ambiente enterprise/local. Este é um exemplo inspirado por uma experiência passada em que era necessário processamento de texto em tempo real. Vejam o tutorial de streaming ML feito com uma versão anterior do Gemma e o vídeo de demonstração. Em teoria, agora isso já pode ser reproduzido com o Gemma 270M
    • Com fine-tuning via LoRa, ele também pode ter desempenho excelente em áreas muito específicas. Por exemplo:
      • responder apenas em um schema JSON específico ou na voz de um personagem específico
      • classificar textos (por exemplo, e-mails, spam etc.)
      • resumir grandes volumes de texto (e-mail → título/slug)
      • classificar tags conforme regras predefinidas, content marketing etc.
      • detectar spam/duplicatas/flags
      • modelos pequenos e "bobos" assim tendem a ter menos conhecimento de mundo e, por isso, também inventam menos absurdos, o que pode até ser uma vantagem em domínios restritos
    • Em tarefas de tradução multilíngue baseadas em texto-fonte, ele frequentemente acerta o resultado (por exemplo, para conversação de viagem). Exemplo:
      (texto original em ucraniano) Rochechouart는 프랑스의 도시, 누벨아키텐 지방의 오트비엔주에 위치… 인구 3637명(2022), 파리 기준 약 360km 남쪽, 리모주에서 34km 서쪽에 위치.
      (resultado da tradução do modelo) Rochechouart는 프랑스의 도시로, 누벨아키텐 지역 오트비엔 주에 위치. 인구 3637명(2022). 파리로부터 약 360km, 리옹에서 34km 거리.
      (a política vietnamita de apoio à energia solar residencial também é traduzida de forma geralmente correta)
      
      Fonte wiki: Wikipédia em ucraniano, notícia vietnamita
    • É útil em tarefas que interagem com linguagem natural, mas em que não se espera que o modelo tenha muito conhecimento interno. É útil em áreas como tool use, embeddings e outros casos em que a informação é verificada/consultada externamente
  • Cliquei achando que era um novo produto de interface 3270, mas não era nada disso
  • Pessoa realmente impressionante