1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLMってなんだ?〜「SoraもLLMでしょ?」が間違いである明確な理由〜

1
Posted at

この記事の対象読者

  • 「LLM」という言葉をよく目にするが、実は正確な意味を説明できない方
  • SoraやRunwayなどの動画生成AIも「LLM」だと思っている方
  • LLM・SLM・LM・テキストエンコーダーの違いがモヤっとしている方

この記事で得られること

  • LLMの正確な定義と境界線が腹落ちする: 何がLLMで何がLLMでないのか、明確な判断基準を持てる
  • AI用語の「家系図」が整理できる: LLM・SLM・LM・拡散モデル・テキストエンコーダーの関係を一枚の図で理解
  • 「なぜSoraはLLMではないのか」を人に説明できる: 技術的根拠に基づいて、よくある誤解を正せるようになる

この記事で扱わないこと

  • Transformerアーキテクチャの数学的詳細(Attention機構の行列演算等)
  • 特定のLLMモデル(GPT-4、Claude、Llama等)の性能比較
  • LLMの学習方法(事前学習・RLHF等)の詳細手順

1. LLMとの出会い

「最近のAIってすごいよね、LLMでさ、動画まで作れるんでしょ? Soraとか」

これは実際に私が知人から言われた言葉だ。そのとき私は「うーん、まあ広い意味では...」と曖昧に答えてしまった。

でも正直に言おう。SoraはLLMではない。

そして恥ずかしながら、当時の私自身も「LLMとは何か」を正確に説明できる自信がなかった。ChatGPTとかのことでしょ? くらいの認識だった。LM、SLM、LLM、拡散モデル、テキストエンコーダー...。似たような用語が多すぎて、境界線がぼんやりしている。

この記事では、そのモヤモヤを完全にクリアにする。読み終わる頃には「SoraがLLMではない理由」を、技術的根拠を持って誰にでも説明できるようになるはずだ。

ここまでで、この記事の問題意識が共有できたと思う。次は、記事で使う用語を整理しておこう。


2. 前提知識の確認

本題に入る前に、この記事で登場する用語を確認する。

2.1 モデル(Model)とは

AIにおける「モデル」とは、大量のデータから学習したパターンを数学的に表現したものだ。料理に例えるなら、シェフの「経験と勘」を数式に落とし込んだもの。モデルは入力を受け取り、学習したパターンに基づいて出力を生成する。

2.2 パラメータ(Parameter)とは

モデルの中にある「調整可能なつまみ」のようなもの。パラメータが多いほど、より複雑なパターンを学習できる。GPT-4は推定1兆以上のパラメータを持つと言われている。人間の脳のシナプス(神経接続)に例えられることが多い。

2.3 トークン(Token)とは

テキストをAIが処理できる最小単位に分割したもの。英語では1単語が概ね1トークン、日本語では1文字が1〜2トークン程度になる。「こんにちは」は3〜5トークンに分割される。

2.4 Transformer(トランスフォーマー)とは

2017年にGoogleが発表した「Attention Is All You Need」論文で提案されたニューラルネットワークのアーキテクチャ。「入力データの中で、どの部分とどの部分が関連しているか」を効率的に計算する仕組み(Attention機構)を持つ。現代のLLMはほぼすべてこのTransformerをベースにしている。

これらの用語が押さえられたら、LLMの正確な定義を見ていこう。


3. LLMが生まれた背景

3.1 言語モデルの歴史:ルールから確率、そしてニューラルネットワークへ

LLMを理解するには、まず「言語モデル(LM: Language Model)」の歴史を振り返る必要がある。

年代 手法 考え方
1950〜80年代 ルールベース 文法規則を人間が手書き ELIZA(最初のチャットボット)
1990〜2000年代 統計的言語モデル 単語の出現確率を統計的に計算 n-gramモデル
2010年代前半 ニューラル言語モデル ニューラルネットワークで学習 Word2Vec、LSTM
2017年〜 Transformer Attention機構で並列処理 BERT、GPT
2020年〜 Large Language Model Transformerを巨大化 GPT-3(1750億パラメータ)

