matt1847 Claude Opus 4.5 commited on
Commit
442fa8c
·
1 Parent(s): c7734b0

修正: モデルロード時のエラーハンドリング追加

Browse files

- メモリ不足時に分かりやすいエラーメッセージを表示
- 大きなモデル選択時に小さいモデルを推奨

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Files changed (1) hide show
  1. src/ui/gradio/app.py +37 -20
src/ui/gradio/app.py CHANGED
@@ -48,33 +48,50 @@ def generate_debris(model_key: str) -> Tuple[str, str, str]:
48
  model_key: モデルキー
49
 
50
  Returns:
51
- (signal_image_base64, debris_text, seed_text)
52
  """
53
- # モデルとジェネレータの取得
54
- model = _get_model(model_key)
55
- generator = DebrisGenerator(model)
56
- visualizer = SignalVisualizer()
57
 
58
- # デブリ生成
59
- result = generator.generate()
 
 
 
60
 
61
- # シグナル画像を生成
62
- signal_img_base64 = visualizer.generate_image(
63
- result.noise, result.corrupted_logits
64
- )
65
 
66
- # Base64からPIL Imageに変換(Gradio用)
67
- import PIL.Image
68
- img_data = base64.b64decode(signal_img_base64)
69
- img = PIL.Image.open(BytesIO(img_data))
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
- # デブリテキスト
72
- debris_text = " ".join(result.debris)
 
 
 
 
 
 
 
73
 
74
- # シード情報
75
- seed_text = str(result.seed)
76
 
77
- return img, debris_text, seed_text
78
 
79
 
80
  def create_app() -> gr.Blocks:
 
48
  model_key: モデルキー
49
 
50
  Returns:
51
+ (signal_image, debris_text, seed_text)
52
  """
53
+ import PIL.Image
 
 
 
54
 
55
+ try:
56
+ # モデルとジェネレータの取得
57
+ model = _get_model(model_key)
58
+ generator = DebrisGenerator(model)
59
+ visualizer = SignalVisualizer()
60
 
61
+ # デブリ生成
62
+ result = generator.generate()
 
 
63
 
64
+ # シグナル画像を生成
65
+ signal_img_base64 = visualizer.generate_image(
66
+ result.noise, result.corrupted_logits
67
+ )
68
+
69
+ # Base64からPIL Imageに変換(Gradio用)
70
+ img_data = base64.b64decode(signal_img_base64)
71
+ img = PIL.Image.open(BytesIO(img_data))
72
+
73
+ # デブリテキスト
74
+ debris_text = " ".join(result.debris)
75
+
76
+ # シード情報
77
+ seed_text = str(result.seed)
78
+
79
+ return img, debris_text, seed_text
80
 
81
+ except Exception as e:
82
+ # エラー時はプレースホルダーを返す
83
+ error_msg = str(e)
84
+ if "out of memory" in error_msg.lower() or "cuda" in error_msg.lower():
85
+ error_text = f"メモリ不足: このモデルにはGPUが必要です。小さいモデル(GPT-2, Pythia-410M等)を選択してください。"
86
+ elif "does not exist" in error_msg.lower() or "404" in error_msg.lower():
87
+ error_text = f"モデルが見つかりません: {model_key}"
88
+ else:
89
+ error_text = f"エラー: {error_msg}"
90
 
91
+ # 空の画像を作成
92
+ img = PIL.Image.new('RGB', (400, 100), color='black')
93
 
94
+ return img, error_text, ""
95
 
96
 
97
  def create_app() -> gr.Blocks: