2 ポイント 投稿者 GN⁺ 2025-08-21 | 1件のコメント | WhatsAppで共有
  • Gemma 3 270Mは、PyTorchのみを使用して直接実装できるようにサンプルコードを提供している
  • このリポジトリは、LLMの構造と学習過程を理解し、実際に手を動かして学ぶための教育目的で作られている
  • 追加の外部LLMフレームワークなしでコードを動かすことができ、一般的なノートPC環境でも実行可能
  • 多様なボーナスサンプルと実習資料が含まれており、開発者や研究者の学習に実践的な助けを提供する
  • Pythonの基礎知識があれば、誰でもLLMの原理と詳細な実装を段階的に体験できる

オープンソースプロジェクトの意義と差別化ポイント

このリポジトリは、GPT系の大規模言語モデルを自ら実装し、事前学習やファインチューニングを行うために必要な一式のコードを提供している。多くの大規模言語モデルのサンプルとは異なり、追加の外部LLM専用ライブラリなしでPyTorchのみを使用し、ローカル環境で直接実験や学習が可能となっている。特に、Gemma 3 270Mのような軽量モデルまで詳細なコードとともに提供されていることで、初学者の研究者や開発者が実際の実装構造を追いながら、原理を深く身につけられる実用的な強みがある。

主な内容とリポジトリ構成

  • 書籍"Build a Large Language Model (From Scratch)"の公式コードリポジトリを提供
  • GPTスタイルのLLMを直接実装し、事前学習からファインチューニングまでの全工程を網羅する段階別サンプルコードを収録
  • 大規模言語モデルの実装ロジックを詳細に扱い、各段階ごとに明確な説明、図解、サンプルコードを通じて、初学者でも追いやすいアプローチを提示
  • 大規模モデルの学習方法論と実際の実装過程を詳しく説明することで、ChatGPTなど実サービスで活用されている方法論を実感しながら学べる
  • 事前学習済みモデルの重み読み込み/ファインチューニングに関するサンプルを含む

リポジトリ構成ガイド

  • 公式ソースコードリポジトリ、書籍情報、ISBNなどの実習・参照リンクを提供
  • 各章ごとにJupyter NotebookとPythonスクリプトを含み、段階別の実習・演習問題・補足資料まで参照可能
  • 補足資料とボーナスサンプルとして、Attentionメカニズム、Tokenizer、性能最適化、FLOPS分析、ハイパーパラメータチューニング、Llamaモデル変換など、実務でも直接役立つ多様な実習コンテンツを含む

前提知識とハードウェア要件

  • Pythonプログラミングの基礎理解があれば、LLMの原理や実習内容を理解できる
  • PyTorchへの慣れは必須ではないが、基本的な文法を知っていれば十分
  • 別途高性能な機材がなくても一般的なノートPCでサンプルを実行可能
  • GPUがある場合は自動認識し、学習速度を向上できる

追加資料と実習強化コンテンツ

  • 各章ごとに実習用コードと演習問題Notebookを提供
  • 無料の170ページPDFクイズブック(各章30問前後)により、自主学習を支援
  • 動画講座(17時間15分、Manning出版プラットフォーム)では、全章の主要内容を著者自身がコードで実装しながら解説している

研究およびコミュニティ参加ガイド

  • 質問・意見・議論は、ManningフォーラムとGitHub Discussionsで活発に共有されている
  • 書籍とコードの一貫性を保つため、リポジトリ本体のコードへの外部貢献は制限されており、補完や修正提案は別途議論することが推奨されている

参考・引用ガイド

  • このプロジェクトとコードは、LLMの開発・実験研究に直接活用できる
  • 論文や技術ブログなどで引用する場合に向けて、ChicagoスタイルとBibTeXの記載例を案内している

要約

このリポジトリは、Gemma 3 270Mなどの大規模言語モデルをPyTorchだけで直接実装し、実習できる機会を提供している。既存のLLMオープンソースとは異なり、できる限りシンプルな環境で中核原理と全体の流れを学習・実験できる点が最大の利点である。初学者の開発者や研究者がLLMを理解して実習するために最適化された構成、サンプル、補足資料、演習問題などが一通りそろっている。

