Spaces:
Running
on
Zero
Running
on
Zero
tori29umai
commited on
Commit
•
da6a6be
1
Parent(s):
d013ae4
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:
|