0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

3Bモデルが“自分を採点”してみた — 小さな頭脳の内省実験

Posted at

はじめに

今回は AI21-Jamba-Reasoning-3B-GGUFを使って、「一度答えたあとに、自分でその理由を点検して再回答する」
――つまり 自己修正型の推論(self-correction reasoning) を試してみました。
大規模モデル(例:GPT-4やLing-1Tなど)ではおなじみの「再考ステップ」を、わずか3B(30億パラメータ)でどこまで再現できるのか?Colab上で実験してみた結果をまとめます。

使用モデル

項目 内容
モデル名 AI21-Jamba-Reasoning-3B-GGUF
開発元 AI21 Labs
構成 Transformer + Mamba ハイブリッド構造
コンテキスト長 最大 256K トークン対応
実行形式 GGUF(llama.cpp/LM Studio/Ollama対応)
実験環境 Google Colab(T4 GPU)
使用ライブラリ llama-cpp-pythonhuggingface_hub

※ モデルカードでは、長文推論・数理・思考系タスクで高精度を発揮すると紹介されています。


実験結果

def jamba_self_correct(question, temperature=0.3, max_new_tokens=768):
    prompt = SELF_CORRECT_PROMPT.format(question=question)
    out = llm(
        prompt,
        max_tokens=max_new_tokens,
        temperature=temperature,
        stop=[]
    )
    return out["choices"][0]["text"].strip()

# 動作テスト(論理・数理・読解の3問サンプル)
tests = [
    "数列 2, 4, 8, 16, ? の次の数を求め、理由を述べてください。",
    "A,B,Cのうち正直者は1人だけ。A「Bは嘘つき」、B「Cは嘘つき」、C「Aは嘘つき」。誰が正直者?理由は?",
    "次の要約文の主張が成立するための前提を2つ指摘してください:『在宅勤務は生産性を上げるため、全社で恒久化すべきだ。』"
]

for q in tests:
    print("▶︎ 質問:", q)
    print(jamba_self_correct(q))
    print("-"*80)

出力結果

初回回答: この数列は二倍積み木(等比数列)であることが観察できる。2, 4, 8, 16, ... そして次の数は32です。理由としては、各項は前の2倍になることを示していると説明します。
自己評価:
- 数列は等比数列であることが確認できる。
- 各項は前の2倍になることが確認できる。
- 32が次の数となることが確認できる。
再回答: 以上の通り、この数列は等比数列であり、各項が前の項の2倍となるため、次の数は32です。

解析と考察

  • 初回回答では、モデルがシンプルにパターンを特定。
  • 自己評価段階では、自身の根拠(2倍規則・等比性)を3項目で検証。
  • 再回答では、初回を再確認して整った表現にリファイン。

つまり、Jambaは「思考を点検する内省ステップ」をテンプレート指示だけで実行できることが確認できました。


応用アイデア

分野 応用例
教育AI 生徒の「誤答→自己修正」プロセスを模倣
思考過程分析 Chain-of-Thoughtの可視化実験
モデル比較 Ling-1T/GLM-4.6などとの再考ステップ精度比較
軽量LLM研究 小型モデルの「自己整合性」評価

手順

必要パッケージのインストール

!pip -q install --upgrade huggingface_hub
# GPU が使えるなら(ColabのCUDA>=12系)こちらを推奨:
!pip -q install --upgrade llama-cpp-python
# うまく入らない場合のCPUフォールバック:
# !pip -q install --upgrade --index-url https://pypi.org/simple llama-cpp-python

GGUF モデルの取得(Q4_K_M)

from huggingface_hub import hf_hub_download
import os

REPO_ID = "ai21labs/AI21-Jamba-Reasoning-3B-GGUF"
FILENAME = "jamba-reasoning-3b-Q4_K_M.gguf"  # 1.93GBの4bit量子化
# 必要なら事前に: from huggingface_hub import login; login()

model_path = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)
model_path

モデル読込(長文対応のコンテキスト設定)

from llama_cpp import Llama
import multiprocessing

# できるだけ広い文脈を取りたいが、GPU/メモリに合わせて調整
# モデルカード例では n_ctx=128000 を使用(マシンに合わせて下げてもOK)
# ColabのT4なら 32k〜65k くらいから試すのが現実的
CTX = 32768

llm = Llama(
    model_path=model_path,
    n_ctx=CTX,
    n_threads=max(1, multiprocessing.cpu_count() - 1),
    n_gpu_layers=-1,       # GPUがあれば全層GPU。無ければ自動でCPU実行
    flash_attn=True,       # 有効なら高速化
    verbose=False
)

「自己評価→再回答」プロンプト

SELF_CORRECT_PROMPT = """You are a careful reasoner.
Follow EXACTLY these sections in Japanese:

[指示]
1) まず「初回回答」を1段落で述べる。
2) 次に「自己評価」で、初回回答の前提・計算・根拠の妥当性を3箇条以内の箇条書きで点検する(短く)。
3) 最後に「再回答」を必要に応じて1段落で更新する(初回が妥当なら同一でも可)。

[出力フォーマット]
初回回答: <1段落>
自己評価:
- <短い点検1>
- <短い点検2>
- <短い点検3>
再回答: <1段落>

[質問]
{question}
"""

推論ラッパ関数(温度や最大トークンも管理)

def jamba_self_correct(question, temperature=0.3, max_new_tokens=768):
    prompt = SELF_CORRECT_PROMPT.format(question=question)
    out = llm(
        prompt,
        max_tokens=max_new_tokens,
        temperature=temperature,
        stop=[]
    )
    return out["choices"][0]["text"].strip()

# 動作テスト(論理・数理・読解の3問サンプル)
tests = [
    "数列 2, 4, 8, 16, ? の次の数を求め、理由を述べてください。"
]

for q in tests:
    print("▶︎ 質問:", q)
    print(jamba_self_correct(q))
    print("-"*80)

まとめ

  • AI21-Jamba-Reasoning-3B は小型ながら「自己検証型推論」が可能。
  • “初回回答 → 自己評価 → 再回答” の3段階構造で思考の透明性を確認できた。
  • 長文にも対応できるハイブリッド構成で、教育・実験系の用途に最適。

🐣


フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。

Twitter
Medium
GitHub

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?