第21章. よく混同される用語まとめ
この章の目的
LLM(大規模言語モデル)の学習と利用において、多くの専門用語が登場します。これらの用語の中には、似たような文脈で使われたり、密接に関連していたりするため、初心者だけでなく中級者でも混同しやすいものが数多くあります。本章では、特に混同されやすい用語のペアに焦点を当て、それぞれの違いと関係性を明確にすることで、読者の理解を深め、適切な用語選択と概念把握を助けることを目的とします。
この章で覚えるべきこと
- Hugging Faceと
transformersライブラリの関係性 - モデルファイル形式であるGGUFとsafetensorsの役割の違い
- 推論ランタイムであるllama.cppとOllamaの機能と利用シーン
- デスクトップアプリケーションであるOllamaとLM Studioの比較
- モデルのカスタマイズ手法であるLoRAとファインチューニングの概念
- 量子化とGGUFファイル形式の関係性
- 高性能推論サーバーであるvLLMとTGIの特性
- モデルファイルと推論ランタイムの役割分担
- 推論(Inference)とサービング(Serving)の工程の違い
- モデルの学習手法であるSFTと利用手法であるRAGの目的
導入
LLMの技術領域は急速に進化しており、新しい概念やツールが次々と登場しています。その結果、多くの用語が生まれ、時にはそれらが同じような意味で使われたり、あるいは密接に関連しているために区別がつきにくくなったりすることがあります。例えば、「Hugging Face」という言葉を聞いたとき、それが企業名なのか、プラットフォームなのか、あるいは特定のライブラリを指すのか、迷った経験はありませんか?また、「ファインチューニング」と「LoRA」はどちらもモデルをカスタマイズする手法ですが、そのアプローチには明確な違いがあります。
本章では、このような混乱を解消するため、特に混同されやすい用語のペアを厳選し、それぞれの定義、役割、そして違いを具体的に解説します。これにより、読者の皆さんがLLM関連の情報をより正確に理解し、適切なツールや手法を選択できるようになることを目指します。
基本概念
LLMの用語が混同されやすい主な理由は以下の通りです。
- 階層性: ある用語が別の用語の包含関係にあったり、特定の技術スタックの一部であったりする場合。
- 目的の類似性: 異なるアプローチや技術が、最終的に同じ目的(例: モデルの高速化、カスタマイズ)を達成するために使われる場合。
- エコシステムの複雑性: Hugging Faceのように、企業、プラットフォーム、ライブラリ、モデルなどが複合的に絡み合っている場合。
- 技術の進化: 新しい技術が登場し、既存の概念と組み合わされたり、置き換えられたりする過程で、用語の使われ方が変化する場合。
これらの背景を踏まえ、各ペアについて「ひとことで言うと」から始まり、詳細な比較を行っていきます。
1. Hugging Face vs `transformers`
| 比較項目 | Hugging Face | transformers |
|---|---|---|
| ひとことで言うと | LLMエコシステム全体を構築する企業・プラットフォーム | Hugging Faceが提供する、LLMを扱うためのPythonライブラリ |
| 何のカテゴリか | 企業、AIコミュニティプラットフォーム | Pythonライブラリ、ソフトウェアフレームワーク |
| 何に使うのか | モデルの共有・発見、データセットの利用、デモアプリのホスティング、MLOpsツール提供など、LLM開発のあらゆる側面をサポート | 事前学習済みモデルのロード、ファインチューニング、推論実行、トークナイザの利用など、LLMのプログラマティックな操作 |
| 代表例 | Hugging Face Hub (モデル、データセット、Spaces)、AutoTrain、Inference Endpoints | from transformers import AutoModelForCausalLM, AutoTokenizer |
| よく混同される用語 | transformersライブラリ、Hugging Face Hub |
Hugging Face (企業・プラットフォーム) |
| 初心者向け注意点 | Hugging Faceは単一の製品ではなく、多くのサービスやツールを提供する「エコシステム」全体を指します。transformersはそのエコシステムの中核をなす重要なライブラリの一つです。 |
transformersライブラリはHugging Face社が開発・保守していますが、Hugging Faceの全サービスを指すわけではありません。 |
詳細:
Hugging Faceは、AI、特に自然言語処理(NLP)とLLMの分野で最も影響力のある企業の一つです。彼らは、モデル、データセット、デモアプリケーションなどを共有・発見できるプラットフォーム「Hugging Face Hub」を運営し、AIコミュニティの中心的な存在となっています。一方、transformersはHugging Faceが開発したオープンソースのPythonライブラリであり、BERT、GPT、T5などの最先端の事前学習済みモデルを簡単に利用できるようにします。つまり、Hugging Faceという企業が提供する数あるプロダクト・サービスの一つがtransformersライブラリである、という関係性です。
graph TD
subgraph "Hugging Face エコシステム"
A
Hugging
Face
A
A
A
end
B --> F[モデルの共有]
B --> G[データセットの共有]
B --> H["Spaces (デモアプリ)"]
C --> I[モデルのロード]
C --> J[トークナイザの利用]
C --> K[推論実行]
Hugging Faceは企業であり、その企業が提供するプラットフォームやライブラリ群を総称して「Hugging Faceエコシステム」と呼びます。transformersはそのエコシステムの中核をなすライブラリの一つです。
2. GGUF vs safetensors
| 比較項目 | GGUF | safetensors |
|---|---|---|
| ひとことで言うと | CPU推論に最適化されたLLMモデルファイル形式 | 安全で高速なモデルの読み込みを目的とした汎用的なテンソル保存形式 |
| 何のカテゴリか | モデルファイル形式、バイナリ形式 | テンソル保存形式、バイナリ形式 |
| 何に使うのか | llama.cppなどのCPUベースの推論ランタイムでLLMを効率的に実行するため |
PyTorchなどのフレームワークで学習したモデルの重みを、安全かつ高速に保存・ロードするため |
| 代表例 | llama-2-7b-chat.Q4_K_M.gguf |
model.safetensors, model.safetensors.index.json |
| よく混同される用語 | safetensors (両者ともモデルファイル形式として認識されがち) | GGUF (両者ともモデルファイル形式として認識されがち) |
| 初心者向け注意点 | GGUFはllama.cpp専用に近い形式で、量子化情報や推論に必要なメタデータを含みます。safetensorsはより汎用的なテンソル保存形式で、セキュリティと速度が特徴です。 |
safetensorsはモデルの重み(テンソル)を保存する形式であり、それ自体が推論エンジンではありません。GGUFは推論エンジン(llama.cpp)と密接に連携する形式です。 |
詳細:
GGUFは、llama.cppプロジェクトで開発された、CPUでのLLM推論に最適化されたモデルファイル形式です。量子化された重み、トークナイザ、推論に必要な様々なメタデータを単一のファイルに効率的に格納します。これにより、llama.cppはGGUFファイルを直接読み込み、CPU上で高速な推論を実行できます。
一方、safetensorsは、Hugging Faceによって開発された、テンソル(モデルの重みなど)を保存するための汎用的なバイナリ形式です。従来のPyTorchのpickle形式が持つセキュリティ上の脆弱性(任意のコード実行リスク)を排除し、かつ高速な読み込みを可能にすることを目的としています。safetensorsは特定の推論エンジンに依存せず、多くのフレームワークやライブラリで利用されています。
簡潔に言えば、GGUFは「llama.cppで動かすためのLLMパッケージ」であり、safetensorsは「安全に重みを保存するための箱」です。
3. llama.cpp vs Ollama
| 比較項目 | llama.cpp | Ollama |
|---|---|---|
| ひとことで言うと | CPUでのLLM推論を可能にするC++ライブラリ | LLMのダウンロード、実行、管理を容易にするデスクトップアプリケーション/CLIツール |
| 何のカテゴリか | 推論ランタイム、C++ライブラリ | LLM管理ツール、デスクトップアプリケーション、CLIツール |
| 何に使うのか | CPU上でGGUF形式のLLMを高速に推論するため | ローカル環境でLLMを簡単にセットアップし、実行し、APIとして提供するため |
| 代表例 | mainコマンド (./main -m model.gguf -p "Hello") |
ollama run llama2, ollama serve |
| よく混同される用語 | Ollama (Ollamaの内部でllama.cppが使われているため) | llama.cpp (Ollamaが提供する機能の一部として認識されがち) |
| 初心者向け注意点 | llama.cppは低レベルな推論エンジンであり、直接使うにはコンパイルやコマンドライン操作が必要です。 |
Ollamaはllama.cppを内部で利用しつつ、よりユーザーフレンドリーなインターフェース(ダウンロード、API提供など)を提供します。 |
詳細:
llama.cppは、MetaのLlamaモデルをC++で再実装し、特にCPU上での効率的な推論を可能にしたプロジェクトです。GGUF形式のモデルファイルを読み込み、量子化されたモデルをCPUで高速に実行する能力が特徴です。これは、低リソース環境でのLLM利用を大きく促進しました。
Ollamaは、このllama.cppを内部エンジンとして利用し、ユーザーがローカル環境でLLMを簡単にダウンロード、実行、管理できるようにするツールです。CLI(コマンドラインインターフェース)やデスクトップアプリケーションとして提供され、モデルのダウンロードからAPIサーバーの立ち上げまでを数コマンドで実現できます。Ollamaはllama.cppの機能を活用しつつ、より高いレベルでユーザー体験を向上させています。
graph TD
subgraph "Ollamaの内部構造"
A
B
B
B
E
F
end
Ollamaはllama.cppを基盤として、ユーザーフレンドリーなインターフェースと機能を提供します。
4. Ollama vs LM Studio
| 比較項目 | Ollama | LM Studio |
|---|---|---|
| ひとことで言うと | CLI中心でAPI提供に強みを持つローカルLLM実行ツール | GUI中心で手軽なモデル試用と管理に強みを持つローカルLLM実行ツール |
| 何のカテゴリか | LLM管理ツール、CLIツール、APIサーバー | LLM管理ツール、デスクトップアプリケーション (GUI) |
| 何に使うのか | ローカルでLLMを動かし、APIとして他のアプリケーションから利用する。開発者向け。 | ローカルでLLMを簡単に試用し、管理する。GUIで直感的に操作したいユーザー向け。 |
| 代表例 | ollama run llama2, ollama serve |
LM StudioのGUIからモデルをダウンロードし、チャットインターフェースで会話 |
| よく混同される用語 | LM Studio (どちらもローカルLLM実行ツールであるため) | Ollama (どちらもローカルLLM実行ツールであるため) |
| 初心者向け注意点 | Ollamaはコマンドライン操作が基本ですが、API提供が容易で開発者向けです。 | LM StudioはGUIが充実しており、プログラミング知識がなくても手軽にLLMを試せるのが魅力です。 |
詳細: OllamaとLM Studioはどちらも、ユーザーがローカル環境でLLMを簡単に実行できるようにするツールですが、そのアプローチとターゲットユーザーが異なります。
Ollamaは、主にCLIを通じて操作され、モデルのダウンロード、実行、そしてAPIサーバーとしての提供に重点を置いています。これにより、開発者は自分のアプリケーションからローカルで動作するLLMに簡単にアクセスできます。
LM Studioは、よりGUI(グラフィカルユーザーインターフェース)に特化したデスクトップアプリケーションです。モデルの検索、ダウンロード、チャットインターフェースでの試用、そしてローカルAPIサーバーの立ち上げまでを、直感的な操作で実現できます。プログラミングの知識がなくても、手軽に様々なLLMを試したいユーザーに適しています。
両者とも内部でllama.cppなどの推論エンジンを利用していることが多いですが、提供するユーザー体験が異なります。
5. LoRA vs fine-tuning
| 比較項目 | LoRA (Low-Rank Adaptation) | Fine-tuning (ファインチューニング) |
|---|---|---|
| ひとことで言うと | 既存モデルの重みの一部を凍結し、少数の追加パラメータのみを学習する効率的なファインチューニング手法 | 既存の事前学習済みモデルの全パラメータ、または大部分のパラメータを特定のタスクやデータに合わせて再学習する手法 |
| 何のカテゴリか | ファインチューニング手法、パラメータ効率的学習 (PEFT) | モデル学習手法、転移学習 |
| 何に使うのか | 計算リソースを抑えつつ、特定のタスクやドメインにモデルを適応させるため | モデルの性能を特定のタスクで最大化するため、新しいデータセットにモデルを適応させるため |
| 代表例 | 既存のLLMに医療ドメインの知識を追加する、特定の文体で応答するように調整する | BERTを感情分析タスク用に再学習する、GPTを特定の企業データで再学習する |
| よく混同される用語 | Fine-tuning (LoRAはファインチューニングの一種であるため) | LoRA (LoRAはファインチューニングの具体的な手法であるため) |
| 初心者向け注意点 | LoRAは「ファインチューニングの一種」であり、特にリソースが限られた環境で有効な手法です。 | ファインチューニングはより広範な概念で、LoRAはその中の効率的なアプローチの一つと理解しましょう。 |
詳細: ファインチューニングは、事前学習済みモデルを特定のタスクやデータセットに合わせて再学習させる一般的な手法です。通常、モデルの全パラメータを更新するため、多くの計算リソースと時間が必要です。
LoRA(Low-Rank Adaptation)は、このファインチューニングをより効率的に行うための手法の一つです。LoRAでは、事前学習済みモデルの大部分の重みを凍結し、ごく少数の追加パラメータ(アダプターモジュール)のみを学習します。これにより、学習に必要な計算リソースとストレージを大幅に削減できるだけでなく、過学習のリスクも低減できます。LoRAは「Parameter-Efficient Fine-Tuning (PEFT)」と呼ばれるカテゴリに属します。
graph TD
subgraph "モデルカスタマイズ手法"
A
B
B
end
D --> E[LoRA]
D --> F[Adapter]
D --> G[Prefix Tuning]
ファインチューニングは広範な概念であり、LoRAはパラメータ効率的ファインチューニング(PEFT)の一種です。
6. quantization vs GGUF
| 比較項目 | Quantization (量子化) | GGUF |
|---|---|---|
| ひとことで言うと | モデルの重みを低精度(例: 16bitから4bit)に変換する技術 | llama.cppで利用される、量子化されたモデルを格納するためのファイル形式 |
| 何のカテゴリか | モデル最適化技術、データ圧縮技術 | モデルファイル形式、バイナリ形式 |
| 何に使うのか | モデルのファイルサイズを削減し、推論時のメモリ使用量と計算速度を向上させるため | llama.cppで量子化されたLLMを効率的にロードし、CPUで推論するため |
| 代表例 | FP16からINT8への量子化、Q4_K_MなどのGGUF量子化タイプ | llama-2-7b-chat.Q4_K_M.gguf |
| よく混同される用語 | GGUF (GGUFファイルは量子化されたモデルを含むため) | Quantization (GGUFが量子化モデルの主要な配布形式であるため) |
| 初心者向け注意点 | 量子化は「技術」であり、GGUFは「その技術が適用されたモデルを保存する形式」です。GGUFファイルは、量子化されたモデルを格納するための「箱」と考えると分かりやすいでしょう。 | GGUFは量子化されたモデルを扱うための形式ですが、量子化自体はGGUFに限らず様々な形式や手法で行われます。 |
詳細: 量子化(Quantization)は、LLMの重み(通常は浮動小数点数)をより低い精度(例: 16ビット浮動小数点数から8ビット整数、または4ビット整数)に変換する技術です。これにより、モデルのファイルサイズが大幅に削減され、メモリ使用量が減り、推論速度が向上します。これは、特にリソースが限られたデバイス(CPUやエッジデバイス)でLLMを実行する上で非常に重要です。
GGUFは、前述の通りllama.cppプロジェクトで開発されたモデルファイル形式です。このGGUF形式は、量子化されたモデルの重みを効率的に格納し、llama.cppが直接読み込んで推論できるように設計されています。つまり、GGUFファイルの中には、量子化によって軽量化されたモデルの重みが含まれている、という関係性です。
量子化によるモデルサイズの削減は、例えば以下のように表現できます。 $$ \text{Memory Reduction Factor} = \frac{\text{Original Bit Precision}}{\text{Quantized Bit Precision}} $$ 例えば、16ビット浮動小数点数(FP16)から4ビット整数(INT4)に量子化する場合、メモリ使用量は $16/4 = 4$ 倍に削減されます。
7. vLLM vs TGI
| 比較項目 | vLLM | TGI (Text Generation Inference) |
|---|---|---|
| ひとことで言うと | 高速なLLM推論のためのPythonライブラリ/サーバー | Hugging Faceが提供する、高速なLLM推論のためのRust製サーバー |
| 何のカテゴリか | LLM推論フレームワーク、推論サーバー | LLM推論フレームワーク、推論サーバー |
| 何に使うのか | GPU上でLLMの推論スループットとレイテンシを最大化するため | Hugging Face Hubのモデルを効率的にサービングし、本番環境でのLLM推論を高速化するため |
| 代表例 | PagedAttention、連続バッチ処理 | FlashAttention、カスタムカーネル、Rustによる最適化 |
| よく混同される用語 | TGI (どちらも高性能推論サーバーであるため) | vLLM (どちらも高性能推論サーバーであるため) |
| 初心者向け注意点 | どちらもGPUを活用してLLM推論を高速化するためのツールですが、vLLMはPythonベースで柔軟性が高く、TGIはRustベースでHugging Faceエコシステムとの連携が強みです。 | どちらを選ぶかは、既存のインフラ、プログラミング言語の好み、Hugging Face Hubとの連携の必要性によって変わります。 |
詳細: vLLMとTGIは、どちらもGPU上でLLMの推論を高速化し、スループットを向上させることを目的とした高性能推論サーバーです。
vLLMは、UC Berkeleyが開発したPythonベースのライブラリで、特に「PagedAttention」という革新的なKVキャッシュ管理アルゴリズムを導入することで、LLMの推論スループットを大幅に向上させました。これにより、複数のリクエストを効率的にバッチ処理し、GPUメモリを最大限に活用できます。
TGI(Text Generation Inference)は、Hugging Faceが開発したRustベースの推論サーバーです。FlashAttention、カスタムCUDAカーネル、最適化されたデコーディング戦略などを活用し、Hugging Face Hub上のモデルを本番環境で効率的にサービングできるように設計されています。Rustで書かれているため、高いパフォーマンスとメモリ安全性が特徴です。
graph TD
subgraph "高性能LLM推論サーバー"
A
B
B
end
C --> E[PagedAttention]
C --> F[連続バッチ処理]
D --> G[FlashAttention]
D --> H[Rust最適化]
E --> I[GPU]
F --> I[GPU]
G --> I[GPU]
H --> I[GPU]
I --> J[高速LLM推論]
vLLMとTGIは、それぞれ異なる技術的アプローチでGPU上でのLLM推論を高速化します。
8. model file vs runtime
| 比較項目 | Model File (モデルファイル) | Runtime (ランタイム) |
|---|---|---|
| ひとことで言うと | LLMの学習済み知識(重み、アーキテクチャ、トークナイザなど)を格納したデータファイル | モデルファイルを読み込み、実際に推論を実行するためのソフトウェア環境/エンジン |
| 何のカテゴリか | データ、バイナリファイル | ソフトウェア、実行環境、エンジン |
| 何に使うのか | LLMの知識を保存・共有し、推論エンジンにロードするため | モデルファイルからLLMをロードし、ユーザーの入力に対して出力を生成するため |
| 代表例 | model.safetensors, model.gguf, pytorch_model.bin |
llama.cpp, transformersライブラリ, vLLM, TGI, ONNX Runtime |
| よく混同される用語 | Runtime (モデルファイルだけでは動かないため) | Model File (ランタイムだけでは推論できないため) |
| 初心者向け注意点 | モデルファイルは「設計図と材料」であり、ランタイムは「設計図を読み込み材料を使って製品を作る工場」です。両方が揃って初めてLLMを動かせます。 | モデルファイルは単なるデータであり、それ自体がプログラムとして動作するわけではありません。 |
詳細: モデルファイルは、LLMが学習した知識、つまりニューラルネットワークの重み(パラメータ)、モデルのアーキテクチャ定義、そしてテキストを数値に変換するためのトークナイザ情報などを格納したデータファイルです。これは、モデルを保存し、他のユーザーと共有したり、異なる環境で利用したりするための「設計図と材料」に相当します。
ランタイム(Runtime)は、このモデルファイルを読み込み、実際に計算を実行して推論を行うためのソフトウェア環境やエンジンを指します。ランタイムは、モデルのアーキテクチャを理解し、重みをメモリにロードし、入力データに対して計算を実行し、出力を生成する役割を担います。例えば、llama.cppはGGUFモデルファイルを読み込むランタイムであり、transformersライブラリはPyTorchやTensorFlow形式のモデルファイルを読み込み、Python環境で推論を実行するランタイムとして機能します。
9. inference vs serving
| 比較項目 | Inference (推論) | Serving (サービング) |
|---|---|---|
| ひとことで言うと | 学習済みモデルに新しい入力データを与え、出力を生成するプロセス | 推論機能をAPIとして提供し、複数のユーザーやアプリケーションからのリクエストに応答できるようにするプロセス |
| 何のカテゴリか | プロセス、計算 | サービス、デプロイメント |
| 何に使うのか | モデルの予測結果を得るため、モデルの性能を評価するため | モデルを本番環境で利用可能にするため、スケーラブルかつ安定的に推論を提供するため |
| 代表例 | ローカルでllama.cppを使って一度だけプロンプトを投げる、Jupyter Notebookでモデルを動かす |
vLLMやTGIを使ってAPIエンドポイントを公開し、Webアプリケーションから利用する |
| よく混同される用語 | Serving (サービングは推論を含むため) | Inference (サービングは推論をサービスとして提供することであるため) |
| 初心者向け注意点 | 推論は「モデルを動かす行為」そのものですが、サービングは「その動くモデルを多くの人が使えるようにする仕組み」です。 | サービングは推論の概念を包含しますが、単なる推論以上の、スケーラビリティ、可用性、セキュリティなどの要素を含みます。 |
詳細: 推論(Inference)とは、学習済みのモデルに新しい入力データ(例: プロンプト)を与え、それに基づいてモデルが予測や出力を生成するプロセスそのものを指します。これは、モデルが「考える」または「応答する」行為に相当します。
サービング(Serving)とは、この推論機能を、複数のユーザーやアプリケーションが利用できるように、API(Application Programming Interface)として公開し、運用するプロセスを指します。サービングには、推論の実行だけでなく、リクエストの管理、負荷分散、スケーリング、監視、セキュリティなどの要素が含まれます。本番環境でLLMを運用する際には、単に推論できるだけでなく、安定して高速に多数のリクエストを処理できるサービングの仕組みが不可欠です。vLLMやTGIは、高性能なLLMサービングを実現するためのツールです。
推論のスループット(throughput)は、単位時間あたりに処理できるトークン数で表現されます。 $$ \text{Throughput} = \frac{\text{Total Tokens Generated}}{\text{Total Time}} \quad (\text{tokens/second}) $$ サービングでは、このスループットを最大化しつつ、レイテンシ(応答時間)を最小化することが求められます。
10. SFT vs RAG
| 比較項目 | SFT (Supervised Fine-Tuning) | RAG (Retrieval-Augmented Generation) |
|---|---|---|
| ひとことで言うと | 特定のタスクやドメインのデータでモデルを再学習させる手法 | 外部知識ベースから関連情報を検索し、その情報に基づいてLLMが回答を生成する手法 |
| 何のカテゴリか | モデル学習手法、ファインチューニングの一種 | LLM利用手法、情報検索と生成の組み合わせ |
| 何に使うのか | モデルの振る舞いや知識を特定のデータセットに合わせて調整するため | LLMが最新の情報や専門的な知識に基づいて回答できるようにするため、幻覚(hallucination)を減らすため |
| 代表例 | 医療Q&AデータでLLMをファインチューニングし、医療に関する質問に特化させる | 企業の社内ドキュメントを検索し、その情報に基づいてLLMが質問に回答する |
| よく混同される用語 | RAG (どちらもLLMの知識を増やすように見えるため) | SFT (どちらもLLMの知識を増やすように見えるため) |
| 初心者向け注意点 | SFTはモデル自体の「脳」を書き換えるようなものですが、RAGは「外部の参考書を読んでから答える」ようなものです。 | SFTは学習コストが高いですが、モデルの振る舞いを根本から変えられます。RAGは学習不要で最新情報に対応しやすいですが、検索精度に依存します。 |
詳細: SFT(Supervised Fine-Tuning)は、教師あり学習データを用いて、事前学習済みLLMを特定のタスクやドメインに合わせてファインチューニングする手法です。これにより、モデルは特定の知識を内部化したり、特定の応答スタイルを学習したりします。例えば、医療Q&AデータでSFTを行うと、モデルは医療に関する質問に対してより正確で専門的な回答を生成できるようになります。モデルの「脳」に直接新しい知識を書き込むイメージです。
RAG(Retrieval-Augmented Generation)は、LLMが回答を生成する際に、外部の知識ベース(ドキュメント、データベースなど)から関連情報を検索し、その情報を参照しながら回答を生成する手法です。LLMは、検索された情報をプロンプトの一部として受け取り、それに基づいて回答を生成します。これにより、LLMは事前学習データにはない最新の情報や、特定のドメインに特化した情報を利用できるようになり、幻覚(hallucination)を減らし、より正確で根拠のある回答を提供できます。RAGはモデルの「脳」を書き換えるのではなく、「外部の参考書を読んでから答える」ようなイメージです。
graph TD
subgraph "LLMの知識拡張アプローチ"
A
B
C
E
F
G
H
F
J
end
SFTはモデルの内部知識を更新するのに対し、RAGは外部知識を参照して回答を生成します。
実務での位置づけ
これらの混同しやすい用語は、LLMの実務において、適切な技術選択やコミュニケーションのために正確な理解が不可欠です。
- Hugging Face vs
transformers: Hugging Faceエコシステム全体を理解し、その中でtransformersライブラリがどのような役割を果たすかを把握することで、モデルの探索から開発、デプロイまでを一貫して進めることができます。 - GGUF vs safetensors: モデルファイルの形式を正しく理解することで、どの推論ランタイムでどのモデルが動くのか、またセキュリティ上のリスクは何かを判断できます。特にCPU環境でのLLM利用にはGGUFが重要です。
- llama.cpp vs Ollama vs LM Studio: ローカル環境でのLLM利用において、CLIベースでAPI提供に強いOllama、GUIベースで手軽なLM Studio、そしてその基盤となる
llama.cppの役割を理解することで、用途に応じた最適なツールを選択できます。 - LoRA vs fine-tuning: モデルのカスタマイズにおいて、計算リソースの制約や目的(モデルの振る舞い変更か、知識追加か)に応じて、LoRAのようなPEFT手法を選ぶか、従来のファインチューニングを選ぶかを判断する上で重要です。
- quantization vs GGUF: モデルの最適化と配布形式の関係を理解することで、軽量化されたモデルをどのように利用するか、またその性能特性を把握できます。
- vLLM vs TGI: 本番環境でのLLMサービングにおいて、スループットやレイテンシの要件、既存の技術スタック(Python vs Rust)、Hugging Faceエコシステムとの連携度合いに応じて、最適な高性能推論サーバーを選択できます。
- model file vs runtime: LLMを動かすための基本的な構成要素を理解することで、トラブルシューティングや新しい環境へのデプロイがスムーズになります。
- inference vs serving: LLMを単に動かすだけでなく、サービスとして提供する際の要件(スケーラビリティ、可用性など)を明確にし、適切なデプロイ戦略を立てる上で重要です。
- SFT vs RAG: LLMに特定の知識や振る舞いを付与する際、モデル自体を学習させるSFTと、外部情報を参照させるRAGのどちらが目的に合致するか、コストと効果を考慮して選択する上で不可欠な知識です。
これらの用語を正確に使い分けることで、LLM開発の効率が向上し、より適切なアーキテクチャ設計やツール選定が可能になります。
まとめ
3行まとめ
- LLMの用語は密接に関連し、階層性や目的の類似性から混同されやすい。
- Hugging Faceはエコシステム、
transformersはライブラリ、GGUFはCPU向けモデル形式、Ollama/LM Studioはローカル実行ツール。 - LoRAは効率的ファインチューニング、量子化はモデル軽量化技術、RAGは外部参照による知識拡張手法。
混同しやすい用語
- Hugging Face (企業・プラットフォーム) と
transformers(ライブラリ) - GGUF (
llama.cpp向けモデル形式) と safetensors (汎用テンソル保存形式) llama.cpp(推論エンジン) と Ollama (llama.cppを利用した管理ツール)- Ollama (CLI中心) と LM Studio (GUI中心)
- LoRA (効率的ファインチューニング手法) と Fine-tuning (広範な再学習手法)
- Quantization (モデル最適化技術) と GGUF (量子化モデルを格納する形式)
- Inference (推論プロセス) と Serving (推論をサービスとして提供するプロセス)
- SFT (モデルの学習による知識付与) と RAG (外部参照による知識拡張)
次に読むべき章
- 第3章: Hugging Faceとは何か: Hugging Faceエコシステムの全体像をさらに深く理解するため。
- 第5章: GGUFを重点的に理解する: GGUF形式の詳細と
llama.cppとの連携について。 - 第8章: Ollama / LM Studio / Open WebUI / Jan など: ローカルLLM実行ツールの具体的な使い方と選択肢について。
- 第12章: 事前学習・継続事前学習・SFT: SFTの概念と他の学習手法との比較について。
- 第13章: LoRA / QLoRA / Adapter: LoRAの詳細とPEFT手法について。
- 第19章: RAG / embedding / vector DB: RAGの仕組みと関連技術について。