
模型评测人工智能大模型AI 评测【免费下载链接】opencompassOpenCompass is an LLM evaluation platform, supporting a wide range of models from OpenAI, Anthropic, Gemini, Qwen, GLM, DeepSeek, etc, across 100 datasets covering knowledge, reasoning, coding, science, language, long-context, and safety.项目地址https://gitcode.com/gh_mirrors/op/opencompass点击查看免费下载导读本文讲解如何在 OpenCompass 评测平台中使用 LightLLM自 2023.11.20 起在 新闻页 正式对外宣布支持。读完本文你将掌握如何用 LightLLM 将模型以 API 服务形式在本机拉起、如何验证服务可用、如何编写 OpenCompass 评测配置并通过python run.py一键完成从推理到指标计算的全流程以及该链路在源码层面的工作原理与调优要点。一、整体架构OpenCompass 如何与 LightLLM 协作OpenCompass 的评测分为推理infer 指标计算eval两个阶段模型端既支持直接加载 Hugging Face 权重进行本地推理也支持通过 API 访问外部推理服务。当选用 LightLLM 作为后端时评测链路如下用户先用 LightLLM 将模型权重加载到显存并以 HTTP 服务的形式暴露在本地端口默认http://localhost:8080/generate评测时 OpenCompass 通过requests以 JSON 格式将批量 prompt 喂给 LightLLM 的/generate接口LightLLM 完成推理后将generated_text返回OpenCompass 收集生成结果交由数据集自带的评价器完成指标计算最终产出评测报告。这一适配在源码中体现为 LightllmAPI 模型类它在 models/__init__.py 中被导出并注册进MODELS注册表配置中通过typeLightllmAPI即可引用。同时该文件还提供了面向对话/API 风格服务的LightllmChatAPI封装见 lightllm_api.py用于多轮对话格式messages结构的推理服务。二、环境配置2.1 安装 OpenCompass 并准备数据集请参照 OpenCompass 官方安装指南完成算法库安装与评测数据集准备。数据集下载后评测脚本会从本地数据集目录读取数据。2.2 安装 LightLLM按照 LightLLM 主页 的指引安装 LightLLM。文档特别提醒注意对齐相关依赖库的版本尤其是transformers的版本因为 LightLLM 内部依赖 transformers 完成分词与模型加载版本不匹配可能导致服务启动失败或生成行为异常。三、评测实战以 llama2-7B 评测 Humaneval 为例以下以 llama2-7B 在 Humaneval 代码生成基准上的评测为例演示完整流程。3.1 第一步用 LightLLM 将模型以服务形式拉起在终端执行python -m lightllm.server.api_server --model_dir /path/llama2-7B \ --host 0.0.0.0 \ --port 1030 \ --nccl_port 2066 \ --max_req_input_len 4096 \ --max_req_total_len 6144 \ --tp 1 \ --trust_remote_code \ --max_total_token_num 120000各启动参数含义如下参数说明--model_dir本地模型权重目录路径如/path/llama2-7B--host服务监听地址0.0.0.0表示监听所有网卡便于本机或局域网访问--portAPI 服务端口默认示例为1030--nccl_portNCCL 通信端口多卡并行时需要--max_req_input_len单请求允许的最大输入长度token 数--max_req_total_len单请求的输入 输出最大总长度--tpTensor Parallel 的 GPU 卡数--trust_remote_code允许加载模型仓库中的自定义代码--max_total_token_num服务可管理/缓存的 KV cache 总 token 数上限关键注意事项原文档明确给出务必遵守--tp与多卡并行tp可设置为大于 1 的整数启用多张 GPU 上的 TensorParallel 推理适用于较大的模型。例如--tp 2即在 2 张卡上做张量并行。--max_total_token_num影响吞吐该参数直接影响测试过程中的吞吐性能应按 LightLLM 主页 文档进行设置。它的本质是 KV cache 的容量上限只要不爆显存往往设置越大越好因为更大的缓存意味着更高的并发吞吐和更少的显存不足触发。同机多服务需换端口如果要在同一台机器上启动多个 LightLLM 服务必须重新设定--port和--nccl_port避免端口冲突。3.2 验证服务是否已启动成功服务启动后可以用下面这段 Python 脚本快速验证import time import requests import json url http://localhost:8080/generate headers {Content-Type: application/json} data { inputs: What is AI?, parameters: { do_sample: False, ignore_eos: False, max_new_tokens: 1024, } } response requests.post(url, headersheaders, datajson.dumps(data)) if response.status_code 200: print(response.json()) else: print(Error:, response.status_code, response.text)若返回 200 且响应中包含generated_text字段说明服务可用。注意此处的url端口8080仅为演示实际使用时必须与你启动服务时的--port保持一致。若后续要启用 PPL困惑度类评测任务服务还需额外开启--return_all_prompt_logprobs参数并返回prompt_token_ids、prompt_logprobs字段详见下文源码解析。3.3 第二步编写评测配置并运行仓库中已提供可直接运行的示例配置 examples/eval_lightllm.py在 OpenCompass 项目根目录执行python run.py examples/eval_lightllm.py当模型完成推理和指标计算后即可在终端/输出目录获得评测结果。重要提示eval_lightllm.py中配置的url必须与上一步 LightLLM 服务的地址对齐端口、host 完全一致否则 OpenCompass 将无法请求到服务。3.4 深入解读示例配置examples/eval_lightllm.py 的核心配置结构如下为便于阅读做了整理from mmengine.config import read_base from opencompass.models import LightllmAPI from opencompass.partitioners import NaivePartitioner from opencompass.runners import LocalRunner from opencompass.tasks import OpenICLInferTask with read_base(): from opencompass.configs.datasets.humaneval.deprecated_humaneval_gen_a82cae import \ humaneval_datasets from opencompass.configs.summarizers.leaderboard import summarizer datasets [*humaneval_datasets] _meta_template None # 如需 Chat 模型可替换为对应的 meta_template models [ dict( abbrLightllmAPI, typeLightllmAPI, urlhttp://localhost:1030/generate, meta_template_meta_template, batch_size32, max_workers_per_task128, rate_per_worker1024, retry4, generation_kwargsdict(do_sampleFalse, ignore_eosFalse, max_new_tokens1024), ), ] infer dict( partitionerdict(typeNaivePartitioner), runnerdict( typeLocalRunner, max_num_workers32, taskdict(typeOpenICLInferTask), ), )各字段在源码中的语义对照 lightllm_api.py 的构造函数字段默认值含义urlhttp://localhost:8080/generateLightLLM 服务的/generate接口地址需与部署时端口对齐max_workers_per_task2每个任务内部并发线程数示例调大至128以提升吞吐rate_per_worker2每个 worker 的请求速率限制由TokenBucket令牌桶实现流控retry2请求失败后的最大重试次数超过后抛出RuntimeErrorgeneration_kwargsdict()透传给 LightLLM 的生成参数如do_sample、ignore_eos、max_new_tokensmeta_templateNone模型的元提示词模板用于对话类模型的 prompt 包装其余配置遵循 OpenCompass 标准约定NaivePartitioner将数据集按样本朴素切分LocalRunner在本地以max_num_workers32并发执行OpenICLInferTask。若使用其他数据集只需替换read_base中导入的*_datasets即可。四、源码级原理LightllmAPI 的请求链路4.1 生成generate链路LightllmAPI.generate()lightllm_api.py使用ThreadPoolExecutor按max_workers_per_task并发地对每个输入调用内部方法_generate。每个请求的核心逻辑lightllm_api.py调用self.wait()从令牌桶获取令牌实现rate_per_worker限流构造data dict(inputsinput, parametersself.generation_kwargs)即把 prompt 与生成参数一并打包以 JSON 形式POST到self.url解析响应中的generated_text若为列表则取第一个元素并返回若遇requests.ConnectionError服务未启动、网络中断则记录日志并重试若 JSON 解析失败或缺少generated_text键也进入重试重试耗尽后抛出RuntimeError。可以看到generation_kwargs是透传给服务端的关键通道max_new_tokens等参数最终决定服务端生成的长度。self.max_out_len也从generation_kwargs.get(max_new_tokens, 1024)读取lightllm_api.py。4.2 PPL困惑度链路与 LightLLM 服务的额外要求LightllmAPI同样实现了get_ppl()/_get_ppl()lightllm_api.py用于困惑度类PPL评测任务。它对响应有严格校验响应中必须包含prompt_token_ids和prompt_logprobs字段否则会断言失败并提示在启动 LightLLM 服务时添加--return_all_prompt_logprobs参数随后取出每个 token 对应的 logprob计算平均交叉熵损失ce_loss -sum(logprobs) / len(logprobs)作为 PPL 得分。因此如果你的评测集属于 PPL 型如部分选择题、语言建模类基准启动 LightLLM 服务时必须追加--return_all_prompt_logprobs否则 PPL 评测会因响应字段缺失而失败。生成gen型评测则无此要求。4.3 流控机制TokenBucket 与 rate_per_workerLightllmAPI使用 base_api.py 中定义的TokenBucket实现限流后台线程按rate_per_worker的速率向信号量补充令牌wait()则阻塞获取一个令牌从而保证对服务端的请求频率可控避免压垮本地推理服务。这与BaseAPIModel体系的query_per_second思路一致参见 base_api.py。4.4 配套的 Chat 服务封装LightllmChatAPI如果 LightLLM 服务暴露的是 OpenAI 风格的messages对话接口/chat类可使用 LightllmChatAPI继承自BaseAPIModel。它会将 OpenCompass 的PromptList含HUMAN/BOT角色转换为{role: user/assistant, content: ...}的消息列表lightllm_api.py并通过query_per_second控制请求速率、按retry处理 401/400/429 等状态码lightllm_api.py适用于对话评测场景。五、常见问题与调优建议现象可能原因处理建议请求报连接错误服务未启动、url端口与--port不一致用第三节的验证脚本测试对齐url与部署端口响应中无generated_text服务端异常或参数不兼容查看服务端日志检查generation_kwargs是否包含服务不支持的参数PPL 评测断言失败服务未开启--return_all_prompt_logprobs启动服务时追加该参数吞吐偏低max_total_token_num过小、并发不够在显存允许范围内调大max_total_token_num适当调高max_workers_per_task、rate_per_worker同机多服务冲突port/nccl_port重复为每个服务分配独立的port与nccl_port服务启动失败依赖版本不匹配尤其 transformers按 LightLLM 主页 要求对齐依赖版本调优的核心思路是以不爆显存为前提最大化max_total_token_num以提升吞吐同时结合数据集类型选择合适的评测范式gen 型无需额外参数PPL 型需开启--return_all_prompt_logprobs。六、相关资源官方教程本文中文原版见 docs/zh_cn/advanced_guides/evaluation_lightllm.md英文版见 docs/en/advanced_guides/evaluation_lightllm.md核心实现opencompass/models/lightllm_api.pyLightllmAPI、LightllmChatAPI示例配置examples/eval_lightllm.py基类与限流opencompass/models/base_api.py模型注册入口opencompass/models/__init__.py适配历史见 docs/zh_cn/notes/news.md2023.11.20 由社区贡献支持 LightLLM 后端评测赞分享模型评测人工智能大模型AI 评测【免费下载链接】opencompassOpenCompass is an LLM evaluation platform, supporting a wide range of models from OpenAI, Anthropic, Gemini, Qwen, GLM, DeepSeek, etc, across 100 datasets covering knowledge, reasoning, coding, science, language, long-context, and safety.项目地址https://gitcode.com/gh_mirrors/op/opencompass点击查看免费下载相关推荐Qwen3部署实战从本地推理到云端服务Qwen3部署实战从本地推理到云端服务 本文全面介绍了Qwen3大语言模型的多种部署方案涵盖了从本地CPU推理优化到云端高性能服务的完整技术栈。详细讲解了T人工智能大模型Qwen模型评测示例工程本地部署教程Qwen3-14B-AWQ部署实战从本地推理到云端服务Qwen3 14B AWQ部署实战从本地推理到云端服务 本文详细介绍了Qwen3 14B AWQ模型的完整部署流程涵盖从使用Transformers库进行本大模型人工智能国家中小学智慧教育平台电子课本下载工具3分钟快速获取所有教材PDF的终极指南国家中小学智慧教育平台电子课本下载工具3分钟快速获取所有教材PDF的终极指南 还在为获取电子课本而烦恼吗国家中小学智慧教育平台电子课本下载工具tchMat模型评测人工智能大模型AI 评测上一篇PileLayout开源项目使用常见问题解决方案下一篇【亲测免费】 Vue.D3.tree 项目常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考