ポイントは、「言語モデル」自体は1950年代から存在する概念であり、LLMはその最新形態に過ぎないということだ。

3.2 「Large」になって何が変わったのか

2020年にOpenAIがGPT-3(1750億パラメータ)を発表したとき、研究者たちは驚くべき現象を目撃した。モデルを巨大にしただけで、明示的に教えていないタスクができるようになったのだ。これは**創発的能力(Emergent Abilities)**と呼ばれる。小さなモデルでは全くできなかったことが、パラメータ数がある閾値を超えると突然できるようになる。

3.3 なぜ「言語」モデルと呼ぶのか

ここが最も重要なポイントだ。LLMの「L」は「Language」、つまり「言語」を扱うモデルであることを明示している。LLMは**テキスト(言語データ)**を入力として受け取り、テキストを出力する。これがLLMの本質的な定義だ。画像も動画も音声も、LLM単体では生成できない。

背景がわかったところで、LLMの正確な定義と他のモデルとの違いを見ていこう。


4. 基本概念と仕組み:LLMの正確な定義と「家系図」

4.1 LLMの定義:3つの条件

LLMと呼ばれるためには、以下の3つの条件をすべて満たす必要がある。

条件 説明
1. 言語(テキスト)を扱う 入力も出力もテキスト(トークン列)。画像や動画を直接生成するモデルは含まない
2. 大規模である パラメータ数が数十億〜数兆規模。一般に200億パラメータ以上をLLMと呼ぶことが多い
3. 汎用的なタスクに対応 特定タスク専用ではなく、翻訳・要約・コード生成・質問応答など多様なタスクを処理できる

4.2 AIモデルの「家系図」

混同されやすいAIモデル群の関係を整理する。

AI(人工知能)
 │
 ├── 生成AI(Generative AI)
 │    │
 │    ├── 言語生成系 ◄── テキストを扱う
 │    │    ├── LLM ... GPT-4, Claude, Llama 70B
 │    │    └── SLM ... Phi-3 Mini (3.8B), Llama 3B, Gemma 2B
 │    │
 │    ├── 画像生成系 ◄── 画像を扱う(拡散モデル)
 │    │    例: Stable Diffusion, DALL·E 3, Midjourney
 │    │
 │    ├── 動画生成系 ◄── 動画を扱う(拡散トランスフォーマー)
 │    │    例: Sora, Runway Gen-4, Veo 3
 │    │
 │    └── 音声生成系 ◄── 音声を扱う
 │         例: ElevenLabs, Whisper
 │
 ├── テキストエンコーダー ◄── テキストを「理解」するが「生成」しない
 │    例: BERT, CLIP, Sentence-BERT
 │
 └── 推論エンジン ◄── モデルではなく「モデルを動かすソフトウェア」
      例: vLLM, TensorRT-LLM

4.3 「SoraはLLMではない」——その明確な理由

なぜSoraやRunwayをLLMと呼ぶのは間違いなのか?

理由1: 出力が「言語」ではない

モデル 入力 出力 LLMか?
GPT-4 テキスト テキスト Yes
Claude テキスト テキスト Yes
Sora テキスト 動画 No
Runway Gen-4 テキスト/画像 動画 No
Stable Diffusion テキスト 画像 No

理由2: 根本的なアーキテクチャが異なる

項目 LLM(例: GPT-4) 動画生成モデル(例: Sora)
核心技術 次のトークンを予測 ノイズを除去して映像を復元
アーキテクチャ Transformer(デコーダー型) 拡散トランスフォーマー(DiT)
生成プロセス トークンを1つずつ逐次生成 ランダムノイズから反復的にデノイズ
出力空間 語彙の確率分布(離散的) ピクセル/潜在空間の連続値

理由3: 「テキストプロンプトを受け付ける」だけではLLMにならない

SoraやStable Diffusionは確かにテキストプロンプトを受け付ける。しかし、それはモデル内部に「テキストエンコーダー」(CLIPなど)を部品として組み込んでいるだけ。

【Soraの内部構造(簡略図)】

テキストプロンプト
    │
    ▼
┌──────────────┐
│テキストエンコーダー│ ← テキストを数値に変換する「部品」
│  (CLIPなど)   │
└──────────────┘
    │ ベクトル
    ▼
┌──────────────┐
│拡散トランスフォーマー│ ← ノイズ除去で映像を生成する「本体」
│    (DiT)       │
└──────────────┘
    │
    ▼
  動画出力

テキストエンコーダーは「通訳」のようなもの。人間の言葉をモデルが理解できる形に変換する。しかし通訳がいるからといって、料理人が言語学者になるわけではない。

4.4 LLMとSLMの境界線

分類 パラメータ数 代表例 特徴
SLM 〜200億未満 Phi-3 Mini (3.8B), Llama 3.2 3B 特定タスク特化、エッジデバイスで動作可能
LLM 200億〜 GPT-4 (推定1T+), Llama 3.1 70B 汎用的、創発的能力、高い推論能力

ただし、パラメータ数だけが基準ではない。MicrosoftのPhi-3は3.8Bパラメータながら旧世代のLLM(GPT-3.5)に匹敵する性能を発揮する。

4.5 LLMとテキストエンコーダーの違い

項目 LLM テキストエンコーダー
目的 テキストを生成する テキストを**理解(ベクトル化)**する
方向性 テキスト → テキスト テキスト → 数値ベクトル
代表例 GPT-4, Claude, Llama BERT, CLIP, Sentence-BERT
使い道 チャット、文章作成、コード生成 検索、分類、他モデルへの入力

基本概念が理解できたところで、実際にLLMがどう動いているのかをコードで確認してみよう。


5. 実践:LLMの動作を体感する

5.1 環境構築

pip install transformers torch openai

5.2 環境別の設定ファイル

開発環境用(config.development.yaml)

# config.development.yaml - ローカル開発環境
llm:
  provider: "local"
  base_url: "http://localhost:11434/v1"
  model: "llama3.2"
  temperature: 0.7
  max_tokens: 512
logging:
  level: "DEBUG"

ステージング環境用(config.staging.yaml)

# config.staging.yaml - テスト環境(API利用)
llm:
  provider: "openai"
  base_url: "https://api.openai.com/v1"
  model: "gpt-4o-mini"
  temperature: 0.3
  max_tokens: 1024
logging:
  level: "INFO"

本番環境用(config.production.yaml)

# config.production.yaml - 本番環境
llm:
  provider: "openai"
  base_url: "https://api.openai.com/v1"
  model: "gpt-4o"
  temperature: 0.1
  max_tokens: 2048
logging:
  level: "WARNING"

5.3 LLMの「次のトークン予測」を体感する

"""
LLMの「次のトークン予測」を可視化するスクリプト
実行方法: python llm_next_token.py
前提: pip install transformers torch
"""
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch


def demonstrate_next_token_prediction():
    """次のトークン予測の仕組みを可視化"""
    model_name = "gpt2"
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(model_name)

    prompt = "The capital of Japan is"
    inputs = tokenizer(prompt, return_tensors="pt")

    print(f"入力: '{prompt}'")
    print(f"トークン化: {tokenizer.tokenize(prompt)}")

    with torch.no_grad():
        outputs = model(**inputs)
        next_token_logits = outputs.logits[0, -1, :]

    probs = torch.softmax(next_token_logits, dim=-1)
    top5 = torch.topk(probs, 5)

    print(f"\n--- 次のトークン予測(上位5件)---")
    for i in range(5):
        token = tokenizer.decode(top5.indices[i])
        probability = top5.values[i].item() * 100
        bar = "" * int(probability / 2)
        print(f"  '{token}' : {probability:.1f}% {bar}")


if __name__ == "__main__":
    demonstrate_next_token_prediction()

5.4 実行結果

$ python llm_next_token.py

入力: 'The capital of Japan is'
トークン化: ['The', ' capital', ' of', ' Japan', ' is']

