File size: 5,638 Bytes
7d5d983
 
 
 
 
 
7f3121e
7d5d983
 
 
 
0447f30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2bdf0a5
 
 
 
 
 
0447f30
 
 
2bdf0a5
 
 
 
 
 
 
 
 
 
 
 
 
0447f30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7f3121e
0447f30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2bdf0a5
 
 
0447f30
 
2bdf0a5
0447f30
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
---
title: LLMView Multi-Model
emoji: 🌳
colorFrom: yellow
colorTo: yellow
sdk: gradio
sdk_version: "4.43.0"
app_file: app.py
pinned: false
---

# LLMView Multi-Model - Hugging Face Spaces版

複数のAIモデルに対応した単語ツリー構築ツール(Gradio版)

## 特徴

-**マルチモデル対応**: Transformersモデル(Llama、Qwen、Mistral、Gemma等)に対応
-**Hugging Face Spaces対応**: GradioでHFSにデプロイ可能
-**GPU対応**: ZeroGPUを使用してGPUリソースを要求
-**完全なトークン確率**: ローカルモデルで完全なトークン確率情報を取得

## Hugging Face Spacesでのデプロイ

### 1. リポジトリの作成

1. Hugging Face Spacesで新しいSpaceを作成
2. SDK: **Gradio** を選択
3. Hardware: **GPU** を選択(推奨)

### 2. 環境変数の設定

Spaceの設定で以下の環境変数を設定:

```bash
# モデルタイプ(transformers推奨)
MODEL_TYPE=transformers

# 使用するモデル(Hugging FaceリポジトリID)
HF_MODEL_REPO=meta-llama/Llama-3.2-3B-Instruct

# HF_TOKEN(gatedモデルの場合のみ必要)
# 以下のモデルはHF_TOKENが必要です:
# - meta-llama/* (Llama 3.2等) - Metaの承認とHF_TOKENが必要
# - elyza/ELYZA-japanese-Llama-2-7b-instruct - Llama-2ベースのため必要
# - bigcode/starcoder2-7b - gatedモデルの可能性あり
# その他のモデル(Qwen、Mistral、Gemma、Phi-3等)は不要
HF_TOKEN=your_hf_token
```

**HF_TOKENが必要なモデル**:
- ⚠️ **meta-llama/Llama-3.2-3B-Instruct**: Metaの承認とHF_TOKENが必要(gatedモデル)
- ⚠️ **elyza/ELYZA-japanese-Llama-2-7b-instruct**: Llama-2ベースのため必要

**HF_TOKENが不要なモデル**:
- ✅ **Qwen/Qwen2.5-3B-Instruct**: パブリックモデル
- ✅ **mistralai/Mistral-7B-Instruct-v0.2**: パブリックモデル
- ✅ **google/gemma-2b-it**, **google/gemma-7b-it**: パブリックモデル
- ✅ **microsoft/Phi-3-mini-4k-instruct**: パブリックモデル
- ✅ **TinyLlama/TinyLlama-1.1B-Chat-v1.0**: パブリックモデル
- ✅ **stabilityai/japanese-stablelm-base-gamma-7b**: パブリックモデル
- ✅ **rinna/weblab-10b-instruction-sft**: パブリックモデル

### 3. モデルの切り替え

環境変数`HF_MODEL_REPO`を変更するだけで、他のモデルに切り替え可能:

```bash
# Qwen 2.5
HF_MODEL_REPO=Qwen/Qwen2.5-3B-Instruct

# Mistral 7B
HF_MODEL_REPO=mistralai/Mistral-7B-Instruct-v0.2

# Gemma 2B
HF_MODEL_REPO=google/gemma-2b-it
```

## 使用方法

1. **プロンプトを入力**: 質問や指示を入力
2. **ルートテキスト(オプション)**: 既存のテキストの続きを生成する場合に指定
3. **パラメータ調整**:
   - `top_k`: 取得する候補数(1-20)
   - `max_depth`: 最大探索深さ(1-50)
4. **「単語ツリーを構築」ボタンをクリック**

## ファイル構成

```
LLMView_multi_model/
├── app.py                    # Gradioアプリ(メイン)
├── requirements.txt          # 依存パッケージ
├── README.md                 # このファイル
├── MULTI_MODEL_DESIGN.md     # 設計ドキュメント
└── package/
    ├── __init__.py
    ├── adapter.py            # ModelAdapter(マルチモデル対応)
    ├── config.py             # 設定管理
    ├── word_processor.py     # 単語処理ロジック
    ├── word_counter.py       # 単語数カウント
    └── ai/
        ├── __init__.py       # ファクトリー関数
        ├── base.py           # BaseAIインターフェース
        ├── transformers_ai.py # TransformersAI(ローカルモデル)
        ├── openai_ai.py      # OpenAIAI(オプション)
        ├── anthropic_ai.py   # AnthropicAI(オプション)
        └── google_ai.py      # GoogleAI(オプション)
```

## 依存パッケージ

主要な依存パッケージ:

- `gradio>=4.43.0`: Web UI(最新版でセキュリティ脆弱性を修正)
- `spaces`: Hugging Face Spaces用
- `transformers>=4.30.0`: Transformersモデル
- `torch>=2.0.0`: PyTorch
- `fugashi>=1.3.0`: 形態素解析(日本語)
- `sudachipy>=0.6.7`: Sudachi形態素解析(オプション)

詳細は`requirements.txt`を参照してください。

## 注意事項

1. **GPU推奨**: モデルのロードと推論にはGPUが推奨されます
2. **モデルサイズ**: 大きなモデル(7B以上)はメモリとロード時間がかかります
3. **初回起動**: モデルのダウンロードに時間がかかる場合があります
4. **API非推奨**: Hugging Face Spacesでは、Transformersモデル(ローカルロード)を使用してください

## トラブルシューティング

### モデルがロードされない

- **gatedモデルの場合**: `HF_TOKEN`が正しく設定されているか確認
  - `meta-llama/*`モデルはMetaの承認とHF_TOKENが必要
  - Hugging Faceのモデルページで承認を申請してください
- モデルリポジトリIDが正しいか確認
- Spaceのログを確認
- パブリックモデル(Qwen、Mistral、Gemma等)はHF_TOKEN不要

### GPUが利用できない

- SpaceのHardware設定でGPUが有効になっているか確認
- `spaces`パッケージがインストールされているか確認

### 形態素解析エラー

- `fugashi`がインストールされているか確認
- HFSでは通常、デフォルト設定で動作します

## ライセンス

MIT License