Spaces:
Running
on
Zero
Running
on
Zero
tori29umai
commited on
Commit
•
c8261c5
1
Parent(s):
33146cf
Update app.py
Browse files
app.py
CHANGED
@@ -303,9 +303,10 @@ class CharacterMaker:
|
|
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:
|
@@ -313,36 +314,46 @@ class CharacterMaker:
|
|
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 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
self.
|
327 |
-
print(f"{model_type} モデルは既に同じ設定でロードされています。")
|
328 |
-
return # 設定が同じ場合は再ロードをスキップ
|
329 |
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
|
335 |
-
|
336 |
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
346 |
|
347 |
|
348 |
def generate_response(self, input_str):
|
@@ -621,14 +632,14 @@ def apply_settings():
|
|
621 |
int(new_config['GenerateParameters'].get('n_ctx', '10000'))
|
622 |
)
|
623 |
|
624 |
-
#
|
625 |
character_maker.current_model = None
|
|
|
626 |
|
627 |
# temp_settings をクリア
|
628 |
temp_settings.clear()
|
629 |
|
630 |
return "設定をiniファイルに保存し、アプリケーションに反映しました。次回の操作時に新しいモデルがロードされ���す。"
|
631 |
-
|
632 |
# Gradioインターフェース
|
633 |
def build_gradio_interface():
|
634 |
global temp_settings
|
|
|
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 |
+
self.last_loaded_settings = None
|
310 |
|
311 |
def load_model(self, model_type):
|
312 |
with self.model_lock:
|
|
|
314 |
model_path = os.path.join(MODEL_DIR, self.settings[f'DEFAULT_{model_type.upper()}_MODEL'])
|
315 |
n_gpu_layers = self.settings[f'{model_type.lower()}_n_gpu_layers']
|
316 |
|
317 |
+
# 設定が変更されたかどうかをチェック
|
318 |
+
current_settings = self.get_current_settings(model_type)
|
319 |
+
if self.last_loaded_settings != current_settings:
|
320 |
+
print(f"設定が変更されたため、{model_type}モデルを再ロードします。")
|
321 |
+
self.reload_model(model_type, model_path, n_gpu_layers)
|
322 |
+
elif self.llama and self.current_model == model_type:
|
323 |
+
print(f"{model_type}モデルは既にロードされており、設定も変更されていません。")
|
324 |
+
return
|
325 |
+
else:
|
326 |
+
print(f"{model_type}モデルをロードします。")
|
327 |
+
self.reload_model(model_type, model_path, n_gpu_layers)
|
|
|
|
|
328 |
|
329 |
+
def reload_model(self, model_type, model_path, n_gpu_layers):
|
330 |
+
if self.llama:
|
331 |
+
del self.llama
|
332 |
+
self.llama = None
|
333 |
|
334 |
+
self.model_loaded.clear()
|
335 |
|
336 |
+
try:
|
337 |
+
self.llama = LlamaAdapter(model_path, params, n_gpu_layers)
|
338 |
+
self.current_model = model_type
|
339 |
+
self.model_loaded.set()
|
340 |
+
self.last_loaded_settings = self.get_current_settings(model_type)
|
341 |
+
print(f"{model_type}モデルをロードしました。モデルパス: {model_path}、GPUレイヤー数: {n_gpu_layers}")
|
342 |
+
except Exception as e:
|
343 |
+
print(f"{model_type}モデルのロード中にエラーが発生しました: {e}")
|
344 |
+
self.model_loaded.set()
|
345 |
+
|
346 |
+
def get_current_settings(self, model_type):
|
347 |
+
# 現在の設定を取得
|
348 |
+
return {
|
349 |
+
'model_path': self.settings[f'DEFAULT_{model_type.upper()}_MODEL'],
|
350 |
+
'n_gpu_layers': self.settings[f'{model_type.lower()}_n_gpu_layers'],
|
351 |
+
'temperature': self.settings[f'{model_type.lower()}_temperature'],
|
352 |
+
'top_p': self.settings[f'{model_type.lower()}_top_p'],
|
353 |
+
'top_k': self.settings[f'{model_type.lower()}_top_k'],
|
354 |
+
'rep_pen': self.settings[f'{model_type.lower()}_rep_pen'],
|
355 |
+
'n_ctx': self.settings[f'{model_type.lower()}_n_ctx']
|
356 |
+
}
|
357 |
|
358 |
|
359 |
def generate_response(self, input_str):
|
|
|
632 |
int(new_config['GenerateParameters'].get('n_ctx', '10000'))
|
633 |
)
|
634 |
|
635 |
+
# モデルを再ロードするためにcurrent_modelをリセット
|
636 |
character_maker.current_model = None
|
637 |
+
character_maker.last_loaded_settings = None
|
638 |
|
639 |
# temp_settings をクリア
|
640 |
temp_settings.clear()
|
641 |
|
642 |
return "設定をiniファイルに保存し、アプリケーションに反映しました。次回の操作時に新しいモデルがロードされ���す。"
|
|
|
643 |
# Gradioインターフェース
|
644 |
def build_gradio_interface():
|
645 |
global temp_settings
|