Skip to main content

ViREx-Bench: A framework for inference-time scaling on Vietnamese reasoning tasks.

Project description

ViREX-Bench ViREx-Bench

A framework for inference-time scaling on Vietnamese reasoning tasks

Installation · Example of Usage · Development

Zenodo DOI ViREX-Bench latest release License


[!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 is deepseek/deepseek-v4-flash (you can override this via setting VIREX_BENCH_JUDGE_MODEL, e.g. export VIREX_BENCH_JUDGE_MODEL=deepseek/deepseek-v4-pro). To use the judge, export VIREX_BENCH_JUDGE_API_KEY with 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 --version first — 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

virex_bench-0.1.2.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

virex_bench-0.1.2-py3-none-any.whl (121.5 kB view details)

Uploaded Python 3

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

Hashes for virex_bench-0.1.2.tar.gz
Algorithm Hash digest
SHA256 41e7980497432058211612044dc54d233249c374b026c2a5430409b7bc76dcb4
MD5 e172ac33aa70b3fb964355af204cdcc8
BLAKE2b-256 c9caea1ac427c760d9c84eae92079d585b1bf28c37ba433065d1276c428474e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for virex_bench-0.1.2.tar.gz:

Publisher: release.yml on minhnguyent546/ViREx-Bench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for virex_bench-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5555e5aef3ec9c9f5c468f8b42b91fe37e5d181e344022ac2218cd13f3104f40
MD5 5d57f1002a324fa261247cc1957fadfd
BLAKE2b-256 ba26854fb056668ae0b543709ae9983a0785d1e3a12c58f995728ddbd87447e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for virex_bench-0.1.2-py3-none-any.whl:

Publisher: release.yml on minhnguyent546/ViREx-Bench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page