dror201031 commited on
Commit
45c5911
verified
1 Parent(s): 1dec5a8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -93
app.py CHANGED
@@ -33,32 +33,27 @@ except ImportError as e:
33
  print(f"砖讙讬讗讛 讘讬讘讜讗 讛住驻专讬讜转: {str(e)}")
34
  sys.exit(1)
35
 
36
- # 专砖讬诪转 诪讜讚诇讬诐 转讜诪讻讬 注讘专讬转 讗讜 专讘-诇砖讜谞讬讬诐 拽讟谞讬诐 注诐 讛诪诇爪讜转 诇讛讙讚专讜转
37
  MODELS = {
38
- "facebook/opt-125m": "诪讜讚诇 拽讟谉 (125M) 讻诇诇讬 - 诪讛讬专",
39
- "onlplab/alephbert-base": "诪讜讚诇 BERT 讘注讘专讬转 - 诪转讗讬诐 诇讛砖诇诪转 诪讬诇讬诐",
40
- "avichr/heBERT": "诪讜讚诇 BERT 注讘专讬 谞讜住祝 - 诪转讗讬诐 诇讛砖诇诪转 诪讬诇讬诐",
41
- "google/mt5-small": "诪讜讚诇 T5 专讘-诇砖讜谞讬 转讜诪讱 注讘专讬转 - 诪转讗讬诐 诇转专讙讜诐 讜砖讗诇讜转",
42
- "xlm-roberta-base": "诪讜讚诇 专讘-诇砖讜谞讬 转讜诪讱 注讘专讬转 - 诪转讗讬诐 诇讛砖诇诪转 诪讬诇讬诐",
43
- "google/flan-t5-small": "诪讜讚诇 讛谞讞讬讜转 拽讟谉 转讜诪讱 讘诪讙讜讜谉 砖驻讜转 - 讟讜讘 诇砖讗诇讜转 讜转砖讜讘讜转",
44
- "distilgpt2": "诪讜讚诇 GPT-2 拽讟谉 讜诪讛讬专 - 讟讜讘 诇讬爪讬专转 讟拽住讟"
45
  }
46
 
47
  # 诪讬诇讜谉 讛讙讚专讜转 讗讜驻讟讬诪诇讬讜转 诇驻讬 住讜讙讬 诪讜讚诇讬诐
