HandsOnLLM/Hands-On-Large-Language-Models

⭐ 4,863 🍴 0 Jupyter Notebook / Python📄 Apache License 2.0 GitHubで見る →

主な特徴

  • 12章にわたるJupyter Notebookでの実践的なコード例
  • Google Colabでの実行を前提とした設計(T4 GPU利用可能)
  • 300近いカスタム図表による視覚的学習
  • Andrew Ng、Nils Reimers、Josh Starmer等の推薦
  • 実装に焦点を当てたハンズオンアプローチ
  • OpenAI、Cohere等のクラウドAPI統合
  • 最新技術(量子化、MoE、Reasoning LLMs等)のボーナスコンテンツ
  • 継続的なアップデートと新コンテンツの追加

リポジトリ解析: HandsOnLLM/Hands-On-Large-Language-Models

基本情報

  • リポジトリ名: HandsOnLLM/Hands-On-Large-Language-Models
  • 主要言語: Jupyter Notebook / Python
  • スター数: 4,863
  • フォーク数: 不明(README内未記載)
  • 最終更新: 2024年(2025年も更新中)
  • ライセンス: Apache License 2.0
  • トピックス: Large Language Models, Transformers, Natural Language Processing, Machine Learning, Deep Learning, Prompt Engineering, Fine-tuning, Education

概要

一言で言うと

「The Illustrated LLM Book」とも呼ばれる、視覚的で実践的なLarge Language Modelsの学習書籍の公式コードリポジトリ。

詳細説明

このリポジトリは、Jay AlammarとMaarten Grootendorstによる書籍「Hands-On Large Language Models」の公式コードリポジトリです。本書は「視覚的教育」のアプローチを採用し、約300のカスタム図表を用いてLLMの理論と実践を学ぶことができます。

書籍は12章で構成され、言語モデルの基礎から始まり、トークン化、埋め込み、Transformerの内部構造、テキスト分類、クラスタリング、プロンプトエンジニアリング、テキスト生成技術、セマンティック検索、マルチモーダルLLM、そしてファインチューニングまでをカバーしています。

さらに、書籍ではカバーしきれなかった高度なトピック(Mamba、Mixture of Experts、量子化、Stable Diffusion、Reasoning LLMs、DeepSeek-R1、LLM Agentsなど)についてのボーナスコンテンツも提供されています。

主な特徴

  • 12章にわたるJupyter Notebookでの実践的なコード例
  • Google Colabでの実行を前提とした設計(T4 GPU利用可能)
  • 300近いカスタム図表による視覚的学習
  • Andrew Ng、Nils Reimers、Josh Starmer等の推薦
  • 実装に焦点を当てたハンズオンアプローチ
  • OpenAI、Cohere等のクラウドAPI統合
  • 最新技術(量子化、MoE、Reasoning LLMs等)のボーナスコンテンツ
  • 継続的なアップデートと新コンテンツの追加

使用方法

インストール

前提条件

  • Python 3.8以上
  • Google Colab(推奨)またはローカル環境
  • GPU(推奨:T4 16GB VRAM以上)
  • 基本的なPythonライブラリの知識

インストール手順

# 方法1: Google Colabでの実行(推奨)
# 各章のNotebookの"Open in Colab"ボタンをクリック

# 方法2: ローカル環境での実行
git clone https://github.com/HandsOnLLM/Hands-On-Large-Language-Models.git
cd Hands-On-Large-Language-Models

# 依存関係のインストール(全体)
pip install -r requirements.txt

# または最小限の依存関係
pip install -r requirements_min.txt

# Conda環境の場合
conda env create -f environment.yml
conda activate handsonllm

基本的な使い方

Hello World相当の例

# Chapter 1: 言語モデルの基礎
import torch
from transformers import pipeline

# シンプルなテキスト生成
pipe = pipeline("text-generation", model="gpt2")
result = pipe("Hello, I am", max_length=20)
print(result[0]['generated_text'])

実践的な使用例

# Chapter 4: テキスト分類の例
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# 事前学習済みモデルのロード
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

# テキストのセンチメント分析
text = "I love learning about language models!"
inputs = tokenizer(text, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)
    predictions = torch.nn.functional.softmax(outputs.logits, dim=-1)
    
labels = ["Negative", "Positive"]
scores = predictions[0].tolist()
for label, score in zip(labels, scores):
    print(f"{label}: {score:.4f}")

高度な使い方