--- 次のトークン予測(上位5件)---
  ' Tokyo' : 42.3% █████████████████████
  ' the'   : 15.7% ███████
  ' a'     : 5.2%  ██
  ' located': 3.8% █
  ' not'   : 2.1%  █

これがLLMの本質だ。「次に来る可能性が最も高いトークンを選び続ける」。この単純な仕組みの積み重ねが、驚くほど人間らしい文章を生成する。

5.5 よくあるエラーと対処法

エラー・誤解 原因 正しい理解
「SoraはLLMだ」 テキストプロンプトを使う=LLMという誤解 テキストを「受け付ける」のと「生成する」のは別。Soraの出力は動画
「BERTもLLMだ」 Transformerを使う=LLMという誤解 BERTはエンコーダー型でテキスト生成能力がない
「vLLMは新しいLLMだ」 名前に「LLM」が含まれるという誤解 vLLMは推論エンジン。モデルではない
「Llama 3.2 3BはLLMだ」 全てのLlamaがLLMという誤解 3Bパラメータ版はSLM寄り
torch.cuda.OutOfMemoryError LLMをローカルで動かそうとしてVRAM不足 VRAMとモデルサイズの関係を確認

5.6 環境診断スクリプト

#!/usr/bin/env python3
"""
LLM実行環境診断スクリプト
実行方法: python check_llm_env.py
"""
import sys
import subprocess


def main():
    print("=" * 55)
    print("  LLM実行環境診断ツール v1.0")
    print("=" * 55)
    
    # Python
    v = sys.version_info
    print(f"\n[Python] {v.major}.{v.minor}.{v.micro}")
    
    # パッケージ
    for pkg in ["torch", "transformers", "openai"]:
        try:
            mod = __import__(pkg)
            ver = getattr(mod, "__version__", "?")
            print(f"[OK] {pkg} {ver}")
        except ImportError:
            print(f"[--] {pkg} 未インストール")
    
    # GPU
    try:
        import torch
        if torch.cuda.is_available():
            name = torch.cuda.get_device_name(0)
            mem = torch.cuda.get_device_properties(0).total_mem / (1024**3)
            print(f"\n[GPU] {name} ({mem:.1f} GB)")
            if mem >= 24:
                print("  → LLM (8B FP16): OK / LLM (70B 4bit): OK")
            elif mem >= 8:
                print("  → SLM (3B FP16): OK / LLM (8B 4bit): OK")
            else:
                print("  → SLM (3B 4bit): OK / 量子化モデル推奨")
        else:
            print("\n[GPU] 利用不可(CPU推論のみ)")
    except ImportError:
        print("\n[GPU] PyTorch未インストール")
    
    # Ollama
    try:
        r = subprocess.run(["ollama", "--version"], capture_output=True, text=True, timeout=5)
        print(f"\n[Ollama] {r.stdout.strip()}")
    except FileNotFoundError:
        print("\n[Ollama] 未インストール")

    print("\n診断完了")


if __name__ == "__main__":
    main()

実装方法がわかったので、次は具体的なユースケースを見ていく。


6. ユースケース別ガイド

6.1 ユースケース1: テキストで対話・文章生成がしたい → LLM / SLM

想定読者: チャットボットや文章作成ツールを作りたい方

選ぶべきモデル: LLMまたはSLM

"""
LLMでチャットボットを実装
前提: Ollamaがlocalhost:11434で起動済み
"""
from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

response = client.chat.completions.create(
    model="llama3.2",
    messages=[
        {"role": "system", "content": "あなたは親切なAIアシスタントです。"},
        {"role": "user", "content": "Pythonの特徴を教えて"}
    ],
    max_tokens=512
)
print(response.choices[0].message.content)

6.2 ユースケース2: テキストの意味検索・分類がしたい → テキストエンコーダー

想定読者: ドキュメント検索やテキスト分類を実装したい方

選ぶべきモデル: BERT、Sentence-BERT等(LLMではない)

"""
テキストエンコーダーで意味検索
前提: pip install sentence-transformers
"""
from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer("all-MiniLM-L6-v2")

