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.06k stars 428 forks source link

[Bug] 使用api测评时mode参数不起作用,超出max_seq_len并没有按mode切分输入 #1181

Open wz0424 opened 5 months ago

wz0424 commented 5 months ago

先决条件

问题类型

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

环境

python 3.10.2 用vllm 再另外一台服务器部署了一个llama 2-7b,对外提供openai api,本机通过api对部署的模型进行测评,在运行到mbpp 第493个数据和mmlu子数据集high_school_european_history时会出现超出模型最大输入长度限制的情况,设置了mode截取输入长度但并未起效果

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

from opencompass.models import OpenAI
from mmengine.config import read_base
from opencompass.partitioners import NaivePartitioner
from opencompass.runners.local_api import LocalAPIRunner
from opencompass.tasks import OpenICLInferTask

with read_base():
    from ..datasets.mmlu.mmlu_gen import mmlu_datasets
    from ..datasets.humaneval.humaneval_gen import humaneval_datasets
    from ..datasets.mbpp.mbpp_gen import mbpp_datasets
    from ..datasets.math.math_gen import math_datasets
    from ..datasets.bbh.bbh_gen import bbh_datasets
    from ..datasets.gsm8k.gsm8k_gen import gsm8k_datasets
    from ..datasets.iwslt2017.iwslt2017_gen import iwslt2017_datasets

datasets = [
    *mmlu_datasets,
    *bbh_datasets,
    *humaneval_datasets,
    *mbpp_datasets,
    *math_datasets,
    *gsm8k_datasets,
    # *iwslt2017_datasets,
]

api_meta_template = dict(
round=[
dict(role='HUMAN', api_role='HUMAN'),
dict(role='BOT', api_role='BOT', generate=True),
],
)
ip = '192.168.72.46'
port = 8000
models = [
    dict(
        type=OpenAI,                             # 使用 OpenAI 模型
        # 以下为 `OpenAI` 初始化参数
        path='/models/meta-llama/Llama-2-7b-chat-hf',                            # 指定模型类型
        openai_api_base = f"http://{ip}:{port}/v1/chat/completions",
        key='-',                   # OpenAI API Key
        max_seq_len=2048,                        # 最大输入长度
        mode = 'rear',
        retry = 3,
        # 以下参数为各类模型都有的参数,非 `OpenAI` 的初始化参数
        abbr='Llama-2-7b',                            # 模型简称
        run_cfg=dict(num_gpus=0),                # 资源需求(不需要 GPU)
        max_out_len=1024,                         # 最长生成长度
        batch_size=4,                            # 批次大小
        temperature = 0.1,
        meta_template = api_meta_template
    ),
]

work_dir = "outputs/api_openai/"

重现问题 - 命令或脚本

python3 run.py ./config/api_examples/eval_api_all.py --debug 在运行到mbpp 第493个数据和mmlu子数据集high_school_european_history时会出现超出模型最大输入长度限制的情况,设置了mode截取输入长度但并未起效果

重现问题 - 错误信息

image

其他信息

No response

Wolverhampton0 commented 4 months ago

我也是在另一台服务器用VLLM起的模型服务,用以上代码报错: KeyError: 'Could not automatically map Qwen2-7B-Instruct to a tokeniser. Please use tiktoken.get_encoding to explicitly get the tokeniser you expect.'

zjintheroom commented 4 months ago

我也是在另一台服务器用VLLM起的模型服务,用以上代码报错: KeyError: 'Could not automatically map Qwen2-7B-Instruct to a tokeniser. Please use tiktoken.get_encoding to explicitly get the tokeniser you expect.'

你有试过把 path 那个参数固定成 gpt-3.5-trubo-0613 么 我调用vllm的openai是可以跑通的。但是结果对不对我不确定

zjintheroom commented 4 months ago

我也是在另一台服务器用VLLM起的模型服务,用以上代码报错: KeyError: 'Could not automatically map Qwen2-7B-Instruct to a tokeniser. Please use tiktoken.get_encoding to explicitly get the tokeniser you expect.'

这个应该跟opencompass代码中的 token计算有关,应该是需要改成 适配你 模型的token计算方法

luhairong11 commented 2 weeks ago

我可以运行成功,但是每次运行的结果都不一致,你们有遇到过吗 https://github.com/open-compass/opencompass/issues/1634