Repository: modelscope/evalscope
Issue: 支持metric传入device等参数
Root cause: Unimplemented Feature Gap

## 自查清单

在提交 issue 之前，请确保您已完成以下步骤:
- [x] 我已仔细阅读了[相关使用说明文档](https://evalscope.readthedocs.io/zh-cn/latest/get_started/parameters.html)
- [x] 我已查看了[常见问题解答](https://evalscope.readthedocs.io/zh-cn/latest/get_started/faq.html)
- [x] 我已搜索并查看了现有的 issues，确认这不是一个重复的问题

## 问题描述

当我在进行评测时，模型推理之后会反复打印下述的语句，我无法看到评测进度
```
2025-08-07 10:05:12,779 - root - INFO - Instantiating model architecture: CLIP
2025-08-07 10:05:15,848 - evalscope - INFO - Initializing metrics: ['CLIPScore', 'PickScore', 'HPSv2.1Score']
Downloading Model from http://www.modelscope.cn to directory: /data3/xxx/cache/modelscope/models/timm/vit_large_patch14_clip_336.openai
2025-08-07 10:05:19,234 - root - INFO - Parsing model identifier. Schema: None, Identifier: ViT-L-14-336
2025-08-07 10:05:19,234 - root - INFO - Loaded built-in ViT-L-14-336 model config.
2025-08-07 10:05:19,235 - root - INFO - `pretrained` specifies file path: /data3/xxx/cache/modelscope/models/timm/vit_large_patch14_clip_336___openai/open_clip_model.safetensors
2025-08-07 10:05:19,235 - root - INFO - Instantiating model architecture: CLIP
2025-08-07 10:05:21,968 - evalscope - INFO - Initializing metrics: ['CLIPScore', 'PickScore', 'HPSv2.1Score']
Downloading Model from http://www.modelscope.cn to directory: /data3/xxx/cache/modelscope/models/timm/vit_large_patch14_clip_336.openai
2025-08-07 10:05:24,962 - root - INFO - Parsing model identifier. Schema: None, Identifier: ViT-L-14-336
2025-08-07 10:05:24,962 - root - INFO - Loaded built-in ViT-L-14-336 model config.
2025-08-07 10:05:24,962 - root - INFO - `pretrained` specifies file path: /data3/xxx/cache/modelscope/models/timm/vit_large_patch14_clip_336___openai/open_clip_model.safetensors
2025-08-07 10:05:24,962 - root - INFO - Instantiating model architecture: CLIP
2025-08-07 10:05:27,696 - evalscope - INFO - Initializing metrics: ['CLIPScore', 'PickScore', 'HPSv2.1Score']
Downloading Model from http://www.modelscope.cn to directory: /data3/xxx/cache/modelscope/models/timm/vit_large_patch14_clip_336.openai
2025-08-07 10:05:30,828 - root - INFO - Parsing model identifier. Schema: None, Identifier: ViT-L-14-336
2025-08-07 10:05:30,828 - root - INFO - Loaded built-in ViT-L-14-336 model config.
2025-08-07 10:05:30,828 - root - INFO - `pretrained` specifies file path: /data3/xxx/cache/modelscope/models/timm/vit_large_patch14_clip_336___openai/open_clip_model.safetensors
2025-08-07 10:05:30,828 - root - INFO - Instantiating model architecture: CLIP
```
然后会报cuda out of memory，但是我的GPU还有大约60G的显存。

## EvalScope 版本（必填）
v2.0.0

## 使用的工具
- [x] Native / 原生框架
- [ ] Opencompass backend
- [ ] VLMEvalKit backend
- [ ] RAGEval backend
- [ ] Perf / 模型推理压测工具
- [ ] Arena / 竞技场模式

## 执行的代码或指令

请提供您执行的主要代码或指令。

## 错误日志


RuntimeError: CUDA error: out of memory
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

## 运行环境

- 操作系统：
- Python版本：

## 其他信息

如果有其他相关信息，请在此处提供。


我在model_args中指定了cuda
`"device_map": "cuda:7"`

请提供一下完整的评测命令

```
from evalscope import TaskConfig, run_task

task_cfg = TaskConfig(
    # stable-diffusion-3-medium-diffusers
    model="/data3/xxx/cache/modelscope/models/AI-ModelScope/stable-diffusion-3-medium-diffusers", 
    model_task="image_generation",  # must be IMAGE_GENERATION
    model_args={
        "pipeline_cls": "DiffusionPipeline",
        "use_safetensors": True,
        "variant": "fp16",
        "torch_dtype": "torch.float16",
        "device_map": "cuda:7",
    },
    datasets=[
        "general_t2i",
    ],
    dataset_args={
        "general_t2i": {
            "metric_list": ["CLIPScore"],
            "local_path": "/data3/xxx/DiffusionModelsEval/test.jsonl",
            "subset_list": ["test"],
        }
    },
    generation_config={
        "num_inference_steps": 28,
        "guidance_scale": 7.0,
    },
    judge_strategy="rule",
    work_dir="./outputs/stable-diffusion-3-medium-diffusers/",
)

# 运行评测任务
run_task(task_cfg=task_cfg)
```

当我调整torch版本从2.7到2.6后，报错如下
`torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB. GPU 0 has a total capacity of 95.11 GiB of which 9.19 MiB is free. Process 2699309 has 86.41 GiB memory in use. Including non-PyTorch memory, this process has 8.67 GiB memory in use. Of the allocated memory 8.22 GiB is allocated by PyTorch, and 143.89 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation.  See documentation for Memory Management  (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)`
很奇怪，我指定了cuda:7，为何会向GPU0分配内存

我找到问题所在了，`evalscope/metrics/t2v_metrics/__init__.py`下的这些评分计算，没有设置传入device

我临时在`evalscope/metrics/t2v_metrics/__init__.py`指定device，比如
```
def pick_score():
    from .clipscore import CLIPScore

    pick_score = CLIPScore(model="pickscore-v1", device="cuda:3")
    return pick_score
```
我该如何让我在TaskConfig中设置device传入该位置

> 我临时在`evalscope/metrics/t2v_metrics/__init__.py`指定device，比如
> 
> ```
> def pick_score():
>     from .clipscore import CLIPScore
> 
>     pick_score = CLIPScore(model="pickscore-v1", device="cuda:3")
>     return pick_score
> ```
> 
> 我该如何让我在TaskConfig中设置device传入该位置

TaskConfig还不支持传入metric的device，后续支持一下