『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エージェントを作るのも同じなんです。モデルを選んで、プロンプトを書いて、ツールを組み合わせて. ..「あー、またエラーだ. ..」となりがち。


CursorやLangChainを使いこなせ!エンジニアの価値を最大化するAI活用ロードマップ

今日は、中国のスーパーエンジニア「魚皮(Yupi)」さんが公開している最強のAIリソース集 「liyupi/ai-guide」 について解説しちゃうわね。「AIが多すぎて何から手をつければいいの!?」ってパニックになってるそこの君、落ち着いて。このリソースは、エンジニアにとっての「宝の地図」みたいなものなんだから!


【入門】onyx-dot-app/onyxで始めるAIチャットボット開発

ソフトウェアエンジニアの視点から、onyx-dot-app/onyxがどのように役立つか、導入方法、サンプルコードについて、真面目に、分かりやすく説明するね。onyx-dot-app/onyxは、AIを活用したチャットアプリケーションを構築するためのオープンソースプラットフォームなんだ。これを導入するメリットは、主に次の3つだよ。


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

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


ソフトウェアエンジニア必見!PyTorch導入ガイドとGPU活用で実現する高速ディープラーニング

PyTorchは、FacebookのAI研究グループによって開発された、Pythonベースのオープンソース機械学習ライブラリです。特に深層学習(ディープラーニング)の研究や開発で非常に人気があります。ユーザーさんが指定してくださった説明にあるように、その核となる要素は以下の2点です。


【エンジニア向け】RAGの常識を覆す!ストレージ97%削減のプライベート検索技術「LEANN」徹底解説

こんにちは!未来の技術を形にするソフトウェアエンジニアの皆さん、お疲れ様です。今回ご紹介するのは、まるで「どこでもドア」のように、皆さんの開発環境に革命をもたらすかもしれない、すごい道具(ライブラリ)、「LEANN」です。yichuan-wさんが開発されたこのライブラリは、皆さんが今注目している「RAG (Retrieval-Augmented Generation / 検索拡張生成)」という技術を、速く、正確に、そして何よりもプライベートに、個人のデバイスで実現するための画期的なアプローチを提供します。


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

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


AI-Engineering-Hub: ソフトウェアエンジニアのための実践的AI開発ガイド

このリポジトリは、AIを学びたい、あるいはプロジェクトに組み込みたいと考えているエンジニアにとって、多くのメリットを提供します。実践的な知識の習得 理論だけでなく、実際のコード例やプロジェクトを通じてLLMやRAGの仕組みを理解できます。これにより、単なる知識としてではなく、動くものとして技術を習得できるのが大きな強みです。


ディフュージョンモデルGUI「ComfyUI」:魔法の呪文で画像を創る!

ComfyUIは、まるで魔法少女が魔法のアイテムを使って呪文を唱えるように、画像を生成するAIモデル「Diffusion Model」を直感的に操作できるグラフィカルユーザーインターフェース(GUI)です。通常の画像生成AIは、呪文(プロンプト)を入力するだけでもすごいのですが、ComfyUIを使うと、まるで魔法の回路図を描くように、様々な処理を組み合わせてもっと複雑で美しい画像を、まるで自分の手で描いたかのように作れてしまうんです!


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

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