Parameters#
Run evalscope eval --help to get the full list of parameters.
Environment Variables#
The following environment variables can be set before launch to control global default behavior:
Environment Variable |
Description |
Default |
|---|---|---|
|
Root cache directory for EvalScope, used to store datasets, intermediate evaluation files, etc. |
|
|
Global default language, affects output language for reports, etc. ( |
|
|
Heartbeat reporting interval (seconds) |
|
|
Root cache directory for ModelScope models and datasets |
|
|
Batch size for dataset transformation |
|
Model Parameters#
Parameter |
Type |
Description |
Default |
|---|---|---|---|
|
|
Name of the model to be evaluated |
- |
|
|
Alias for the evaluated model, used in reports |
Last part of |
|
|
Model API endpoint, supports OpenAI-compatible and OpenAI Responses API roots |
|
|
|
Model API endpoint key |
|
|
|
Model loading parameters, comma-separated |
|
|
|
Model task type |
|
|
|
Model inference template, supports Jinja template string |
|
Example:
# key=value format
--model-args revision=master,precision=torch.float16,device_map=auto
# JSON string format
--model-args '{"revision": "master", "precision": "torch.float16", "device_map": "auto"}'
Model Inference Parameters#
The --generation-config parameter supports the following options (comma-separated key=value or JSON string):
Parameter |
Type |
Description |
Supported Backends |
|---|---|---|---|
|
|
Request timeout (seconds) |
All |
|
|
Number of retries, default is 5. |
OpenAI-compatible |
|
|
Retry interval (seconds), default is 10. |
OpenAI-compatible |
|
|
Whether to return responses in streaming mode |
All |
|
|
Maximum number of tokens generated |
All |
|
|
Nucleus sampling; only considers tokens accounting for top_p probability mass |
All |
|
|
Sampling temperature, range 0~2; higher means more randomness |
All |
|
|
Sequences that trigger stop generation; the returned text does not include the stop sequence |
All |
|
|
Range -2.0~2.0; positive values penalize repeated tokens |
OpenAI-compatible |
|
|
Range -2.0~2.0; positive values penalize already appeared tokens |
OpenAI-compatible |
|
|
Exponential penalty applied to existing tokens. 1.0 means no penalty |
OpenAI-compatible, HuggingFace, vLLM |
|
|
Mapping of token IDs to bias values (-100~100) |
OpenAI-compatible |
|
|
Random seed |
OpenAI-compatible |
|
|
Whether to use sampling strategy (otherwise greedy decoding) |
Transformers |
|
|
Sample next token from the top_k most likely candidates |
Anthropic, Google, HuggingFace, vLLM, SGLang |
|
|
Whether to return log probabilities for output tokens |
OpenAI-compatible, HuggingFace, llama-cpp-python |
|
|
Return the top N tokens and their probabilities (range 0~20) |
OpenAI-compatible, HuggingFace |
|
|
Whether to support parallel tool calls |
OpenAI, Groq |
|
|
Request structured output (JSON Schema); the output still needs to be validated |
OpenAI, Google, Mistral |
|
|
Reasoning effort level, passed through to the server as-is (e.g. |
OpenAI-compatible |
|
|
Maximum tokens budget for reasoning (thinking budget) |
Anthropic Claude |
|
|
Reasoning summary verbosity. One of |
OpenAI reasoning series |
|
|
How to encode prior-turn assistant |
OpenAI-compatible |
|
|
Extra request body for OpenAI-compatible services |
OpenAI-compatible services |
|
|
Extra query parameters for OpenAI-compatible services |
OpenAI-compatible services |
|
|
Extra headers for OpenAI-compatible services |
OpenAI-compatible services |
|
|
For image generation models, specifies image height |
Image generation models |
|
|
For image generation models, specifies image width |
Image generation models |
|
|
For image models, number of inference steps |
Image generation models |
|
|
For image models, guidance scale |
Image generation models |
Example:
# key=value format
--generation-config do_sample=true,temperature=0.5
# JSON string format (supports more complex parameters)
--generation-config '{"do_sample":true,"temperature":0.5,"extra_body": {"chat_template_kwargs":{"enable_thinking": false}}}'
Dataset Parameters#
Parameter |
Type |
Description |
Default |
|---|---|---|---|
|
|
Dataset name list, space-separated |
- |
|
|
Dataset download path |
|
|
|
Dataset source |
|
|
|
Maximum samples to evaluate per dataset |
|
|
|
Number of times to repeat inference on the same sample |
|
|
|
Dataset configuration parameters (JSON string), see table below |
|
dataset-args Configuration Options#
--dataset-args is a JSON string; each dataset can be configured with the following parameters:
Parameter |
Type |
Description |
|---|---|---|
|
|
ModelScope dataset ID or local path |
|
|
Local dataset path, deprecated, please use |
|
|
Timeout for evaluation samples (seconds), recommended for code tasks |
|
|
Prompt template, example: |
|
|
System prompt |
|
|
List of dataset subsets to evaluate |
|
|
Number of few-shot examples |
|
|
Whether to randomly sample few-shot data |
|
|
Whether to shuffle the data |
|
|
Whether to shuffle choice order (multiple-choice only) |
|
|
Metric list. Use canonical names such as |
|
|
Aggregation method for evaluation results, default is |
|
|
Output filters |
|
|
Whether to force re-download the dataset |
|
|
Dataset-related extra parameters, refer to dataset documentation, specify |
|
|
Sandbox configuration (see Sandbox Parameters below) |
sandbox_config Options:
Parameter |
Type |
Description |
Default |
|---|---|---|---|
|
|
Docker image name |
|
|
|
Whether to enable networking |
|
|
|
Tool configuration dictionary |
|
Example:
--datasets gsm8k arc ifeval hle \
--dataset-args '{
"gsm8k": {
"few_shot_num": 4,
"few_shot_random": false
},
"arc": {
"dataset_id": "/path/to/arc"
},
"ifeval": {
"filters": {
"remove_until": "</think>"
}
},
"hle": {
"extra_params": {
"include_multi_modal": false
}
}
}'
Evaluation Parameters#
Parameter |
Type |
Description |
Default |
|---|---|---|---|
|
|
Evaluation type |
|
|
|
Evaluation batch size, applies to the following stages: |
|
|
|
Evaluation backend |
|
|
|
Configuration file path for non-Native backends |
- |
See also
Refer to the other backend usage guide
Judge Parameters#
Native LLM judging is configured through one typed judge object. In Python/YAML use judge={...}; on the CLI use
--judge '<JSON object>'.
TaskConfig(
model='MODEL',
datasets=['simple_qa'],
judge={
'strategy': 'llm',
'models': {
'model_id': 'JUDGE_MODEL',
'api_url': 'OPENAI_COMPATIBLE_URL',
'api_key': 'JUDGE_API_KEY',
'generation_config': {'temperature': 0.0, 'retries': 3},
},
'repeats': 1,
'position_swap': 'auto',
'aggregation': 'mean',
'min_valid_judges': 1,
},
)
models accepts one object or a list of objects. A list enables independent judges; every entry needs a unique
judge_id when the same model_id occurs more than once. judge_id defaults to a unique model_id.
Field |
Type |
Description |
Default |
|---|---|---|---|
|
|
|
|
|
|
One or more Judge model configurations. |
|
|
|
Independent verdict observations per Judge, distinct from transport retries. |
|
|
|
|
|
|
|
Cross-observation aggregation for ordinary metrics. |
|
|
|
Minimum valid Judge verdicts required for a metric. |
|
Each entry in models supports judge_id, model_id, api_key, api_url, eval_type, model_args, and
generation_config. Provider-specific model initialization options belong in model_args; transport retry belongs
in generation_config.retries.
judge.contract configures the generic single-verdict judge only: system_prompt, prompt_template,
score_mapping, and score_type. pattern asks the Judge for a JSON verdict label selected from score_mapping;
numeric asks for a JSON score in [0, 1]. The framework appends the JSON-format instruction, parses the normal
model response once, and never uses constrained decoding, regex score extraction, or corrective follow-up prompts.
An invalid reply is unavailable and excluded from the metric rather than reported as zero.
Reports include JudgeSummary with coverage, failure counts, and disagreement for samples reviewed by an LLM.
When an adapter resolves a sample through a deterministic judge short-circuit, its score metadata records
judge_skipped=true and judge_skip_reason; the web review panel labels it as rule-based scoring instead of an
LLM verdict. Native evaluations require an exact cached evaluation identity match before reusing predictions and
reviews. With rerun_review=True, predictions are reused and the review cache is atomically replaced after
success; it is the explicit override for an identity mismatch, and the generated config records the prediction
source under the current evaluation version.
judge_strategy and a single mapping judge_model_args remain accepted only as a deprecated input migration. The
removed judge_worker_num and score_pattern are rejected.
Sandbox Parameters#
EvalScope manages sandbox settings via the nested --sandbox configuration (mapped to SandboxTaskConfig).
βsandbox Options#
Field |
Type |
Description |
Default |
|---|---|---|---|
|
|
Whether to enable the sandbox |
|
|
|
Sandbox engine: |
|
|
|
Task-level sandbox config; merged with |
|
|
|
Forwarded to the ms_enclave manager (e.g. |
|
|
|
Warmup pool size for pooled execution; falls back to |
|
For full usage including local and remote manager examples, see Sandbox Environment Usage.
Agent Parameters#
--agent-config / agent_config enables Agent Evaluation: once set, all benchmarks based on DefaultDataAdapter switch to native AgentLoop inference, or delegate to a third-party CLI such as Claude Code / Codex via the external Agent Bridge. AgentLoopAdapter subclasses (such as swe_bench_*_agentic) keep their benchmark defaults but accept supported explicit overrides such as strategy, step limit, and tools.
Parameter |
Type |
Description |
Default |
|---|---|---|---|
|
|
Global Agent configuration (see below) |
|
agent-config Options#
Field |
Type |
Description |
Default |
|---|---|---|---|
|
|
Strategy name: |
|
|
|
Tool whitelist: |
|
|
|
Agent command environment, such as |
|
|
|
Agent environment constructor options; Docker images belong in |
|
|
|
Hard upper bound of loop iterations |
|
|
|
Strategy constructor kwargs, e.g. |
|
See also
For full usage, examples and Trace visualization, see Agent Evaluation.
Other Parameters#
Parameter |
Type |
Description |
Default |
|---|---|---|---|
|
|
Evaluation output path (see directory structure below) |
|
|
|
Do not add timestamp to work_dir |
|
|
|
Reuse local cache path (e.g., |
|
|
|
Used with |
|
|
|
Whether to enable progress tracking, writing hierarchical evaluation progress to |
|
|
|
Collect per-request performance metrics (latency, TTFT, token usage) and write them into the evaluation report. TTFT requires |
|
|
|
Random seed |
|
|
|
Whether to enable debug mode |
|
|
|
Whether to ignore errors during generation |
|
|
|
Dry run to check parameters without executing inference |
|
work-dir Directory Structure Example#
./outputs/{timestamp}/
βββ configs/
β βββ task_config_b6f42c.yaml # Task configuration
βββ logs/
β βββ eval_log.log # Evaluation log
βββ predictions/
β βββ {model_id}/
β βββ {dataset}.jsonl # Model inference results
βββ reports/
β βββ {model_id}/
β βββ {dataset}.json # Evaluation report
βββ reviews/
β βββ {model_id}/
β βββ {dataset}.jsonl # Evaluation result details
βββ progress.json # Progress tracking file (generated when --enable-progress-tracker is enabled)
Example progress.json format:
{
"status": "running",
"pipeline": "eval",
"total_count": 14042,
"processed_count": 5200,
"percent": 37.03,
"stage": {
"name": "Evaluating", "label": "mmlu",
"current": 1, "total": 3, "status": "running",
"children": [
{"name": "Predicting", "label": "mmlu@test", "current": 1000, "total": 1000, "status": "completed", "children": []},
{"name": "Reviewing", "label": "mmlu@test", "current": 320, "total": 1000, "status": "running", "children": []}
]
},
"updated_at": "2026-03-09T10:05:42Z"
}