PEFT
Safetensors
English
File size: 7,564 Bytes
1d4dd3e
15ce816
1d4dd3e
3f350bb
 
 
 
 
1d4dd3e
 
3f350bb
1d4dd3e
3f350bb
1d4dd3e
3f350bb
1d4dd3e
3f350bb
1d4dd3e
3f350bb
 
 
1d4dd3e
3f350bb
1d4dd3e
3f350bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1d4dd3e
9bd0905
 
 
a4845eb
1d4dd3e
3f350bb
 
 
 
 
 
 
 
 
1d4dd3e
 
 
3f350bb
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
---
base_model: Qwen/Qwen3-0.6B
library_name: peft
datasets:
- Skywork/Skywork-Reward-Preference-80K-v0.2
- allenai/reward-bench
language:
- en
---

# Model Card: j1-nano from Haize Labs

`j1-nano` from Haize Labs is a dimunitive (0.6B) but mighty reward model. It is trained on Skywork Reward Preference 80K v0.2 by scaling judge-time compute. Uniquely, `j1-nano` proposes item-level evaluation criteria and reasoning before arriving at a final evaluation score.

`j1-nano` is surprisingly cogent, especially given its small number of parameters. 

`j1-nano` is competitive on RewardBench vis-à-vis **much** larger models including GPT-3.5-turbo-0125, ContextualAI/archangel_sft-dpo_llama30b, allenai/tulu-v2.5-13b-uf-rm, etc.

<p>
<img src=https://cdn-uploads.huggingface.co/production/uploads/64c13ee9e98a5e02c93459ee/fsCrYb_0_k9T2GsmLnrrt.png width="400">
</p>

## Model Details

