Skip to main content

DBRX vs Mixtral vs GPT:创建你自己的基准测试

有许多通用的基准测试用于衡量 DBRX、Mixtral 等类似性能级别的 LLM。但公共基准测试往往被操纵,并不总能反映实际使用情况。

这些模型在满足你特定需求方面的表现如何?作为开发者,了解每个模型之间的权衡是很有益的。

在本指南中,我们将介绍如何创建一个个性化的基准测试,比较 DBRX、Mixtral 8x7b 和 GPT-3.5 在你相关用例中的表现。

最终结果将是一个类似于以下的自定义基准测试:

dbrx, mixtral, 和 gpt 比较

要求

  • 用于 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

可选:配置模型参数

通过设置 temperaturemax_tokensmax_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-chatgoogle/gemma-7b-it

如果你在本地托管,可以使用 ollamaLocalAIvllm 等。

步骤 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

它将显示如下结果:

dbrx、mixtral 和 gpt 比较

点击特定输出将显示断言的详细信息:

dbrx 评估详情

您还可以将结果输出到各种格式的文件中,例如 JSON、YAML 或 CSV:

npx promptfoo@latest eval -o results.csv

分析

比较提供了基于您的测试用例的 DBRX、Mistral 和 GPT-3.5 的并排性能视图。使用此数据来做出明智的决策,确定哪个 LLM 最适合您的应用程序。

在我们上面运行的非常基本的示例中,DBRX 倾向于冗长回答,这导致了一些失败:

dbrx 评估失败

这并不意味着 DBRX 不能很好地回答——这可能只是意味着我们需要稍微调整提示,以获得与其他模型类似的输出质量。

我们针对自定义用例的基准测试将 DBRX 评分为 66%,Mixtral 为 100%,GPT 3.5 为 83%。虽然公共基准测试可以提供模型性能的一般感觉,但它们不能替代在您自己的数据和用例上运行基准测试。

下一步

promptfoo 是一个完全开源的评估项目。如果您有兴趣运行自己的评估,请前往入门指南