48
  MODEL_CONFIGS = {
49
- "bert": { # 诇讛砖诇诪转 诪住讻讜转
50
- "top_k": 5
51
- },
52
- "t5": { # 诇诪讜讚诇讬 T5 讜-MT5
53
- "max_length": 150,
54
  "do_sample": True,
55
- "temperature": 0.6,
56
- "top_p": 0.92,
57
- "repetition_penalty": 1.2,
58
- "num_beams": 4
59
  },
60
- "default": { # 诇诪讜讚诇讬 OPT, GPT 讜讻讜'
61
- "max_new_tokens": 150,
62
  "do_sample": True,
63
  "temperature": 0.7,
64
  "top_p": 0.92,
@@ -76,7 +71,7 @@ else:
76
  print("讗讝讛专讛: 讟讜拽谉 HF_TOKEN 诇讗 诪讜讙讚专 讘住讘讬讘转 讛注讘讜讚讛. 讬讬转讻谉 砖诇讗 转讛讬讛 讙讬砖讛 诇诪讜讚诇讬诐 诪讜讙讘诇讬诐.")
77
 
78
  # 讛讙讚专转 诪砖转谞讬诐 讙诇讜讘诇讬讬诐
79
- default_model_name = "facebook/opt-125m"
80
  current_model_name = default_model_name
81
  generator = None
82
 
@@ -106,33 +101,13 @@ def load_model(model_name, status_box=None):
106
  status_box = gr.Markdown(f"讟讜注谉 讗转 讛诪讜讚诇: {model_name}...")
107
 
108
  try:
109
- # 讘讚讬拽讛 讗诐 诪讚讜讘专 讘诪讜讚诇 诪住讜讙 BERT 砖讗讬谞讜 诪转讗讬诐 诇讞讬讝讜讬 讟拽住讟
110
- is_bert_model = "bert" in model_name.lower() and "bart" not in model_name.lower()
111
-
112
- if is_bert_model:
113
- # BERT 诪讜讚诇讬诐 诪转讗讬诪讬诐 讬讜转专 诇诪砖讬诪讜转 讗讞专讜转, 讗讘诇 谞谞住讛 诇讛驻注讬诇 讗讜转诐 注诐 masked fill
114
- generator = transformers.pipeline(
115
- "fill-mask",
116
- model=model_name,
117
- device_map="auto",
118
- torch_dtype="auto"
119
- )
120
- elif "t5" in model_name.lower() or "mt5" in model_name.lower() or "flan-t5" in model_name.lower():
121
- # 诪讜讚诇讬 T5 诪转讗讬诪讬诐 诇讟拽住讟-诇讟拽住讟
122
- generator = transformers.pipeline(
123
- "text2text-generation",
124
- model=model_name,
125
- device_map="auto",
126
- torch_dtype="auto"
127
- )
128
- else:
129
- # 诪讜讚诇讬诐 专讙讬诇讬诐 诇讬爪讬专转 讟拽住讟
130
- generator = transformers.pipeline(
131
- "text-generation",
132
- model=model_name,
133
- device_map="auto",
134
- torch_dtype="auto"
135
- )
136
 
137
  if status_box is not None:
138
  status_box = gr.Markdown(f"**讛诪讜讚诇 {model_name} 谞讟注谉 讘讛爪诇讞讛!**")
@@ -159,53 +134,29 @@ def ask_model(prompt):
159
  return "讛诪讜讚诇 诇讗 谞讟注谉 讘讛爪诇讞讛. 谞住讛 诇讟注讜谉 诪讜讚诇 转讞讬诇讛."
160
 
161
  try:
162
- if "bert" in current_model_name.lower() and "bart" not in current_model_name.lower():
163
- # 讟讬驻讜诇 讘诪讜讚诇讬 BERT (fill-mask)
164
- # 谞讜住讬祝 诪住讻讛 [MASK] 诇住讜祝 讛讟拽住讟
165
- if "[MASK]" not in prompt:
166
- prompt = prompt + " [MASK]"
167
- outputs = generator(prompt, top_k=5)
168
- return "\n".join([f"{item['token_str']} (讜讚讗讜转: {item['score']:.4f})" for item in outputs])
169
-
170
- elif "t5" in current_model_name.lower() or "mt5" in current_model_name.lower() or "flan-t5" in current_model_name.lower():
171
- # 讟讬驻讜诇 讘诪讜讚诇讬 T5
172
- outputs = generator(
173
- prompt,
174
- max_length=150, # 讗讜专讱 转讜爪讗讛 诪拽住讬诪诇讬
175
- do_sample=True, # 讚讙讬诪讛 讗拽专讗讬转 讘诪拽讜诐 greedy
176
- temperature=0.6, # 讟诪驻专讟讜专讛 谞诪讜讻讛 讬讜转专 诇转砖讜讘讜转 讬讜转专 诪讚讜讬拽讜转
177
- top_p=0.92, # 谞讜拽诇讬讜住 讚讙讬诪讛 - 砖讜诪专 注诇 诪讙讜讜谉 转砖讜讘讜转
178
- repetition_penalty=1.2, # 诪讜谞注 讞讝专讜转
179
- num_beams=4 # 讞讬驻讜砖 拽专谉 诇转讜爪讗讜转 讗讬讻讜转讬讜转 讬讜转专
180
- )
181
- if isinstance(outputs, list) and len(outputs) > 0:
182
- return outputs[0]["generated_text"]
183
- else:
184
- return str(outputs)
185
  else:
186
- # 讟讬驻讜诇 讘诪讜讚诇讬诐 专讙讬诇讬诐 (OPT, GPT)
187
- outputs = generator(
188
- prompt,
189
- max_new_tokens=150, # 讗讜专讱 转讜爪讗讛 诪拽住讬诪诇讬
190
- do_sample=True, # 讚讙讬诪讛 讗拽专讗讬转 讘诪拽讜诐 greedy
191
- temperature=0.7, # 讗讬讝讜谉 讘讬谉 讚讬讜拽 讜讬爪讬专转讬讜转
192
- top_p=0.92, # 谞讜拽诇讬讜住 讚讙讬诪讛 - 砖讜诪专 注诇 诪讙讜讜谉 转砖讜讘讜转
193
- repetition_penalty=1.1, # 诪讜谞注 讞讝专讜转
194
- no_repeat_ngram_size=2, # 诪谞讬注转 讞讝专讛 注诇 讘讬讙专诪讜转 (讝讜讙讜转 诪讬诇讬诐)
195
- return_full_text=False # 诪讞讝讬专 专拽 讗转 讛讟拽住讟 讛讞讚砖 砖谞讜爪专
196
- )
197
-
198
- # 诪讞讝讬专 讗转 讛讟拽住讟 砖谞讜爪专
199
- if isinstance(outputs, list) and len(outputs) > 0:
200
- return outputs[0]["generated_text"]
201
- else:
202
- return str(outputs)
203
  except Exception as e:
204
  return f"砖讙讬讗讛 讘讛驻注诇转 讛诪讜讚诇: {str(e)}"
205
 
206
  # 讬爪讬专转 诪诪砖拽 诪砖转诪砖
207
  with gr.Blocks() as demo:
208
- gr.Markdown("# 诪注专讻转 爪'讗讟 注诐 诪讜讚诇讬诐 讘注讘专讬转")
209
 
210
  # 讗讝讜专 讘讞讬专转 诪讜讚诇 讜讟注讬谞讛
211
  with gr.Row():
@@ -263,9 +214,9 @@ with gr.Blocks() as demo:
263
  "住驻专 诇讬 注诇 讘讬谞讛 诪诇讗讻讜转讬转",
264
  "诪讛 讚注转讱 注诇 讛砖驻讛 讛注讘专讬转?",
265
  "讻转讜讘 住讬驻讜专 拽爪专 注诇 讬专讜砖诇讬诐",
266
- "诪讛诐 讛讬转专讜谞讜转 砖诇 诇诪讬讚转 诪讻讜谞讛?",
267
- "转专讙诐 讗转 讛诪砖驻讟 讛讝讛 诇讗谞讙诇讬转: 砖诇讜诐, 诪讛 砖诇讜诪讱 讛讬讜诐?",
268
- "讛砖诇诐 讗转 讛诪砖驻讟: 讬专讜砖诇讬诐 讛讬讗 [MASK]"
269
  ],
270
  input_text
271
  )
@@ -273,8 +224,8 @@ with gr.Blocks() as demo:
273
  gr.Markdown("""
274
  ### 讛注专讜转:
275
  - 讘讞专 诪讜讚诇 诪讛专砖讬诪讛 讜诇讞抓 注诇 '讟注谉 诪讜讚诇' 讻讚讬 诇讛讞诇讬祝 讗转 讛诪讜讚诇 讛谞讜讻讞讬
276
- - 讛诪讜讚诇讬诐 诪住讜讙 BERT (讻诪讜 AlephBERT 讜-heBERT) 诪转讗讬诪讬诐 诇讛砖诇诪转 诪讬诇讬诐 讜诇讗 诇砖讬讞讛 诪诇讗讛
277
- - 讛诪讜讚诇讬诐 诪住讜讙 T5 讜-OPT 讟讜讘讬诐 讬讜转专 诇砖讬讞讛 讜讬爪讬专转 转讜讻谉
278
  - 讛讟注讬谞讛 讛专讗砖讜谞讬转 砖诇 讻诇 诪讜讚诇 注砖讜讬讛 诇拽讞转 诪住驻专 砖谞讬讜转 注讚 讚拽讜转
279
  """)
280
 
 
33
  print(f"砖讙讬讗讛 讘讬讘讜讗 讛住驻专讬讜转: {str(e)}")
