Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
| 1 |
import os
|
| 2 |
-
os.environ['CUDA_VISIBLE_DEVICES'] = ''
|
| 3 |
import spaces
|
| 4 |
import sys
|
| 5 |
import time
|
|
@@ -304,23 +303,31 @@ class CharacterMaker:
|
|
| 304 |
self.chat_history = []
|
| 305 |
self.settings = None
|
| 306 |
self.model_loaded = threading.Event()
|
| 307 |
-
self.current_model = None
|
| 308 |
self.model_lock = threading.Lock()
|
| 309 |
self.use_chat_format = False
|
| 310 |
|
| 311 |
def load_model(self, model_type):
|
| 312 |
with self.model_lock:
|
|
|
|
| 313 |
model_path = os.path.join(MODEL_DIR, self.settings[f'DEFAULT_{model_type.upper()}_MODEL'])
|
| 314 |
n_gpu_layers = self.settings[f'{model_type.lower()}_n_gpu_layers']
|
| 315 |
|
| 316 |
-
#
|
| 317 |
-
if self.llama and self.current_model
|
| 318 |
-
|
| 319 |
-
|
| 320 |
-
|
| 321 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 322 |
|
| 323 |
-
#
|
| 324 |
if self.llama:
|
| 325 |
del self.llama
|
| 326 |
self.llama = None
|
|
@@ -328,15 +335,15 @@ class CharacterMaker:
|
|
| 328 |
self.model_loaded.clear()
|
| 329 |
|
| 330 |
try:
|
|
|
|
| 331 |
self.llama = LlamaAdapter(model_path, params, n_gpu_layers)
|
| 332 |
self.current_model = model_type
|
| 333 |
self.model_loaded.set()
|
| 334 |
-
print(f"{model_type}
|
| 335 |
except Exception as e:
|
| 336 |
-
print(f"{model_type} モデルのロード中にエラーが発生しました: {
|
| 337 |
self.model_loaded.set()
|
| 338 |
|
| 339 |
-
|
| 340 |
def generate_response(self, input_str):
|
| 341 |
self.load_model('CHAT')
|
| 342 |
if not self.model_loaded.wait(timeout=30) or not self.llama:
|
|
|
|
| 1 |
import os
|
|
|
|
| 2 |
import spaces
|
| 3 |
import sys
|
| 4 |
import time
|
|
|
|
| 303 |
self.chat_history = []
|
| 304 |
self.settings = None
|
| 305 |
self.model_loaded = threading.Event()
|
| 306 |
+
self.current_model = None # 現在ロードされているモデルのタイプを記録
|
| 307 |
self.model_lock = threading.Lock()
|
| 308 |
self.use_chat_format = False
|
| 309 |
|
| 310 |
def load_model(self, model_type):
|
| 311 |
with self.model_lock:
|
| 312 |
+
# 新しいモデルの設定を取得
|
| 313 |
model_path = os.path.join(MODEL_DIR, self.settings[f'DEFAULT_{model_type.upper()}_MODEL'])
|
| 314 |
n_gpu_layers = self.settings[f'{model_type.lower()}_n_gpu_layers']
|
| 315 |
|
| 316 |
+
# 現在のモデルが既にロードされているか、同じ設定であるかチェック
|
| 317 |
+
if (self.llama and self.current_model != model_type and
|
| 318 |
+
self.llama.model_path == model_path and
|
| 319 |
+
self.llama.n_gpu_layers == n_gpu_layers):
|
| 320 |
+
print(f"同じ設定のため {self.current_model} から {model_type} へのモデルタイプ変更を行いますが、再ロードはしません。")
|
| 321 |
+
self.current_model = model_type
|
| 322 |
+
return # 設定が同じ場合は再ロードをスキップ
|
| 323 |
+
|
| 324 |
+
if (self.llama and
|
| 325 |
+
self.llama.model_path == model_path and
|
| 326 |
+
self.llama.n_gpu_layers == n_gpu_layers):
|
| 327 |
+
print(f"{model_type} モデルは既に同じ設定でロードされています。")
|
| 328 |
+
return # 設定が同じ場合は再ロードをスキップ
|
| 329 |
|
| 330 |
+
# モデルの初期化
|
| 331 |
if self.llama:
|
| 332 |
del self.llama
|
| 333 |
self.llama = None
|
|
|
|
| 335 |
self.model_loaded.clear()
|
| 336 |
|
| 337 |
try:
|
| 338 |
+
# 新しいモデルをロード
|
| 339 |
self.llama = LlamaAdapter(model_path, params, n_gpu_layers)
|
| 340 |
self.current_model = model_type
|
| 341 |
self.model_loaded.set()
|
| 342 |
+
print(f"{model_type} モデルをロードしました。モデルパス: {model_path}、GPUレイヤー数: {n_gpu_layers}")
|
| 343 |
except Exception as e:
|
| 344 |
+
print(f"{model_type} モデルのロード中にエラーが発生しました: {e}")
|
| 345 |
self.model_loaded.set()
|
| 346 |
|
|
|
|
| 347 |
def generate_response(self, input_str):
|
| 348 |
self.load_model('CHAT')
|
| 349 |
if not self.model_loaded.wait(timeout=30) or not self.llama:
|