- Base Model: `j1-nano` is a LoRA [SPCT](https://arxiv.org/abs/2504.02495)-finetune off of `Qwen/Qwen3-0.6B`
- Github: https://github.com/haizelabs/j1-micro
- Performance: by far the smallest model to achieve >60% accuracy on RewardBench
- Development Time: 1 Day
- Development Resources: 1 A100 80GB GPU
- Developer: Haize Labs Inc.

## Results

<div>

| Model | RewardBench Score |
|-------|:-------------:|
| Tulu-2-70b | 77.20% |
| Claude-3-Opus-20240229 | 80.10% |
| GPT-4o-mini-2024-07-18 | 80.10% |
| Llama-3-70B-Instruct | 77.00% |
| Qwen3-1.7B | 29.51% |
| Qwen3-1.7B (Soft Match) | 69.38% |
| **j1-micro** | **80.70%** |

<em>Table 1: RewardBench scores for `j1-micro` (1.7B). `j1-micro` is competitive with models several orders of magnitude larger.</em>

</div>

<br>

<div>

| Model | RewardBench Score |
|-------|:-------------:|
| allenai/tulu-v2.5-13b-uf-rm | 46.1% |
| ContextualAI/archangel_sft-dpo_llama30b | 56.10% |
| Qwen/Qwen1.5-4B-Chat | 56.00% |
| GPT-3.5-turbo-0125 | 65.30% |
| Qwen3-0.6B | 0% |
| Qwen3-0.6B (Soft Match) | 0% |
| **j1-nano** | **62.35%** |

<em>Table 2: RewardBench scores for `j1-nano` (0.6B). To our knowledge, `j1-nano` is by far the smallest model to achieve >60% accuracy on RewardBench.</em>

</div>

## Using j1-nano

First, spin up a local vLLM server:

```bash
vllm serve Qwen/Qwen3-0.6B --enable-lora --lora-modules j1-nano=[path-to-snapshot]
```


Run the [test script](https://github.com/haizelabs/j1-micro/blob/master/test_j1.py) provided in the repository:

```bash
python test_j1.py --model-name j1-nano
```

The test script uses the following prompts:

```python
judge_system_prompt = """
    You are an expert XML wrangler. You must respond in the following format, regardless of the input:
    
    <specific_criteria>
    ...
    </specific_criteria>
    <analysis>
    ...
    </analysis>
    <scores>
    \\boxed{{..., ...}}
    </scores>

    Please only respond in English.
    """

judge_prompt_template = """
    You are a skilled little expert at scoring responses. You should evaluate given responses based on the given judging criteria.
    Given the context of the conversation (the last round is the User's query) and multiple responses from the Assistant, you need to refer to the [General Evaluation Criteria] to score the responses. Based on the general evaluation criteria, state potential other specific criteria to the query, the weights of different criteria, and then provide an overall comprehensive score upon them.
    Each score is an integer between 1 and 10, with a higher score indicating that the response meets the relevant criteria more closely. For example, a score of 1 means the response does not meet the criteria at all, a score of 6 means the response meets only some parts, and a score of 10 means the response perfectly meets the evaluation criteria.
    Before scoring, please analyze step by step. Your scoring needs to be as strict as possible.

    #### Evaluation Criteria ####
    1. Instruction Adherence:
    - Fully Adhered (9-10 points): The response fully complies with all instructions and requirements of the question.
    - Partially Adhered (6-8 points): The response meets most of the instructions but has some omissions or misunderstandings.
    - Basically Adhered (3-5 points): The response meets some instructions, but the main requirements are not fulfilled.
    - Not Adhered (1-2 points): The response does not meet any instructions.
    Example: If the question requires three examples and the response provides only one, it falls under "Partially Adhered."
    2. Usefulness:
    - Highly Useful (9-10 points): The response provides comprehensive and accurate information, fully addressing the issue.
    - Useful but Incomplete (6-8 points): The response provides some useful information, but lacks details or accuracy.
    - Limited Usefulness (3-5 points): The response offers little useful information, with most content being irrelevant or incorrect.
    - Useless or Incorrect (1-2 points): The response is completely irrelevant or incorrect.
    Example: If there are factual errors in the response but the overall direction is correct, it falls under "Useful but Incomplete."
    3. Level of Detail:
    - Very Detailed (9-10 points): The response includes ample details covering all aspects of the issue.
    - Detailed but Slightly Lacking (6-8 points): The response is fairly detailed but misses some important details.
    - Basically Detailed (3-5 points): The response provides some details but is not thorough enough overall.
    - Not Detailed (1-2 points): The response is very brief and lacks necessary details.
    Example: If the response provides only a simple conclusion without an explanation, it falls under "Not Detailed."
    4. Relevance:
    - Highly Relevant (9-10 points): The response is highly relevant to the question, with information closely aligned with the topic.
    - Generally Relevant (6-8 points): The response is generally relevant but includes some unnecessary information.
    - Partially Relevant (3-5 points): The response has a lot of content that deviates from the topic.
    - Not Relevant (1-2 points): The response is completely irrelevant.
    Example: If the response strays from the topic but still provides some relevant information, it falls under "Partially Relevant."

    #### Conversation Context ####
    {conversation_context_query}
    #### Responses to be Scored ####
    [The Begin of Response A]
    {response_a}
    [The End of Response A]
    [The Begin of Response B]
    {response_b}
    [The End of Response B]
    #### Output Format Requirements ####

    Output with three lines
    <specific_criteria>
    [Other potential criteria specific to the query and the context, and the weights of each criteria.]
    </specific_criteria>
    <analysis>
    [Compare different responses based on given Criteria.]
    </analysis>
    <scores>
    [The overall comprehensive score of all responses in order, separate by comma in the boxed, e.g., \\boxed{{x, x}} if there exists 2 responses.]
    </scores>
    """
```

`j1-micro` outputs `specific_criteria` unique to the (pairwise) data being evaluated, `analysis` of the data with respect to `specific_criteria`, and finally a pair of `scores` in `\boxed{x,y}` ultimately indicating response preference.


## Citation

```bibtex
@misc{j1micro2025,
    title = {j1-micro and j1-nano: Tiny Generalist Reward Models via Inference-Time Rubric Proposal},
    author = {Haize Labs},
    url = {https://github.com/haizelabs/j1-micro},
    month = {May},
    year = {2025}
}
```

## Model Card Contact

[leonardtang.me](https://leonardtang.me/)