Repository: modelscope/evalscope
Issue: Evalscope
Root cause: Unimplemented Feature Gap

您的成果非常优秀，我想问下，使用evalscope评测是能不能支持多卡呢？单卡的时间有点长，期待您的回复。

暂不支持多卡推理，参考：https://github.com/modelscope/evalscope/issues/588

使用Evalscope进行评测时，使用IFEval基准评测，指标为啥与技术报告上的指标相差很远？例如在qwen3的技术报告上IFEval strict prompt是39.9，但是我已经去掉思维链，指标才是23.5，这个有什么解决办法吗？期待您的回复。


这里有最佳实践：https://evalscope.readthedocs.io/zh-cn/latest/best_practice/qwen3.html

需要对照着设置generation config

并且还有一个问题就是，"remove_until": "</think>" 已经移除了思维链，但是保存的json文件中回复仍然带着<think>和</think>，
evalscope eval  --model /data0/Qwen3-1.7B  --datasets ifeval  --dataset-args '{"ifeval": {"filters": {"remove_until": "</think>"}}}'  --limit 20  这个是执行脚本，期待您的回复。


> 并且还有一个问题就是，"remove_until": "" 已经移除了思维链，但是保存的json文件中回复仍然带着和， evalscope eval --model /data0/Qwen3-1.7B --datasets ifeval --dataset-args '{"ifeval": {"filters": {"remove_until": ""}}}' --limit 20 这个是执行脚本，期待您的回复。

这个不影响，计算指标时会进行后处理

from evalscope import TaskConfig, run_task
task_cfg = TaskConfig(
    model='/data0/DeepSeek-R1-Distill-Qwen-1.5B',
    datasets=[
        'data_collection',
    ],
    dataset_args={
        'data_collection': {
            'dataset_id': 'opencompass/ifeval',
            'filters': {'remove_until': '</think>'}  # 过滤掉思考的内容
        }
    },
    eval_batch_size=128,
    generation_config={
        'max_tokens': 30000,  # 最大生成token数，建议设置为较大值避免输出截断
        'temperature': 0.6,  # 采样温度 (qwen 报告推荐值)
        'top_p': 0.95,  # top-p采样 (qwen 报告推荐值)
        'top_k': 20,  # top-k采样 (qwen 报告推荐值)
        'n': 1,  # 每个请求产生的回复数量
    },
    timeout=60000,  # 超时时间
    stream=True,  # 是否使用流式输出
    limit=100,  # 设置为100条数据进行测试
)

run_task(task_cfg=task_cfg) 又来打扰了，我这个脚本哪里存在问题？他一直在报错，期待您的回复。


Downloading Dataset to directory: /root/.cache/modelscope/hub/datasets/opencompass/ifeval
Downloading [ifeval_input_data.jsonl]: 100%|███████████████████████████████████████████| 202k/202k [00:00<00:00, 376kB/s]
Processing 1 items: 100%|█████████████████████████████████████████████████████████████| 1.00/1.00 [00:00<00:00, 1.81it/s]
Traceback (most recent call last):
  File "/data0/evalscope/eval.py", line 49, in <module>
    run_task(task_cfg=task_cfg)
  File "/data0/evalscope/evalscope/run.py", line 31, in run_task
    return run_single_task(task_cfg, run_time)
  File "/data0/evalscope/evalscope/run.py", line 44, in run_single_task
    result = evaluate_model(task_cfg, outputs)
  File "/data0/evalscope/evalscope/run.py", line 122, in evaluate_model
    evaluator = create_evaluator(task_cfg, dataset_name, outputs, base_model)
  File "/data0/evalscope/evalscope/run.py", line 166, in create_evaluator
    return EvaluatorCollection(task_cfg, data_adapter, outputs, base_model)
  File "/data0/evalscope/evalscope/collections/evaluator.py", line 75, in __init__
    self.dataset, self.dataset_name = self.load()
  File "/data0/evalscope/evalscope/collections/evaluator.py", line 94, in load
    sample['prompt'].update({'index': sample['index']})
AttributeError: 'str' object has no attribute 'update' 这个是具体的报错信息。

命令写错了，你写的是混合数据评测，应该是下面写法：

```
datasets=[
'ifeval',
],
dataset_args={
'ifeval': {
'filters': {'remove_until': '</think>'} # 过滤掉思考的内容
}
```

明白，非常感谢，那如果不支持数据并行，那是否可以支持模型并行的方式呢？因为我在 NVIDIA L40S单卡上带不动qwen3-1.7B 的模型，期待您的回复

模型并行需要你自行拉起模型服务，例如使用vLLM并设置 `--tp` 参数

明白了，谢谢您，我想问下，使用IFEval生成response时，您使用vLLM框架，是自己把输入数据的prompt直接传入到模型进行回复，还是使用了模型分词对prompt进行分词，在生成答案呢？

> 明白了，谢谢您，我想问下，使用IFEval生成response时，您使用vLLM框架，是自己把输入数据的prompt直接传入到模型进行回复，还是使用了模型分词对prompt进行分词，在生成答案呢？

没有理解模型分词是什么意思，使用vllm和本地运行其实是一样的，提供prompt让模型生成回复即刻

> 感谢你的反馈！我们将关闭此问题。如果您有任何疑问，请随时重新打开它。如果EvalScope对您有所帮助，欢迎给我们点个STAR以示支持，谢谢！