tori29umai commited on
Commit
924f790
1 Parent(s): 99e9982

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -30
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
- # GENモデルとCHATモデルの設定が同じかチェック
317
- if self.are_models_identical():
318
- if self.llama and self.last_loaded_settings == current_settings:
319
- print(f"GENモデルとCHATモデルの設定が同じで、既にロードされています。モデルの切り替えはスキップします。")
320
  return
321
- else:
322
- print(f"GENモデルとCHATモデルの設定が同じですが、まだロードされていないかパラメータが変更されました。モデルをロードします。")
323
- else:
324
- if self.llama and self.current_model == model_type and self.last_loaded_settings == current_settings:
325
- print(f"{model_type}モデルは既にロードされており、設定も変更されていません。")
326
  return
327
- else:
328
- print(f"{model_type}モデルをロードします。")
329
 
330
- self.reload_model(model_type, model_path, n_gpu_layers)
 
 
 
 
 
 
 
 
331
 
332
- def reload_model(self, model_type, model_path, n_gpu_layers):
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
- self.llama = LlamaAdapter(model_path, params, n_gpu_layers)
 
341
  self.current_model = model_type
342
  self.model_loaded.set()
343
- self.last_loaded_settings = self.get_current_settings(model_type)
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
- chat_settings = self.get_current_settings('CHAT')
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.update_setting(section, key, str(value), DEFAULT_INI_FILE)
 
 
 
 
 
 
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
- # モデルを再ロードするためにcurrent_modelをリセット
644
- character_maker.current_model = None
645
- character_maker.last_loaded_settings = None
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