sirochild commited on
Commit
a8eb81f
·
verified ·
1 Parent(s): 5086caa

Upload 9 files

Browse files
Files changed (3) hide show
  1. README.md +89 -14
  2. app.py +16 -1
  3. generate_dialogue_with_swallow.py +2 -2
README.md CHANGED
@@ -1,14 +1,89 @@
1
- ---
2
- title: Mari
3
- emoji: 😻
4
- colorFrom: pink
5
- colorTo: green
6
- sdk: gradio
7
- sdk_version: 5.38.0
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- short_description: mari
12
- ---
13
-
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 麻理チャット - Swallow-MX-8x7b-NVE GGUF版
2
+
3
+ このアプリケーションは、東京工業大学のSwallow-MX-8x7b-NVEモデルの量子化GGUF版を使用した対話型チャットボットです。「麻理」という名のAIキャラクターとの会話を楽しむことができます。
4
+
5
+ ## 特徴
6
+
7
+ - 東京工業大学の日本語大規模言語モデル「Swallow-MX-8x7b-NVE-v0.1」の量子化版(Q4_K_M)を使用
8
+ - llama-cpp-pythonによる高速・省メモリな推論
9
+ - 複数のシーン(水族館、カフェ、神社など)に対応した背景と会話
10
+ - 好感度システムによる関係性の変化
11
+ - 感情分析による応答の調整
12
+
13
+ ## セットアップ方法
14
+
15
+ ### Hugging Face Spacesでの実行
16
+
17
+ 1. このリポジトリをHugging Face Spacesにインポートします
18
+ 2. Spacesの設定で以下を選択します:
19
+ - SDK: Gradio
20
+ - Python: 3.10
21
+ - CPU: 必要に応じて(最低でも4GB RAM推奨)
22
+ - Hardware: CPU(GPUは不要です)
23
+ 3. 必要に応じて環境変数を設定します:
24
+ - `GROQ_API_KEY`: Groq APIキー(オプション、シーン遷移時の指示生成に使用)
25
+
26
+ #### デプロイに関する注意事項
27
+
28
+ - **初回のデプロイ時間**: モデルのダウンロード(約4GB)に時間がかかります。辛抱強く待ってください。
29
+ - **ビルドエラーが発生した場合**: Spacesの「Settings」タブで「Factory Reboot」を実行してみてください。
30
+ - **メモリ不足エラー**: CPUのメモリを増やす(4GB以上推奨)か、「Restart Space」を試してください。
31
+ - **タイムアウトエラー**: ビルドプロセスが長すぎる場合は、再度デプロイを試みてください。
32
+
33
+ #### トラブルシューティング
34
+
35
+ 1. **モデルのロードに失敗する場合**:
36
+ - Spacesの「Settings」タブで「Restart Space」を実行してください。
37
+ - それでも解決しない場合は「Factory Reboot」を試してください。
38
+
39
+ 2. **アプリが起動しない場合**:
40
+ - ログを確認して、エラーの原因を特定してください。
41
+ - メモリ不足の場合は、CPUのメモリ割り当てを増やしてください。
42
+
43
+ 3. **応答生成が遅い場合**:
44
+ - これは正常です。量子化モデルをCPUで実行しているため、応答生成には時間がかかります。
45
+
46
+ ### ローカル環境での実行
47
+
48
+ 1. リポジトリをクローンします
49
+ 2. 依存関係をインストールします:
50
+ ```
51
+ pip install -r requirements.txt
52
+ ```
53
+ 3. `.env`ファイルを作成し、必要な環境変数を設定します:
54
+ ```
55
+ GROQ_API_KEY=your_groq_api_key_here
56
+ ```
57
+ 4. アプリケーションを実行します:
58
+ ```
59
+ python app.py
60
+ ```
61
+
62
+ ## 使用方法
63
+
64
+ 1. テキスト入力欄にメッセージを入力します
65
+ 2. 麻理からの応答が表示されます
66
+ 3. 会話を続けることで好感度が変化します
67
+ 4. 特定の場所について話し、行くことに同意すると、シーンが変化します
68
+
69
+ ## シーン一覧
70
+
71
+ - `default`: デフォルトの部屋
72
+ - `room_night`: 夜の部屋
73
+ - `beach_sunset`: 夕暮れのビーチ
74
+ - `festival_night`: 夜のお祭り
75
+ - `shrine_day`: 昼間の神社
76
+ - `cafe_afternoon`: 午後のカフェ
77
+ - `aquarium_night`: 夜の水族館
78
+
79
+ ## モデル情報
80
+
81
+ このアプリケーションは、東京工業大学が開発した「Swallow-MX-8x7b-NVE-v0.1」モデルの量子化GGUF版を使用しています。
82
+ - 元のモデル: [tokyotech-llm/Swallow-MX-8x7b-NVE-v0.1](https://huggingface.co/tokyotech-llm/Swallow-MX-8x7b-NVE-v0.1)
83
+ - 量子化GGUF版: [mmnga/tokyotech-llm-Swallow-MX-8x7b-NVE-v0.1-gguf](https://huggingface.co/mmnga/tokyotech-llm-Swallow-MX-8x7b-NVE-v0.1-gguf)
84
+
85
+ ## 注意事項
86
+
87
+ - GGUF形式の量子化モデル(Q4_K_M)を使用することで、メモリ使用量を大幅に削減しています
88
+ - llama-cpp-pythonを使用することで、GPUメモリの効率的な使用が可能になっています
89
+ - Hugging Face Spaces上でも快適に動作するように最適化されています
app.py CHANGED
@@ -5,7 +5,17 @@ import json
5
  from dotenv import load_dotenv
6
  from transformers import pipeline
7
  import re
8
- from llama_cpp import Llama
 
 
 
 
 
 
 
 
 
 
9
  from huggingface_hub import hf_hub_download
10
  from generate_dialogue_with_swallow import generate_dialogue_with_swallow
11
 
@@ -36,6 +46,11 @@ try:
36
 
37
  # 最も安全な設定でモデルをロード(CPUのみ)
38
  print("CPUモードでモデルをロードします")
 
 
 
 
 
39
  try:
40
  swallow_model = Llama(
41
  model_path=model_path,
 
5
  from dotenv import load_dotenv
6
  from transformers import pipeline
7
  import re
8
+ # llama-cpp-pythonのインポート(ビルド済みパッケージに対応)
9
+ try:
10
+ from llama_cpp import Llama
11
+ except ImportError:
12
+ try:
13
+ # 別の可能性のあるインポート名を試す
14
+ from llama_cpp_python import Llama
15
+ except ImportError:
16
+ # モジュールが見つからない場合のフォールバック
17
+ print("警告: llama-cpp-pythonモジュールが見つかりません。")
18
+ Llama = None
19
  from huggingface_hub import hf_hub_download
20
  from generate_dialogue_with_swallow import generate_dialogue_with_swallow
21
 
 
46
 
47
  # 最も安全な設定でモデルをロード(CPUのみ)
48
  print("CPUモードでモデルをロードします")
49
+
50
+ # Llamaクラスが利用可能かチェック
51
+ if Llama is None:
52
+ raise ImportError("llama-cpp-pythonモジュールが見つかりません")
53
+
54
  try:
55
  swallow_model = Llama(
56
  model_path=model_path,
generate_dialogue_with_swallow.py CHANGED
@@ -14,8 +14,8 @@ def generate_dialogue_with_swallow(history, message, affection, stage_name, scen
14
  scene_params: シーンパラメータの辞書
15
  instruction: 特別な指示(シーン遷移時など)
16
  use_simple_prompt: 簡潔なプロンプトを使用するかどうか
17
- swallow_model: Swallowモデル(llama-cpp)のインスタンス
18
- tokenizer: 未使用(llama-cppでは不要)
19
  SYSTEM_PROMPT_MARI: システムプロンプト
20
 
21
  Returns:
 
14
  scene_params: シーンパラメータの辞書
15
  instruction: 特別な指示(シーン遷移時など)
16
  use_simple_prompt: 簡潔なプロンプトを使用するかどうか
17
+ swallow_model: Swallowモデル(llama-cpp-python)のインスタンス
18
+ tokenizer: 未使用(llama-cpp-pythonでは不要)
19
  SYSTEM_PROMPT_MARI: システムプロンプト
20
 
21
  Returns: