YucYux commited on
Commit
f6ba9f2
·
1 Parent(s): 6cadff6

Fixed an error during asynchronous model loading

Browse files
Files changed (1) hide show
  1. app.py +29 -8
app.py CHANGED
@@ -165,17 +165,38 @@ def handle_model_selection_change(selected_model_name_ui):
165
  # 尝试加载模型
166
  status_msg = _load_model_and_tokenizer_core(actual_path, selected_model_name_ui)
167
 
168
- # 改进的错误检查逻辑
169
  model_load_failed = False
170
 
171
- # 检查是否是明确的错误消息
172
- if "Error loading model" in status_msg:
173
- model_load_failed = True
174
- # 检查模型是否为None,但排除"已经加载"的情况
175
- elif MODEL is None:
176
- if "is already loaded" not in status_msg:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  model_load_failed = True
178
- status_msg = f"Failed to properly load model '{selected_model_name_ui}'. {status_msg}"
179
 
180
  if model_load_failed:
181
  # 如果是 MixCoT 模型但加载失败,则关闭 thinking mode
 
165
  # 尝试加载模型
166
  status_msg = _load_model_and_tokenizer_core(actual_path, selected_model_name_ui)
167
 
168
+ # 修复后的错误检查逻辑:只依赖状态消息来判断是否成功
169
  model_load_failed = False
170
 
171
+ # 检查状态消息中是否包含明确的错误指示
172
+ error_indicators = [
173
+ "Error loading model",
174
+ "Failed to",
175
+ "Cannot load",
176
+ "not defined",
177
+ "not yet available"
178
+ ]
179
+
180
+ # 成功指示(任一存在则认为成功)
181
+ success_indicators = [
182
+ "loaded to", # "Model 'XXX' loaded to cuda"
183
+ "is already loaded", # "Model 'XXX' is already loaded"
184
+ "loaded.", # "Tokenizer loaded."
185
+ ]
186
+
187
+ # 检查是否有错误指示
188
+ for error_indicator in error_indicators:
189
+ if error_indicator in status_msg:
190
+ model_load_failed = True
191
+ break
192
+
193
+ # 如果没有错误指示,检查是否有成功指示
194
+ if not model_load_failed:
195
+ has_success_indicator = any(success_indicator in status_msg for success_indicator in success_indicators)
196
+ # 如果既没有错误指示也没有成功指示,那就可能有问题
197
+ if not has_success_indicator:
198
  model_load_failed = True
199
+ status_msg = f"Uncertain model loading status for '{selected_model_name_ui}'. {status_msg}"
200
 
201
  if model_load_failed:
202
  # 如果是 MixCoT 模型但加载失败,则关闭 thinking mode