DBRX vs Mixtral vs GPT:创建你自己的基准测试
有许多通用的基准测试用于衡量 DBRX、Mixtral 等类似性能级别的 LLM。但公共基准测试往往被操纵,并不总能反映实际使用情况。
这些模型在满足你特定需求方面的表现如何?作为开发者,了解每个模型之间的权衡是很有益的。
在本指南中,我们将介绍如何创建一个个性化的基准测试,比较 DBRX、Mixtral 8x7b 和 GPT-3.5 在你相关用例中的表现。
最终结果将是一个类似于以下的自定义基准测试:
要求
- 用于 DBRX 和 Mixtral 的 OpenRouter API 密钥。
- 用于 gpt-4o-mini 的 OpenAI API 密钥。
- Node 18+
步骤 1:初始设置
为你的比较项目创建一个新目录,并使用 promptfoo init
初始化它。
npx promptfoo@latest init dbrx-benchmark
有关 promptfoo 设置的更多详细信息,请参阅 安装。
步骤 2:配置模型
进入 dbrx-benchmark
目录后,编辑 promptfooconfig.yaml
以包含你要比较的模型。
OpenRouter 使用 OpenAI 格式,因此我们只需覆盖 OpenAI 提供者的基础 URL。以下是一个包含 DBRX、Mixtral 和 GPT-3.5 的示例配置:
providers:
- id: openai:chat:databricks/dbrx-instruct
config:
apiBaseUrl: https://openrouter.ai/api/v1
apiKeyEnvar: OPENROUTER_API_KEY
temperature: 0
- id: openai:chat:mistralai/mixtral-8x7b-instruct
config:
apiBaseUrl: https://openrouter.ai/api/v1
apiKeyEnvar: OPENROUTER_API_KEY
temperature: 0
- id: openai:gpt-4o-mini
将你的 API 密钥设置为环境变量:
export OPENROUTER_API_KEY=your_openrouter_api_key
export OPENAI_API_KEY=your_openai_api_key
可选:配置模型参数
通过设置 temperature
和 max_tokens
或 max_length
等参数来自定义每个模型的行为:
providers:
- id: openai:chat:databricks/dbrx-instruct
config:
apiBaseUrl: https://openrouter.ai/api/v1
apiKeyEnvar: OPENROUTER_API_KEY
temperature: 0
- id: openai:chat:mistralai/mixtral-8x7b-instruct
config:
apiBaseUrl: https://openrouter.ai/api/v1
apiKeyEnvar: OPENROUTER_API_KEY
temperature: 0
- id: openai:gpt-4o-mini
config:
temperature: 0
可选:添加更多模型
例如,如果你对比较 Llama-70B 或 Gemma 感兴趣,可以添加 meta-llama/llama-2-70b-chat
和 google/gemma-7b-it
。
如果你在本地托管,可以使用 ollama、LocalAI、vllm 等。
步骤 3:设置提示
设置你希望为每个模型运行的提示。在这种情况下,我们将使用一个简单的提示,因为我们想要比较模型的性能。
prompts:
- '深入思考并简洁回答:{{query}}'
如果需要,你可以测试多个提示(只需在列表中添 加更多提示),为每个模型测试 不同的提示,发送 自定义 JSON,或 调用你自己的应用程序逻辑。
步骤 4:添加测试用例
定义你要用于评估的测试用例。这包括设置将插入提示中的变量。
我们只是编造一些问题作为示例。你应该修改提示和测试用例以反映你自己的 LLM 用例:
tests:
- vars:
query: '法国的首都是什么?'
- vars:
query: '解释相对论理论。'
- vars:
query: '写一首关于大海的诗。'
- vars:
query: '吃苹果的健康益处是什么?'
- vars:
query: "将 'Hello, how are you?' 翻译成西班牙语。"
- vars:
query: '输出一个颜色的 JSON 列表'
对于自动化测试,添加断言。这些断言会自动与输出进行检查:
tests:
- vars:
query: '法国的首都是什么?'
assert:
- type: contains
value: '巴黎'
- vars:
query: '解释相对论。'
assert:
- type: contains
value: '爱因斯坦'
- vars:
query: '写一首关于大海的诗。'
assert:
- type: llm-rubric
value: '这首诗应唤起如波浪或海洋的意象。'
- vars:
query: '吃苹果的健康益处是什么?'
assert:
- type: contains
value: '维生素'
- vars:
query: "将'你好,你好吗?'翻译成西班牙语。"
assert:
- type: similar
value: 'Hola, ¿cómo estás?'
- vars:
query: '输出一个颜色的JSON列表'
assert:
- type: is-json
- type: latency
threshold: 5000
支持多种类型的断言,包括确定性和LLM评级的断言。请参阅断言和指标以找到符合您需求的断言。
第五步:运行比较
配置完成后,使用 promptfoo
CLI 运行评估:
npx promptfoo@latest eval
此命令将针对每个配置的模型执行每个测试用例并记录结果。
要可视化结果,请使用 promptfoo
查看器:
npx promptfoo@latest view
它将显示如下结果:
点击特定输出将显示断言的详细信息:
您还可以将结果输出到各种格式的文件中,例如 JSON、YAML 或 CSV:
npx promptfoo@latest eval -o results.csv
分析
比较提供了基于您的测试用例的 DBRX、Mistral 和 GPT-3.5 的并排性能视图。使用此数据来做出明智的决策,确定哪个 LLM 最适合您的应用程序。
在我们上面运行的非常基本的示例中,DBRX 倾向于冗长回答,这导致了一些失败:
这并不意味着 DBRX 不能很好地回答——这可能只是意味着我们需要稍微调整提示,以获得与其他模型类似的输出质量。
我们针对自定义用例的基准测试将 DBRX 评分为 66%,Mixtral 为 100%,GPT 3.5 为 83%。虽然公共基准测试可以提供模型性能的一般感觉,但它们不能替代在您自己的数据和用例上运行基准测试。