documents = [
    "Pythonは初心者に優しいプログラミング言語です",
    "東京タワーは1958年に完成した電波塔です",
    "機械学習はデータからパターンを学ぶ技術です",
]

doc_embeddings = model.encode(documents)
query_embedding = model.encode("AIの学習について教えて")

scores = util.cos_sim(query_embedding, doc_embeddings)[0]
results = sorted(enumerate(scores), key=lambda x: x[1], reverse=True)

print("クエリ: 'AIの学習について教えて'")
for idx, score in results:
    print(f"  {score:.3f} | {documents[idx]}")

6.3 ユースケース3: 画像や動画を生成したい → 拡散モデル

想定読者: テキストから画像・動画を生成したい方

選ぶべきモデル: Stable Diffusion、DALL·E、Sora等(LLMではない)

"""
拡散モデルで画像生成(LLMではない処理)
前提: pip install diffusers torch
注意: GPU(VRAM 8GB以上)が必要
"""
from diffusers import StableDiffusionPipeline
import torch

pipe = StableDiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2-1",
    torch_dtype=torch.float16
).to("cuda")

# テキストを「入力」に使うが、出力は「画像」→ LLMではない
prompt = "A serene Japanese garden with cherry blossoms"
image = pipe(prompt, num_inference_steps=30).images[0]
image.save("generated_image.png")
print("画像生成完了(これは拡散モデルであり、LLMではありません)")

ユースケースを把握できたところで、この先の学習パスを確認しよう。


7. 学習ロードマップ

初級者向け(まずはここから)

  1. OllamaをインストールしてLLMを手元で動かしてみる
  2. 上記の「次のトークン予測」スクリプトを実行して、LLMの動作原理を体感する
  3. ChatGPTやClaudeを使いながら「これはLLMが次のトークンを予測した結果なんだ」と意識してみる

中級者向け(実践に進む)

  1. PyTorchでTransformerの基礎を学ぶ
  2. Hugging FaceのTransformersライブラリで様々なモデル(LLM、エンコーダー、拡散モデル)を試す
  3. GGUFや量子化技術を学び、ローカルでのLLM活用を最適化する

上級者向け(さらに深く)

  1. Attention Is All You Need原論文を読み、Transformerを数学的に理解する
  2. LLMのファインチューニング(LoRA等)を実践する
  3. マルチモーダルモデル(GPT-4o、Gemini等)のアーキテクチャを学ぶ

8. まとめ

この記事では、LLMについて以下を解説した。

  1. LLMの正確な定義: 「大規模」で「言語(テキスト)」を扱う「生成モデル」。3条件すべてを満たすものだけがLLM
  2. SoraがLLMではない理由: 出力が動画であること、アーキテクチャが拡散モデルであること、テキストエンコーダーを「部品として使っている」だけであること
  3. AIモデルの家系図: LLM・SLM・テキストエンコーダー・拡散モデル・推論エンジンの関係を整理

判断早見表

質問 Yes → No →
テキストを生成するか? 言語モデルの可能性あり LLMではない
パラメータ数が200億以上か? LLMの可能性あり SLM寄り
汎用的なタスクに対応するか? LLM 特化型モデル

私の所感

この記事を書いて改めて思ったのは、「LLM」という言葉が便利すぎるゆえに、何でもかんでも「LLM」と呼ばれてしまう現状がある、ということだ。

でも、区別を曖昧にしたまま話を進めると、技術選定で間違った判断をしてしまう。「画像生成したいのでLLMを導入しよう」は、「寿司が食べたいのでイタリアンレストランに行こう」くらいの的外れになりかねない。

正確な用語を使えることは、エンジニアとしての信頼に直結する。この記事が、あなたの「LLM理解」をアップデートする一助になれば嬉しい。

次に誰かが「SoraってLLMでしょ?」と言ったら、自信を持って訂正してあげてほしい。


参考文献


この記事が役に立ったら、いいね・ストックしていただけると励みになります。

他にもAI/LLM関連の記事を書いています:


X(Twitter)でもAI/ML系の情報を発信中 → @geneLab_999

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?