恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
DeepEval:30分钟接上本地大模型,跑通LLM本地评测
首页
资讯中心
/
DeepEval:30分钟接上本地大模型,跑通LLM本地评测
DeepEval:30分钟接上本地大模型,跑通LLM本地评测
发布时间:2026/9/9 17:04:14
DeepEval30分钟接上本地大模型跑通LLM本地评测【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval你手里要评测的客服机器人数据里带着用户姓名和咨询记录一个字符都不能发给云端评判API再逐条调云接口给两千条用例打分月底的账单也扛不住。DeepEval 这个 LLM 评测框架提供了一条本地化路径把跑在自有机上的开源模型接成评判模型测试用例的打分全程不出本机。读完这篇你能在 30 分钟内接上本地评判模型跑出第一批评测指标。 方案拆解为什么选本地评判模型大多数 LLM 评测的做法是LLM-as-a-judge用一个强模型按标准给回答打分。评判模型放在云端每次打分都要把你的数据发出去DeepEval 的本地方案就是把这个评判环节挪到自己机器上。帮你算三笔账数据不出门测试输入、模型输出、打分理由全部留在本地网络里。金融、医疗这类数据不出境是硬要求的场景这一条就是决定性条件。评判模型是可换零件所有指标都接受model参数接入方式有现成三条路见下表。成本可算评判模型部署好后每次打分的 token 费用为零改一版 prompt 重评几十遍多花的只是机器时间。接入方式适用场景用法OllamaModelOllama开源模型本地运行时传模型名默认连 localhost:11434LocalModelvLLM、llama.cpp 等 OpenAI 兼容服务传base_url 模型名自定义DeepEvalBaseLLM子类Transformers 等方式直接加载模型继承基类实现 3 个方法内置适配器在源码 deepeval/models/llms/ 里其中LocalModel本质是用 OpenAI SDK 发请求指向任何暴露/v1/chat/completions端点的服务都能用。️ 完整实操跑通一次本地评测场景取一个典型的 RAG 问答机器人模型根据员工手册回答问题你要验证Faithfulness忠实度回答是否被检索到的上下文支撑和Answer Relevancy回答相关性回答是否紧扣问题。准备环境并拉起本地模型装框架和 Ollama 客户端拉一个能做评判的开源模型pip install -U deepeval # 评测框架 pip install ollama # Ollama Python 客户端 ollama pull llama3.1:8b # 指令对齐的开源模型可直接当评判为什么挑指令对齐模型评判模型的活是看懂评分标准、按标准执行并给结论基座模型干不了这活。接上评判模型用内置适配器连本地服务两行代码的事from deepeval.models import OllamaModel, LocalModel # Ollama 本地服务base_url 默认 http://localhost:11434 judge OllamaModel(modelllama3.1:8b, temperature0.0) # 指向 vLLM / llama.cpp 的 OpenAI 兼容端点也可以 # LocalModel 需要一个占位 API key任意非空字符串 # judge LocalModel(modelqwen2.5-7b-instruct, # api_keyEMPTY, # base_urlhttp://localhost:8000/v1)如果你的模型是用 Transformers 直接加载、没跑 HTTP 服务就写个自定义适配器。基类只要求三个方法load_model加载模型、generate同步生成、a_generate异步生成这是框架对评判模型的全部接口约定from transformers import pipeline from deepeval.models import DeepEvalBaseLLM class QwenLocalJudge(DeepEvalBaseLLM): def load_model(self): self.llm pipeline(text-generation, modelQwen/Qwen2.5-7B-Instruct) return self def generate(self, prompt: str) - str: out self.llm(prompt, max_new_tokens300, do_sampleFalse)[0] return out[generated_text] async def a_generate(self, prompt: str) - str: return self.generate(prompt) def get_model_name(self) - str: return Qwen2.5-7B-Instruct写用例跑第一个评测构造测试用例、挂上指标、执行评测from deepeval.test_case import LLMTestCase from deepeval.metrics import FaithfulnessMetric, AnswerRelevancyMetric from deepeval import evaluate test_case LLMTestCase( input员工每年可以请几天病假, actual_output员工每年最多可以请 10 天带薪病假。, expected_output员工每年有 10 天带薪病假。, retrieval_context[根据员工手册员工每年享有 10 天带薪病假。], ) result evaluate( test_cases[test_case], metrics[ FaithfulnessMetric(threshold0.7, modeljudge), AnswerRelevancyMetric(threshold0.7, modeljudge), ], ) print(fFaithfulness: {result.metrics[0].score:.2f})threshold是通过线得分达到它该指标才算过。直接运行这个文件终端会逐项打印得分卡片效果长这样想批量跑时把用例塞进test_cases列表即可框架会并发调度并汇总结果不用自己写循环。 实战技巧让本地评测更快更稳评判温度锁 0评判模型采样会带来随机性同一条用例两次打分可能不一样先定这条再谈其他judge OllamaModel(modelllama3.1:8b, temperature0.0)OllamaModel、LocalModel默认温度就是 0自定义适配器记得配do_sampleFalse。分数可复现prompt 改动前后的对比才可信。4bit 量化省显存8B 模型 fp16 要占约 16GB 显存12G 的卡塞不下量化是最直接的解法from transformers import BitsAndBytesConfig bnb BitsAndBytesConfig( load_in_4bitTrue, # 4bit 存储权重 bnb_4bit_quant_typenf4, # normal float 4 bnb_4bit_use_double_quantTrue, )同样的 8B 模型显存从约 16GB 降到 6GB 上下批量评测的上下文才放得开。限并发别让服务被打挂本地推理服务是单机的几百条用例全速打进去很容易超时或 OOMfrom deepeval.evaluate.configs import AsyncConfig evaluate(test_casescases, metricsmetrics, async_configAsyncConfig(max_concurrent4))并发压到 4~8本地服务稳定总耗时反而是可控的。评判模型别贪大追求评判精度上 70B 的显存和速度双爆。打分任务主要考的是遵循指令、核对证据用judge OllamaModel(modelqwen2.5:7b-instruct)这类 7~8B 的模型得分和大模型接近速度快好几倍。⚠️ 踩坑记录本地评测翻车的三种情况显存爆掉评测中途崩了现象前面几条用例都正常跑到一半进程被直接杀掉nvidia-smi里显存顶满。根因评判模型和被评模型或多个进程同时占显存加上并发太大上下文堆积。解法评判用小模型被评模型走 API 或分到另一张卡仍紧张就给评判模型上 4bit 量化同时把max_concurrent调小。同一用例两次跑出不同分数现象昨天 Faithfulness 是 0.91今天重跑变 0.78分不清是模型变了还是分挂了。根因评判模型在采样温度非零就有随机性。解法分三步走评判模型和被评模型都锁 temperature 0自定义适配器加do_sampleFalse对比两次结果时保持两边温度一致否则差异没有解释力。评判模型偶尔吐出坏 JSON现象大批量评测时部分用例报 JSON 解析错误整轮评测报错。根因开源模型对格式的遵循比商用 API 弱输出的 JSON 字段会残缺。解法优先走 Ollama / vLLM 的结构化解码内置OllamaModel打分时会把评分用的 schema 传给服务端对应formatschema由服务端保证输出合法框架对 Ollama、Local 两类提供方也内置了重试逻辑偶发失败多数能自动恢复不用自己写兜底。到这里评判模型已经跑在你自己机器上测试用例、检索上下文、得分全部本地流转重复评测不再产生 token 费用整个流程可离线复现。下一步把上面的代码存成eval_local.py跑deepeval test eval_local.py评测就成了一条可执行的命令挂进 CI 后每次改动 prompt 或模型都会自动回归。指标想再多挑几个翻一下 deepeval/metrics/README.md 里的指标清单和示例按你的业务场景选两三个挂上去就行。【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考