refactorium-dual-deepseek-r1-7b-plus / DEEPSEEK_R1_MODEL.md
Motoni Shikoudai
Refactorium v1.0.0: Complete Project Upload
9712f0b
|
Raw
History Blame Contribute Delete
10.9 kB

NullAI Refractor - Deepseek R1 7B 統合

Date: 2025-12-13 Status: ✅ Deepseek R1 7B統合完了 Model: mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit


🧠 モデル選択の理由

Deepseek R1 7B の特徴

高性能な推論能力

  • Chain-of-Thought (CoT) 推論に最適化
  • 複雑な問題解決タスク対応
  • 推論プロセスの透明性向上

効率的なリソース利用

  • 7Bパラメータ(中程度のサイズ)
  • MLX 4bit量子化で~3-4GB VRAM
  • Apple Silicon (M1/M2/M3) で高速実行

エントロピー計測に適した

  • 多様な出力分布(高エントロピー計測が容易)
  • 推論チェーンの中間ステップを通じた豊かな不確実性表現
  • ディソナンス計測のために最適な確率分布

📥 インストール & セットアップ

1. モデルの自動ダウンロード

APIサーバー起動時に自動でダウンロード:

cd /Users/motonishikoudai/project_refactorium_refractor/phase1_skeleton
python api_server.py --no-mock

初回実行時:

  • HuggingFaceからモデルダウンロード (~3-4GB)
  • MLX形式に変換(初回のみ)
  • キャッシュに保存

2. 手動ダウンロード

from mlx_lm import load

model, tokenizer = load("mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit")

3. 代替モデルの指定

# モデルを指定して起動
python api_server.py --no-mock --model "mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit"

# または別のモデルを使用
python api_server.py --no-mock --model "mlx-community/Llama-2-7B-4bit"

🚀 使用方法

APIサーバー起動(Deepseek R1)

# ターミナル1
cd phase1_skeleton
python api_server.py --no-mock

出力例:

Starting API server on 127.0.0.1:5000
Initializing brain with model: mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit
✓ Brain loaded: mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit

Pythonクライアント使用

from api_client import NullAIClient

client = NullAIClient()
client.init()

# Deepseek R1の推論を実行
result = client.process_prompt(
    "複雑な問題について、段階的に考察してください。"
)

# Glass Wallメトリクスを含む完全出力
print(result.output)

# エントロピー計測
print(f"Dissonance: {result.metrics['dissonance']:.2f}")
print(f"Load: {result.metrics['load']:.1f}%")
print(f"Energy: {result.metrics['energy']:.1f}%")

client.close()

cURL使用

# 初期化
curl -X POST http://localhost:5000/api/v1/init

# Deepseek R1で推論実行
curl -X POST http://localhost:5000/api/v1/inference \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "次のプロンプトについて深く考察してください:意識とは何か?"
  }'

📊 モデル仕様

モデル情報

モデル名:       Deepseek R1 Qwen 7B
パラメータ:     7 Billion
量子化:         4-bit (MLX)
形式:          mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit
推論エンジン:   MLX (Apple Silicon最適化)

パフォーマンス(推定)

メトリック 性能
推論レイテンシー 100-300ms (Apple Silicon M1/M2)
メモリ使用量 3-4GB VRAM
スループット 3-8 inferences/秒
トークン生成速度 5-15 tokens/秒

エントロピー特性

語彙サイズ:  約150,000トークン
最大エントロピー: log2(150000) ≈ 17.2ビット
推論エントロピー範囲: 0-10ビット (通常)
複雑問題時: 5-8ビット (高い不確実性)

🔬 エントロピー計測への最適化

なぜDeepseek R1か

  1. 推論チェーン

    • CoT (Chain-of-Thought) 推論
    • 複数の中間ステップ
    • 段階的な思考プロセス
    • → エントロピーが段階ごとに変化
  2. 確率分布の豊かさ

    • 複数の有効な推論パス
    • 不確実性が高い領域で高エントロピー
    • 確信度が高い領域で低エントロピー
    • → ディソナンス計測に最適
  3. 透明性

    • 推論パスが可視化できる
    • 各ステップでのロジットを抽出可能
    • モデルの思考プロセスを追跡可能
    • → Glass Wall メトリクスに最適

📈 ディソナンス計測の例

異なる複雑度での比較

from api_client import NullAIClient

client = NullAIClient()
client.init()

# 簡単な質問
result1 = client.process_prompt("2+2は?")
print(f"簡単: Dissonance={result1.metrics['dissonance']:.3f}")
# 出力例: Dissonance=0.15 (確実性高い、低エントロピー)

# 中程度の質問
result2 = client.process_prompt("なぜ人間は眠るのか?")
print(f"中程度: Dissonance={result2.metrics['dissonance']:.3f}")
# 出力例: Dissonance=0.45 (中程度の不確実性)

