Repository: open-compass/opencompass
Issue: [Bug] 使用最新版本的glm4-9b-chat在Lawbench上推理会重复生成
Root cause: Configuration Error

### 先决条件

- [X] 我已经搜索过 [问题](https://github.com/open-compass/opencompass/issues/) 和 [讨论](https://github.com/open-compass/opencompass/discussions) 但未得到预期的帮助。
- [X] 错误在 [最新版本](https://github.com/open-compass/opencompass) 中尚未被修复。

### 问题类型

我正在使用官方支持的任务/模型/数据集进行评估。

### 环境

```python
{'CUDA available': False,
 'GCC': 'gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0',
 'MMEngine': '0.10.4',
 'MUSA available': False,
 'OpenCV': '4.10.0',
 'PyTorch': '2.1.2+cu121',
 'PyTorch compiling details': 'PyTorch built with:\n'
                              '  - GCC 9.3\n'
                              '  - C++ Version: 201703\n'
                              '  - Intel(R) oneAPI Math Kernel Library Version '
                              '2022.2-Product Build 20220804 for Intel(R) 64 '
                              'architecture applications\n'
                              '  - Intel(R) MKL-DNN v3.1.1 (Git Hash '
                              '64f6bcbcbab628e96f33a62c3e975f8535a7bde4)\n'
                              '  - OpenMP 201511 (a.k.a. OpenMP 4.5)\n'
                              '  - LAPACK is enabled (usually provided by '
                              'MKL)\n'
                              '  - NNPACK is enabled\n'
                              '  - CPU capability usage: AVX512\n'
                              '  - Build settings: BLAS_INFO=mkl, '
                              'BUILD_TYPE=Release, CUDA_VERSION=12.1, '
                              'CUDNN_VERSION=8.9.2, '
                              'CXX_COMPILER=/opt/rh/devtoolset-9/root/usr/bin/c++, '
                              'CXX_FLAGS= -D_GLIBCXX_USE_CXX11_ABI=0 '
                              '-fabi-version=11 -fvisibility-inlines-hidden '
                              '-DUSE_PTHREADPOOL -DNDEBUG -DUSE_KINETO '
                              '-DLIBKINETO_NOROCTRACER -DUSE_FBGEMM '
                              '-DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK '
                              '-DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE '
                              '-O2 -fPIC -Wall -Wextra -Werror=return-type '
                              '-Werror=non-virtual-dtor -Werror=bool-operation '
                              '-Wnarrowing -Wno-missing-field-initializers '
                              '-Wno-type-limits -Wno-array-bounds '
                              '-Wno-unknown-pragmas -Wno-unused-parameter '
                              '-Wno-unused-function -Wno-unused-result '
                              '-Wno-strict-overflow -Wno-strict-aliasing '
                              '-Wno-stringop-overflow -Wno-psabi '
                              '-Wno-error=pedantic -Wno-error=old-style-cast '
                              '-Wno-invalid-partial-specialization '
                              '-Wno-unused-private-field '
                              '-Wno-aligned-allocation-unavailable '
                              '-Wno-missing-braces -fdiagnostics-color=always '
                              '-faligned-new -Wno-unused-but-set-variable '
                              '-Wno-maybe-uninitialized -fno-math-errno '
                              '-fno-trapping-math -Werror=format '
                              '-Werror=cast-function-type '
                              '-Wno-stringop-overflow, LAPACK_INFO=mkl, '
                              'PERF_WITH_AVX=1, PERF_WITH_AVX2=1, '
                              'PERF_WITH_AVX512=1, '
                              'TORCH_DISABLE_GPU_ASSERTS=ON, '
                              'TORCH_VERSION=2.1.2, USE_CUDA=ON, USE_CUDNN=ON, '
                              'USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, '
                              'USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, '
                              'USE_MPI=OFF, USE_NCCL=1, USE_NNPACK=ON, '
                              'USE_OPENMP=ON, USE_ROCM=OFF, \n',
 'Python': '3.10.8 (main, Nov 24 2022, 14:13:03) [GCC 11.2.0]',
 'TorchVision': '0.16.2+cu121',
 'lmdeploy': "not installed:No module named 'lmdeploy'",
 'numpy_random_seed': 2147483648,
 'opencompass': '0.3.1+',
 'sys.platform': 'linux',
 'transformers': '4.44.0'}
```

### 重现问题 - 代码/配置示例

```python
model_name="../ZhipuAI/glm-4-9b-chat "
CUDA_VISIBLE_DEVICES=0,1,2,3  python run.py  --hf-path  $model_name  --datasets  lawbench_zero_shot_gen_002588 -w ./outputs/$model_name --hf-num-gpus 4  --mode all  -a vllm 
```

### 重现问题 - 命令或脚本

```
None
```

### 重现问题 - 错误信息

![image](https://github.com/user-attachments/assets/64f92bbd-189d-49ed-b159-bcb0275928da)


### 其他信息

_No response_


{
    "0": {
        "origin_prompt": [
            {
                "role": "HUMAN",
                "prompt": "根据下列事实、罪名和刑法法条预测判决刑期。只需给出判决刑期为多少月，请将答案填在[刑期]与<eoa>之间。例如[刑期]12月<eoa>。\n事实:公诉机关指控：2016年3月28日20时许，被告人颜某在本市洪山区马湖新村足球场马路边捡拾到被害人谢某的VIVOX5手机一部，并在同年3月28日21时起，分多次通过支付宝小额免密支付功能，秘密盗走被害人谢某支付宝内人民币3723元。案发后，被告人颜某家属已赔偿被害人全部损失，并取得谅解。公诉机关认为被告人颜某具有退赃、取得谅解、自愿认罪等处罚情节，建议判处被告人颜某一年以下××、××或者××，并处罚金。\r\n罪名:盗窃。法条:刑法第264条。法条内容：第二百六十四条 盗窃公私财物，数额较大的，或者多次盗窃、入户盗窃、携带凶器盗窃、扒窃的，处三年以下有期徒刑、拘役或者管制，并处或者单处罚金；数额巨大或者有其他严重情节的，处三年以上十年以下有期徒刑，并处罚金；数额特别巨大或者有其他特别严重情节的，处十年以上有期徒刑或者无期徒刑，并处罚金或者没收财产。\n"
            }
        ],
        "prediction": "\n[刑期]6月<eoa>\n[刑期]6月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期]6个月<eoa>\n[刑期",
        "gold": "刑期:4个月"
    },
}

看起来像是没传stop words和max out len，https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/configs/models/chatglm/hf_glm4_9b_chat.py#L11
推荐用--models hf_glm4_9b_chat的方式启动

然后我将该文件下的模型路径改为本地是吗



发自我的iPhone


------------------ 原始邮件 ------------------
发件人: bittersweet1999 ***@***.***&gt;
发送时间: 2024年9月2日 16:17
收件人: open-compass/opencompass ***@***.***&gt;
抄送: LKAMING ***@***.***&gt;, Author ***@***.***&gt;
主题: Re: [open-compass/opencompass] [Bug] 使用最新版本的glm4-9b-chat在Lawbench上推理会重复生成 (Issue #1477)





 
看起来像是没传stop words和max out len，https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/configs/models/chatglm/hf_glm4_9b_chat.py#L11。
 推荐用--models hf_glm4_9b_chat的方式启动
 
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***&gt;

yes

> yes

那我其他参数需要修改吗，因为我想用vllm进行推理

不用 你```-a vllm ```了就行

目前shell脚本修改为
```shell
CUDA_VISIBLE_DEVICES=0,1,2,3  python run.py  --models hf_glm4_9b_chat  --datasets  lawbench_zero_shot_gen_002588 -w ./outputs/$model_name --hf-num-gpus 4  --mode all  -a vllm 
```
model文件修改为
```python
from opencompass.models import HuggingFacewithChatTemplate

models = [
    dict(
        type=HuggingFacewithChatTemplate,
        abbr='glm-4-9b-chat-hf',
        #path='THUDM/glm-4-9b-chat',
        path = '/root/autodl-tmp/ZhipuAI/glm-4-9b-chat',
        max_out_len=1024,
        batch_size=8,
        run_cfg=dict(num_gpus=4),
        stop_words=['
', '
', '
'],
    )
]
```
还是会重复，不停输出
![image](https://github.com/user-attachments/assets/512829e8-7417-4390-adcb-6e81bfd3a660)




其他模型会吗？或者GLM4测其他数据集会重复吗

正常来说```-a vllm```应该是可以的，或者你试试这个config
https://github.com/open-compass/opencompass/blob/main/configs/models/chatglm/vllm_glm4_9b_chat.py
就是换成```--model vllm_glm4_9b_chat```看看

> 其他模型会吗？或者GLM4测其他数据集会重复吗

测试了qwen2,chatglm3,yi1.5都不会，以下是chatglm3的回答
![image](https://github.com/user-attachments/assets/bae3c558-7ab7-4cde-86f8-0fec2a753267)


按理说用```-a vllm```,stop_words也传进去了呀
https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/opencompass/utils/run.py#L309

> 正常来说`-a vllm`应该是可以的，或者你试试这个config https://github.com/open-compass/opencompass/blob/main/configs/models/chatglm/vllm_glm4_9b_chat.py 就是换成`--model vllm_glm4_9b_chat`看看

same results,我不知道是不是模型那里有问题，我更新了一次还是会这样

> 按理说用`-a vllm`,stop_words也传进去了呀
> 
> https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/opencompass/utils/run.py#L309

你们那边可以用这个模型测试一下吗

那你看看模型是不是最新的，然后还有一个点就是你可以开sampling试试，可能这个模型greedy的时候表现就是这样的

from opencompass.models import HuggingFacewithChatTemplate

models = [
    dict(
        type=HuggingFacewithChatTemplate,
        abbr='glm-4-9b-chat-hf',
        #path='THUDM/glm-4-9b-chat',
        path = '/root/autodl-tmp/ZhipuAI/glm-4-9b-chat',
        max_out_len=1024,
        batch_size=8,
        run_cfg=dict(num_gpus=4),
        stop_words=['
', '
', '
'],
        generation_kwargs={do_sample=True}
    )
]

> > 按理说用`-a vllm`,stop_words也传进去了呀
> > https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/opencompass/utils/run.py#L309
> 
> 你们那边可以用这个模型测试一下吗

暂时没卡了，都在跑别的实验

> > > 按理说用`-a vllm`,stop_words也传进去了呀
> > > https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/opencompass/utils/run.py#L309
> > 
> > 
> > 你们那边可以用这个模型测试一下吗
> 
> 暂时没卡了，都在跑别的实验

那劳烦到时候有卡帮忙测试一下，我现在先试试开采样解码