ViREx-Bench: A framework for inference-time scaling on Vietnamese reasoning tasks.
Project description
ViREx-Bench
A framework for inference-time scaling on Vietnamese reasoning tasks
Installation · Example of Usage · Development
[!WARNING] Work in progress: dataset format, evaluation protocol, and supported reasoning methods are under active development.
Overview
ViREx-Bench is a framework for inference-time scaling on Vietnamese reasoning tasks. The project is designed to benchmark different prompting strategies under consistent evaluation settings and measure how much each strategy improves over a direct-answer baseline.
Installation
You can install ViREx-Bench using uv:
uv add virex-bench
or using pip:
pip install virex-bench
Verify the installation by running:
uv run virex-bench --version
# or simply
uv run vb --version
Example of Usage
ViREx-Bench evaluates a model on a Vietnamese reasoning task using a prompting strategy and a decoding method. Models are served behind any OpenAI-compatible endpoint (e.g. vLLM, SGLang).
The example below evaluates a model on
vietnamese-logical-reasoning, which is scored with an LLM-as-a-judge. The default judge model isdeepseek/deepseek-v4-flash(you can override this via settingVIREX_BENCH_JUDGE_MODEL, e.g.export VIREX_BENCH_JUDGE_MODEL=deepseek/deepseek-v4-pro). To use the judge, exportVIREX_BENCH_JUDGE_API_KEYwith a valid API key.
Via the CLI
# Evaluate Qwen3.5-4B with Tree-of-Thought (with Beam search) on the vietnamese-logical-reasoning task
uv run vb run \
--model Qwen/Qwen3.5-4B \
--task vietnamese-logical-reasoning \
--strategy tot-beam \
--backend hosted_vllm \
--api-base https://your-endpoint/v1 \
--api-key "$OPENAI_API_KEY" \
--num-threads 32 \
--output-dir results
Via Python
import virex_bench as vb
# Init the model
lm = vb.get_model(
"Qwen/Qwen3.5-4B",
backend="hosted_vllm",
api_base="https://your-endpoint/v1",
api_key="<empty>",
)
# Get the task
task = vb.get_task("vietnamese-logical-reasoning")
# Select a strategy and decoding method
# Here we will use Tree-of-Thought with Beam search (tot-beam) as the strategy and single-pass decoding
strategy = task.get_strategy("tot-beam")
decoding = vb.get_decoding(name="single-pass", strategy=strategy)
report = vb.evaluate(
task=task,
lm=lm,
strategy=strategy,
decoding=decoding,
num_threads=32,
# max_examples=10, # Uncomment this line for quick testing with a small number of examples
)
vb.save_report(report, "./results")
print(f"{report.metric}={report.score:.4f} over {report.num_evaluated_examples} examples")
Development
Clone the repository and sync the environment with uv:
git clone https://github.com/minhnguyent546/ViREx-Bench.git
cd ViREx-Bench
uv sync # creates the venv and installs the package with dev dependencies
Quality checks — prefix commands with uv run so they use the project environment:
uv run --no-sync ruff check # lint
uv run --no-sync ruff format # format
uv run --no-sync pytest # test suite
uv run --no-sync ruff check path/to/file.py # scope lint/format to a single file
uv run --no-sync ruff format path/to/file.py
Serving models locally
ViREx-Bench talks to models through any OpenAI-compatible endpoint. To serve a model
locally with vLLM or SGLang, install the corresponding dependency group and use
the provided launchers — see scripts/serving/README.md for
hardware requirements and full instructions.
uv sync --group vllm-v0-23 # or: uv sync --group sglang-v0-5-14
[!IMPORTANT] These groups pull custom-built wheels (compiled against glibc 2.31 so they run on older Linux distros) that only target Python 3.12, Linux, x86_64. On anything else, the sync still succeeds but quietly installs nothing from the group. So if a serving import fails right after syncing, check
python --versionfirst — you likely need a 3.12 environment (uv venv --python 3.12). The benchmark itself works fine on Python 3.12–3.14.
License
This repository's source code and associated datasets are licensed under the GNU General Public License v3.0. See LICENSE for details.
Citing
If you find ViREx-Bench useful in your research, please consider citing:
@misc{nguyen2026virexbench,
author={Minh-Thien Nguyen},
title={{ViREx-Bench}: A Framework for Inference-Time Scaling on {Vietnamese} Reasoning Tasks},
year={2026},
howpublished={\url{https://github.com/minhnguyent546/ViREx-Bench}}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file virex_bench-0.1.2.tar.gz.
File metadata
- Download URL: virex_bench-0.1.2.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41e7980497432058211612044dc54d233249c374b026c2a5430409b7bc76dcb4
|
|
| MD5 |
e172ac33aa70b3fb964355af204cdcc8
|
|
| BLAKE2b-256 |
c9caea1ac427c760d9c84eae92079d585b1bf28c37ba433065d1276c428474e8
|
Provenance
The following attestation bundles were made for virex_bench-0.1.2.tar.gz:
Publisher:
release.yml on minhnguyent546/ViREx-Bench
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
virex_bench-0.1.2.tar.gz -
Subject digest:
41e7980497432058211612044dc54d233249c374b026c2a5430409b7bc76dcb4 - Sigstore transparency entry: 2125382027
- Sigstore integration time:
-
Permalink:
minhnguyent546/ViREx-Bench@54c2051e5c83a86d2743e5eceeed021b870ef883 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/minhnguyent546
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@54c2051e5c83a86d2743e5eceeed021b870ef883 -
Trigger Event:
release
-
Statement type:
File details
Details for the file virex_bench-0.1.2-py3-none-any.whl.
File metadata
- Download URL: virex_bench-0.1.2-py3-none-any.whl
- Upload date:
- Size: 121.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5555e5aef3ec9c9f5c468f8b42b91fe37e5d181e344022ac2218cd13f3104f40
|
|
| MD5 |
5d57f1002a324fa261247cc1957fadfd
|
|
| BLAKE2b-256 |
ba26854fb056668ae0b543709ae9983a0785d1e3a12c58f995728ddbd87447e9
|
Provenance
The following attestation bundles were made for virex_bench-0.1.2-py3-none-any.whl:
Publisher:
release.yml on minhnguyent546/ViREx-Bench
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
virex_bench-0.1.2-py3-none-any.whl -
Subject digest:
5555e5aef3ec9c9f5c468f8b42b91fe37e5d181e344022ac2218cd13f3104f40 - Sigstore transparency entry: 2125382044
- Sigstore integration time:
-
Permalink:
minhnguyent546/ViREx-Bench@54c2051e5c83a86d2743e5eceeed021b870ef883 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/minhnguyent546
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@54c2051e5c83a86d2743e5eceeed021b870ef883 -
Trigger Event:
release
-
Statement type: