第1章. LLM周辺の世界地図
この章の目的
この章では、大規模言語モデル(LLM)を取り巻く主要な技術要素と概念を俯瞰し、それぞれの役割と関係性を理解することを目的とします。専門用語の海に飛び込む前に、全体像を把握することで、今後の学習をスムーズに進めるための「地図」を手に入れましょう。
この章で覚えるべきこと
- LLMがどのような要素で構成されているか
- モデルの学習(Training)と利用(Inference)の基本的な流れ
- 各要素がLLMエコシステムの中でどのような役割を果たすか
- 混同しやすい用語の明確な違い
導入
近年、LLMは私たちの生活やビジネスに大きな変革をもたらしています。テキストを生成し、質問に答え、複雑なタスクをこなすその能力は、多くの人々を魅了しています。しかし、その驚くべき能力の裏側には、「モデル」「学習」「推論」「API」といった様々な専門用語が複雑に絡み合っています。これらの用語は、LLMの仕組みを理解し、その可能性を最大限に引き出す上で不可欠な要素です。
この章では、LLMを構成する主要な要素を一つずつ丁寧に解説し、それらがどのように連携して機能しているのかを体系的に整理します。個々の用語の意味だけでなく、それらがLLMという大きなシステムの中でどのような位置づけにあるのかを理解することで、より深くLLM技術を学ぶための強固な基盤を築くことができます。
基本概念
LLM (Large Language Model)
- ひとことで言うと: 大量のテキストデータから言語のパターンを学習し、人間のようなテキストを生成・理解できる巨大なAIモデル。
- 何のカテゴリか: 人工知能、自然言語処理(NLP)モデル。
- 何に使うのか: テキスト生成、翻訳、要約、質問応答、プログラミングコード生成など、多岐にわたる言語タスク。
- 代表例: GPT-3/4、LLaMA、Claude、PaLM。
- よく混同される用語: 汎用AI、チャットボット。LLMは汎用AIの一種ですが、チャットボットはLLMの応用例の一つに過ぎません。
- 初心者向け注意点: LLMは「賢い」ですが、学習データに基づいているため、常に正確な情報を返すわけではありません(ハルシネーション)。
Model (モデル)
- ひとことで言うと: 特定のタスクを実行するために学習された、データとアルゴリズムの集合体。LLMもモデルの一種。
- 何のカテゴリか: 機械学習、人工知能の成果物。
- 何に使うのか: 入力データを受け取り、学習したパターンに基づいて予測や判断を行う。
- 代表例: 画像分類モデル、音声認識モデル、そしてLLM。
- よく混同される用語: アルゴリズム、ソフトウェア。モデルはアルゴリズムと学習データによって構築された「知識体系」であり、ソフトウェアはそのモデルを実行するためのプログラムです。
- 初心者向け注意点: モデルは学習データに強く依存します。学習データに偏りがあれば、モデルの出力にも偏りが出ます。
Weights (重み)
- ひとことで言うと: モデルが学習を通じて獲得した、入力データに対する重要度を示す数値の集合。
- 何のカテゴリか: モデルの内部パラメータ。
- 何に使うのか: 入力データがモデル内を伝播する際に、各情報にどれだけの「重み」を与えるかを決定し、最終的な出力に影響を与える。
- 代表例: ニューラルネットワークの各層の接続強度を示す数値。
- よく混同される用語: バイアス。重みとバイアスはニューラルネットワークの主要なパラメータですが、重みは入力との積で、バイアスは単独で加算されます。
- 初心者向け注意点: 重みはモデルの「知識」そのものです。この重みを調整するプロセスが学習(Training)です。
ニューラルネットワークにおける重みとバイアスの関係は、線形変換として表現できます。 $y = \sum_{i=1}^{n} w_i x_i + b$ ここで、$y$ は出力、$x_i$ は入力、$w_i$ は重み、$b$ はバイアスを表します。重み $w_i$ は各入力 $x_i$ の重要度を調整し、バイアス $b$ は活性化関数への入力に一定のオフセットを加えます。
Tokenizer (トークナイザー)
- ひとことで言うと: テキストをモデルが理解できる最小単位(トークン)に分割し、数値に変換するツール。
- 何のカテゴリか: 自然言語処理の前処理ツール。
- 何に使うのか: モデルへの入力テキストを準備し、モデルからの出力数値を人間が読めるテキストに戻す。
- 代表例: SentencePiece、BPE (Byte Pair Encoding)、WordPiece。
- よく混同される用語: Vocabulary。Vocabularyはトークナイザーが使用する、既知のトークンとそのIDのリストです。トークナイザーはそのリストを使ってテキストを分割・変換します。
- 初心者向け注意点: トークナイザーの選択や設定は、モデルの性能に大きく影響します。特に日本語のような言語では、分割方法が重要です。
Inference (推論)
- ひとことで言うと: 学習済みのモデルに新しいデータを与え、予測や出力を得るプロセス。
- 何のカテゴリか: モデルの利用フェーズ。
- 何に使うのか: 質問応答、画像認識、テキスト生成など、モデルの能力を実世界で活用する。
- 代表例: ChatGPTに質問を投げかける、画像認識アプリで物体を検出する。
- よく混同される用語: Serving。推論は「モデルが予測を出す行為」そのものですが、Servingは「推論を外部から利用できるように提供するシステム」を指します。
- 初心者向け注意点: 推論の速度や精度は、モデルのサイズや計算リソースに依存します。
Training (学習)
- ひとことで言うと: 大量のデータを使ってモデルの重みを調整し、特定のタスクを遂行できるようにするプロセス。
- 何のカテゴリか: モデル開発の主要フェーズ。
- 何に使うのか: モデルに知識やスキルを習得させる。
- 代表例: 大規模なテキストコーパスを用いてLLMをゼロから構築する。
- よく混同される用語: Fine-tuning。学習はゼロからモデルを構築するのに対し、Fine-tuningは既存のモデルを特定のタスクに特化させるプロセスです。
- 初心者向け注意点: 学習には膨大な計算リソース(GPUなど)と時間が必要です。
Fine-tuning (ファインチューニング)
- ひとことで言うと: 事前学習済みのモデルを、特定のタスクやデータセットに合わせてさらに学習させるプロセス。
- 何のカテゴリか: モデルのカスタマイズフェーズ。
- 何に使うのか: 汎用モデルを特定の業界用語や企業文化に合わせる、特定の質問応答タスクの精度を向上させる。
- 代表例: GPT-3を医療分野の質問応答に特化させるために、医療論文データで追加学習させる。
- よく混同される用語: LoRA。LoRAはファインチューニングの一種であり、効率的にモデルをカスタマイズするための技術です。ファインチューニングは概念、LoRAはその具体的な手法の一つ。
- 初心者向け注意点: ファインチューニングはゼロからの学習よりもはるかに少ないデータとリソースで高い性能を発揮できます。
TrainingとFine-tuningの比較
| 比較軸 | Training (事前学習) | Fine-tuning (ファインチューニング) |
|---|---|---|
| 目的 | 汎用的な知識と言語理解能力の獲得 | 特定のタスクやドメインへの適応、性能向上 |
| データ量 | 膨大(数兆トークン規模) | 比較的少量(数千〜数百万トークン規模) |
| モデル | ゼロから構築 | 事前学習済みモデルをベースにする |
| 計算資源 | 非常に大きい(数ヶ月〜年単位、大規模GPUクラスタ) | 比較的少ない(数時間〜数日、単一GPUまたは小規模クラスタ) |
| コスト | 非常に高価 | 比較的安価 |
| 結果 | 汎用的な基盤モデル(Foundation Model) | 特定タスクに特化した高性能モデル |
| 例 | GPT-3/4、LLaMAの初期学習 | 医療分野特化LLM、社内FAQ応答LLMの作成 |
Serving (サービング)
- ひとことで言うと: 学習済みのモデルを、外部のアプリケーションやユーザーが利用できるようにデプロイし、推論リクエストに応答するシステム。
- 何のカテゴリか: モデルの運用フェーズ。
- 何に使うのか: モデルをAPIとして公開し、Webアプリケーションやモバイルアプリから利用できるようにする。
- 代表例: OpenAIのAPI、Google Cloud AI Platform Prediction。
- よく混同される用語: Inference。Servingは推論を実行するための「環境やサービス」を指し、Inferenceはその環境で行われる「計算行為」を指します。
- 初心者向け注意点: Servingには、スケーラビリティ、レイテンシ、コスト、セキュリティなどの考慮が必要です。
API (Application Programming Interface)
- ひとことで言うと: ソフトウェアコンポーネントが互いに通信するための規約やインターフェース。
- 何のカテゴリか: ソフトウェア連携の手段。
- 何に使うのか: プログラムからLLMなどのサービスを呼び出し、機能を利用する。
- 代表例: OpenAI API、Google Maps API。
- よく混同される用語: ライブラリ、SDK。APIは「呼び出し方」の規約ですが、ライブラリやSDKはそのAPIを簡単に利用するための「ツールキット」です。
- 初心者向け注意点: APIを利用することで、モデルの内部実装を知らなくても、その強力な機能を自分のアプリケーションに組み込むことができます。
Runtime (ランタイム)
- ひとことで言うと: プログラムやモデルが実行される環境。
- 何のカテゴリか: 実行環境。
- 何に使うのか: モデルの推論や学習を効率的に実行するためのソフトウェアやハードウェアの組み合わせ。
- 代表例: Pythonインタープリタ、CUDA (GPUランタイム)、ONNX Runtime。
- よく混同される用語: Model file。Model fileはモデルの重みや構造を保存したデータですが、Runtimeはそのモデルファイルを読み込んで実行するための「エンジン」です。
- 初心者向け注意点: Runtimeの選択は、モデルの実行速度や必要なハードウェアリソースに直結します。
LLMエコシステムの主要要素間の関係
graph TD
A["データ収集 --> B["Training (学習)"]
前処理"] --> B["Training (学習)"]
B --> C["Pre-trained Model (基盤モデル)"]
C --> D["Fine-tuning (微調整)"]
D --> E["Fine-tuned Model (特化モデル)"]
E --> F["Serving (デプロイ)"]
F --> G["API (インターフェース)"]
G --> H["アプリケーション"]
subgraph "モデル開発フェーズ"
A --- B
B --- C
C --- D
D --- E
end
subgraph "モデル運用フェーズ"
E --- F
F --- G
G --- H
end
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#cfc,stroke:#333,stroke-width:2px
style C fill:#ccf,stroke:#333,stroke-width:2px
style D fill:#cfc,stroke:#333,stroke-width:2px
style E fill:#ccf,stroke:#333,stroke-width:2px
style F fill:#ffc,stroke:#333,stroke-width:2px
style G fill:#fcc,stroke:#333,stroke-width:2px
style H fill:#f9f,stroke:#333,stroke-width:2px
この図は、LLMが開発され、最終的にアプリケーションで利用されるまでの主要なステップと要素の関係を示しています。データ収集から始まり、学習、モデルのデプロイ、そしてAPIを介したアプリケーション連携へと流れていきます。
具体例
LLMが質問に答えるまでの流れを具体的に見てみましょう。
graph TD
A[ユーザー] --> B(質問テキスト入力)
B --> C{API Gateway}
C --> D[Serving System]
D --> E[Tokenizer]
E --> F[トークンID列]
F --> G["LLM (Model + Weights)"]
G --> H["推論 (Inference)"]
H --> I[出力トークンID列]
I --> J["Tokenizer (逆変換)"]
J --> K[回答テキスト]
K --> L[Serving System]
L --> M{API Gateway}
M --> N[ユーザー]
subgraph "LLMシステム内部"
D --- E
E --- F
F --- G
G --- H
H --- I
I --- J
J --- K
K --- L
end
subgraph "開発フェーズ"
O
P
Q
R
S
end
style A fill:#f9f,stroke:#333,stroke-width:2px
style N fill:#f9f,stroke:#333,stroke-width:2px
style G fill:#ccf,stroke:#333,stroke-width:2px
style H fill:#ccf,stroke:#333,stroke-width:2px
style P fill:#cfc,stroke:#333,stroke-width:2px
style R fill:#cfc,stroke:#333,stroke-width:2px
- ユーザー (A) が「LLMとは何ですか?」と質問テキストを入力します。
- この質問は API Gateway (C) を通じて Serving System (D) に送られます。
- Serving System内で、まず Tokenizer (E) が質問テキストをモデルが理解できる数値の列(トークンID列 (F))に変換します。
- このトークンID列が、学習済みの LLM (Model + Weights) (G) に入力されます。
- LLMは内部で 推論 (Inference) (H) を実行し、次の単語(トークン)を予測し続けます。この予測の過程で、モデルの Weights が重要な役割を果たします。
- 生成された 出力トークンID列 (I) は、再び Tokenizer (J) によって人間が読める 回答テキスト (K) に逆変換されます。
- 回答テキストは Serving System (L) を経由し、API Gateway (M) を通じて ユーザー (N) に返されます。
この一連の流れを支えるのが、事前に Training (P) や Fine-tuning (R) によって構築された LLM (Model + Weights) です。これらの学習プロセスは、大量のデータを使ってモデルの Weights を最適化し、質問応答能力を向上させます。そして、このモデルを実行するための環境が Runtime です。
次に読むべき章
この章でLLM周辺の基本的な概念と用語を理解しました。次の章では、これらの概念がどのように組み合わさってLLMの「知能」を形成しているのか、より具体的なアーキテクチャと仕組みについて深く掘り下げていきます。