Alyafeai commited on
Commit
0da0ffb
Β·
1 Parent(s): 636b5a2

modify how finetuning jobs get submitted

Browse files
README.md CHANGED
@@ -4,7 +4,7 @@ emoji: πŸ“Š
4
  colorFrom: blue
5
  colorTo: green
6
  sdk: docker
7
- python_version: 3.11.14
8
  pinned: false
9
  short_description: Qimma leaderboard
10
  ---
 
4
  colorFrom: blue
5
  colorTo: green
6
  sdk: docker
7
+ python_version: 3.10.19
8
  pinned: false
9
  short_description: Qimma leaderboard
10
  ---
backend/config.py CHANGED
@@ -35,10 +35,14 @@ TASKS: List[Tuple[str, str, str]] = [
35
  # --- 3. Model Metadata ---
36
 
37
  MODEL_TYPE_TO_EMOJI: Dict[str, str] = {
 
 
 
 
38
  "🟒 : pretrained": "🟒",
39
  "🟩 : continuously pretrained": "🟩",
40
  "πŸ’¬ : chat models (RLHF, DPO, IFT, ...)": "πŸ’¬",
41
  "πŸ”Ά : fine-tuned on domain-specific datasets": "πŸ”Ά",
42
  "🀝 : base merges and merges": "🀝",
43
  "Missing": "?",
44
- }
 
35
  # --- 3. Model Metadata ---
36
 
37
  MODEL_TYPE_TO_EMOJI: Dict[str, str] = {
38
+ "pre-trained": "🟒",
39
+ "pretrained": "🟒",
40
+ "finetuned": "πŸ”Ά",
41
+ "fine-tuned": "πŸ”Ά",
42
  "🟒 : pretrained": "🟒",
43
  "🟩 : continuously pretrained": "🟩",
44
  "πŸ’¬ : chat models (RLHF, DPO, IFT, ...)": "πŸ’¬",
45
  "πŸ”Ά : fine-tuned on domain-specific datasets": "πŸ”Ά",
46
  "🀝 : base merges and merges": "🀝",
47
  "Missing": "?",
48
+ }
backend/submission_handler.py CHANGED
@@ -17,6 +17,16 @@ from backend.helpers import unify_precision, get_model_size, parse_datetime
17
  logging.basicConfig(level=logging.INFO)
18
  logger = logging.getLogger(__name__)
19
 
 
 
 
 
 
 
 
 
 
 
20
  class SlackNotifier:
21
  """
22
  Handles all Slack notifications for the Arabic leaderboard system.
@@ -531,6 +541,7 @@ def submit_model(
531
  base_model = base_model.strip()
532
  revision = revision.strip() or "main"
533
  precision = precision.strip()
 
534
 
535
 
536
 
@@ -634,4 +645,4 @@ def submit_model(
634
  if SLACK_WEBHOOK_URL:
635
  notifier = SlackNotifier(SLACK_WEBHOOK_URL)
636
  notifier.notify_new_submission(submission_data)
637
- return f"**Success**: Model '{model_name}' submitted for evaluation!"
 
17
  logging.basicConfig(level=logging.INFO)
18
  logger = logging.getLogger(__name__)
19
 
20
+ MODEL_TYPE_NORMALIZATION = {
21
+ "pt": "pre-trained",
22
+ "pretrained": "pre-trained",
23
+ "pre-trained": "pre-trained",
24
+ "fine-tuned": "finetuned",
25
+ "finetuned": "finetuned",
26
+ "instruct": "finetuned",
27
+ "chat": "finetuned",
28
+ }
29
+
30
  class SlackNotifier:
31
  """
32
  Handles all Slack notifications for the Arabic leaderboard system.
 
541
  base_model = base_model.strip()
542
  revision = revision.strip() or "main"
543
  precision = precision.strip()
544
+ model_type = MODEL_TYPE_NORMALIZATION.get(model_type.strip().lower(), model_type.strip())
545
 
546
 
547
 
 
645
  if SLACK_WEBHOOK_URL:
646
  notifier = SlackNotifier(SLACK_WEBHOOK_URL)
647
  notifier.notify_new_submission(submission_data)
648
+ return f"**Success**: Model '{model_name}' submitted for evaluation!"
frontend/leaderboard.html CHANGED
@@ -745,9 +745,7 @@
745
 
746
  $('#modalLinkHF').href = `https://huggingface.co/${model["Model Name"]}`;
747
 
748
- const cleanName = model["Model Name"].replace(/\//g, '__');
749
- const datasetId = `OALL/details_${cleanName}`;
750
- $('#modalLinkDetails').href = `https://huggingface.co/datasets/${datasetId}`;
751
 
752
  const chartContainer = $('#modalChart');
753
  chartContainer.innerHTML = "";
@@ -918,7 +916,7 @@
918
  def.width = '400px';
919
  def.formatter = (c, r) => {
920
  const type = (typeIdx > -1 && r.cells[typeIdx]) ? r.cells[typeIdx].data : "";
921
- const tMap = { "chat": "πŸ’¬", "pretrained": "🟒", "fine-tuned": "πŸ”Ά" };
922
  const tIcon = tMap[type] || type;
923
 
924
  return gridjs.html(`
@@ -1042,4 +1040,4 @@
1042
 
1043
  </body>
1044
 
1045
- </html>
 
745
 
746
  $('#modalLinkHF').href = `https://huggingface.co/${model["Model Name"]}`;
747
 
748
+ $('#modalLinkDetails').href = `https://huggingface.co/datasets/qimma/leaderboard-details/tree/main/${model["Model Name"]}`;
 
 
749
 
750
  const chartContainer = $('#modalChart');
751
  chartContainer.innerHTML = "";
 
916
  def.width = '400px';
917
  def.formatter = (c, r) => {
918
  const type = (typeIdx > -1 && r.cells[typeIdx]) ? r.cells[typeIdx].data : "";
919
+ const tMap = { "pre-trained": "🟒", "pretrained": "🟒", "finetuned": "πŸ”Ά", "fine-tuned": "πŸ”Ά", "chat": "πŸ’¬" };
920
  const tIcon = tMap[type] || type;
921
 
922
  return gridjs.html(`
 
1040
 
1041
  </body>
1042
 
1043
+ </html>
frontend/submit.html CHANGED
@@ -25,10 +25,8 @@
25
  Type</label>
26
  <div class="relative"><select name="model_type"
27
  class="w-full px-4 py-2 rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 dark:text-white focus:ring-2 focus:ring-indigo-500 outline-none appearance-none transition cursor-pointer">
28
- <option value="pt">🟒 Pretrained</option>
29
- <option value="chat">πŸ’¬ Chat</option>
30
- <option value="fine-tuned" selected>πŸ”Ά Fine-tuned</option>
31
- <option value="merges">🀝 Merges</option>
32
  </select><i data-lucide="chevron-down"
33
  class="absolute right-3 top-3 h-4 w-4 text-slate-400 pointer-events-none"></i>
34
  </div>
@@ -48,10 +46,10 @@
48
  <div><label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Chat
49
  Template?</label>
50
  <div class="flex gap-4"><label class="flex items-center"><input type="radio"
51
- name="chat_template" value="Yes" class="text-indigo-600 h-4 w-4"><span
52
  class="ml-2 text-sm text-slate-600 dark:text-slate-400">Yes</span></label><label
53
  class="flex items-center"><input type="radio" name="chat_template" value="No"
54
- checked class="text-indigo-600 h-4 w-4"><span
55
  class="ml-2 text-sm text-slate-600 dark:text-slate-400">No</span></label>
56
  </div>
57
  </div>
@@ -143,6 +141,24 @@
143
  // 2. Handle Form Submission
144
  const form = document.querySelector('#submitForm');
145
  if (form) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  form.onsubmit = async (e) => {
147
  e.preventDefault();
148
  const btn = document.querySelector('#submitBtn');
@@ -161,6 +177,7 @@
161
  msg.className = "text-center text-sm font-medium text-emerald-600 dark:text-emerald-400";
162
  msg.innerText = "βœ… " + (json.message || "Success!");
163
  e.target.reset();
 
164
 
165
  // Update Local Sidebar & Header
166
  await updateSidebarQueue();
@@ -182,4 +199,4 @@
182
  </script>
183
  </body>
184
 
185
- </html>
 
25
  Type</label>
26
  <div class="relative"><select name="model_type"
27
  class="w-full px-4 py-2 rounded-lg border border-slate-300 dark:border-slate-600 bg-white dark:bg-slate-900 dark:text-white focus:ring-2 focus:ring-indigo-500 outline-none appearance-none transition cursor-pointer">
28
+ <option value="pre-trained">🟒 Pretrained</option>
29
+ <option value="finetuned" selected>πŸ”Ά Instruct</option>
 
 
30
  </select><i data-lucide="chevron-down"
31
  class="absolute right-3 top-3 h-4 w-4 text-slate-400 pointer-events-none"></i>
32
  </div>
 
46
  <div><label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">Chat
47
  Template?</label>
48
  <div class="flex gap-4"><label class="flex items-center"><input type="radio"
49
+ name="chat_template" value="Yes" checked class="text-indigo-600 h-4 w-4"><span
50
  class="ml-2 text-sm text-slate-600 dark:text-slate-400">Yes</span></label><label
51
  class="flex items-center"><input type="radio" name="chat_template" value="No"
52
+ class="text-indigo-600 h-4 w-4"><span
53
  class="ml-2 text-sm text-slate-600 dark:text-slate-400">No</span></label>
54
  </div>
55
  </div>
 
141
  // 2. Handle Form Submission
142
  const form = document.querySelector('#submitForm');
143
  if (form) {
144
+ const modelTypeSelect = form.querySelector('select[name="model_type"]');
145
+ const chatYes = form.querySelector('input[name="chat_template"][value="Yes"]');
146
+ const chatNo = form.querySelector('input[name="chat_template"][value="No"]');
147
+
148
+ const syncChatTemplateDefault = () => {
149
+ if (!modelTypeSelect || !chatYes || !chatNo) return;
150
+ if (modelTypeSelect.value === 'pre-trained') {
151
+ chatNo.checked = true;
152
+ } else if (modelTypeSelect.value === 'finetuned') {
153
+ chatYes.checked = true;
154
+ }
155
+ };
156
+
157
+ if (modelTypeSelect) {
158
+ modelTypeSelect.addEventListener('change', syncChatTemplateDefault);
159
+ syncChatTemplateDefault();
160
+ }
161
+
162
  form.onsubmit = async (e) => {
163
  e.preventDefault();
164
  const btn = document.querySelector('#submitBtn');
 
177
  msg.className = "text-center text-sm font-medium text-emerald-600 dark:text-emerald-400";
178
  msg.innerText = "βœ… " + (json.message || "Success!");
179
  e.target.reset();
180
+ syncChatTemplateDefault();
181
 
182
  // Update Local Sidebar & Header
183
  await updateSidebarQueue();
 
199
  </script>
200
  </body>
201
 
202
+ </html>