open-compass / opencompass

OpenCompass is an LLM evaluation platform, supporting a wide range of models (Llama3, Mistral, InternLM2,GPT-4,LLaMa2, Qwen,GLM, Claude, etc) over 100+ datasets.
https://opencompass.org.cn/
Apache License 2.0
4.19k stars 448 forks source link

[Bug] 使用最新版本的glm4-9b-chat在Lawbench上推理会重复生成 #1477

Open LKAMING97 opened 2 months ago

LKAMING97 commented 2 months ago

先决条件

问题类型

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

环境

{'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'}

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

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

其他信息

No response

LKAMING97 commented 2 months ago

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

bittersweet1999 commented 2 months ago

看起来像是没传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的方式启动

LKAMING97 commented 2 months ago

然后我将该文件下的模型路径改为本地是吗

发自我的iPhone

------------------ 原始邮件 ------------------ 发件人: bittersweet1999 @.> 发送时间: 2024年9月2日 16:17 收件人: open-compass/opencompass @.> 抄送: LKAMING @.>, Author @.> 主题: 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: @.***>

bittersweet1999 commented 2 months ago

yes

LKAMING97 commented 2 months ago

yes

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

bittersweet1999 commented 2 months ago

不用 你-a vllm了就行

LKAMING97 commented 2 months ago

目前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文件修改为

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=['<|endoftext|>', '<|user|>', '<|observation|>'],
    )
]

还是会重复,不停输出 image

bittersweet1999 commented 2 months ago

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

bittersweet1999 commented 2 months ago

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

LKAMING97 commented 2 months ago

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

测试了qwen2,chatglm3,yi1.5都不会,以下是chatglm3的回答 image

bittersweet1999 commented 2 months ago

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

LKAMING97 commented 2 months ago

正常来说-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,我不知道是不是模型那里有问题,我更新了一次还是会这样

LKAMING97 commented 2 months ago

按理说用-a vllm,stop_words也传进去了呀

https://github.com/open-compass/opencompass/blob/9693be46b7070ddd8e5e25dc71dec126bdbae8b2/opencompass/utils/run.py#L309

你们那边可以用这个模型测试一下吗

bittersweet1999 commented 2 months ago

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

bittersweet1999 commented 2 months ago

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=['<|endoftext|>', '<|user|>', '<|observation|>'],
    generation_kwargs={do_sample=True}
)

]

bittersweet1999 commented 2 months ago

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

你们那边可以用这个模型测试一下吗

暂时没卡了,都在跑别的实验

LKAMING97 commented 2 months ago

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

你们那边可以用这个模型测试一下吗

暂时没卡了,都在跑别的实验

那劳烦到时候有卡帮忙测试一下,我现在先试试开采样解码