Instructions to use ai-forever/Pollux-4B-Judge with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ai-forever/Pollux-4B-Judge with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="ai-forever/Pollux-4B-Judge") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("ai-forever/Pollux-4B-Judge") model = AutoModelForCausalLM.from_pretrained("ai-forever/Pollux-4B-Judge") 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]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps
- vLLM
How to use ai-forever/Pollux-4B-Judge with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ai-forever/Pollux-4B-Judge" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ai-forever/Pollux-4B-Judge", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/ai-forever/Pollux-4B-Judge
- SGLang
How to use ai-forever/Pollux-4B-Judge with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "ai-forever/Pollux-4B-Judge" \ --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": "ai-forever/Pollux-4B-Judge", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
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 "ai-forever/Pollux-4B-Judge" \ --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": "ai-forever/Pollux-4B-Judge", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use ai-forever/Pollux-4B-Judge with Docker Model Runner:
docker model run hf.co/ai-forever/Pollux-4B-Judge
Pollux-4B-Judge
Pollux-4B-Judge is a 4-billion parameter generative language model specifically designed to evaluate the quality of other language models' responses in Russian. The model assesses answer quality given input instruction, specific criteria and rubrics, providing automated LLM performance evaluation for Russian-language tasks.
Model Details
Model Description
Pollux-4B-Judge is an integral component of the POLLUX project, a comprehensive initiative dedicated to evaluating the generative capabilities of Large Language Models (LLMs). At the heart of this project lies the Qwen/Qwen3-4B, which introduces systematic taxonomies for both generative tasks and evaluation criteria, providing quantitative and qualitative assessments of responses from top-tier LLMs.
Built upon the Qwen/Qwen3-4B architecture, Pollux-4B-Judge is a decoder-based 4 billion parameter model trained in a sequence-to-sequence fashion. The model is designed to predict both numerical scores and detailed textual rationales based on the original instruction, the LLM's response, specific evaluation criteria, scoring rubrics, and reference answers when available.
While the model is technically capable of processing any type of instruction and criterion when properly formatted, its training has been specifically optimized using the generative tasks and evaluation criteria derived from the taxonomies established within the POLLUX dataset.
- Model type: decoder
- Language(s) (NLP): Russian
- License: MIT
- Finetuned from model: Qwen/Qwen3-4B
Model Sources
- Repository: POLLUX code base
- Paper: ArXiv preprint
Uses
Direct Use
Pollux-4B-Judge is specifically designed for assessing text responses against a single, predefined criterion per evaluation run. The model operates optimally when provided with all essential components: the source instruction, the response to be evaluated (typically generated by another LLM), the specific evaluation criterion, and its corresponding scoring rubrics.
Out-of-Scope Use
While the model may technically process multiple criteria simultaneously, such usage falls outside its intended design and may yield unpredictable results. Similarly, the model is not designed to function autonomously in determining appropriate evaluation criteria—it requires explicit criterion specification to perform reliable assessments.
For optimal performance and reliable results, users should structure each evaluation session around one criterion at a time, providing all necessary contextual components to enable the model's comprehensive scoring and rationale generation capabilities.
MODEL OUTPUT DISCLAIMER AND LIMITATION OF LIABILITY
All content, responses, and outputs generated by Pollux-4B-Judge (the "Model") are produced through automated computational processes based on statistical patterns learned from pre-training data. Such outputs do not constitute statements, opinions, recommendations, or positions of the model developers, publishers, or affiliated entities (collectively, the "Developers").
The Model's outputs do not represent, reflect, or endorse any views, beliefs, policies, or positions held by the Developers. Generated content should not be interpreted as official statements, advice, or guidance from the Developers.
While the Developers employed appropriate data curation practices during fine-tuning and avoided the intentional inclusion of inappropriate content, the Model's responses may reflect patterns present in the underlying pre-training datasets, which were sourced from publicly available internet content and other large-scale text corpora.
The Developers expressly disclaim responsibility for any content generated by the Model. Users acknowledge that:
- Generated outputs are probabilistic and may contain inaccuracies, biases, or inappropriate content
- The Developers cannot guarantee the accuracy, completeness, or appropriateness of any Model output
- Users assume full responsibility for evaluating and using Model-generated content
Users are solely responsible for reviewing, validating, and determining the appropriateness of any Model-generated content before use or distribution.
How to Get Started with the Model
Install the required packages:
pip install vllm==0.19.0
pip install transformers==5.3.0
pip install openai
Start the vLLM OpenAI-compatible server:
vllm serve ai-forever/Pollux-4B-Judge --tensor-parallel-size 1 --reasoning-parser qwen3
Use the code below to send requests to the running server:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY",
)
PROMPT_TEMPLATE = """### Задание для оценки:
{instruction}
### Эталонный ответ:
{reference_answer}
### Ответ для оценки:
{answer}
### Критерий оценки:
{criteria_name}
### Шкала оценивания по критерию:
{criteria_rubrics}
"""
instruction = "Сколько будет 2+2?"
reference_answer = "4"
answer = "Будет 4"
criteria_name = "Правильность ответа"
criteria_rubrics = """0: Дан неправильный ответ или ответ отсутствует.
1: Ответ модели неполный (не на все вопросы задания получен ответ, в формулировке ответа отсутствует часть информации).
2: Ответ модели совпадает с эталонным или эквивалентен ему."""
prompt = PROMPT_TEMPLATE.format(
instruction=instruction,
reference_answer=reference_answer,
answer=answer,
criteria_name=criteria_name,
criteria_rubrics=criteria_rubrics,
)
response = client.chat.completions.create(
model="ai-forever/Pollux-4B-Judge",
messages=[{"role": "user", "content": prompt}],
max_tokens=512,
temperature=0.0,
)
score = response.choices[0].message.content.strip()
reasoning = response.choices[0].message.reasoning
print(score)
print(reasoning)
Training Details
Training Data
Given the substantial time investment required for manual dataset creation—approximately 24,447 hours for the POLLUX dataset—we opted to employ synthetic data for training purposes, as acquiring a manually composed training set of comparable size was not feasible.
Our synthetic data generation process proceeded in several stages. Initially, we generated 78,000 instructions using three state-of-the-art language models: DeepSeekV3, OpenAI GPT-4o, and o3-mini, with each model contributing equally to the instruction pool. These instructions were based on the POLLUX tasks taxonomy and complexity levels to ensure consistency with the original framework. Training data does not include Recommendations, Applied Brainstorming, Literary Text Generation, Questions Generation, Style Transfer, Code Modification, and AI as a Character tasks alongside corresponding Task-specific criteria to enable out-of-domain evaluation of the resulting LM-as-a-Judge model. To maintain data quality, we implemented filtering procedure that removed instructions containing more than 5% non-Russian tokens as well as duplicate entries, ultimately yielding a refined set of 26,000 high-quality instructions.
Subsequently, we mapped these synthetic instructions to their corresponding evaluation criteria sets using the same algorithm employed in the original POLLUX dataset. Each criteria set comprised Critical, General, Subjective, and relevant Domain- and Task-specific criteria (for detailed methodology, see Section 2.3 in the preprint). To generate diverse responses, we employed 15 open-source language models from various families, including Llama, Phi, Qwen, Mistral, and Gemma, with each model contributing equally to the answer generation process, for the complete listing of the models see Appendix M.2 in the preprint).
For criteria annotation, we utilized DeepSeek-R1, which generated numerical scores based on established criterion rubrics along with corresponding rationales for each evaluation. This systematic approach resulted in 8,000,000 samples, each containing the complete tuple of (instruction, answer, criterion, score, rationale). From this dataset, we performed stratified random sampling across tasks to obtain our final training set of 1,000,000 samples, ensuring balanced representation across different task categories.
Training Procedure
The model was trained in sequence-to-sequence fashion. Input includes source instruction, LLM's answer, name of criterion, its rubrics and reference answer if present. The output is expected to be numerical score from provided rubrics and textual explanation.
Evaluation
Testing Data, Factors & Metrics
Testing Data
For testing data we employed the POLLUX dataset. Note this provides both in- and out-of-domain evaluation as some of the tasks and criteria are absent in training data.
Metrics
We employed RMSE, macro F1, and Spearman’s rank correlation with expert judgements to assess the performance of Pollux-4B-Judge and compare it with those of the reference models.
RMSE offers a high degree of interpretability, as it is measured on the same scale as the annotation – specifically, in points. Macro F1 captures score classification quality across labels, while Spearman’s rank correlation allows to quantify the degree of monotonic association between the two rankings of models outputs and to demonstrate how consistently the LLM-as-Judge reproduces the relative ordering of output quality as established by human experts.
Results
We report aggregate evaluation results in the table below.
| Модель | RMSE↓ | macro F1↑ | Корреляция Спирмена↑ |
|---|---|---|---|
| Pollux-4B-Judge | 0,568 | 0,705 | 0,744 |
| Pollux-7B-Judge-Base | 0,703 | 0,406 | 0,572 |
| Pollux-32B-Judge-Base | 0,700 | 0,546 | 0,578 |
| Qwen/Qwen3.5-4B | 0,722 | 0,436 | 0,582 |
| Qwen/Qwen3.5-35B-A3B | 0,620 | 0,473 | 0,664 |
| Qwen/Qwen3.5-122B-A10B | 0,613 | 0,475 | 0,669 |
| gpt-oss-120b | 0,654 | 0,462 | 0,635 |
| Minimax-M2.5 (229B) | 0,651 | 0,617 | 0,635 |
| Qwen/Qwen3.5-397B-A17B | 0,600 | 0,481 | 0,684 |
| Kimi-K2.5 (1.1T) | 0,612 | 0,478 | 0,673 |
| GLM-4.7 (358b) | 0,626 | 0,479 | 0,678 |
| Gemma4-31b | 0,632 | 0,479 | 0,680 |
Citation
BibTeX:
@misc{martynov2025eyejudgementdissectingevaluation,
title={Eye of Judgement: Dissecting the Evaluation of Russian-speaking LLMs with POLLUX},
author={Nikita Martynov and Anastasia Mordasheva and Dmitriy Gorbetskiy and Danil Astafurov and Ulyana Isaeva and Elina Basyrova and Sergey Skachkov and Victoria Berestova and Nikolay Ivanov and Valeriia Zanina and Alena Fenogenova},
year={2025},
eprint={2505.24616},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.24616},
}
- Downloads last month
- 749
