GLM-4.5-Air EvalScope 智商情商评测与并发压测实战:从 vLLM 部署到性能基准测试
2026/9/15 22:48:39 网站建设 项目流程

GLM-4.5-Air EvalScope 智商情商评测与并发压测实战:从 vLLM 部署到性能基准测试

【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm

导读:本文基于开源大模型食用指南(self-llm)仓库中 models/GLM-4.5-Air 系列教程,以 GLM-4.5-Air 为例,完整讲解如何使用魔搭社区(ModelScope)官方评测框架 EvalScope 完成两条评测链路:一是在 IQuiz 数据集上对模型进行智商(IQ)/情商(EQ)能力评测;二是借助evalscope perf对已部署服务进行并发性能压测。读完本文,你将掌握 EvalScope 的命令行与 Python 两种调用方式、关键参数语义,以及吞吐量、首 token 时延(TTFT)等核心性能指标的正确解读方法,可直接迁移到任意 OpenAI 兼容 API 服务的评测场景。

大模型评测是什么

大语言模型评测是指对大语言模型(LLM)在多种任务和场景下的性能进行全面评估的过程。评测的目的是衡量模型的通用能力、特定领域表现、效率、鲁棒性、安全性等多方面性能,以便优化模型设计、指导技术选型和推动模型在实际应用中的部署。

评测的主要内容包括以下几个方面:

  • 通用能力:评估模型在语言理解、生成、推理等方面的基础能力。
  • 特定领域表现:针对特定任务(如数学推理、代码生成、情感分析等)的性能评估。
  • 效率与资源消耗:包括模型的训练和推理时间、计算资源需求等。
  • 鲁棒性与可靠性:评估模型在面对噪声、对抗攻击或输入扰动时的稳定性。
  • 伦理与安全性:检测模型是否会产生有害内容、是否存在偏见或歧视。

EvalScope:一站式模型评测与压测框架

EvalScope 是魔搭社区官方推出的模型评测与性能基准测试框架,内置多个常用测试基准和评测指标,如 MMLU、CMMLU、C-Eval、GSM8K、ARC、HellaSwag、TruthfulQA、MATH 和 HumanEval 等;支持多种类型的模型评测,包括 LLM、多模态 LLM、embedding 模型和 reranker 模型。

EvalScope 还适用于多种评测场景,如端到端 RAG 评测、竞技场模式和模型推理性能压测(evalscope perf)等。此外,通过 ms-swift 训练框架的无缝集成,可一键发起评测,实现了模型训练到评测的全链路支持——这与仓库中 GLM-4.5-Air 的 LoRA 微调教程 形成了"训练 → 评测 → 压测"的完整闭环。

在评测调用方式上,EvalScope 支持两类典型模式:

  • 原生(native)模式:本地加载模型权重直接评测,无需额外部署服务;
  • 服务(service)模式:先通过 vLLM 等框架把模型部署为 OpenAI 兼容 API 服务,再让 EvalScope 以 API 客户端的方式发起评测,本文即采用该模式。

环境准备

基础环境

本文基础环境如下(与仓库中 GLM-4.5-Air 系列教程保持一致):

---------------- ubuntu 22.04 python 3.10 Cuda 12.4 PyTorch 2.7.1 ----------------

安装 EvalScope

通过 pip 安装 EvalScope,默认安装 Native backend,可根据需要追加安装其他 backend 依赖:

pip install evalscope # 安装 Native backend (默认) # 额外选项 pip install evalscope[opencompass] # 安装 OpenCompass backend pip install evalscope[vlmeval] # 安装 VLMEvalKit backend pip install evalscope[rag] # 安装 RAGEval backend pip install evalscope[perf] # 安装 模型压测模块 依赖 pip install evalscope[all] # 安装所有 backends (Native, OpenCompass, VLMEvalKit, RAGEval)

注意:本文并发压测部分使用evalscope perf命令,若你的环境中尚未包含该模块,请务必安装evalscope[perf]或直接安装evalscope[all]

GLM-4.5-Air 模型的获取方式同样遵循仓库 01-GLM-4.5-Air-vLLM 部署调用 中的做法:使用 modelscope 的snapshot_download下载模型权重到本地目录(例如/model/ModelScope/ZhipuAI/GLM-4.5-Air),同时需要pip install vllm>=0.10.0用于后续的服务部署。

智商情商评测:基于 IQuiz 数据集

下面我们以智商情商评测为例,对 GLM-4.5-Air 模型进行评测。

我们将使用 EvalScope 模型评测框架,在IQuiz 数据集上进行评测。这个数据集中收集了40 道 IQ 测试80 道 EQ 测试选择题,其中包括一些经典问题:

  • 数字 9.8 和 9.11 哪个大?
  • 单词 strawberry 和 blueberry 中一共有多少个 r?
  • 刘雨正在休假,突然被要求开车送领导去机场,他正为休假计划的泡汤而懊恼,因此在送领导时,刹车踩得比较用力。在车上,领导突然说:"小刘啊,这不愧是有着悠久历史的西安,我这坐车有一种回到古代坐马车的感觉。" 领导是什么意思?

可以看到,IQ 题侧重数值比较、字符计数等逻辑推理,EQ 题则侧重话外音、潜台词等人际情境理解。读者可以先用这 120 道题自测一遍,再对比 GLM-4.5-Air 的作答表现。

步骤一:使用 vLLM 创建 OpenAI 兼容服务

这里我们参照仓库中第一节 vLLM 部署模型 的环节,使用 vLLM 创建兼容 OpenAI API 接口的服务器,然后使用 EvalScope 进行评测。当然,接入其他 OpenAI 兼容 API 服务也是可以的。

在终端输入以下命令,即可用 vLLM 部署 GLM-4.5-Air 模型:

vllm serve /model/ModelScope/ZhipuAI/GLM-4.5-Air \ --tensor-parallel-size 4 \ --tool-call-parser glm4_moe \ --reasoning-parser glm4_moe \ --enable-auto-tool-choice \ --served-model-name glm-4.5-air

关键参数说明:

  • --tensor-parallel-size 4:使用 4 张 GPU 进行张量并行推理,对应作者在 4 卡 H20 上的部署环境;
  • --tool-call-parser glm4_moe/--reasoning-parser glm4_moe:指定 GLM 系列的工具调用解析器与推理内容解析器,用于正确解析<think>...</think>思考内容与工具调用格式;
  • --enable-auto-tool-choice:启用自动工具选择能力;
  • --served-model-name glm-4.5-air:指定对外暴露的模型名称,后续 EvalScope 评测与压测请求中使用的模型名即为此值。

服务默认在http://localhost:8000启动,同时提供/v1/completions(文本补全)与/v1/chat/completions(对话补全)两类端点,两者均可作为 EvalScope 的目标接口。

步骤二:执行评测

评测有两种执行方式:直接使用evalscope eval命令行,或编写 Python 脚本调用TaskConfig

方式一:evalscope eval 命令行
evalscope eval \ --model glm-4.5-air \ --api-url http://localhost:8000/v1 \ --api-key EMPTY \ --eval-type service \ --eval-batch-size 16 \ --datasets iquiz \ --work-dir outputs/glm-4.5-air

参数含义:

  • --model:指定要评测的模型名称,必须与 vLLM 的--served-model-name保持一致;
  • --api-url:模型服务地址,这里指向本地 vLLM 服务的/v1根路径;
  • --api-key:API 密钥,本地服务可用任意占位符(如EMPTY);
  • --eval-type service:指定评测类型为服务模式(通过 API 远程评测);
  • --eval-batch-size 16:评测请求的批大小;
  • --datasets iquiz:指定使用的数据集;
  • --work-dir:评测结果输出目录。
方式二:Python TaskConfig 脚本

新建eval_api.py文件,并输入以下代码:

# 导入执行任务的函数和任务配置类 from evalscope.run import run_task from evalscope.config import TaskConfig # 配置任务参数 task_cfg = TaskConfig( model='glm-4.5-air', # 指定使用的模型 api_url='http://localhost:8000/v1/chat/completions', # 指定API端点,这里使用的是ollama默认的api接口 api_key='sk-xxxxxxx', # API密钥(需替换为实际密钥,ollama 的api_key) eval_type='service', # 指定评估类型为服务模式 datasets=['iquiz'], # 指定使用的数据集(这个测试集可以快速测试模型的智商和情商) generation_config={ # 文本生成配置 'max_tokens': 4096, # 最大令牌数 'max_new_tokens': 4096, # 最大新生成令牌数 'temperature': 1.0, # 温度参数,这里设置为1.0,模型的输出随机性较大,所以可能会有些实验误差 }, work_dir='outputs/glm-4.5-air', # 输出目录 ) # 执行任务 run_task(task_cfg=task_cfg)

新建一个 bash 窗口,在终端中执行python eval_api.py命令即可。

提示:api_url既可以是/v1根路径(命令行方式),也可以是完整的/v1/chat/completions端点(Python 方式),EvalScope 会自动拼接。若想得到更稳定、更精确的评测结果,可以适当调低generation_config中的temperature(如 0.2~0.6),降低生成随机性带来的实验误差。

评测结果解读

等待约 3 分钟评测即可完成,控制台输出的结果如下图所示:

从评测结果截图可以看到,EvalScope 以AverageAccuracy(平均准确率)作为统一指标,按子集输出分数:

模型数据集子集样本数得分
glm-4.5-airiquizIQ(智商)400.725
glm-4.5-airiquizEQ(情商)800.825
glm-4.5-airiquizOVERALL(整体)1200.7917

可以看到 GLM-4.5-Air 在情商类题目上的表现(0.825)明显优于智商类题目(0.725)。评测完成后,报告会以文件形式写入--work-dir指定的输出目录(如outputs/glm-4.5-air),便于后续归档与多次实验对比。

并发压测:evalscope perf

能力评测解决的是"模型答得好不好"的问题,而并发压测解决的是"服务撑不撑得住"的问题。在生产环境上线前,我们需要知道模型服务在指定并发下的吞吐量与时延表现,evalscope perf正是为此设计。