# 複雑な質問
result3 = client.process_prompt(
    "量子力学、相対性理論、意識の本質について、"
    "それぞれの関連性を深く考察してください。"
)
print(f"複雑: Dissonance={result3.metrics['dissonance']:.3f}")
# 出力例: Dissonance=0.72 (高い不確実性)

client.close()

🎯 推論の最適化

パラメータ設定

from api_client import NullAIClient

client = NullAIClient()
client.init()

# 推論深度を高める設定
result = client.process_prompt(
    prompt="複雑な哲学的問題について、複数の視点から分析してください。",
    # APIサーバー経由でこれらが制約される:
    # temperature: Load/Energy状態に応じて自動調整
    # max_tokens: Energy レベルに基づいて制限
)

print(f"エネルギー状態: {result.metrics['energy']:.1f}%")
print(f"システム負荷: {result.metrics['load']:.1f}%")
print(f"モデルの不確実性: {result.metrics['dissonance']:.2f}")

🔄 制約駆動型行動の観察

エネルギー状態による推論変化

from api_client import NullAIClient

client = NullAIClient()
client.init()

# 複数回の推論でエネルギー消費を観察
for i in range(5):
    result = client.process_prompt(
        f"深い推論問題 {i+1}: 意識の性質について"
    )

    # メトリクスを記録
    metrics = result.metrics
    print(f"\n推論 #{i+1}")
    print(f"  エネルギー: {metrics['energy']:.1f}%")
    print(f"  ロード: {metrics['load']:.1f}%")
    print(f"  ディソナンス: {metrics['dissonance']:.3f}")
    print(f"  トークン数: {metrics['tokens']}")

    # エネルギーが低下するにつれ、
    # トークン数が減少する(保守的な応答)ことを観察

🧪 テスト実行

モデル統合テスト

# 基本的なInferenceテスト
cd phase1_skeleton
python test_complete_system.py

# APIサーバーテスト
python test_api_server.py

期待される出力:

✓ PASS: API Health Check
✓ PASS: System Initialization
✓ PASS: Inference Endpoint
... (全テスト成功)

📊 パフォーマンス比較

Deepseek R1 vs Llama-3 8B

特性 Deepseek R1 7B Llama-3 8B
パラメータ 7B 8B
推論能力 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
VRAM要件 3-4GB 4-5GB
エントロピー範囲 0-10ビット 0-9ビット
CoT最適化 ✅ はい △ 部分的
推論速度 5-15 tokens/s 8-20 tokens/s

💡 ベストプラクティス

1. 推論チェーンの活用

# CoT推論のトリガー
result = client.process_prompt(
    "ステップバイステップで考えてください。"
    "段階1: 問題の分析\n"
    "段階2: 解決策の検討\n"
    "段階3: 結論"
)

2. エントロピー計測の活用

# 複雑な問題でエントロピーを測定
result = client.process_prompt("難しい問題")

# ディソナンスが0.6以上なら、モデルが不確実
if result.metrics['dissonance'] > 0.6:
    print("モデルが高度な不確実性を示しています")
    print("さらなる詳細情報が必要かもしれません")

3. 制約と推論のバランス

# エネルギーが低い場合、より短い回答を期待
status = client.get_status()
if status.energy < 30:
    print("⚠️ システムは低エネルギー状態です")
    print("より短い応答が期待されます")

🛠️ トラブルシューティング

メモリ不足エラー

Error: Not enough memory for model

解決策:

# モックモードで実行(テスト用)
python api_server.py

# または小さいモデルを使用
python api_server.py --no-mock --model "mlx-community/Mistral-7B-4bit"

モデルダウンロード失敗

Error: Failed to download model

解決策:

# HuggingFaceトークンで認証
huggingface-cli login

# その後、再度実行
python api_server.py --no-mock

推論遅延が大きい

期待: 100-300ms
実際: 1000ms以上

解決策:

  1. メモリ使用量を確認: top, Activity Monitor
  2. 他のプロセスを終了
  3. より小さいモデルを検討
  4. GPU/NPUの確認(Metal Performance Shaders有効か)

📚 参考資料

Deepseek R1 公式情報

MLX ドキュメント

NullAI統合ドキュメント


🎯 次のステップ

  1. モデルダウンロード

    python api_server.py --no-mock
    
  2. テスト実行

    python test_complete_system.py
    
  3. 推論実行

    python << 'EOF'
    from api_client import NullAIClient
    client = NullAIClient()
    client.init()
    result = client.process_prompt("深い思考が必要な問題")
    print(result.output)
    EOF
    
  4. メトリクス分析

    # ディソナンス、エネルギー、ロード監視
    metrics = result.metrics
    print(f"Dissonance: {metrics['dissonance']}")
    

✅ チェックリスト

  • Deepseek R1モデル選択の理解
  • モデルのダウンロード/インストール確認
  • APIサーバー起動テスト
  • 簡単な推論テスト
  • エントロピー計測の確認
  • 複雑な推論テスト
  • メトリクス分析

Deepseek R1 7Bはエントロピー計測とNullAIの意識シミュレーションに最適なモデルです。 🧠✨