Spaces:
Running
on
Zero
Running
on
Zero
tori29umai
commited on
Commit
•
924f790
1
Parent(s):
99e9982
Update app.py
Browse files
app.py
CHANGED
@@ -303,33 +303,37 @@ class CharacterMaker:
|
|
303 |
self.model_lock = threading.Lock()
|
304 |
self.use_chat_format = False
|
305 |
self.last_loaded_settings = None
|
|
|
|
|
|
|
|
|
306 |
|
307 |
def load_model(self, model_type):
|
308 |
with self.model_lock:
|
309 |
-
|
310 |
-
model_path = os.path.join(MODEL_DIR, self.settings[f'DEFAULT_{model_type.upper()}_MODEL'])
|
311 |
-
n_gpu_layers = self.settings[f'{model_type.lower()}_n_gpu_layers']
|
312 |
-
|
313 |
-
# 現在の設定を取得
|
314 |
-
current_settings = self.get_current_settings(model_type)
|
315 |
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
print(f"GENモデルとCHATモデルの設定が同じで、既にロードされています。モデルの切り替えはスキップします。")
|
320 |
return
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
print(f"{model_type}モデルは既にロードされており、設定も変更されていません。")
|
326 |
return
|
327 |
-
|
328 |
-
print(f"{model_type}モデルをロードします。")
|
329 |
|
330 |
-
self.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
|
332 |
-
def reload_model(self, model_type,
|
333 |
if self.llama:
|
334 |
del self.llama
|
335 |
self.llama = None
|
@@ -337,13 +341,15 @@ class CharacterMaker:
|
|
337 |
self.model_loaded.clear()
|
338 |
|
339 |
try:
|
340 |
-
|
|
|
341 |
self.current_model = model_type
|
342 |
self.model_loaded.set()
|
343 |
-
|
344 |
-
print(f"{model_type}モデルをロードしました。モデルパス: {model_path}、GPUレイヤー数: {n_gpu_layers}")
|
345 |
except Exception as e:
|
346 |
print(f"{model_type}モデルのロード中にエラーが発生しました: {e}")
|
|
|
|
|
347 |
self.model_loaded.set()
|
348 |
|
349 |
def get_current_settings(self, model_type):
|
@@ -358,9 +364,7 @@ class CharacterMaker:
|
|
358 |
}
|
359 |
|
360 |
def are_models_identical(self):
|
361 |
-
|
362 |
-
gen_settings = self.get_current_settings('GEN')
|
363 |
-
return chat_settings == gen_settings
|
364 |
|
365 |
def generate_response(self, input_str):
|
366 |
self.load_model('CHAT')
|
@@ -610,9 +614,17 @@ def build_model_settings(config, section, output):
|
|
610 |
|
611 |
def apply_settings():
|
612 |
global temp_settings
|
|
|
|
|
613 |
for section, settings in temp_settings.items():
|
614 |
for key, value in settings.items():
|
615 |
-
ConfigManager.
|
|
|
|
|
|
|
|
|
|
|
|
|
616 |
|
617 |
# iniファイルを再読み込み
|
618 |
new_config = ConfigManager.load_settings(DEFAULT_INI_FILE)
|
@@ -640,14 +652,15 @@ def apply_settings():
|
|
640 |
int(new_config['GenerateParameters'].get('n_ctx', '10000'))
|
641 |
)
|
642 |
|
643 |
-
#
|
644 |
-
character_maker.
|
645 |
-
character_maker.
|
646 |
|
647 |
# temp_settings をクリア
|
648 |
temp_settings.clear()
|
649 |
|
650 |
-
return "設定をini
|
|
|
651 |
# Gradioインターフェース
|
652 |
def build_gradio_interface():
|
653 |
global temp_settings
|
|
|
303 |
self.model_lock = threading.Lock()
|
304 |
self.use_chat_format = False
|
305 |
self.last_loaded_settings = None
|
306 |
+
self.chat_model_settings = None
|
307 |
+
self.gen_model_settings = None
|
308 |
+
|
309 |
+
|
310 |
|
311 |
def load_model(self, model_type):
|
312 |
with self.model_lock:
|
313 |
+
new_settings = self.get_current_settings(model_type)
|
|
|
|
|
|
|
|
|
|
|
314 |
|
315 |
+
if model_type == 'CHAT':
|
316 |
+
if self.chat_model_settings == new_settings:
|
317 |
+
print("CHATモデルの設定に変更がないため、リロードをスキップします。")
|
|
|
318 |
return
|
319 |
+
self.chat_model_settings = new_settings
|
320 |
+
else: # GEN
|
321 |
+
if self.gen_model_settings == new_settings:
|
322 |
+
print("GENモデルの設定に変更がないため、リロードをスキップします。")
|
|
|
323 |
return
|
324 |
+
self.gen_model_settings = new_settings
|
|
|
325 |
|
326 |
+
if self.are_models_identical():
|
327 |
+
if self.llama and self.current_model == 'SHARED':
|
328 |
+
print("CHATモデルとGENモデルの設定が同じで、既にロードされています。リロードをスキップします。")
|
329 |
+
return
|
330 |
+
print("CHATモデルとGENモデルの設定が同じです。共有モデルとしてロードします。")
|
331 |
+
self.reload_model('SHARED', new_settings)
|
332 |
+
else:
|
333 |
+
print(f"{model_type}モデルをロードします。")
|
334 |
+
self.reload_model(model_type, new_settings)
|
335 |
|
336 |
+
def reload_model(self, model_type, settings):
|
337 |
if self.llama:
|
338 |
del self.llama
|
339 |
self.llama = None
|
|
|
341 |
self.model_loaded.clear()
|
342 |
|
343 |
try:
|
344 |
+
model_path = os.path.join(MODEL_DIR, settings['model_path'])
|
345 |
+
self.llama = LlamaAdapter(model_path, params, settings['n_gpu_layers'])
|
346 |
self.current_model = model_type
|
347 |
self.model_loaded.set()
|
348 |
+
print(f"{model_type}モデルをロードしました。モデルパス: {model_path}、GPUレイヤー数: {settings['n_gpu_layers']}")
|
|
|
349 |
except Exception as e:
|
350 |
print(f"{model_type}モデルのロード中にエラーが発生しました: {e}")
|
351 |
+
import traceback
|
352 |
+
traceback.print_exc()
|
353 |
self.model_loaded.set()
|
354 |
|
355 |
def get_current_settings(self, model_type):
|
|
|
364 |
}
|
365 |
|
366 |
def are_models_identical(self):
|
367 |
+
return self.chat_model_settings == self.gen_model_settings
|
|
|
|
|
368 |
|
369 |
def generate_response(self, input_str):
|
370 |
self.load_model('CHAT')
|
|
|
614 |
|
615 |
def apply_settings():
|
616 |
global temp_settings
|
617 |
+
settings_changed = False
|
618 |
+
|
619 |
for section, settings in temp_settings.items():
|
620 |
for key, value in settings.items():
|
621 |
+
old_value = ConfigManager.load_settings(DEFAULT_INI_FILE)[section].get(key)
|
622 |
+
if str(value) != str(old_value):
|
623 |
+
ConfigManager.update_setting(section, key, str(value), DEFAULT_INI_FILE)
|
624 |
+
settings_changed = True
|
625 |
+
|
626 |
+
if not settings_changed:
|
627 |
+
return "設定に変更はありませんでした。"
|
628 |
|
629 |
# iniファイルを再読み込み
|
630 |
new_config = ConfigManager.load_settings(DEFAULT_INI_FILE)
|
|
|
652 |
int(new_config['GenerateParameters'].get('n_ctx', '10000'))
|
653 |
)
|
654 |
|
655 |
+
# モデルのリロードをトリガー(実際のリロードは次の操作時に行われる)
|
656 |
+
character_maker.chat_model_settings = None
|
657 |
+
character_maker.gen_model_settings = None
|
658 |
|
659 |
# temp_settings をクリア
|
660 |
temp_settings.clear()
|
661 |
|
662 |
+
return "設定をiniファイルに保存し、アプリケーションに反映しました。次回の操作時に新しい設定が適用されます。"
|
663 |
+
|
664 |
# Gradioインターフェース
|
665 |
def build_gradio_interface():
|
666 |
global temp_settings
|