启动 vLLM 服务

与评测环节相同,首先用 vLLM 部署 GLM-4.5-Air 到兼容 OpenAI API 接口的服务器上(显式指定端口 8000):

vllm serve /model/ModelScope/ZhipuAI/GLM-4.5-Air \ --tensor-parallel-size 4 \ --tool-call-parser glm4_moe \ --reasoning-parser glm4_moe \ --enable-auto-tool-choice \ --served-model-name glm-4.5-air \ --port 8000

evalscope perf 压测命令

注:作者在 4 卡 H20 上部署 GLM-4.5-Air 模型,并发测试时使用 5、10、15、20 个线程。

MODEL="glm-4.5-air" NUMBER=100 PARALLEL=20 evalscope perf \ --url "http://localhost:8000/v1/chat/completions" \ --parallel ${PARALLEL} \ --model ${MODEL} \ --number ${NUMBER} \ --api openai \ --dataset openqa \ --stream \ --swanlab-api-key 'your-swanlab-api-key' \ --name "${MODEL}-number${NUMBER}-parallel${PARALLEL}"

参数详解

参数含义本文示例值
--url指定模型服务的 API 接口地址,这里是本地部署的 vLLM 服务地址http://localhost:8000/v1/chat/completions
--parallel指定并发请求的线程数20 个线程
--model指定要评测的模型名称glm-4.5-air
--number指定每个线程要发送的请求数量100 个请求
--api指定评测使用的 API 类型openai
--dataset指定评测使用的数据集openqa
--stream指定是否使用流式输出开启(true)
--swanlab-api-key指定 SwanLab 的 API 密钥,需要替换为实际的 API 密钥your-swanlab-api-key
--name指定评测任务的名称,用于区分不同并发档位的实验结果glm-4.5-air-number100-parallel20

实战要点:

  • 通过调整PARALLEL变量(如 5、10、15、20)可以横向对比不同并发压力下的服务表现,配合--name参数为每次压测命名,避免结果混淆;
  • --swanlab-api-key用于把压测指标上传至 SwanLab 可视化面板,方便生成吞吐量、时延曲线图;不配置该参数时,指标同样会打印在终端并保存到本地。

压测结果解读

并发测试完成后的结果如下图所示:

以截图所示的 5 并发(PARALLEL=5NUMBER=100)压测档位为例,EvalScope 会输出两类关键信息:

整体统计(Overall Statistics)

  • 请求量:总请求 100 个,成功 100 个,失败 0 个;
  • 吞吐量:输出 token 吞吐量约 222.98 tok/s,总 token 吞吐量约 226.12 tok/s,请求吞吐量约 0.1283 req/s;
  • 时延:平均端到端时延约 38.3 秒,平均首 token 时延(TTFT)仅约 0.043 秒,平均每输出 token 耗时约 0.022 秒;
  • 请求体量:平均每个请求输入约 24.43 个 token,输出约 1738.19 个 token——说明评测请求以长文本生成为主,这也解释了单个请求端到端时延偏高的原因。

百分位统计(Percentiles)

EvalScope 会按 10%、25%、50%、66%、75%、80%、90%、95%、98%、99% 等多个百分位输出TTFT(首 token 时间)、ITL(token 间延迟)、TPOT(单 token 输出时间)、Latency(总延迟)以及输入/输出 token 数与吞吐量分布。例如 10% 分位的 TTFT 为 0.037 秒、Latency 为 27.23 秒。相比平均值,百分位指标更能反映长尾延迟风险,是判断服务稳定性的重要依据。

通过多档位并发(5/10/15/20)的对比,可以观察吞吐量是否随并发线性增长、延迟是否出现拐点,从而为服务的资源配置与限流策略提供数据支撑。

总结:模型评测的工程意义

模型评测对于验证和优化大模型至关重要。通过评测,我们可以全面了解模型的性能、能力边界及潜在问题,确保其在实际应用中的表现符合预期,并推动持续改进。此外,评测还能检测模型的公平性和安全性,提升用户体验,并为不同模型间的对比分析提供客观依据。

结合本文实战,一条完整的 GLM-4.5-Air 上线前验证链路可以归纳为:

  1. 模型获取与部署:参考 01-GLM-4.5-Air-vLLM 部署调用,用 vLLM 将模型部署为 OpenAI 兼容 API 服务;
  2. 能力评测:用evalscope eval在 IQuiz 等数据集上验证智商/情商等任务能力;
  3. 并发压测:用evalscope perf以多档位并发验证服务吞吐量与延迟表现;
  4. 迭代优化:结合 LoRA 微调教程 针对评测暴露的短板定向微调,再回到步骤 2 复测,形成"评测—优化—再评测"的闭环。

整个流程仅需一条vllm serve命令和两条evalscope命令,即可完成从部署、能力验证到性能摸底的全过程,这套方法论同样适用于仓库中其他模型的评测与压测场景(如 Hunyuan-A13B-Instruct EvalScope 并发测试 等)。

【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调(全参数/Lora)、部署国内外开源大模型(LLM)/多模态大模型(MLLM)教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询