Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches. Co-authored-by: Cursor <cursoragent@cursor.com>
4.2 KiB
4.2 KiB
MILU
Overview
MILU (Multi-task Indic Language Understanding Benchmark) is a comprehensive evaluation dataset for assessing LLM performance across 11 Indic languages. It spans 8 domains and 41 subjects, combining translated general-knowledge questions with culturally specific Indian content.
Task Description
- Task Type: Multilingual Multiple-Choice Question Answering
- Input: Question with four answer choices in one of 11 languages
- Output: Single correct answer letter
- Languages: English, Bengali, Gujarati, Hindi, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu
Key Features
- 8 domains / 41 subjects, including India-specific culture, history, and current affairs
- Native-language questions rather than machine-translated MMLU
- Each language is a separate dataset config, loaded independently
Evaluation Notes
- Default configuration uses 0-shot evaluation (test split)
- Use
subset_listto evaluate specific languages (e.g.,['Hindi', 'Tamil']), orlimitto cap sample count — evaluating all 11 languages' full test splits is a large run - Set
few_shot_num> 0 to enable few-shot prompting; examples are drawn from thevalidationsplit - Loads from ModelScope by default (evalscope's default
dataset_hub), where this dataset is public and needs no token. If you explicitly setdataset_hubtohuggingface, note thatai4bharat/MILUis gated there — accept the dataset terms on huggingface.co and setHF_TOKEN(or runhuggingface-cli login) first
Properties
| Property | Value |
|---|---|
| Benchmark Name | milu |
| Dataset ID | ai4bharat/MILU |
| Paper | N/A |
| Tags | Knowledge, MCQ, MultiLingual |
| Metrics | accuracy |
| Default Shots | 0-shot |
| Evaluation Split | test |
| Train Split | validation |
Data Statistics
| Metric | Value |
|---|---|
| Total Samples | 79,608 |
| Prompt Length (Mean) | 377.16 chars |
| Prompt Length (Min/Max) | 223 / 2110 chars |
Per-Subset Statistics:
| Subset | Samples | Prompt Mean | Prompt Min | Prompt Max |
|---|---|---|---|---|
English |
13,535 | 397.01 | 227 | 1930 |
Bengali |
6,637 | 359.93 | 232 | 1828 |
Gujarati |
4,826 | 359.36 | 230 | 1785 |
Hindi |
14,831 | 367.43 | 229 | 1907 |
Kannada |
6,234 | 364.45 | 229 | 1753 |
Malayalam |
4,321 | 388.2 | 239 | 2110 |
Marathi |
6,924 | 394.85 | 223 | 1888 |
Odia |
4,525 | 366.63 | 238 | 1825 |
Punjabi |
4,099 | 364.93 | 234 | 1874 |
Tamil |
6,372 | 382.22 | 230 | 1934 |
Telugu |
7,304 | 384.05 | 233 | 1806 |
Sample Example
Subset: English
{
"input": [
{
"id": "84726982",
"content": "Answer the following multiple choice question. The entire content of your response should be of the following format: 'ANSWER: [LETTER]' (without quotes) where [LETTER] is one of A,B,C,D.\n\nBakelite is what type of polymer?\n\nA) Thermosetting polymer\nB) Thermoplastic polymer\nC) Fibre\nD) Elastomer"
}
],
"choices": [
"Thermosetting polymer",
"Thermoplastic polymer",
"Fibre",
"Elastomer"
],
"target": "A",
"id": 0,
"group_id": 0,
"metadata": {
"language": "English"
}
}
Prompt Template
Prompt Template:
Answer the following multiple choice question. The entire content of your response should be of the following format: 'ANSWER: [LETTER]' (without quotes) where [LETTER] is one of {letters}.
{question}
{choices}
Usage
Using CLI
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets milu \
--limit 10 # Remove this line for formal evaluation
Using Python
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['milu'],
dataset_args={
'milu': {
# subset_list: ['English', 'Bengali', 'Gujarati'] # optional, evaluate specific subsets
}
},
limit=10, # Remove this line for formal evaluation
)
run_task(task_cfg=task_cfg)