34
  sys.exit(1)
35
 
36
+ # 专砖讬诪转 诪讜讚诇讬诐 Qwen3-Coder
37
  MODELS = {
38
+ "Qwen/Qwen1.5-0.5B-Chat": "诪讜讚诇 Qwen 拽讟谉 - 转讜诪讱 讘注讘专讬转 讜诪转讗讬诐 诇砖讬讞讛 讜转讻谞讜转",
39
+ "Qwen/Qwen1.5-1.8B-Chat": "诪讜讚诇 Qwen 讘讬谞讜谞讬 - 转讜诪讱 讘砖驻讜转 专讘讜转 讻讜诇诇 注讘专讬转",
40
+ "Qwen/Qwen1.5-4B-Chat": "诪讜讚诇 Qwen 讞讝拽 讬讜转专 - 转讜诪讱 讘砖驻讜转 专讘讜转 讜拽讬讚讜讚",
41
+ "Qwen/Qwen1.5-7B-Chat": "诪讜讚诇 Qwen 讞讝拽 诪讗讜讚 - 诪转讗讬诐 诇砖讬讞讛 讜转讻谞讜转 诪转拽讚诪转",
42
+ "Qwen/Qwen1.5-7B-Coder": "诪讜讚诇 Qwen3-Coder - 诪砖讜驻专 诇转讻谞讜转 讜诪砖讬诪讜转 拽讜讚"
 
 
43
  }
44
 
45
  # 诪讬诇讜谉 讛讙讚专讜转 讗讜驻讟讬诪诇讬讜转 诇驻讬 住讜讙讬 诪讜讚诇讬诐
