工厂网络不稳定、数据不能出厂、延迟要求毫秒级------云端 LLM 满足不了这些硬性要求。边缘推理让 Agent 在本地跑模型,断网也能工作。
为什么工业场景需要边缘推理?
云端 LLM(DeepSeek、GPT-4)的限制:
- 网络依赖------工厂网络不稳定,断网 = Agent 瘫痪
- 数据合规------设备数据不允许出厂区
- 延迟------云端往返 2-5 秒,实时控制场景不可接受
- 成本------大量设备 × 高频查询 × 按 token 计费 = 账单爆炸
边缘推理的方案:在本地跑一个小模型,能处理的本地处理,处理不了的再上云。
Ollama:本地模型最简部署
bash
# 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 拉取模型(7B 参数,约 4GB)
ollama pull qwen2.5:7b
# 启动服务(默认端口 11434)
ollama serve
Ollama 暴露 OpenAI 兼容 API(/v1/chat/completions),LangChain4j 直接用 OpenAiChatModel 对接:
java
@Bean("edgeModel")
public ChatModel edgeModel() {
return OpenAiChatModel.builder()
.baseUrl("http://localhost:11434/v1")
.apiKey("ollama") // Ollama 不需要真实 key
.modelName("qwen2.5:7b")
.temperature(0.3)
.timeout(Duration.ofSeconds(30))
.build();
}
ModelRouter:边缘优先 + 云端兜底
不是简单的「用本地模型替代云端」,而是智能路由:
markdown
用户请求 → ModelRouter
↓
EdgeModel(Ollama 本地)
↓
质量检查 → 通过 → 返回边缘结果
↓
不通过 / 超时 / 异常
↓
CloudModel(DeepSeek 云端)→ 返回云端结果
java
@Component
public class ModelRouter {
public RouterResult chat(String message) {
// 1. 先试边缘
try {
String reply = edgeModel.chat(message);
if (isQualityAcceptable(reply)) {
return new RouterResult("edge", reply, latency, false);
}
} catch (Exception e) {
// 边缘失败(超时、模型未加载等)
}
// 2. 退化到云端
String reply = cloudModel.chat(message);
return new RouterResult("cloud", reply, latency, true);
}
private boolean isQualityAcceptable(String reply) {
if (reply == null || reply.length() < 20) return false;
if (reply.contains("我无法") && reply.length() < 50) return false;
return true;
}
}
质量检查是关键------太简单的回复、明显的拒绝回复都触发云端兜底。
模型选型
| 模型 | 参数量 | 显存需求 | 工业诊断能力 | 适合场景 |
|---|---|---|---|---|
| qwen2.5:7b | 7B | 4GB | 中等 | 通用对话、简单诊断 |
| qwen2.5:14b | 14B | 8GB | 良好 | 复杂诊断、知识检索 |
| deepseek-v2:16b | 16B | 10GB | 良好 | 代码生成、推理 |
| llama3.1:8b | 8B | 5GB | 一般 | 英文优先场景 |
推荐 :工业场景用 qwen2.5:7b 起步。中文能力强,7B 在消费级 GPU(RTX 3060 12GB)或 Mac M 系列上流畅运行。
配置开关
yaml
# application.yml
edge:
enabled: true # 关闭则回退到纯云端
ollama:
base-url: http://localhost:11434/v1
model: qwen2.5:7b
edge.enabled=false 时所有边缘组件不加载,零侵入。
边缘 vs 云端的权衡
| 维度 | 边缘(Ollama) | 云端(DeepSeek) |
|---|---|---|
| 延迟 | 0.5-2s | 2-5s |
| 断网可用 | ✅ | ❌ |
| 数据隔离 | ✅ 不出厂区 | ❌ 需联网 |
| 推理质量 | 7B 中等 / 14B 良好 | 顶级 |
| 成本 | 硬件一次性投入 | 按 token 持续计费 |
| 维护 | 需管理本地模型版本 | 零维护 |
最佳实践:边缘处理 80% 的简单查询(告警、数据、一般对话),云端处理 20% 的复杂诊断。
API 接口
bash
# 边缘优先路由
POST /api/edge/chat
{"message": "CNC-001 有什么告警?"}
# 返回
{
"source": "edge", # 或 "cloud"
"fallback": false, # 是否触发了云端兜底
"latencyMs": 1200,
"reply": "CNC-001 当前有2条告警..."
}
# 路由统计
GET /api/edge/stats
# 返回
{ "edgeHits": 45, "cloudFallbacks": 8, "edgeErrors": 2 }
工业边缘部署的四个硬性要求
- 断网运行------网络断了 Agent 不能停
- 数据不出厂------设备遥测数据必须在本地处理
- 冷启动快------模型加载不能超过 30 秒
- 资源受限------边缘设备可能只有 8-16GB 内存
Ollama + 7B 模型满足以上全部要求。如果边缘设备资源更充裕(工控机 + GPU),可以上 14B 甚至 32B 模型。
下一步
边缘推理解决了「在哪跑」,但还缺安全保障。下一篇文章实现三层安全护栏------输入过滤、输出审核、操作拦截------防止 Agent 在工业环境中做出危险动作。
代码仓库:github.com/LaoLiang-ag...
本文由 LaoLiang 原创,首发于掘金/知乎/微信公众号。转载请联系作者。