1件のコメント

 
GN⁺ 2025-08-21
Hacker News のコメント
  • こんにちは。このモデルを最高のチームと一緒に作りました。先週このモデルがトップに載ったときにも多くの質問に答えました。ここでも追加の質問があれば喜んでお答えします。個人的には、皆さんがこのモデルにアクセスできるようになったことをとても楽しみにしています。ぜひうまく活用してください。前回のQ&Aリンクもご覧ください
    • このような小さなモデルで、埋め込みに全パラメータの 2/3 を使っていることをどう考えているのか気になります。バイトレベルの vocabulary を使って transformer のパラメータに割り当てれば、トークン処理速度は下がるとしても精度は上がるのではないかと思います
    • とても初歩的な質問ですが、AI edge gallery アプリで tflite モデルを GPU で実行すると '[multimodal][multimodal]' しか出力されず、CPU では正常に動作するのはなぜなのか気になります
    • MLE(User Machine Learning Engineer) ではないので、OP の PyTorch 再実装の長所と短所が何なのか気になります
    • 驚くほど素晴らしい小型 LM です。どのようなハードウェアで学習したのか、学習期間はどれくらいだったのか共有できるのか気になります
    • こうして作ってくれてありがとう。以前 Discord チャットボットを BERT で実装したことがあるのですが、270M パラメータへのアップグレードとは本当に楽しみです
  • 誰か(あるいは OP)が、このモデルを fine-tuning して高次の NER のような自然言語タスクに適用するレシピを教えてくれないか気になります。先週 Gemma3 270M が公開されてチュートリアルを試してみたのですが、うまくいきませんでした。ほとんどのチュートリアルがチャットやロールプレイ向けで、私の主な作業は PDF からエンティティを抽出・整形することなので、この用途に特化したヒントを見つけるのが難しいです。このモデルはそういう用途に向いていると思います
    • もし伝統的な NER(重ならないトークン区間からエンティティを抽出する)タスクなら、encoder-only モデル(たとえば bert-large-NER)や encoder-decoder モデル(例: t5-base-conll03-english)を使うほうがよいと思います。こうしたエンコーディングモデルは最近あまり注目されませんが、生成が不要な確立済みの自然言語処理タスクでは依然として強みがあり、同じパラメータ数なら NER 精度は decoder-only モデルよりはるかに高いと期待できます
    • gemma-llm Python ライブラリ(JAX ベース)を使う方法があります。関連チュートリアルをご覧ください
    • この NER モデルも試してみたのか気になります。どのような用途に特に適していると思うか意見を聞きたいです
  • これは、昔から人々がやっていた '<モデル> inference written in vanilla Go, Python, Java, etc' のようなものと同じ文脈なのか気になります
  • 私の経験では sonnet や ChatGPT のような大規模商用モデルしか使ったことがない dev です。こうした小型の local モデルはどこに使えるのか気になります。すぐに使えるユースケースがあるのか、それとも結局は何らかの後処理や追加 training が必要なのか気になります。商用ツールの利用者とモデルの達人たちのあいだのギャップが大きく見えるのですが、その中間段階をどう埋めればいいのかよく分かりません
    • 最も一般的な用途(教育用を除く)は次のようなものです:
      • 非公開のオンデバイスモデル(Web API よりレイテンシが低く、edge 処理が可能)
      • アルゴリズム研究(高速かつ低コストでプロトタイプ可能)
      • 安価な分類・カテゴリ分けタスク(decoder LLM は不要だが、ときに自由な応答が有利)、文法 sanity チェック、ルーター(例: GPT-5 方式)など
    • とても良い質問です。長めに整理した回答があるので参考にしてください 詳細な回答リンク
    • 要約や、とても単純なツール利用に特に有用です。インターネット往復なしで edge で動作するのでコストは 0 です
    • 機密保持やプライバシー用途の可能性もあります
  • Mac CPU で KV キャッシュ+コンパイラ適用後の速度が A100 GPU よりさらに速いというのは驚きです
    • モデルサイズが小さいため、GPU 性能を十分に活用できていない結果かもしれません。たとえば Qwen3 0.6B モデルでは A100 GPU のほうが速く、参考リンクで確認できます
    • コンパイル版が A100 で eager より遅いのを見ると、明らかに最適化されていない部分があるようです
    • Mac の CPU と GPU はメモリを共有していますが、A100 は一部の演算が GPU でサポートされていない場合に RAM/CPU へデータを転送しなければならないので、そのためではないかという推測です
    • GPU がウェーブフォームを埋められず、メモリレイテンシを隠せていないのではないかと思います
  • 270M の埋め込みはどのような用途に使えるのか、トークン単位の埋め込みが適切なのか、それとも文や文書の埋め込み値も良好に得られるのか気になります。文や文書の埋め込みを意味のある形で使うには、別途ファインチューニングが必要でしょうか
  • モデル全体を最初から学習させるとしたら、現実的な GPU 構成でどれくらい時間がかかるのか気になります
    • 参考までに、124M モデルを 3090 GPU で学習した場合、1 バッチあたり約 50 万トークンで、forward+backward に約 10 秒かかります。6 兆トークン(このモデルの学習量)をすべて学習するには約 4 年かかります。短く言えば「時間がかかりすぎる」です
    • 「現実的」という表現次第ですが、一般的な家庭用環境で pure scratch から訓練するなら本当に長い時間がかかるでしょう。これこそがこのモデルをリリースした理由のひとつです。今では scratch 学習なしでも、さまざまなハードウェア上でファインチューニングだけで実用的な結果を出せるようになりました
  • こういう非常に小さなモデルにも本当に現実での使い道があるのか(学習やアカデミック用途を除いて)気になります
    • あります! むしろ単なる教材やおもちゃではなく、反復作業やエンタープライズ/ローカルでの高速な開発者向けモデルとして実用価値があります。リアルタイムのテキスト処理が必要だった過去の経験から着想を得た例です。以前の Gemma バージョンで作られた ストリーミング ML チュートリアルデモ動画をご覧ください。理論上は、今ではこれを Gemma 270M で再現できます
    • LoRa でファインチューニングすれば、非常に特定の領域で非常に優れた性能を出すことも可能です。たとえば:
      • 特定の JSON スキーマでのみ応答する、あるいは特定のキャラクターの声で応答する
      • テキスト(例: メール、スパムなど)の分類
      • 大量テキストの要約(メール→件名/slug)
      • 事前定義したルールに従ったタグ分類、コンテンツマーケティングなど
      • スパム/重複/フラグ検出
      • このような小さな「愚かな」モデルほど世界知識が少ないため、荒唐無稽な内容を作り出すことも少なく、狭い領域ではむしろ利点が多いです
    • 原文テキストベースの多言語翻訳課題で、しばしば的確な結果を出します(例: 旅行者向け会話への活用)。例:
      (ウクライナ語原文) Rochechouart는 프랑스의 도시, 누벨아키텐 지방의 오트비엔주에 위치… 인구 3637명(2022), 파리 기준 약 360km 남쪽, 리모주에서 34km 서쪽에 위치.
      (モデルの翻訳結果) Rochechouart はフランスの都市で、ヌーヴェル=アキテーヌ地域圏のオート=ヴィエンヌ県に位置。人口 3637 人(2022年)。パリから約 360km、リヨンから 34km の距離。
      (ベトナムの住宅用太陽光支援政策もおおむね正確に翻訳)
      
      元ソース: ウクライナ語版ウィキペディア, ベトナムのニュース
    • 自然言語とはやり取りしますが、モデルが内部に多くの知識を持っていると期待しないタスクで有用です。Tool use、埋め込みなど、情報が外部で検証・参照される領域で役立ちます
  • 3270 インターフェースの新製品かと思ってクリックしたら、期待と違っていました
  • 本当にすごい人です