File size: 3,008 Bytes
d467983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
{
  "engine": "onnx",
  "family": "arbiter",
  "layout": "arbiter-fixed-v1",
  "upstream": {
    "repo": "hiteshluke/arbiter-4b",
    "revision": "0c44271c59f89758e3cae17b032e98a9140093e9",
    "base": "unsloth/gemma-3-4b-it",
    "base_revision": "bf46152c47f5dd20b896357cb51abc4c03b8ee8c",
    "code": {
      "repo": "https://github.com/CodekinsTech/arbiter",
      "commit": "e1cb30fd3019cf91d2631a2d1004abd858b8e4fa",
      "script": "training_v3_6/train.py"
    },
    "lora": {
      "r": 16,
      "alpha": 32,
      "scaling": 2.0,
      "merged": false
    }
  },
  "contract": {
    "inputs": {
      "input_ids": {
        "dtype": "int64",
        "shape": [
          "rows",
          "seq"
        ],
        "note": "one row per question; seq a multiple of 64; right-pad with any id (pad)"
      },
      "last_pos": {
        "dtype": "int64",
        "shape": [
          "rows"
        ],
        "note": "position of the row's last token"
      }
    },
    "outputs": {
      "scores": {
        "dtype": "float32",
        "shape": [
          "rows",
          24
        ],
        "note": "raw scores of the head's 24 slots; a question's option logits are the scores at its slots"
      }
    },
    "seq_multiple": 64,
    "positions": "0..seq-1, implicit",
    "attention": "causal (sliding layers: the last 1024 positions); no mask input"
  },
  "max_row_tokens": 8192,
  "special_tokens": {
    "bos": 2,
    "pad": 0
  },
  "num_slots": 24,
  "slots": {
    "noul": [
      1,
      0
    ],
    "choice": [
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17
    ],
    "score": [
      18,
      19,
      20,
      21,
      22,
      23
    ]
  },
  "max_options": 16,
  "score_levels": 6,
  "verbalizers": [
    "T",
    "F",
    "A",
    "B",
    "C",
    "D",
    "E",
    "F",
    "G",
    "H",
    "I",
    "J",
    "K",
    "L",
    "M",
    "N",
    "O",
    "P",
    "0",
    "1",
    "2",
    "3",
    "4",
    "5"
  ],
  "templates": {
    "row": "[bos] tok(\"State: {render(state)}\\n\\nQuestion: {render(instructions)}\\n\\nOptions:\\n{block}\\n\\nAnswer:\"); the head is read at the last token",
    "noul_block": "T. Yes / True\nF. No / False",
    "choice_block": "{letter}. {option}, one line per option, letters A..P",
    "choice_option": "{name} | {name}: {render(description)}",
    "score_block": "0\n1\n2\n3\n4\n5",
    "render": "None->'', scalars->Python str(), list->'- item' lines, dict->'key: value' lines, 2-space nesting",
    "add_special_tokens": false
  },
  "option_logits": {
    "noul": "scores[row, [1, 0]] (false = F, true = T)",
    "choice": "scores[row, 2 + j] for option j < 16",
    "score": "scores[row, 18 + level] for level < 6"
  },
  "opset": 20,
  "precision": "fp32 compute; base weights and head BF16, widened by Cast (at load, or per forward pass with weights_in_memory bf16); adapter F32",
  "weights_in_memory": "bf16"
}