首页
/ GenAI Bench 项目全面使用指南:从安装到性能分析

GenAI Bench 项目全面使用指南:从安装到性能分析

2025-06-28 22:59:10作者:仰钰奇

项目概述

GenAI Bench 是一个专为生成式 AI 系统设计的性能基准测试工具,它能够对各类 AI 服务(包括文本生成、图像理解、嵌入向量计算等)进行全面的性能评估。本文将详细介绍该工具的使用方法,帮助开发者快速上手并充分利用其功能。

安装指南

推荐安装方式(PyPI)

对于大多数用户,我们推荐通过 PyPI 进行安装:

pip install genai-bench

安装完成后,可以通过以下命令验证安装是否成功:

genai-bench --help

开发环境搭建

如需使用最新功能或进行二次开发,建议采用开发模式安装:

  1. 确保已安装 Python 3.11
  2. 使用 uv 创建虚拟环境:
    make uv
    source .venv/bin/activate
    
  3. 以可编辑模式安装项目:
    make install
    

核心功能解析

任务类型定义

GenAI Bench 通过任务类型(Task)来区分不同的基准测试场景,其命名遵循"输入模态-to-输出模态"的格式:

任务类型 描述 旧版本对应值
text-to-text 文本到文本生成(如聊天、问答) chat
text-to-embeddings 文本到嵌入向量生成 embeddings
image-to-text 图像到文本生成(如视觉问答) vision
image-to-embeddings 图像到嵌入向量生成 -

基准测试执行

文本生成测试示例

export HF_TOKEN="<your-key>"
export TRANSFORMERS_VERBOSITY=error

genai-bench benchmark --api-backend openai \
            --api-base "http://localhost:8082" \
            --api-key "your-key" \
            --api-model-name "vllm-model" \
            --model-tokenizer "/path/to/model" \
            --task text-to-text \
            --max-time-per-run 15 \
            --max-requests-per-run 300 \
            --server-engine "vLLM" \
            --server-gpu-type "H100" \
            --server-version "v0.6.0" \
            --server-gpu-count 4

关键参数说明:

  • --max-time-per-run:单次测试最大持续时间
  • --max-requests-per-run:单次测试最大请求数
  • --num-concurrency:并发请求数(可多值设置)

视觉任务测试

视觉任务需要指定图像数据集:

genai-bench benchmark \
            --api-backend openai \
            --api-key "your-key" \
            --api-base "http://localhost:8180" \
            --api-model-name "/models/vision-model" \
            --model-tokenizer "/models/vision-model" \
            --task image-to-text \
            --dataset-config ./config_llava-bench.json

分布式测试

当单进程无法产生足够负载时,可启用多工作进程:

--num-workers 4
--master-port 5577

注意:工作进程数不宜超过16,以避免资源争用。

数据集配置策略

GenAI Bench 支持灵活的数据集配置方式:

简单模式(命令行直接指定)

--dataset-path /path/to/data.csv \
--dataset-prompt-column "prompt"

高级模式(JSON配置文件)

{
  "source": {
    "type": "huggingface",
    "path": "ccdv/govreport-summarization",
    "huggingface_kwargs": {
      "split": "train",
      "streaming": true
    }
  },
  "prompt_column": "report"
}

视觉任务数据集配置示例:

{
  "source": {
    "type": "huggingface",
    "path": "lmms-lab/llava-bench-in-the-wild",
    "huggingface_kwargs": {
      "split": "train"
    }
  },
  "prompt_column": "question",
  "image_column": "image"
}

结果分析与可视化

生成Excel报告

genai-bench excel --experiment-folder <path> --excel-name report.xlsx

生成性能分析图表

GenAI Bench 可生成包含8个子图的综合性能分析图表:

genai-bench plot --experiments-folder <path> --group-key traffic_scenario

图表内容包括:

  1. 推理速度 vs 服务器输出吞吐量
  2. 首令牌时间 vs 服务器输出吞吐量
  3. 平均端到端延迟 vs RPS
  4. 错误率分析
  5. 更多关键性能指标...

性能优化建议

  1. 负载配置

    • 轻负载场景:--max-time-per-run 10 --max-requests-per-run 300
    • 重负载场景:--max-time-per-run 30 --max-requests-per-run 100
  2. 并发设置

    --num-concurrency 1 --num-concurrency 2 --num-concurrency 4 \
    --num-concurrency 8 --num-concurrency 16 --num-concurrency 32
    
  3. 监控提示

    • 当CPU使用率超过90%时,考虑增加工作进程数
    • 关注WARNING级别的日志信息

高级功能

OCI Cohere 服务测试

genai-bench benchmark --api-backend oci-cohere \
            --config-file /path/to/oci/config \
            --api-base "https://inference.endpoint" \
            --api-model-name "model-name" \
            --task text-to-text \
            --additional-request-params '{"compartmentId": "ID", "endpointId": "ID"}'

结果上传至OCI对象存储

支持将测试结果直接上传至OCI对象存储,便于团队协作和历史数据分析。

通过本文的全面介绍,开发者应能充分利用GenAI Bench进行各类生成式AI服务的性能评估与优化。建议定期查看工具的帮助文档(--help)以获取最新功能信息。

登录后查看全文
热门项目推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
260
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
854
505
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
254
295
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
21
5