2 Punkte von GN⁺ 2025-08-21 | 1 Kommentare | Auf WhatsApp teilen
  • Für Gemma 3 270M wird Beispielcode bereitgestellt, der eine direkte Implementierung ausschließlich mit PyTorch ermöglicht
  • Das Repository dient Bildungszwecken, um die Struktur und den Trainingsprozess von LLMs zu verstehen und praktisch nachzuvollziehen
  • Der Code funktioniert ohne zusätzliche externe LLM-Frameworks und kann auch in einer gewöhnlichen Notebook-Umgebung ausgeführt werden
  • Enthält verschiedene Bonusbeispiele und Übungsmaterialien, die Entwickler:innen und Forschenden beim Lernen praktisch helfen
  • Mit grundlegendem Python-Wissen kann jede:r die Prinzipien und Implementierungsdetails von LLMs Schritt für Schritt nachvollziehen

Bedeutung und Besonderheiten des Open-Source-Projekts

Dieses Repository stellt den vollständigen Code bereit, der nötig ist, um ein GPT-basiertes Large Language Model direkt zu implementieren, vorzutrainieren und feinzujustieren. Anders als bei den meisten Beispielprojekten für Large Language Models sind Experimente und Training in einer lokalen Umgebung ausschließlich mit PyTorch möglich, ganz ohne zusätzliche externe, auf LLMs spezialisierte Bibliotheken. Besonders dadurch, dass sogar leichtgewichtige Modelle wie Gemma 3 270M zusammen mit detailliertem Code bereitgestellt werden, bietet das Projekt einen praktischen Vorteil: Einsteiger:innen in Forschung und Entwicklung können der tatsächlichen Implementierungsstruktur folgen und die zugrunde liegenden Prinzipien fundiert verstehen.

Zentrale Inhalte und Repository-Struktur

  • Bereitstellung des offiziellen Code-Repositorys zum Buch "Build a Large Language Model (From Scratch)"
  • Enthält schrittweise Beispielcodes, die den gesamten Ablauf abdecken: direkte Implementierung eines GPT-ähnlichen LLM, Vortraining und Fine-Tuning
  • Die Implementierungslogik für Large Language Models wird detailliert behandelt; durch klare Erklärungen, Diagramme und Beispielcode wird ein leicht nachvollziehbarer Ansatz auch für Einsteiger:innen geboten
  • Durch die ausführliche Erklärung der Trainingsmethodik großer Modelle und des tatsächlichen Implementierungsprozesses lässt sich nachvollziehen, wie Methoden funktionieren, die auch in realen Diensten wie ChatGPT eingesetzt werden
  • Enthält Beispiele zum Laden vortrainierter Modellgewichte und zum Fine-Tuning

Hinweise zum Aufbau des Repositorys

  • Bietet Links zum offiziellen Quellcode-Repository, Buchinformationen, ISBN usw. für Übungen und Referenzen
  • Für jedes Kapitel stehen Jupyter-Notebooks und Python-Skripte bereit; zusätzlich lassen sich schrittweise Übungen, Aufgaben und ergänzende Materialien nutzen
  • Als ergänzende Materialien und Bonusbeispiele sind vielfältige praktische Inhalte enthalten, die direkt im Berufsalltag nützlich sein können, darunter Attention-Mechanismen, Tokenizer, Performance-Optimierung, FLOPS-Analyse, Hyperparameter-Tuning und die Konvertierung von Llama-Modellen

Vorkenntnisse und Hardware-Anforderungen

  • Bereits grundlegendes Verständnis von Python-Programmierung reicht aus, um die Prinzipien von LLMs und die praktischen Übungen zu verstehen
  • Vertrautheit mit PyTorch ist nicht zwingend nötig; grundlegende Syntaxkenntnisse genügen
  • Die Beispiele lassen sich auch auf einem gewöhnlichen Notebook ohne spezielle High-End-Hardware ausführen
  • Falls eine GPU vorhanden ist, wird sie automatisch erkannt, wodurch sich das Training beschleunigt

