开源大模型圈又热闹起来了,这次的主角是蚂蚁开源的一款新模型,而它被讨论得最多的一点,是“站在了 Kimi 的肩膀上”。对开发者来说,新闻热度是短暂的,真正有价值的是:当一个开源模型出现在 GitHub 仓库之后,你该如何把它拉下来、跑起来、接入自己的工具链,并判断它到底能不能用。这篇文章就围绕这条链路展开,从基座二次开发的技术背景,到许可证、环境、依赖和硬件检查,再到最小推理、API 封装、编码工具接入和最小评测闭环,最后补上生产落地时最容易被忽略的几个环节。
如果你最近正在关注 Kimi 网页版、Kimi API 调用,或者已经在 VSCode 里接入过 Kimi Code 这类编码插件,那么你已经有足够的前置知识。下面的内容不需要你掌握大模型训练细节,只需要你熟悉 Python、Git 和基本的命令行操作。
1. 为什么“站在 Kimi 肩膀上”开源,是一条值得关注的技术路线
1.1 基座二次开发和从零预训练不是一回事
“站在 Kimi 肩膀上”这句话,不能简单理解成复制了一个模型权重。更准确地说,它描述的是大模型开发中常见的一种路线:不从头训练基座模型,而是基于一个已经具备通用能力、并且在特定方向上有优势的模型,做二次开发、领域适配或指令对齐,然后把成果以开源形式发布出来。
从零预训练一个百亿甚至千亿参数模型,需要海量数据、大规模 GPU 集群、数周甚至数月的训练周期,以及一套完整的并行训练工程体系。绝大多数团队不具备这个条件。二次开发则完全不同,团队可以直接继承基座模型的语法能力、知识覆盖、指令遵循能力和对齐基础,把主要精力放在更聚焦的问题上,例如中文理解、代码生成、长上下文处理或工具调用。这样不仅训练成本大幅下降,发布周期也明显缩短。
从开源社区的价值看,基座二次开发让更多组织能够进入大模型领域,而不是只有少数巨头才能玩。这也解释了为什么每次出现“某公司基于某模型开源新模型”的消息,开发者都会格外关注:它往往意味着一个更贴近实际应用、更容易二次修改的起点。
1.2 Kimi 这条技术路线为什么常被当作基座
Kimi 系列模型在开发者群体中积累了不错的口碑,尤其是在长文本阅读、代码场景和工具调用方面。对普通用户来说,Kimi 网页版能直接处理超长文档,Kimi API 也能接入独立应用;对开发者来说,Kimi Code 这一系列工具把模型能力封装成了可编程、可接入 VSCode 的编码助手。这些能力组合起来,让 Kimi 的模型路线在开源二次开发中显得很有吸引力。
需要说明的是,这里说“Kimi 路线”并不代表某一个固定模型,而是指这一类模型在处理长上下文、结构化输出、工具调用和代码任务时的特点。蚂蚁开源的新模型如果基于这样的基座进行二次开发,那么它继承的往往也是这些能力。开发者拿到模型后,应该先验证这些关键能力是否保留,而不是只看通用问答效果。
1.3 开源模型交付物到底是什么
一个完整的开源模型发布,通常不只是提供一个权重文件。你会在仓库里看到:
- 模型权重文件,可能是单个文件,也可能是分片文件。
- 推理代码或推理脚本,用于加载和运行模型。
- 分词器文件,例如
tokenizer.json、tokenizer_config.json。 - 模型配置文件,例如
config.json,里面包含层数、头数、隐藏层大小等结构信息。 - 模型卡(Model Card),说明模型用途、训练数据、限制和评测结果。
- 示例脚本,包括推理示例、微调示例甚至量化示例。
- 许可证和免责声明。
很多新手拿到模型后,只下载权重文件,然后自己去写加载逻辑,结果发现分词器缺失、结构不匹配、推理脚本依赖的库版本不对,最终陷入漫长的排查。正确做法是先把整个仓库搞清楚,再动手写代码。
2. 动手前先做四项检查:许可证、仓库、依赖和硬件
2.1 许可证决定你能干什么
开源模型的许可证和普通软件许可证一样重要,但很多人会忽略。模型仓库里通常会有LICENSE、MODEL_LICENSE或 README 中的许可证说明。许可证会明确你是否可以商用、是否可以微调、是否可以再次发布衍生模型、是否要求保留版权声明、是否限制特定用途。
常见开源许可证差异比较大:
| 许可证类型 | 典型特点 | 落地前需要确认 |
|---|---|---|
| Apache 2.0 | 允许商用、修改、分发,需要保留版权声明 | 是否附带额外条件 |
| MIT | 非常宽松,允许商用和修改 | 是否需要保留原始许可文本 |
| 自定义模型许可 | 通常限制商用或限制特定场景 | 必须逐条阅读,不能只看代码许可 |
不要因为 GitHub 仓库是 public,就默认模型可以随便用。代码使用 Apache 2.0,模型权重可能使用更严格的自定义许可,这在开源大模型项目里非常常见。如果你的项目要商用,更要提前让法务或合规同事介入。
提醒:如果仓库里没有明确的模型许可证,不要默认可以自由商用。联系维护者确认,或者干脆换一个许可清晰的模型。
2.2 仓库结构就是使用说明书
拿到一个开源模型仓库后,不要急着运行,先看目录结构。一个组织良好的仓库通常包含:
my-awesome-model/ ├── README.md ├── LICENSE ├── config.json ├── generation_config.json ├── model.safetensors ├── tokenizer.json ├── tokenizer_config.json ├── scripts/ │ ├── run_inference.py │ └── run_training.py ├── examples/ │ └── basic_chat.py └── requirements.txt重点看 README 中的 Quickstart 部分,它通常会告诉你最短路径的运行方式。如果 README 没有写清楚 Python 版本、依赖包版本和显存要求,就要提高警惕,这类仓库跑通成本往往更高。
2.3 依赖环境要按模型选型
不同模型对依赖的要求差异很大。有的模型只支持transformers某个区间版本,有的模型要求torch >= 2.1,还有的模型必须使用专门的推理框架加载。常见依赖项包括:
- Python 版本,通常 3.9 到 3.11 是主流。
- PyTorch 版本,需要和 CUDA 版本匹配。
- transformers、tokenizers、safetensors。
- 推理加速框架,例如 vLLM、llama.cpp、TensorRT-LLM。
- 微调框架,例如 peft、deepspeed、trl。
推荐创建独立的 Python 虚拟环境,不要直接往系统环境里装包:
python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt这样后续切换模型、升级依赖时,不会把系统 Python 环境搞乱。依赖安装后,再检查一遍版本:
python -c "import torch, transformers; print(torch.__version__, transformers.__version__)"如果模型对 transformers 版本有严格要求,这个输出结果能帮你快速判断是否需要调整环境。
2.4 磁盘、显存和内存要提前算
模型权重占用的空间可以通过一个粗略公式估算:参数量乘以每个参数的字节数。FP32 每个参数占 4 字节,FP16/BF16 占 2 字节,INT8 占 1 字节,INT4 大约 0.5 字节。一个 7B 模型:
- FP32 约 28GB。
- FP16/BF16 约 14GB。
- INT8 约 7GB。
- INT4 约 3.5GB。
注意这只是权重大小,运行时还需要额外的激活显存和 KV Cache。如果你只有一张 16GB 显存的显卡,加载 FP16 的 7B 模型通常可以跑,但上下文稍微调长一点就可能 OOM。规划环境时,要把训练、推理、并发请求所需资源分开算。
学习环境和生产环境的要求差异也很明显:
| 环境 | CPU | 内存 | 显存 | 磁盘 |
|---|---|---|---|---|
| 学习验证 | 4 核以上 | 16GB 以上 | 8GB 起步 | 50GB 以上 |
| 生产推理 | 8 核以上 | 32GB 以上 | 多卡或大显存 | 200GB 以上 |
| 微调训练 | 16 核以上 | 64GB 以上 | 多卡 A100/H100 | 500GB 以上 |
这是参考值,实际以模型大小和推理引擎为准。先把磁盘留足,很多模型下载到一半失败,就是因为磁盘空间不够。
3. 从 GitHub 仓库到首次推理:最小闭环跑通
3.1 拉取代码并创建隔离环境
确认许可证和环境要求后,开始克隆仓库。如果模型很大,注意看仓库是否使用 Git LFS,或者权重是否放在 Hugging Face 等外部平台。
git clone https://github.com/example/my-awesome-model.git cd my-awesome-model python -m venv .venv source .venv/bin/activate pip install -r requirements.txt这里把仓库地址写成示例,实际使用时以你拿到的模型仓库为准。克隆完成后,先看一下requirements.txt中是否包含torch、transformers、vllm等关键包。如果仓库没有 requirements 文件,就在模型卡里找依赖说明。
注意:如果仓库很大,直接克隆可能很慢。可以先
git clone --depth 1拉最新快照,避免把历史记录全部下载下来。
3.2 下载权重文件并确认加载路径
权重文件通常不在 Git 仓库里,而是放在 Hugging Face Hub 或对象存储上。常见方式是通过huggingface_hub下载:
from huggingface_hub import snapshot_download model_path = snapshot_download( repo_id="example/my-awesome-model", local_dir="./models/my-awesome-model", allow_patterns=["*.json", "*.safetensors", "*.txt", "*.model"], ) print(model_path)下载完成后,把模型路径记录下来。后面的推理脚本会用到这个路径。这里最容易犯的错误是路径写错,比如漏掉了./models/前缀,或者模型目录里还嵌套了一层目录。建议下载完成后先执行ls -lah models/my-awesome-model确认目录下有config.json和权重文件。
3.3 写一个最短推理脚本验证模型能工作
用 Transformers 加载模型做一次最小推理,是验证链路最快的方式。下面是一个适合 7B 级别模型的示例:
from transformers import AutoModelForCausalLM, AutoTokenizer import torch model_path = "./models/my-awesome-model" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.float16, device_map="auto", ) messages = [ {"role": "user", "content": "使用 Python 写一个快速排序函数,并解释时间复杂度。"} ] inputs = tokenizer.apply_chat_template( messages, return_tensors="pt", return_dict=True, ).to(model.device) outputs = model.generate( **inputs, max_new_tokens=512, do_sample=False, temperature=0.6, top_p=0.9, ) response = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True) print(response)运行命令:
python inference.py如果模型正常加载并输出代码,说明整条链路已经跑通。如果报错,优先检查模型路径、显存和依赖版本。
这里有个关键点:我使用了do_sample=False。它让模型在解码时尽量选择概率最高的下一个 token,结果更稳定,适合第一次验证。如果你希望模型输出更多样,再改成do_sample=True并调整temperature。
3.4 用更大吞吐的推理引擎替代原生加载
Transformers 加载模型简单,但并发能力弱,推理速度也一般。生产环境通常使用 vLLM 或 llama.cpp。vLLM 对 GPU 推理优化明显,启动方式也很简单:
vllm serve ./models/my-awesome-model \ --served-model-name my-awesome-model \ --port 8000 \ --max-model-len 8192启动后,它会提供一个 OpenAI 兼容的/v1/chat/completions接口。这样既能获得更高的吞吐,又能直接复用现有工具链。
| 方案 | 适合场景 | 优点 | 注意点 |
|---|---|---|---|
| transformers pipeline | 快速验证、教学演示 | 上手快 | 并发低、吞吐有限 |
| vLLM | GPU 生产推理 | 吞吐高、内存管理好 | 对 CUDA 和 GPU 显存有要求 |
| llama.cpp | 本地 CPU/小内存环境 | 可量化运行 | 部分模型算子可能不支持 |
如果显存紧张,也可以先用量化后的权重。但要注意,量化模型和原模型在输出质量上可能有差异,生产环境最好先做一轮评测再决定。
4. 把模型封装成 API,并接入类似 Kimi Code 的编码场景
4.1 为什么需要 OpenAI 兼容接口
当前很多开发工具,例如 VSCode 下的 Continue 插件、各类 Copilot 插件、自研的代码助手,都默认支持 OpenAI 风格的接口。如果你想用新模型替换工具里的默认模型,最简单的方式不是写一个专用 SDK,而是让模型服务暴露一个 OpenAI 兼容的POST /v1/chat/completions接口。
这样 Kimi 网页版能做的事情,本地模型也可以接进同一个工作流:在 VSCode 里选中代码、让助手解释、补全、生成单测。你仍然可以使用 Kimi API 做在线对照,也可以把本地模型作为私有化方案。
4.2 FastAPI 最小实现
下面是一个最小 FastAPI 服务示例。它先加载模型,再提供一个聊天补全接口,内部调用 Transformers 完成生成。
from typing import Optional, List from fastapi import FastAPI from pydantic import BaseModel from transformers import AutoModelForCausalLM, AutoTokenizer import torch app = FastAPI() model_path = "./models/my-awesome-model" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained( model_path, torch_dtype=torch.float16, device_map="auto", ) class ChatMessage(BaseModel): role: str content: str class ChatRequest(BaseModel): model: Optional[str] = "my-awesome-model" messages: List[ChatMessage] max_tokens: Optional[int] = 512 temperature: Optional[float] = 0.6 top_p: Optional[float] = 0.9 class ChatCompletionResponse(BaseModel): choices: list @app.post("/v1/chat/completions") def chat_completions(request: ChatRequest): messages = [{"role": m.role, "content": m.content} for m in request.messages] inputs = tokenizer.apply_chat_template( messages, return_tensors="pt", return_dict=True, ).to(model.device) outputs = model.generate( **inputs, max_new_tokens=request.max_tokens, temperature=request.temperature, top_p=request.top_p, do_sample=request.temperature > 0, ) response_text = tokenizer.decode( outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True, ) return { "choices": [ { "message": {"role": "assistant", "content": response_text} } ] }启动服务:
uvicorn server:app --host 0.0.0.0 --port 8000这里有几个容易忽略的点:
do_sample=request.temperature > 0能避免temperature=0时仍然采样导致的随机波动。- 如果服务启动时加载模型较慢,可以在加载日志里记录模型路径和耗时,方便定位启动问题。
- 真实项目里不要用全局模型变量直接做并发,需要加锁或用推理引擎自带并发能力。
4.3 用 curl 和 Python 客户端验证接口
服务启动后,用 curl 验证:
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "my-awesome-model", "messages": [{"role": "user", "content": "写一个冒泡排序"}], "max_tokens": 256, "temperature": 0 }'也可以使用 OpenAI Python SDK:
from openai import OpenAI client = OpenAI( base_url="http://localhost:8000/v1", api_key="not-needed", ) response = client.chat.completions.create( model="my-awesome-model", messages=[ {"role": "user", "content": "解释一下什么是 RAG"} ], ) print(response.choices[0].message.content)如果返回正常,说明服务已经可以被外部工具调用。
4.4 接入开发工具时的注意点
把本地模型接入 VSCode 等工具时,重点检查以下几点:
- 工具默认发送的 system prompt 和模型指令格式是否匹配。
- 工具是否开启流式输出。很多插件默认期望流式返回,如果后端不支持流式,会出现一直无响应或超时。
- 上下文长度上限。模型支持 8K 还是 32K,工具里的最大 token 设置必须匹配,否则会截断或报错。
- 并发请求超时时间。本地单卡推理通常较慢,工具可能默认 30 秒超时,需要调大或优化推理速度。
在接入类似 Kimi Code 这类编码助手时,最关键的是先跑通一个最小场景:选中一段代码,让模型解释,然后再逐步开启补全、重构和单测能力。
5. 模型到底行不行:建立最小评测闭环
5.1 评测不能只看一个 prompt 的输出
只拿一个 prompt 测一下,看到输出像模像样就认为模型可用,这是最容易踩的坑。大模型输出受 prompt、temperature、随机种子影响很大,单条样例既不能反映真实能力,也不能暴露稳定的缺陷。要判断一款新模型是否达到生产可用标准,需要建立自己的最小评测集。
评测集不需要一开始就做很大,但至少要覆盖以下几个维度:
| 评测维度 | 评什么 | 示例任务 |
|---|---|---|
| 通用问答 | 知识储备、表达能力 | 解释概念、写摘要 |
| 代码生成 | 语法正确性、逻辑正确性 | 排序算法、正则表达式、SQL |
| 长文本理解 | 信息抽取、上下文记忆 | 总结长文档、提取关键字段 |
| 工具调用 | 结构化输出、参数提取 | 模拟 JSON 输出、函数调用 |
| 安全对齐 | 拒绝不当请求 | 危险行为引导、敏感话题 |
每个维度准备 5 到 10 个用例,就能在半小时内形成初步结论。
5.2 设计一个 5 到 10 个用例的最小评测脚本
下面这个脚本调用的是前面已经封装好的本地 API。你可以把用例放在一个列表里,逐个请求,并输出结果。
import json from openai import OpenAI client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed") cases = [ { "name": "写一个快速排序", "messages": [ {"role": "user", "content": "用 Python 写一个快速排序函数,并简要解释。"} ], "max_tokens": 512, }, { "name": "抽取日期实体", "messages": [ {"role": "user", "content": "从这句话中抽取日期:项目于2025年3月15日启动,6月底完成开发。"} ], "max_tokens": 128, }, { "name": "长文本摘要", "messages": [ {"role": "user", "content": "请用三句话总结下面这段内容:...(放一段长文本)"} ], "max_tokens": 256, }, ] for case in cases: response = client.chat.completions.create( model="my-awesome-model", messages=case["messages"], max_tokens=case["max_tokens"], temperature=0, ) print("=== " + case["name"] + " ===") print(response.choices[0].message.content) print()建议每次固定temperature=0,并且记录模型版本、评测日期、提示词内容。否则过了两周,模型更新了,评测结果却无法对照。
5.3 与 Kimi 网页版或 API 进行对照测试
一个新模型是否值得替换现有方案,最好有一个 baseline。Kimi 网页版和 Kimi API 就是现成的对照对象。你可以把同一组用例分别发给本地模型和 Kimi,然后人工对比:
- 回答是否完整。
- 代码能否直接运行。
- 长文本中关键信息是否丢失。
- 是否遵守输出格式要求。
需要注意,Kimi 网页版可能带有额外系统提示词,并且不同时间的模型版本可能不同,所以对照结果只能作为参考。更严谨的做法是固定使用同一版本的 Kimi API,并且记录调用参数。
5.4 常见评测误区
- 使用模型训练集里的题目,结果自然偏高。
- 只看回答正确性,不看格式和长度。
- 只测中文,不测英文和代码混合场景。
- 每次生成结果波动大,没有固定随机种子或关闭采样。
- 没有记录模型版本,后来模型更新了也没发现。
这些误区会让评测结果失真,最终可能导致上线后才发现模型在真实业务上表现不佳。
6. 上线前还要处理:日志、安全、回滚和知识库扩展
6.1 生产环境最少还要加五个设施
本地推理服务能跑通,只是第一步。生产环境还要补齐基础设施,否则任何一个异常都可能造成长时间停服。
| 设施 | 作用 | 落地建议 |
|---|---|---|
| 健康检查 | 判断服务是否存活 | 提供/health接口,启动时加载模型,加载完成再返回 ready |
| 监控指标 | 观察请求量、延迟、显存 | 接入 Prometheus,记录 tokens/s、请求数、错误率 |
| 日志 | 排查输入输出和异常 | 记录请求摘要、生成 token 数、错误堆栈,注意脱敏 |
| 限流 | 防止服务被打满 | 按用户或 IP 限制 QPS,超出后返回 429 |
| 回滚 | 模型异常时快速恢复 | 保留上一版模型路径,用环境变量切换 |
6.2 私有知识库与 RAG 扩展
开源新模型通常无法覆盖最新的业务知识,单纯靠模型内部知识回答问题,很容易出现“一本正经地胡说八道”。解决这个问题最通用的方案是引入 RAG(检索增强生成):先把业务文档拆成切片,存入向量数据库,用户提问时先检索最相关的片段,再把片段和问题一起交给模型生成回答。
一个典型的 RAG 流程是:
- 文档导入并切片。
- 用 embedding 模型生成向量并存储。
- 用户提问时用同样方式生成 query 向量。
- 从向量库检索 top-k 相关片段。
- 把片段拼进 prompt,交给开源模型生成答案。
这种方式不要求模型记住所有业务细节,只需要它理解检索出的上下文并组织回答。对比纯靠模型记忆,RAG 在更新成本和可解释性上都有明显优势。
6.3 模型更新和 A/B 发布
模型不是只发布一次就没有后续了。开源模型后续可能更新权重,或者你的团队会基于它做微调。上线新模型时,不要直接在流量上一刀切切换。推荐按下面的顺序发布:
- Shadow 模式:复制线上流量,新模型处理请求但不把结果直接返回给用户,只记录日志和评测指标。
- 金丝雀发布:让 5% 到 10% 的流量走新模型,观察错误率和用户反馈。
- 全量发布:确认稳定后逐步放量到 100%。
- 回滚预案:保留旧模型服务地址,一旦异常,通过网关切回旧版本。
这套流程看起来比“改个模型路径重启服务”复杂,但能大幅降低上线风险,尤其是当模型背后还接了 RAG、工具调用或知识库时。
6.4 给新手的落地清单
| 阶段 | 检查动作 | 为什么 |
|---|---|---|
| 动手前 | 阅读 LICENSE 和 README | 避免商用或二次分发违规 |
| 环境准备 | 创建独立虚拟环境并核对依赖版本 | 避免版本冲突和路径污染 |
| 模型下载 | 确认权重文件目录和模型路径 | 防止加载时报路径错误 |
| 首次推理 | 关闭采样并固定温度 | 更容易定位模型问题 |
| API 封装 | 提供 OpenAI 兼容接口 | 方便接入现有开发工具 |
| 接口验证 | 用 curl 和 SDK 各测一次 | 确认协议兼容性 |
| 能力评测 | 准备多维度用例并记录版本 | 避免单条 prompt 误导决策 |
| 生产上线 | 补健康检查、监控、限流、回滚 | 保证异常时可观测、可恢复 |
7. 典型报错与排查顺序:从现象倒推根因
7.1 模型加载阶段报错排查
加载模型时最常见的现象是OSError: Can't load model或KeyError: config.json not found。先不要急着改代码,按顺序检查:
- 模型路径是否存在。
- 路径下是否有
config.json和权重文件。 - 是否使用了正确的宿主机路径,而不是容器内路径。
- tokenizer 和 model 是否指向同一个目录。
- 依赖版本是否和模型要求的版本一致。
例如把模型下载到了/data/models/demo,但脚本里写的是models/demo,就会加载失败。建议在代码里先输出绝对路径,方便确认。
7.2 显存不足和推理慢排查
显存不足通常表现为CUDA out of memory。可能原因包括上下文太长、并发请求太多、加载精度过高。排查思路:
- 降低
max_new_tokens,看看是否仍然 OOM。 - 使用
load_in_8bit=True或load_in_4bit=True做量化加载。 - 改用 vLLM,它能更高效地管理 KV Cache。
- 减少同时并发请求数量,或者增加显存隔离。
推理慢不一定全是模型问题。先看是否 CPU 推理、是否没有开启 bf16/fp16、是否上下文过长。用torch.cuda.is_available()确认模型真的加载到了 GPU。
7.3 接口调用阶段排查
接口返回 500 或超时,常见原因有:
| 现象 | 可能原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| 请求返回 404 | 路由路径不对 | 查看接口文档 | 确认是/v1/chat/completions |
| 请求返回 500 | 模型生成异常 | 查看服务端日志 | 还原请求消息,单独跑一次生成 |
| 一直等待无响应 | 生成时间过长或流式未实现 | 查看 token 耗时 | 调短 max_tokens,增加超时时间 |
| 返回内容乱码 | tokenizer 使用不当 | 检查 decode 参数 | 设置 skip_special_tokens=True |
接口层问题的排查核心是“先简化,再还原”。先用最简单的一条消息调用,确认接口本身没问题,再逐步增加上下文、工具调用和并发请求。
8. 结束前值得记住的几个判断
大模型开源项目的数量会越来越多,“站在 Kimi 肩膀上开源新模型”这类新闻也会持续出现。对开发者来说,与其追逐每一个新模型,不如掌握一套稳定的落地方法:先看许可证,再搭环境,跑通最小推理,封装 OpenAI 兼容接口,建立自己的评测集,最后用工程化手段上线。
这套方法的最大价值,是让你面对任何新模型时都能快速形成结论,而不是被一条十几秒的演示视频带着走。如果你当前只是想学习,建议先从 7B 级别模型开始,用自己的显卡跑通一遍完整链路;如果你要接入生产,那么请把评测、监控、回滚和知识库方案放在和模型选型同等重要的位置。
下一款模型出现时,这套流程依然适用。