# Chapter 12: ファインチューニングの例
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model, TaskType
from trl import SFTTrainer
import torch

# LoRAを使用した効率的なファインチューニング
model_name = "microsoft/phi-2"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# LoRA設定
peft_config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    r=16,  # LoRA rank
    lora_alpha=32,
    lora_dropout=0.1,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"]
)

# PEFTモデルの作成
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()

# ファインチューニングの実行
# (データセットとトレーニング設定は省略)

ドキュメント・リソース

公式ドキュメント

  • README.md: プロジェクト概要、インストール方法、章の一覧
  • chapter/README.md*: 各章の概要と学習目標
  • bonus/: 追加コンテンツ(量子化、MoE、Mamba等の解説)
  • 書籍購入リンク: Amazon、O'Reilly、Barnes and Noble等

サンプル・デモ

  • 12章分のJupyter Notebook: 各章の完全なコード例
  • Google Colabリンク: 各Notebookのクラウド実行版
  • images/: 書籍で使用される図表と画像
  • ボーナスコンテンツのビジュアルガイド: 最新技術の視覚的解説

チュートリアル・ガイド

  • DeepLearning.AIコース: "How Transformer LLMs Work"
  • Jay Alammarのブログ: ビジュアルガイドシリーズ
  • Maarten Grootendorstのニュースレター: 最新LLM技術の解説
  • 各章のColab Notebook: インタラクティブな学習

技術的詳細

アーキテクチャ

全体構造

このリポジトリは教育目的に特化した構造で、各章が独立したJupyter Notebookとして実装されています。各Notebookは理論的な説明、視覚的な図表、そして実行可能なコードを組み合わせて構成されており、段階的に学習できるよう設計されています。

ディレクトリ構成

Hands-On-Large-Language-Models/
├── chapter01-12/     # 各章のNotebookと関連ファイル
│   ├── *.ipynb      # Jupyter Notebook
│   └── README.md    # 章の概要
├── bonus/            # ボーナスコンテンツ
│   ├── *.md         # 各トピックの説明
│   └── README.md    # ボーナス概要
├── images/           # 図表と画像リソース
├── requirements.txt  # Python依存パッケージ
├── environment.yml   # Conda環境設定
└── LICENSE          # Apache 2.0ライセンス

