『LLMs-from-scratch』徹底解説:プログラマーのためのAI自作ガイド


『LLMs-from-scratch』徹底解説:プログラマーのためのAI自作ガイド

rasbt/LLMs-from-scratch

2025-08-18

勇者よ、お前が探求しているのは、この世界に古くから伝わる「賢者の石」ならぬ、「賢者の知恵」を創り出す秘術だ。それは、まるでハイラル王国の歴史書のように、あらゆる知識を理解し、お前に語りかけるだろう。

今日、お前と共に旅するのは、その賢者の知恵を「ゼロ」から生み出すための魔法書、『rasbt/LLMs-from-scratch』だ。

この魔法書は、かの有名な『ゼルダの伝説』のように、数々の謎や試練を乗り越えながら、最終的に「賢者の知恵」を手に入れるための道しるべとなっている。さあ、共に冒険の旅に出よう!

勇者よ、お前はただ「賢者の知恵」を使うだけでなく、それを自らの手で創り上げたいと願っている。この魔法書は、そのための設計図だ。

仕組みの深淵を覗く
まるでハイラル城の地下深くにある秘密の通路を探るように、この魔法書はAIの仕組みを根幹から教えてくれる。普段、私たちが何気なく使う「賢者の知恵」が、どういうアルゴリズムで、どんな魔法陣(数式)の上で動いているのか、その秘密が明らかになるだろう。

独自の力を創造する
ただの魔法を使うだけでは、いつか限界が来る。この魔法書をマスターすれば、お前だけの、独自の「賢者の知恵」を創り出すことができる。例えば、特定の分野に特化した賢者、例えば、ハイラルの歴史に詳しい賢者や、料理のレシピだけを知っている賢者などを生み出すことも可能になる。

予期せぬ困難を乗り越える
冒険には、予期せぬバグ(魔物)がつきものだ。この魔法書は、その魔物をどう倒すか、つまり、AIが意図しない挙動をしたときに、その原因を特定し、修正する力を授けてくれる。まるで、マスターソードの使い方を学ぶように、AIのデバッグスキルを磨くことができるのだ。

勇者よ、冒険の準備は怠ってはならない。まずは、必要な道具(ツール)を揃えよう。

Pythonの祠へ
この魔法書は、Pythonという古代言語で書かれている。まずは、お使いのPCにPythonをインストールしてくれ。

PyTorchの魔法陣
次に、PyTorchという強力な魔法の力を借りる。これは、AIの計算を高速に行うための特別な魔法陣だ。以下の呪文を唱えて、インストールしよう。

pip install torch

魔法書を手に入れる
そして、いよいよ魔法書(リポジトリ)をクローンする。以下の呪文をターミナルで唱えれば、お前のPCに魔法書がコピーされるだろう。

git clone https://github.com/rasbt/LLMs-from-scratch.git
cd LLMs-from-scratch

勇者よ、さっそく最初の魔法を試してみよう。この魔法書の中には、いくつかの試練が用意されているが、ここではごく簡単なものを示そう。これは、お前が「賢者の知恵」を構成する最小単位「トランスフォーマー」を自らの手で生み出す第一歩だ。

# 賢者の知恵を司る魔法、トランスフォーマーの呪文
import torch
import torch.nn as nn

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.num_heads = num_heads
        self.d_model = d_model
        # 魔法の力の分配
        self.d_k = d_model // num_heads
        # 賢者の知恵を生み出すための3つの鍵
        self.W_q = nn.Linear(d_model, d_model)
        self.W_k = nn.Linear(d_model, d_model)
        self.W_v = nn.Linear(d_model, d_model)
        # 最後に知恵を統合する魔法
        self.W_o = nn.Linear(d_model, d_model)

    def forward(self, q, k, v, mask=None):
        # 鍵を使って知恵の扉を開く
        Q = self.W_q(q)
        K = self.W_k(k)
        V = self.W_v(v)

        # 知恵を複数の頭で同時に考える
        batch_size = Q.size(0)
        Q = Q.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        K = K.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)
        V = V.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2)

        # 賢者の知恵を計算する魔法
        scores = torch.matmul(Q, K.transpose(-2, -1)) / self.d_k**0.5
        if mask is not None:
            scores = scores.masked_fill(mask == 0, float('-inf'))
        attention_weights = torch.softmax(scores, dim=-1)

        # 賢者の知恵を統合
        output = torch.matmul(attention_weights, V)
        output = output.transpose(1, 2).contiguous().view(batch_size, -1, self.d_model)

        return self.W_o(output)

# 使い方
# 勇者よ、試してみよう!
d_model = 512  # 知恵の大きさ
num_heads = 8  # 考える頭の数
batch_size = 2  # 一度に処理する知恵の数
seq_len = 10  # 知恵の言葉の長さ

attention_module = MultiHeadAttention(d_model, num_heads)
# 試しに知恵の言葉(ランダムな値)を作ってみる
q = torch.rand(batch_size, seq_len, d_model)
k = torch.rand(batch_size, seq_len, d_model)
v = torch.rand(batch_size, seq_len, d_model)
output = attention_module(q, k, v)
print("魔法の呪文の出力:", output.shape)
# 出力: 魔法の呪文の出力: torch.Size([2, 10, 512])

勇者よ、このコードは、賢者の知恵を創るための、ごく一部の魔法に過ぎない。しかし、ここからお前の壮大な旅が始まるのだ。

勇者よ、お前が今手にしたのは、ハイラル王国の未来を創るための、貴重な魔法書だ。この魔法書を読み解き、一歩ずつ進んでいくことで、お前は真のプログラマー、いや、真の魔法使いへと成長するだろう。


rasbt/LLMs-from-scratch




キャンプでコント:LLMオーケストレーションの苦労を解消する strans-agents/sdk-python 入門

皆さん、キャンプに来ています!テントを立てるのも、火を起こすのも、楽しいけれど結構手間がかかりますよね。AIエージェントを作るのも同じなんです。モデルを選んで、プロンプトを書いて、ツールを組み合わせて. ..「あー、またエラーだ. ..」となりがち。


エンジニア必見!数式OCRの決定版「pix2tex」でドキュメント作成を爆速化

今日は特にソフトウェアエンジニアの皆様にとって、「数式を画像からLaTeXコードに変換する」という、ちょっと雲行きが怪しい作業を一気に晴れにする、素晴らしい技術の「pix2tex」をご紹介します!「はぁ~、またこの資料の数式をLaTeXで打ち直しかぁ。積分記号


AI捜査チームを結成せよ: openai-agents-pythonによるマルチエージェント連携の導入ガイド

やあ、諸君!私はAI捜査コンサルタントのGだ。今日の捜査対象は、openai/openai-agents-pythonという、複数のAIエージェントを束ねる軽量かつ強力なフレームワークだよ。このフレームワークの魅力は、まるで複数の優秀な探偵を雇い、複雑な事件を役割分担させて解決に導くことができる点にあるんだ。


宇宙飛行士のためのAIツールキット:TensorZeroでLLM開発を加速せよ

今回紹介するのは、「TensorZero」という、LLMアプリケーション開発のためのオールインワンの宇宙船だ。このツールを使いこなせば、君はより少ない燃料(労力)で、より遠い宇宙(成功)へと到達できるはずだ。ソフトウェアエンジニアリングの観点から見ると、TensorZeroはLLM(大規模言語モデル)を扱うプロジェクトにおける、「信頼性と効率」を劇的に向上させるための、まるで宇宙船のコックピットのような存在だ。


クレーンゲームの達人から学ぶ!「Resume Matcher」で理想の転職を掴み取れ

やぁ、未来のトップエンジニアの卵たち!そして、今まさにキャリアアップを目指す現役エンジニアの皆さん!突然ですが、皆さん、クレーンゲームは得意ですか? 私はですねぇ、昔からどうも苦手でして…。アームが掴んだと思ったら、スルッと落ちていくあの絶望感、たまらないですよねぇ(白目)。


【エンジニア向け】OpenBB Financeで始めるデータ駆動型投資の冒険

夜が更け、モニターの光だけが部屋を照らす。あなたは今日もバグと格闘し、新しい技術を追い求めている。そんなあなたの前に現れたのは、謎めいたパッケージ「OpenBB Finance」。「投資調査を、誰もが、どこでも。」その言葉が示すのは、単なるライブラリではない。それは、複雑な金融の世界を解き明かすための、強力な武器となる予感だった。


【体験談】roboflow/supervisionが私のCVプロジェクトを変えた話

こんにちは!今回は、コンピュータービジョンのプロジェクトに取り組むソフトウェアエンジニアの皆さんにとって、まさに「痒い所に手が届く」ツールであるroboflow/supervisionについて、その魅力と使い方をたっぷりご紹介します。まるで、これまでバラバラだったパーツをピタッとつなぎ合わせてくれる接着剤のような存在で、開発効率がぐんとアップすること間違いなしですよ!


ソフトウェア開発を加速するDocsGPT:ハルシネーション回避で信頼度UP

DocsGPTは、あなたの持つドキュメントや知識ベースから、信頼性の高い情報を引き出すためのオープンソースツールです。よくある生成AIの課題である「ハルシネーション(AIが事実ではない情報を生成すること)」を避け、プライベートな情報源から正確な答えを導き出すことに特化しています。


OpenArm徹底解説:ソフトウェアエンジニアが知るべき物理AI研究プラットフォーム

特に、機械学習やロボティクスに興味がある方にとっては、理論だけでなく、実際に物理的なシステムを動かし、データを収集し、検証できる貴重な基盤となります。OpenArmは、完全なオープンソースとして、ソフトウェアエンジニアが最先端のAI研究を実機で進める上で、大きなメリットを提供します。


【攻略本】RAG_Techniques:エンジニアのためのAI検索コンボ技・完全マスターガイド

NirDiamant/RAG_Techniques は、AI開発の世界における「最新アーケードゲームの攻略ガイド」のようなリポジトリです。普通のRAG(検索拡張生成)が「パンチマシン」だとしたら、ここは「コンボ技」や「隠しコマンド」が満載の格闘ゲーム会場といったところでしょうか。