46
  MODEL_CONFIGS = {
47
+ "qwen": { # 诇诪讜讚诇讬 Qwen
48
+ "max_new_tokens": 512,
 
 
 
49
  "do_sample": True,
50
+ "temperature": 0.7,
51
+ "top_p": 0.95,
52
+ "repetition_penalty": 1.05,
53
+ "no_repeat_ngram_size": 3
54
  },
55
+ "default": { # 诇诪讜讚诇讬诐 讗讞专讬诐
56
+ "max_new_tokens": 256,
57
  "do_sample": True,
58
  "temperature": 0.7,
59
  "top_p": 0.92,
 
71
  print("讗讝讛专讛: 讟讜拽谉 HF_TOKEN 诇讗 诪讜讙讚专 讘住讘讬讘转 讛注讘讜讚讛. 讬讬转讻谉 砖诇讗 转讛讬讛 讙讬砖讛 诇诪讜讚诇讬诐 诪讜讙讘诇讬诐.")
72
 
73
  # 讛讙讚专转 诪砖转谞讬诐 讙诇讜讘诇讬讬诐
74
+ default_model_name = "Qwen/Qwen1.5-7B-Coder"
75
  current_model_name = default_model_name
76
  generator = None
77
 
 
101
  status_box = gr.Markdown(f"讟讜注谉 讗转 讛诪讜讚诇: {model_name}...")
102
 
103
  try:
104
+ # Qwen 诪讜讚诇讬诐 诪转讗讬诪讬诐 诇爪'讗讟
105
+ generator = transformers.pipeline(
106
+ "text-generation",
107
+ model=model_name,
108
+ device_map="auto",
109
+ torch_dtype="auto"
110
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
  if status_box is not None:
113
  status_box = gr.Markdown(f"**讛诪讜讚诇 {model_name} 谞讟注谉 讘讛爪诇讞讛!**")
 
134
  return "讛诪讜讚诇 诇讗 谞讟注谉 讘讛爪诇讞讛. 谞住讛 诇讟注讜谉 诪讜讚诇 转讞讬诇讛."
135
 
136
  try:
137
+ # 讟讬驻讜诇 讘诪讜讚诇讬 Qwen
138
+ outputs = generator(
139
+ prompt,
140
+ max_new_tokens=512, # 讗讜专讱 转讜爪讗讛 诪拽住讬诪诇讬 - 讛讙讚诇谞讜 注讘讜专 Qwen
141
+ do_sample=True, # 讚讙讬诪讛 讗拽专讗讬转 讘诪拽讜诐 greedy
142
+ temperature=0.7, # 讗讬讝讜谉 讘讬谉 讚讬讜拽 讜讬爪讬专转讬讜转
143
+ top_p=0.95, # 谞讜拽诇讬讜住 讚讙讬诪讛 - 砖讜诪专 注诇 诪讙讜讜谉 转砖讜讘讜转
144
+ repetition_penalty=1.05, # 诪讜谞注 讞讝专讜转
145
+ no_repeat_ngram_size=3, # 诪谞讬注转 讞讝专讛 注诇 讘讬讙专诪讜转 (讝讜讙讜转 诪讬诇讬诐)
146
+ return_full_text=False # 诪讞讝讬专 专拽 讗转 讛讟拽住讟 讛讞讚砖 砖谞讜爪专
147
+ )
148
+
149
+ # 诪讞讝讬专 讗转 讛讟拽住讟 砖谞讜爪专
150
+ if isinstance(outputs, list) and len(outputs) > 0:
151
+ return outputs[0]["generated_text"]
 
 
 
 
 
 
 
 
152
  else:
153
+ return str(outputs)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  except Exception as e:
155
  return f"砖讙讬讗讛 讘讛驻注诇转 讛诪讜讚诇: {str(e)}"
156
 
157
  # 讬爪讬专转 诪诪砖拽 诪砖转诪砖
158
  with gr.Blocks() as demo:
159
+ gr.Markdown("# 诪注专讻转 爪'讗讟 注诐 诪讜讚诇讬 Qwen3-Coder")
160
 
161
  # 讗讝讜专 讘讞讬专转 诪讜讚诇 讜讟注讬谞讛
162
  with gr.Row():
 
214
  "住驻专 诇讬 注诇 讘讬谞讛 诪诇讗讻讜转讬转",
215
  "诪讛 讚注转讱 注诇 讛砖驻讛 讛注讘专讬转?",
216
  "讻转讜讘 住讬驻讜专 拽爪专 注诇 讬专讜砖诇讬诐",
217
+ "讻转讜讘 诇讬 拽讜讚 讘驻讬讬转讜谉 砖诪讞砖讘 讗转 诪住驻专讬 驻讬讘讜谞讗爪'讬",
218
+ "讻转讜讘 诇讬 拽讜讚 讘-JavaScript 砖讬讜爪专 讗驻诇讬拽爪讬讬转 专砖讬诪转 诪砖讬诪讜转",
219
+ "讛住讘专 诇讬 注诇 诪注专讻讜转 诪讘讜住住讜转 讟专谞住驻讜专诪专讬诐"
220
  ],
221
  input_text
222
  )
 
224
  gr.Markdown("""
225
  ### 讛注专讜转:
226
  - 讘讞专 诪讜讚诇 诪讛专砖讬诪讛 讜诇讞抓 注诇 '讟注谉 诪讜讚诇' 讻讚讬 诇讛讞诇讬祝 讗转 讛诪讜讚诇 讛谞讜讻讞讬
227
+ - 诪讜讚诇讬 Qwen 诪转讗讬诪讬诐 讘诪讬讜讞讚 诇爪'讗讟 讜转讻谞讜转
228
+ - 诪讜诪诇抓 诇讛转讞讬诇 注诐 讛诪讜讚诇 讛拽讟谉 讬讜转专 (0.5B) 讜诇讛砖转诪砖 讘诪讜讚诇讬诐 讛讙讚讜诇讬诐 讬讜转专 专拽 注讘讜专 诪砖讬诪讜转 诪讜专讻讘讜转
229
  - 讛讟注讬谞讛 讛专讗砖讜谞讬转 砖诇 讻诇 诪讜讚诇 注砖讜讬讛 诇拽讞转 诪住驻专 砖谞讬讜转 注讚 讚拽讜转
230
  """)
231