主要コンポーネント

  • 各章のNotebook: 独立した学習ユニット

    • 場所: chapter*/Chapter *.ipynb
    • 依存: transformers, torch, sentence-transformers等
    • 内容: 理論説明、コード実装、実験結果
  • ボーナスコンテンツ: 高度なトピックの解説

    • 場所: bonus/*.md
    • 内容: 最新技術の視覚的解説へのリンク
    • 対象: 書籍完読者向けの発展的内容

技術スタック

コア技術

  • 言語: Python 3.8+
    • 現代的なPython機能を活用
    • 型ヒントの使用
  • フレームワーク:
    • PyTorch 2.3.1: ディープラーニングフレームワーク
    • Transformers 4.41.2: Hugging FaceのLLMライブラリ
    • JupyterLab 4.2.2: インタラクティブ開発環境
  • 主要ライブラリ:
    • sentence-transformers (3.0.1): テキスト埋め込み
    • scikit-learn (1.5.0): 機械学習アルゴリズム
    • PEFT (0.11.1): 効率的ファインチューニング
    • TRL (0.9.4): 強化学習ベースのファインチューニング
    • BERTopic (0.16.3): トピックモデリング
    • LangChain (0.2.5): LLMアプリケーションフレームワーク

開発・運用ツール

  • ビルドツール:
    • pip/conda: パッケージ管理
    • Google Colab: クラウド実行環境
  • テスト:
    • 各Notebook内でのインライン検証
    • GPU/CPU両方での動作確認
  • CI/CD:
    • GitHubでのバージョン管理
    • コミュニティコントリビューション
  • デプロイ:
    • Google Colab経由での即座実行
    • ローカル環境でのJupyterサーバー

設計パターン・手法

  • 教育ファーストアプローチ: 学習者の理解を優先した設計
  • ビジュアルラーニング: 300近いカスタム図表による視覚的説明
  • プログレッシブコンプレキシティ: 基礎から応用への段階的構成
  • ハンズオンアプローチ: 理論と実践のバランス
  • モジュラー構成: 各章が独立して学習可能

データフロー・処理フロー

  1. 基礎知識の習得 (Chapter 1-3):

    • 言語モデルの基本概念
    • トークン化と埋め込み
    • Transformerアーキテクチャ
  2. 実用的アプリケーション (Chapter 4-9):

    • テキスト分類とクラスタリング
    • プロンプトエンジニアリング
    • テキスト生成とRAG
    • マルチモーダルモデル
  3. 高度な技術 (Chapter 10-12):

    • カスタム埋め込みモデル
    • ファインチューニング
    • LoRAとPEFT
  4. 発展的学習 (Bonus):

    • 最新技術の探求
    • 研究トレンドの理解

API・インターフェース

公開API

Hugging Face Transformers API

  • 目的: 事前学習済みモデルの利用
  • 使用例:
from transformers import pipeline

# テキスト生成パイプライン
text_generator = pipeline("text-generation", model="gpt2")

# センチメント分析パイプライン
sentiment_analyzer = pipeline("sentiment-analysis")

# 問答システム
question_answerer = pipeline("question-answering")

OpenAI/Cohere API

  • 目的: クラウドLLMの活用
  • 使用例:
from openai import OpenAI
import cohere

# OpenAI API
client = OpenAI(api_key="your-api-key")
response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Hello!"}]
)

# Cohere API
co = cohere.Client('your-api-key')
response = co.generate(
    model='command',
    prompt='Once upon a time',
    max_tokens=100
)

設定・カスタマイズ

設定ファイル

# environment.yml
name: handsonllm
channels:
  - pytorch
  - conda-forge
  - defaults
dependencies:
  - python>=3.8
  - pytorch>=2.0
  - transformers>=4.0
  - jupyterlab
  - pip:
    - sentence-transformers
    - openai
    - cohere

拡張・プラグイン開発

  • 各章のNotebookをベースにカスタマイズ可能
  • 新しいモデルや手法の追加が容易
  • ボーナスコンテンツとして最新技術を継続的に追加

パフォーマンス・スケーラビリティ

パフォーマンス特性

  • Google Colab T4 GPU (16GB VRAM) での動作を前提
  • 最適化手法:
    • 量子化 (INT8/INT4) の活用
    • LoRAによる効率的ファインチューニング
    • Flash Attentionの利用
    • バッチ処理の最適化

スケーラビリティ

  • クラウドベースの実行環境を推奨
  • GPUメモリに応じたモデル選択のガイドライン
  • 分散処理のサポート (Accelerateライブラリ)
  • クラウドAPIの活用によるスケールアップ

制限事項

  • Google Colabの無料枠ではGPU使用時間に制限
  • 大規模モデル (70B+) は単一GPUでは動作困難
  • APIキーが必要なサービスの利用には課金発生
  • ローカル実行には高性能GPUが必要

評価・所感

技術的評価

強み

  • 非常に質の高い教育コンテンツ(Andrew Ng等の推薦)
  • 300近いカスタム図表による優れた視覚的説明
  • 理論と実践のバランスが良い
  • Google Colabでの即座実行が可能
  • 最新技術への継続的なアップデート
  • コミュニティによるサポート

改善の余地

  • 英語中心のコンテンツ(多言語対応が限定的)
  • 書籍購入が前提の構成
  • 一部の高度なトピックはボーナスコンテンツへ
  • エンタープライズ向けの内容が少ない

向いている用途

  • LLMの基礎から応用まで学びたい初学者・中級者
  • 視覚的に学習したいエンジニア・研究者
  • 実践的なハンズオン経験を求める開発者
  • 最新技術をキャッチアップしたい実務者
  • 教育目的での利用

向いていない用途

  • 数学的な理論を深く学びたい研究者
  • 特定のフレームワークに特化した学習
  • 即座に本番環境へデプロイしたいケース
  • 非Python環境での実装

総評

「Hands-On Large Language Models」は、LLMの学習リソースとして非常に優れたプロジェクトです。特に「The Illustrated LLM Book」と呼ばれるだけあって、視覚的な説明の質の高さは圧倒的です。

著者のJay Alammarは「The Illustrated Transformer」で有名で、Maarten GrootendorstはBERTopicの作者として知られており、両者の専門性が十分に活かされた内容となっています。Google Colabでの即座実行を前提とした設計は、学習者にとって非常にアクセシブルです。

特筆すべきは、書籍でカバーしきれなかった最新技術について、ボーナスコンテンツとして継続的に追加されている点です。これにより、書籍の内容が陳腐化することなく、常に最新の情報にアクセスできるようになっています。LLMを真剣に学びたい人にとって、必須のリソースと言えるでしょう。