Zusatzmaterialien und Inhalte zur Vertiefung

  • Zu jedem Kapitel gibt es Übungscode und Notebooks mit Aufgaben
  • Ein kostenloses PDF-Quizbuch mit 170 Seiten (rund 30 Fragen pro Kapitel) unterstützt selbstgesteuertes Lernen
  • In einem Videokurs (17 Stunden 15 Minuten, auf der Plattform von Manning) erklärt der Autor die wichtigsten Inhalte aller Kapitel und implementiert den Code dabei selbst

Hinweise zu Forschung und Community-Beteiligung

  • Fragen, Meinungen und Diskussionen werden aktiv im Manning-Forum und in den GitHub Discussions geteilt
  • Um die Konsistenz von Buch und Code zu wahren, sind externe Beiträge am Hauptcode des Repositories eingeschränkt; für Ergänzungs- und Korrekturvorschläge wird eine separate Diskussion empfohlen

Hinweise zu Referenzen und Zitierung

  • Dieses Projekt und der Code können direkt für Forschung zu LLM-Entwicklung und -Experimenten genutzt werden
  • Für Zitate in wissenschaftlichen Arbeiten oder technischen Blogs werden Beispiele im Chicago-Stil und für BibTeX bereitgestellt

Zusammenfassung

Dieses Repository bietet die Möglichkeit, Large Language Models wie Gemma 3 270M ausschließlich mit PyTorch direkt zu implementieren und praktisch zu erproben. Im Unterschied zu bestehendem LLM-Open-Source-Code besteht der größte Vorteil darin, dass sich Kernprinzipien und der gesamte Ablauf in einer möglichst einfachen Umgebung lernen und testen lassen. Es enthält eine für Einsteiger:innen in Entwicklung und Forschung optimierte Struktur mit Beispielen, Zusatzmaterialien und Übungsaufgaben, um LLMs zu verstehen und praktisch nachzuvollziehen.

1 Kommentare

 
GN⁺ 2025-08-21
Hacker-News-Kommentar
  • Hallo, ich habe dieses Modell zusammen mit einem großartigen Team entwickelt. Als es letzte Woche auf der Startseite auftauchte, habe ich viele Fragen dazu beantwortet. Wenn es hier weitere Fragen gibt, beantworte ich sie ebenfalls gern. Ich persönlich freue mich sehr, dass jetzt alle Zugang zu diesem Modell haben. Ich hoffe, ihr könnt es gut nutzen. Siehe auch die frühere Q&A-Verlinkung
    • Mich würde interessieren, was du davon hältst, bei einem so kleinen Modell 2/3 aller Parameter für die Embeddings zu verwenden. Wenn man ein Byte-Level-Vocabulary nähme und stattdessen mehr auf Transformer-Parameter verteilen würde, wäre die Token-Verarbeitung zwar langsamer, aber würde die Genauigkeit nicht steigen?
    • Sehr grundlegende Frage, aber ich würde gern verstehen, warum das tflite-Modell in der AI edge gallery app auf der GPU nur '[multimodal][multimodal]' ausgibt, auf der CPU aber normal funktioniert
    • Ich bin kein MLE (Machine Learning Engineer), daher würde mich interessieren, was die Vor- und Nachteile der PyTorch-Neuimplementierung des OP sind
    • Erstaunlich cooles kleines LM. Könnt ihr teilen, auf welcher Hardware es trainiert wurde und wie lange das Training gedauert hat?
    • Danke, dass ihr das gebaut habt. Ich habe früher einmal einen Discord-Chatbot mit BERT umgesetzt, und ein Upgrade auf 270M Parameter klingt wirklich spannend
  • Ich frage mich, ob jemand (oder der OP) ein Rezept dafür teilen könnte, wie man dieses Modell per Fine-Tuning für Sprachaufgaben wie anspruchsvolles NER einsetzt. Nachdem Gemma3 270M letzte Woche veröffentlicht wurde, habe ich ein paar Tutorials ausprobiert, aber es hat nicht gut funktioniert. Die meisten Tutorials sind auf Chat oder Rollenspiel ausgerichtet, während meine Hauptaufgabe darin besteht, Entitäten aus PDFs zu extrahieren und zu bereinigen, daher ist es schwer, Hinweise speziell für so einen Anwendungsfall zu finden. Ich denke, dass dieses Modell dafür gut geeignet sein könnte
    • Wenn es um klassisches NER geht (Extraktion von Entitäten aus nicht überlappenden Token-Spans), wäre es wahrscheinlich besser, ein reines Encoder-Modell zu verwenden (zum Beispiel bert-large-NER) oder ein Encoder-Decoder-Modell (zum Beispiel t5-base-conll03-english). Solche Encoding-Modelle stehen zuletzt zwar weniger im Rampenlicht, haben aber bei etablierten NLP-Aufgaben ohne Generierungsbedarf weiterhin klare Stärken, und bei gleicher Parameterzahl würde ich erwarten, dass ihre NER-Genauigkeit deutlich über der von Decoder-only-Modellen liegt
    • Man kann die Python-Bibliothek gemma-llm (JAX-basiert) verwenden. Siehe dieses Tutorial
    • Hast du vielleicht auch dieses NER-Modell getestet? Mich würde interessieren, für welche Anwendungsfälle du es besonders passend findest
  • Ist das in etwa derselbe Kontext wie früher bei Dingen wie '<Modell>-Inference in purem Go, Python, Java usw.', die Leute früher gebaut haben?
  • Nach meiner Erfahrung habe ich als Entwickler nur große kommerzielle Modelle wie sonnet, ChatGPT usw. verwendet. Ich frage mich, wofür solche kleinen lokalen Modelle taugen. Gibt es sofort einsetzbare Anwendungen, oder braucht man am Ende doch immer noch irgendeine Form von Nachbearbeitung bzw. zusätzlichem Training? Die Lücke zwischen Nutzern kommerzieller Tools und Leuten, die sich tief mit Modellen auskennen, wirkt ziemlich groß, und ich weiß nicht recht, wie man diese Zwischenstufe überbrücken kann
    • Die häufigsten Einsatzzwecke (abgesehen von Lernzwecken) sind diese:
      • private On-Device-Modelle (geringere Latenz als Web-APIs, Edge-Verarbeitung möglich)
      • Algorithmusforschung (schnelles und günstiges Prototyping)
      • günstige Klassifizierungs-/Kategorisierungsaufgaben (dafür braucht man keinen Decoder-LLM, aber manchmal sind freie Antworten nützlich), Grammar-Sanity-Checks, Router (z. B. im Stil von GPT-5) usw.
    • Wirklich gute Frage. Ich habe dazu eine längere Antwort geschrieben, siehe ausführliche Antwort
    • Für Zusammenfassungen und sehr einfache Tool-Nutzung ist es besonders nützlich. Es läuft am Edge ohne Internet-Roundtrip und kostet damit 0
    • Auch für Geheimhaltung und Datenschutz gibt es Potenzial
  • Es überrascht mich, dass es auf einer Mac-CPU mit KV-Cache und Compiler schneller ist als auf einer A100-GPU
    • Das könnte daran liegen, dass die Modellgröße so klein ist, dass die GPU-Leistung nicht richtig ausgenutzt wird. Beim Modell Qwen3 0.6B ist die A100 zum Beispiel schneller, siehe Referenzlink
    • Wenn die kompilierte Version auf der A100 sogar langsamer als eager ist, scheint es definitiv Teile zu geben, die nicht optimiert werden
    • Vielleicht liegt es daran, dass CPU und GPU beim Mac denselben Speicher verwenden, während die A100 Daten in den RAM bzw. zur CPU schieben muss, wenn bestimmte Operationen nicht auf der GPU unterstützt werden
    • Ich frage mich, ob die GPU die Waveforms nicht ausreichend füllen kann und deshalb die Speicherlatenz nicht versteckt wird
  • Ich frage mich, wofür man 270M-Embeddings nutzen kann und ob Token-Embeddings dafür passend sind oder ob auch Satz-/Dokument-Embeddings gute Werte liefern. Müsste man für sinnvoll nutzbare Satz-/Dokument-Embeddings separat Fine-Tuning machen?
  • Falls man das gesamte Modell von Grund auf trainieren würde: Wie lange würde das mit einer vernünftigen GPU-Konfiguration ungefähr dauern?
    • Zur Einordnung: Beim 124M-Modell verarbeitet eine 3090-GPU im Training etwa 500.000 Token pro Batch, und Forward+Backward dauern ungefähr 10 Sekunden. Um alle 6 Billionen Token (so viel wurde dieses Modell trainiert) durchzutrainieren, würde man ungefähr 4 Jahre brauchen. Kurz gesagt: "viel zu lange"
    • Es hängt davon ab, was man unter „vernünftig“ versteht, aber in einer typischen Heimumgebung würde echtes Training from scratch im Allgemeinen extrem lange dauern. Genau das ist einer der Gründe, warum dieses Modell veröffentlicht wurde. Jetzt kann man auf unterschiedlichster Hardware praktische Ergebnisse erzielen, ohne from scratch zu trainieren, sondern nur mit Fine-Tuning
  • Ich frage mich, ob selbst so ein sehr kleines Modell in der realen Welt wirklich nutzbar ist (abgesehen von Lernen und akademischen Zwecken)
    • Ja! Es ist nicht nur einfaches Lernmaterial oder ein Spielzeug, sondern kann bei wiederkehrenden Aufgaben oder als schnelles Enterprise-/lokales Entwicklermodell echten praktischen Wert haben. Ein Beispiel, inspiriert von früheren Erfahrungen mit Echtzeit-Textverarbeitung. Siehe dieses Streaming-ML-Tutorial und das Demo-Video, die mit einer früheren Gemma-Version erstellt wurden. Theoretisch sollte sich das jetzt mit Gemma 270M nachbauen lassen
    • Mit LoRa-Fine-Tuning kann es in sehr spezifischen Bereichen auch außergewöhnlich gut werden. Zum Beispiel:
      • nur in einem bestimmten JSON-Schema antworten oder mit einer bestimmten Charakterstimme reagieren
      • Text klassifizieren (z. B. E-Mails, Spam usw.)
      • große Textmengen zusammenfassen (E-Mail → Betreff/Slug)
      • Tag-Klassifizierung nach vordefinierten Regeln, Content-Marketing usw.
      • Spam-/Duplikat-/Flag-Erkennung
      • Gerade solche kleinen „dummen“ Modelle haben oft weniger Weltwissen und erzeugen deshalb auch seltener völligen Unsinn, was in engen Domänen eher ein Vorteil sein kann
    • Bei Übersetzungsaufgaben auf Basis von Quelltext liefert es oft richtige Ergebnisse, auch mehrsprachig (z. B. für Reisephrasen). Beispiel:
      (ukrainischer Originaltext) Rochechouart는 프랑스의 도시, 누벨아키텐 지방의 오트비엔주에 위치… 인구 3637명(2022), 파리 기준 약 360km 남쪽, 리모주에서 34km 서쪽에 위치.
      (Übersetzung des Modells) Rochechouart는 프랑스의 도시로, 누벨아키텐 지역 오트비엔 주에 위치. 인구 3637명(2022). 파리로부터 약 360km, 리옹에서 34km 거리.
      (Auch die Förderpolitik für Solardächer im Wohnbereich in Vietnam wird größtenteils korrekt übersetzt)
      
      Wiki-Quelle: Ukrainische Wikipedia, vietnamesische Nachrichten
    • Es ist nützlich für Aufgaben, die mit natürlicher Sprache interagieren, bei denen man aber nicht erwartet, dass das Modell intern über viel Wissen verfügt. Also vor allem in Bereichen wie Tool use, Embeddings usw., in denen Informationen extern verifiziert oder nachgeschlagen werden
  • Ich habe draufgeklickt, weil ich dachte, es gehe um ein neues 3270-Interface-Produkt, und dann war es doch etwas ganz anderes
  • Wirklich beeindruckende Leute