本文将介绍如何使用 LlamaIndex 对多个大型语言模型(LLM)进行基准测试。我们将对 GPT-3.5、GPT-4 和 Gemini-Pro 进行评估,具体评估这些模型在处理用户查询时的响应质量。
数据集加载
首先,我们需要从 llama-hub 下载评估数据集。
from llama_index.core.llama_dataset import download_llama_dataset
# 下载数据集
evaluator_dataset, _ = download_llama_dataset(
"MiniMtBenchSingleGradingDataset", "./mini_mt_bench_data"
)
evaluator_dataset.to_pandas()[:5]
定义评估器
接下来,我们定义评估器,分别使用 GPT-3.5、GPT-4 和 Gemini-Pro 作为基础模型。
from llama_index.core.evaluation import CorrectnessEvaluator
from llama_index.llms.openai import OpenAI
from llama_index.llms.gemini import Gemini
llm_gpt4 = OpenAI(temperature=0, model="gpt-4")
llm_gpt35 = OpenAI(temperature=0, model="gpt-3.5-turbo")
llm_gemini = Gemini(model="models/gemini-pro", temperature=0)
evaluators = {
"gpt-4": CorrectnessEvaluator(llm=llm_gpt4),
"gpt-3.5": CorrectnessEvaluator(llm=llm_gpt35),
"gemini-pro": CorrectnessEvaluator(llm=llm_gemini),
}
基准测试
我们使用 EvaluatorBenchmarkerPack 进行基准测试,并比较各个模型的性能。
from llama_index.core.llama_pack import download_llama_pack
EvaluatorBenchmarkerPack = download_llama_pack(
"EvaluatorBenchmarkerPack", "./pack"
)
# 对 GPT-3.5 进行基准测试
evaluator_benchmarker = EvaluatorBenchmarkerPack(
evaluator=evaluators["gpt-3.5"],
eval_dataset=evaluator_dataset,
show_progress=True,
)
gpt_3p5_benchmark_df = await evaluator_benchmarker.arun(
batch_size=100, sleep_time_in_seconds=0
)
gpt_3p5_benchmark_df.index = ["gpt-3.5"]
gpt_3p5_benchmark_df
# 对 GPT-4 进行基准测试
evaluator_benchmarker = EvaluatorBenchmarkerPack(
evaluator=evaluators["gpt-4"],
eval_dataset=evaluator_dataset,
show_progress=True,
)
gpt_4_benchmark_df = await evaluator_benchmarker.arun(
batch_size=100, sleep_time_in_seconds=0
)
gpt_4_benchmark_df.index = ["gpt-4"]
gpt_4_benchmark_df
# 对 Gemini-Pro 进行基准测试
evaluator_benchmarker = EvaluatorBenchmarkerPack(
evaluator=evaluators["gemini-pro"],
eval_dataset=evaluator_dataset,
show_progress=True,
)
gemini_pro_benchmark_df = await evaluator_benchmarker.arun(
batch_size=5, sleep_time_in_seconds=0.5
)
gemini_pro_benchmark_df.index = ["gemini-pro"]
gemini_pro_benchmark_df
汇总结果
我们将所有基准测试结果汇总,并进行比较。
import pandas as pd
final_benchmark = pd.concat(
[
gpt_3p5_benchmark_df,
gpt_4_benchmark_df,
gemini_pro_benchmark_df,
],
axis=0,
)
final_benchmark
从结果中,我们可以观察到以下几点:
- GPT-3.5 和 Gemini-Pro 的结果相似,但 GPT-3.5 在与 GPT-4 的接近度方面略有优势。
- 两者与 GPT-4 的差距都较大。
- GPT-4 在该基准测试中表现出较高的一致性。
可能遇到的错误
在运行上述代码时,可能会遇到以下错误:
- RateLimitError: 当使用 OpenAI GPT-4 进行评估时,可能会遇到速率限制错误。解决方法是在代码中增加 sleep_time_in_seconds 参数,以控制请求速率。
- 数据集加载错误: 确保下载的数据集路径正确,并具有足够的磁盘空间。
- 网络连接问题: 下载数据集或调用 API 时,需确保网络连接稳定。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!