evanfrick commited on
Commit
4e74128
·
1 Parent(s): a4c4940

commit files to HF hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # lmarena-ai/p2l-1.5b-grk-01112025
2
+
3
+ Large language model (LLM) evaluations typically rely on aggregated metrics like accuracy or human preference, averaging across users and prompts. This averaging obscures user- and prompt-specific variations in model performance.
4
+ To address this, we propose Prompt-to-Leaderboard (P2L), a method that produces leaderboards specific to a prompt.
5
+ The core idea is to train an LLM taking natural language prompts as input to output a vector of coefficients which are then used to predict the human preference vote.
6
+ The resulting prompt-dependent leaderboards allow for unsupervised task-specific evaluation, optimal routing of queries to models, personalization, and automated evaluation of model strengths and weaknesses.
7
+ Data from Chatbot Arena suggest that P2L better captures the nuanced landscape of language model performance than the averaged leaderboard.
8
+
9
+ **Paper**: [Prompt-to-Leaderboard](https://arxiv.org/abs/2502.14855)
10
+
11
+ **Code**: [lmarena/p2l](https://github.com/lmarena/p2l)
12
+
13
+ This particular P2L model has a *Grounded Rao-Kupper* regression head, which we define below:
14
+
15
+ Let
16
+ $$
17
+ Y\in \{\mathsf{A}, \mathsf{B}, \mathsf{tie}, \mathsf{bad}\}
18
+ $$
19
+ and for the sake of notational convenience, let
20
+ $$
21
+ \theta^*(z) = \big(\beta^*(z), \eta^*(z)\big); \ \beta^*(z) \in \mathbb{R}^M, \eta^*(z) \in \mathbb{R}_{\geq 1}\}
22
+ $$
23
+
24
+ For notational convenience, we define:
25
+ $$
26
+ \varphi^*(z)_i := \exp(\beta^*(z)_i)
27
+ $$
28
+
29
+ Then grounded Rao-Kupper model is defined as:
30
+ $$
31
+ g_{\theta^*(z)}(y ; x) =
32
+ \begin{cases}
33
+ \frac{\varphi^*(z)_A}{\varphi^*(z)_A + \eta^*(z)\varphi^*(z)_B + 1} & y = \mathsf{A} \\
34
+ \frac{\varphi^*(z)_B}{\varphi^*(z)_B + \eta^*(z)\varphi^*(z)_A + 1} & y = \mathsf{B}\\
35
+ \frac{1}{1 + \varphi^*(z)_A + \varphi^*(z)_B} & y = \mathsf{bad}\\
36
+ 1 - \frac{\varphi^*(z)_A}{\varphi^*(z)_A + \eta^*(z)\varphi^*(z)_B + 1} - \frac{\varphi^*(z)_B}{\varphi^*(z)_B + \eta^*(z)\varphi^*(z)_A + 1} - \frac{1}{1 + \varphi^*(z)_A + \varphi^*(z)_B} & y = \mathsf{tie}.
37
+ \end{cases}
38
+ $$
39
+
40
+ See section 2.2 in our paper for more details on various regression heads.
41
+
42
+ ## Serving
43
+ To serve a P2L model, please see our documentation on GitHub: [Serving P2L](https://github.com/lmarena/p2l?tab=readme-ov-file#serving-p2l).
44
+
45
+ Note: the P2L model outputs with this structure:
46
+
47
+
48
+ ```python
49
+ class P2LOutputs(ModelOutput):
50
+ coefs: torch.FloatTensor = None # "betas" as described above
51
+ eta: Optional[torch.FloatTensor] = None # tie coefficent (also eta above)
52
+ last_hidden_state: torch.FloatTensor = None # last hidden state from the transformer
53
+ ```
54
+
55
+ To understand which coefficient index corresponds with which model, see the [`model_list.json`](./model_list.json) found in the repo of each P2L model. As a general rule, the models will always be in sorted order.
56
+
57
+ The easiest way to get this list from inside code is with the following:
58
+
59
+ ```python
60
+ import json
61
+ from huggingface_hub import hf_hub_download
62
+
63
+ fname = hf_hub_download(
64
+ repo_id="lmarena-ai/p2l-1.5b-grk-01112025", filename="model_list.json", repo_type="model"
65
+ )
66
+
67
+ with open(fname) as fin:
68
+ model_list = json.load(fin)
69
+ ```
70
+
71
+
72
+
73
+ ### Loading from Pretrained
74
+
75
+ To define and load the model:
76
+
77
+ ```python
78
+
79
+ import torch
80
+ from transformers import (
81
+ Qwen2Model,
82
+ Qwen2PreTrainedModel,
83
+ LlamaModel,
84
+ LlamaPreTrainedModel,
85
+ PreTrainedModel,
86
+ AutoTokenizer,
87
+ )
88
+ from transformers import AutoTokenizer
89
+ from transformers.utils import ModelOutput
90
+ from dataclasses import dataclass
91
+ import torch.nn as nn
92
+ import torch.nn.functional as F
93
+ from typing import Dict, Tuple, Callable, Optional
94
+ from huggingface_hub import hf_hub_download
95
+ import json
96
+
97
+
98
+ @dataclass
99
+ class HeadOutputs(ModelOutput):
100
+ coefs: torch.FloatTensor = None
101
+ eta: Optional[torch.FloatTensor] = None
102
+ gamma: Optional[torch.FloatTensor] = None
103
+
104
+
105
+ @dataclass
106
+ class P2LOutputs(ModelOutput):
107
+ coefs: torch.FloatTensor = None
108
+ eta: Optional[torch.FloatTensor] = None
109
+ gamma: Optional[torch.FloatTensor] = None
110
+ loss: Optional[torch.FloatTensor] = None
111
+ last_hidden_state: torch.FloatTensor = None
112
+
113
+ class RKHead(nn.Module):
114
+ def __init__(
115
+ self,
116
+ input_dim,
117
+ output_dim,
118
+ **kwargs,
119
+ ) -> None:
120
+ super().__init__()
121
+ self.head = nn.Linear(
122
+ in_features=input_dim, out_features=output_dim, bias=True
123
+ )
124
+ self.eta_head = nn.Linear(
125
+ in_features=input_dim, out_features=1, bias=True
126
+ )
127
+
128
+ def forward(self, last_hidden_dim: torch.Tensor):
129
+ coefs = self.head(last_hidden_dim)
130
+ eta = self.eta_head(last_hidden_dim)
131
+
132
+ return HeadOutputs(coefs=coefs, eta=eta)
133
+
134
+ class P2LModel(Qwen2PreTrainedModel):
135
+ def __init__(
136
+ self,
137
+ config,
138
+ CLS_id,
139
+ num_models,
140
+ head_kwargs={},
141
+ **kwargs,
142
+ ):
143
+ super().__init__(config)
144
+
145
+ self.num_models = num_models
146
+ self.cls_token_id = CLS_id
147
+
148
+ self.model = Qwen2Model(config)
149
+
150
+ self.head = RKHead(
151
+ input_dim=config.hidden_size,
152
+ output_dim=self.num_models,
153
+ **head_kwargs,
154
+ )
155
+
156
+ self.post_init()
157
+
158
+ def freeze_transformer(self):
159
+ for param in self.model.parameters():
160
+ param.requires_grad = False
161
+
162
+ def get_input_embeddings(self):
163
+ return self.model.embed_tokens
164
+
165
+ def set_input_embeddings(self, value):
166
+ self.model.embed_tokens = value
167
+
168
+ def forward(self, input_ids, attention_mask, labels=None, weights=None):
169
+ batch_size = input_ids.shape[0]
170
+
171
+ hidden_outputs = self.model(
172
+ input_ids=input_ids,
173
+ attention_mask=attention_mask,
174
+ output_hidden_states=False,
175
+ ).last_hidden_state # (bs, num_token, embed_dim)
176
+
177
+ cls_mask = input_ids == self.cls_token_id
178
+
179
+ # double check this is getting the current CLS token
180
+ cls_hidden_dim = hidden_outputs[cls_mask]
181
+
182
+ assert (
183
+ cls_hidden_dim.shape[0] == batch_size
184
+ ), f"input ids {input_ids.shape}, cls_mask {cls_mask.shape}, cls_logit {cls_hidden_dim.shape}"
185
+
186
+ head_output = self.head(cls_hidden_dim)
187
+
188
+
189
+ outputs = P2LOutputs(
190
+ coefs=head_output.coefs,
191
+ last_hidden_state=cls_hidden_dim,
192
+ eta=head_output.eta,
193
+ gamma=head_output.gamma,
194
+ )
195
+
196
+ return outputs
197
+
198
+
199
+ fname = hf_hub_download(
200
+ repo_id="lmarena-ai/p2l-1.5b-grk-01112025", filename="model_list.json", repo_type="model"
201
+ )
202
+
203
+ with open(fname) as fin:
204
+ model_list = json.load(fin)
205
+
206
+ tokenizer = AutoTokenizer.from_pretrained("lmarena-ai/p2l-1.5b-grk-01112025")
207
+ model = P2LModel.from_pretrained(
208
+ "lmarena-ai/p2l-1.5b-grk-01112025",
209
+ CLS_id=tokenizer.cls_token_id,
210
+ num_models=len(model_list),
211
+ torch_dtype=torch.bfloat16,
212
+ )
213
+
214
+ ```
215
+
216
+ ## Citation
217
+
218
+ ```
219
+ @misc{frick2025prompttoleaderboard,
220
+ title={Prompt-to-Leaderboard},
221
+ author={Evan Frick and Connor Chen and Joseph Tennyson and Tianle Li and Wei-Lin Chiang and Anastasios N. Angelopoulos and Ion Stoica},
222
+ year={2025},
223
+ eprint={2502.14855},
224
+ archivePrefix={arXiv},
225
+ primaryClass={cs.LG},
226
+ url={https://arxiv.org/abs/2502.14855},
227
+ }
228
+ ```
added_tokens.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "</tool_call>": 151658,
3
+ "<tool_call>": 151657,
4
+ "<|box_end|>": 151649,
5
+ "<|box_start|>": 151648,
6
+ "<|cls|>": 151665,
7
+ "<|endoftext|>": 151643,
8
+ "<|file_sep|>": 151664,
9
+ "<|fim_middle|>": 151660,
10
+ "<|fim_pad|>": 151662,
11
+ "<|fim_prefix|>": 151659,
12
+ "<|fim_suffix|>": 151661,
13
+ "<|im_end|>": 151645,
14
+ "<|im_start|>": 151644,
15
+ "<|image_pad|>": 151655,
16
+ "<|object_ref_end|>": 151647,
17
+ "<|object_ref_start|>": 151646,
18
+ "<|quad_end|>": 151651,
19
+ "<|quad_start|>": 151650,
20
+ "<|repo_name|>": 151663,
21
+ "<|video_pad|>": 151656,
22
+ "<|vision_end|>": 151653,
23
+ "<|vision_pad|>": 151654,
24
+ "<|vision_start|>": 151652
25
+ }
config.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "Qwen/Qwen2.5-1.5B-Instruct",
3
+ "architectures": [
4
+ "P2LModel"
5
+ ],
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 151643,
8
+ "eos_token_id": 151645,
9
+ "hidden_act": "silu",
10
+ "hidden_size": 1536,
11
+ "initializer_range": 0.02,
12
+ "intermediate_size": 8960,
13
+ "max_position_embeddings": 32768,
14
+ "max_window_layers": 21,
15
+ "model_type": "qwen2",
16
+ "num_attention_heads": 12,
17
+ "num_hidden_layers": 28,
18
+ "num_key_value_heads": 2,
19
+ "rms_norm_eps": 1e-06,
20
+ "rope_scaling": null,
21
+ "rope_theta": 1000000.0,
22
+ "sliding_window": null,
23
+ "tie_word_embeddings": true,
24
+ "torch_dtype": "bfloat16",
25
+ "transformers_version": "4.47.1",
26
+ "use_cache": true,
27
+ "use_sliding_window": false,
28
+ "vocab_size": 151936
29
+ }
merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:81cbd4ff534121720cd7012367369e88a0e096fa22db78f41afcf18b6218e934
3
+ size 3087870158
model_list.json ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ "amazon-nova-lite-v1.0",
3
+ "amazon-nova-micro-v1.0",
4
+ "amazon-nova-pro-v1.0",
5
+ "athene-70b-0725",
6
+ "athene-v2-chat",
7
+ "c4ai-aya-expanse-32b",
8
+ "c4ai-aya-expanse-8b",
9
+ "chatgpt-4o-latest-20240808",
10
+ "chatgpt-4o-latest-20240903",
11
+ "chatgpt-4o-latest-20241120",
12
+ "claude-3-5-haiku-20241022",
13
+ "claude-3-5-sonnet-20240620",
14
+ "claude-3-5-sonnet-20241022",
15
+ "claude-3-haiku-20240307",
16
+ "claude-3-opus-20240229",
17
+ "claude-3-sonnet-20240229",
18
+ "codestral-2405",
19
+ "command-r",
20
+ "command-r-08-2024",
21
+ "command-r-plus",
22
+ "command-r-plus-08-2024",
23
+ "dbrx-instruct-preview",
24
+ "deepseek-coder-v2",
25
+ "deepseek-coder-v2-0724",
26
+ "deepseek-v2-api-0628",
27
+ "deepseek-v2.5",
28
+ "deepseek-v2.5-1210",
29
+ "deepseek-v3",
30
+ "gemini-1.5-flash-001",
31
+ "gemini-1.5-flash-002",
32
+ "gemini-1.5-flash-8b-001",
33
+ "gemini-1.5-flash-8b-exp-0827",
34
+ "gemini-1.5-flash-exp-0827",
35
+ "gemini-1.5-pro-001",
36
+ "gemini-1.5-pro-002",
37
+ "gemini-1.5-pro-api-0409-preview",
38
+ "gemini-1.5-pro-exp-0801",
39
+ "gemini-1.5-pro-exp-0827",
40
+ "gemini-2.0-flash-exp",
41
+ "gemini-2.0-flash-thinking-exp-1219",
42
+ "gemini-advanced-0514",
43
+ "gemini-exp-1114",
44
+ "gemini-exp-1121",
45
+ "gemini-exp-1206",
46
+ "gemma-1.1-2b-it",
47
+ "gemma-1.1-7b-it",
48
+ "gemma-2-27b-it",
49
+ "gemma-2-2b-it",
50
+ "gemma-2-9b-it",
51
+ "gemma-2-9b-it-simpo",
52
+ "glm-4-0116",
53
+ "glm-4-0520",
54
+ "glm-4-plus",
55
+ "gpt-3.5-turbo-0125",
56
+ "gpt-4-0125-preview",
57
+ "gpt-4-0314",
58
+ "gpt-4-0613",
59
+ "gpt-4-1106-preview",
60
+ "gpt-4-turbo-2024-04-09",
61
+ "gpt-4o-2024-05-13",
62
+ "gpt-4o-2024-08-06",
63
+ "gpt-4o-mini-2024-07-18",
64
+ "granite-3.0-2b-instruct",
65
+ "granite-3.0-8b-instruct",
66
+ "grok-2-2024-08-13",
67
+ "grok-2-mini-2024-08-13",
68
+ "hunyuan-standard-256k",
69
+ "internlm2_5-20b-chat",
70
+ "jamba-1.5-large",
71
+ "jamba-1.5-mini",
72
+ "llama-2-13b-chat",
73
+ "llama-2-70b-chat",
74
+ "llama-3-70b-instruct",
75
+ "llama-3-8b-instruct",
76
+ "llama-3.1-405b-instruct-bf16",
77
+ "llama-3.1-405b-instruct-fp8",
78
+ "llama-3.1-70b-instruct",
79
+ "llama-3.1-8b-instruct",
80
+ "llama-3.1-nemotron-51b-instruct",
81
+ "llama-3.1-nemotron-70b-instruct",
82
+ "llama-3.1-tulu-3-70b",
83
+ "llama-3.1-tulu-3-8b",
84
+ "llama-3.2-1b-instruct",
85
+ "llama-3.2-3b-instruct",
86
+ "llama-3.3-70b-instruct",
87
+ "ministral-8b-2410",
88
+ "mistral-7b-instruct-v0.2",
89
+ "mistral-large-2402",
90
+ "mistral-large-2407",
91
+ "mistral-large-2411",
92
+ "mistral-medium",
93
+ "mixtral-8x22b-instruct-v0.1",
94
+ "mixtral-8x7b-instruct-v0.1",
95
+ "nemotron-4-340b-instruct",
96
+ "o1-2024-12-17",
97
+ "o1-mini",
98
+ "o1-preview",
99
+ "phi-3-medium-4k-instruct",
100
+ "phi-3-mini-128k-instruct",
101
+ "phi-3-mini-4k-instruct",
102
+ "phi-3-mini-4k-instruct-june-2024",
103
+ "phi-3-small-8k-instruct",
104
+ "qwen-max-0428",
105
+ "qwen-max-0919",
106
+ "qwen-plus-0828",
107
+ "qwen1.5-110b-chat",
108
+ "qwen1.5-14b-chat",
109
+ "qwen1.5-32b-chat",
110
+ "qwen1.5-72b-chat",
111
+ "qwen2-72b-instruct",
112
+ "qwen2.5-72b-instruct",
113
+ "qwen2.5-coder-32b-instruct",
114
+ "qwen2.5-plus-1127",
115
+ "qwq-32b-preview",
116
+ "reka-core-20240501",
117
+ "reka-core-20240722",
118
+ "reka-core-20240904",
119
+ "reka-flash-20240722",
120
+ "reka-flash-20240904",
121
+ "reka-flash-21b-20240226",
122
+ "reka-flash-21b-20240226-online",
123
+ "reka-flash-preview-20240611",
124
+ "smollm2-1.7b-instruct",
125
+ "snowflake-arctic-instruct",
126
+ "yi-1.5-34b-chat",
127
+ "yi-34b-chat",
128
+ "yi-large",
129
+ "yi-large-preview",
130
+ "yi-lightning",
131
+ "yi-lightning-lite"
132
+ ]
special_tokens_map.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_start|>",
4
+ "<|im_end|>",
5
+ "<|object_ref_start|>",
6
+ "<|object_ref_end|>",
7
+ "<|box_start|>",
8
+ "<|box_end|>",
9
+ "<|quad_start|>",
10
+ "<|quad_end|>",
11
+ "<|vision_start|>",
12
+ "<|vision_end|>",
13
+ "<|vision_pad|>",
14
+ "<|image_pad|>",
15
+ "<|video_pad|>"
16
+ ],
17
+ "cls_token": {
18
+ "content": "<|cls|>",
19
+ "lstrip": false,
20
+ "normalized": false,
21
+ "rstrip": false,
22
+ "single_word": false
23
+ },
24
+ "eos_token": {
25
+ "content": "<|im_end|>",
26
+ "lstrip": false,
27
+ "normalized": false,
28
+ "rstrip": false,
29
+ "single_word": false
30
+ },
31
+ "pad_token": {
32
+ "content": "<|endoftext|>",
33
+ "lstrip": false,
34
+ "normalized": false,
35
+ "rstrip": false,
36
+ "single_word": false
37
+ }
38
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4ec927f7a1845161c33d3a6c42ae6aad8e4d597b1fe282ca37b5c794f2498d42
3
+ size 11422346
tokenizer_config.json ADDED
@@ -0,0 +1,217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ },
181
+ "151665": {
182
+ "content": "<|cls|>",
183
+ "lstrip": false,
184
+ "normalized": false,
185
+ "rstrip": false,
186
+ "single_word": false,
187
+ "special": true
188
+ }
189
+ },
190
+ "additional_special_tokens": [
191
+ "<|im_start|>",
192
+ "<|im_end|>",
193
+ "<|object_ref_start|>",
194
+ "<|object_ref_end|>",
195
+ "<|box_start|>",
196
+ "<|box_end|>",
197
+ "<|quad_start|>",
198
+ "<|quad_end|>",
199
+ "<|vision_start|>",
200
+ "<|vision_end|>",
201
+ "<|vision_pad|>",
202
+ "<|image_pad|>",
203
+ "<|video_pad|>"
204
+ ],
205
+ "bos_token": null,
206
+ "chat_template": "{%- if messages[0]['role'] == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0]['content'] + '<|im_end|>\\n' }}\n{%- endif %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) or (message.role == \"assistant\" and not message.tool_calls) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role }}\n {%- if message.content %}\n {{- '\\n' + message.content }}\n {%- endif %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {{- tool_call.arguments | tojson }}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- message.content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n\n",
207
+ "clean_up_tokenization_spaces": false,
208
+ "cls_token": "<|cls|>",
209
+ "eos_token": "<|im_end|>",
210
+ "errors": "replace",
211
+ "extra_special_tokens": {},
212
+ "model_max_length": 131072,
213
+ "pad_token": "<|endoftext|>",
214
+ "split_special_tokens": false,
215
+ "tokenizer_class": "Qwen2Tokenizer",
216
+ "unk_token": null
217
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:117cde6472415cd10b0cfa0fdb148a7f7d262ec5608659ab93395e01b7cf7b65
3
+ size 7032
training_config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "proj_name": "Qwen2.5-1.5B-Instruct-bag-full-train-half-batch",
3
+ "learning_rate": 8e-06,
4
+ "adam_epsilon": 1e-08,
5
+ "batch_size": 4,
6
+ "max_length": 8192,
7
+ "num_train_epochs": 1,
8
+ "train_data_path": "full-p2l-bag-data-01082025",
9
+ "val_data_path": "p2el/canonical_bt_val_data_11092024",
10
+ "output_dir": "training_outputs",
11
+ "pretrain_model_name": "Qwen/Qwen2.5-1.5B-Instruct",
12
+ "gradient_accumulation_steps": 16,
13
+ "chat_template": "{%- if messages[0]['role'] == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0]['content'] + '<|im_end|>\\n' }}\n{%- endif %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) or (message.role == \"assistant\" and not message.tool_calls) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role }}\n {%- if message.content %}\n {{- '\\n' + message.content }}\n {%- endif %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {{- tool_call.arguments | tojson }}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- message.content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n\n",
14
+ "model_type": "qwen2",
15
+ "head_type": "rk",
16
+ "loss_type": "bag",
17
+ "weighted_loss": false,
18
+ "deepspeed_config_path": "deepspeed/zero1.json",
19
+ "init_type": "reset_params",
20
+ "load_train_data_from_disk": true
21
+ }
vocab.json ADDED
The diff for this file is too large to render. See raw diff