RubricARROW
Collection
2 items • Updated
How to use OpenRubrics/RubricARROW-8B-Rubric with Transformers:
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("text-generation", model="OpenRubrics/RubricARROW-8B-Rubric")
messages = [
{"role": "user", "content": "Who are you?"},
]
pipe(messages) # Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("OpenRubrics/RubricARROW-8B-Rubric")
model = AutoModelForCausalLM.from_pretrained("OpenRubrics/RubricARROW-8B-Rubric")
messages = [
{"role": "user", "content": "Who are you?"},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))How to use OpenRubrics/RubricARROW-8B-Rubric with vLLM:
# Install vLLM from pip:
pip install vllm
# Start the vLLM server:
vllm serve "OpenRubrics/RubricARROW-8B-Rubric"
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "OpenRubrics/RubricARROW-8B-Rubric",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'docker model run hf.co/OpenRubrics/RubricARROW-8B-Rubric
How to use OpenRubrics/RubricARROW-8B-Rubric with SGLang:
# Install SGLang from pip:
pip install sglang
# Start the SGLang server:
python3 -m sglang.launch_server \
--model-path "OpenRubrics/RubricARROW-8B-Rubric" \
--host 0.0.0.0 \
--port 30000
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:30000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "OpenRubrics/RubricARROW-8B-Rubric",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--env "HF_TOKEN=<secret>" \
--ipc=host \
lmsysorg/sglang:latest \
python3 -m sglang.launch_server \
--model-path "OpenRubrics/RubricARROW-8B-Rubric" \
--host 0.0.0.0 \
--port 30000
# Call the server using curl (OpenAI-compatible API):
curl -X POST "http://localhost:30000/v1/chat/completions" \
-H "Content-Type: application/json" \
--data '{
"model": "OpenRubrics/RubricARROW-8B-Rubric",
"messages": [
{
"role": "user",
"content": "What is the capital of France?"
}
]
}'How to use OpenRubrics/RubricARROW-8B-Rubric with Docker Model Runner:
docker model run hf.co/OpenRubrics/RubricARROW-8B-Rubric
This is an 8B rubric generation model, introduced in the paper RUBRIC-ARROW: Alternating Pointwise Rubric Reward Modeling for LLM Post-training in Non-verifiable Domains.
It is finetuned from Qwen3/Qwen3-8B.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "OpenRubrics/RubricARROW-8B-Rubric"
tok = AutoTokenizer.from_pretrained(model_id, use_fast=True)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto")
To evaluate the model, please use the following format to build up message.
RUBRIC_PROMPT_TEMPLATE = (
"Your task is to extract a set of rubric-style instructions from a user's request.\n"
"These rubrics will be used as evaluation criteria to check if a response fully meets the request.\n"
"Every rubric item must be a universal principle. If any rubric still contains topic-specific references (e.g., names, places, myths, numbers, historical facts), it is automatically invalid.\n"
"\n"
"- **Two Distinct Categories:**\n"
" - [Hard Rule]: Derived strictly from explicit requirements stated in the <request> (format, length, structure, forbidden/required elements, etc.).\n"
" - [Principle]: Derived by abstracting any concrete cues into domain-agnostic quality criteria (e.g., clarity, correctness, sound reasoning, pedagogy).\n"
"\n"
"- **Comprehensiveness:**\n"
" The rubric must cover all critical aspects implied by the request and examples, including explicit requirements and implicit quality standards.\n"
"\n"
"- **Conciseness & Uniqueness:**\n"
" Each rubric must capture a distinct evaluation criterion. Overlapping or redundant criteria must be merged into a single rubric. Wording must be precise and free of repetition.\n"
"\n"
"- **Format Requirements:**\n"
" - Use a numbered list.\n"
" - Each item starts with \"The response\" phrased in third person.\n"
" - Append [Hard Rule] or [Principle] at the end of each item.\n"
" - Do not include reasoning, explanations, or examples in the final output—only the rubrics.\n"
"\n"
"Here is the request:\n"
"{prompt}\n"
"\n"
"Please generate the rubrics for the above request."
)
user_text = RUBRIC_PROMPT_TEMPLATE.format(
prompt=instruction,
)
messages_list = [
{"role": "user", "content": user_text},
]
message = tok.apply_chat_template(
messages_list,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False
)
# Remaining step: Use either HF or vLLM for evaluation.
# ...
# ...
If you find our work helpful, please consider citing our paper:
@misc{jiang2026rubric,
title={RUBRIC-ARROW: Alternating Pointwise Rubric Reward Modeling for LLM Post-training in Non-verifiable Domains},
author={Haoxiang Jiang and Zihan Dong and Tianci Liu and Wanying Wang and Ran Xu and Tony Yu and Linjun Zhang and Haoyu Wang},
year={2026},
eprint={2605.29156},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2605.29156},
}