跳到主要内容

VLM 与 Agent 端侧形态

建议学时

4 学时。

建议拆成四段:

时段内容课堂产出
第 1 学时VLM 推理链路和端侧瓶颈VLM 组件拆解图
第 2 学时Local Agent 的规划、工具和权限Agent 权限边界表
第 3 学时端云协同、多模型路由和 fallback端云协同架构草图
第 4 学时VLM/Agent 案例评审系统级风险清单

学习目标

  • 区分 VLM 的感知理解链路和 Agent 的规划执行链路。
  • 理解 VLM 端侧瓶颈不只在 LLM,还包括图像分辨率、视觉 token、vision encoder、projector 和多模态对齐。
  • 理解 Agent 的关键问题包括工具权限、状态管理、失败恢复、本地数据边界和端云协同。
  • 能把单模型优化扩展到系统级部署判断。
  • 能判断哪些 VLM/Agent 能端侧化,哪些只能局部端侧化。
  • 能为最终项目报告写出 VLM/Agent 扩展路线,而不是只给概念性描述。

问题背景

VLM 与 Agent 的端侧部署已经从单模型优化扩展到系统架构优化。

VLM 要处理图像预处理、vision encoder、projector、LLM、tokenizer、多轮上下文和输出后处理。Agent 则包含 planner、tool registry、executor、memory、permission manager、safety policy 和交互循环。任何一个组件不稳定,系统就可能表现为“模型不好用”,但真实原因可能是输入、工具、权限、状态或 fallback 设计有问题。

因此,端侧 VLM/Agent 的瓶颈不只是模型大小,还包括输入管线、工具链稳定性、权限边界、本地上下文、失败恢复和端云协同策略。

本章不要求学生从零训练 VLM 或完整 Agent。课程目标是建立系统设计能力:看见组件、识别瓶颈、定义边界、设计可验证的端侧路径。

VLM 端侧链路

VLM 的一次推理通常比纯文本 LLM 多出视觉侧处理。

每个环节都有端侧部署问题:

环节端侧风险需要记录
图像输入分辨率过高、帧率过高、摄像头延迟输入尺寸、帧率、预处理耗时
预处理CPU 占用、内存复制、格式转换resize/crop 策略、数据格式
Vision Encoder算子支持、显存/内存占用模型大小、runtime、推理耗时
Projector多模态对齐、精度敏感是否量化、输出质量变化
LLMKV Cache、低比特、首 tokenctx-size、tokens/s、质量样例
输出后处理格式不稳定、幻觉、坐标错误JSON 合法性、人工检查、失败样例

VLM 的端侧部署形态

VLM 不一定要完整放在端侧。常见形态如下:

形态端侧运行云端运行适用场景
纯端侧 VLM视觉侧 + LLM隐私强、输入规模小、任务简单
视觉端侧 + 云端 LLM图像预处理、视觉特征、OCR 初筛复杂语言推理图片含隐私但可上传脱敏文本
端侧小 VLM + 云端兜底快速识别、低风险问题高难问题、长上下文交互产品、巡检助手
端侧检测 + LLM 解释传统视觉模型语言总结、原因分析工业视觉、安防、设备巡检

课程建议先从“拆分组件”开始,而不是直接追求完整本地 VLM。对很多产品来说,端侧视觉前处理和本地隐私过滤已经能产生价值。

VLM 量化与加速关注点

VLM 量化不能只看语言模型部分。

优化对象常见方法风险
Vision EncoderINT8、TensorRT、ONNX、分辨率控制小目标、OCR、空间关系下降
Projector保持高精度或谨慎量化对齐质量下降,错误难以定位
LLMGGUF、AWQ、GPTQ、KV Cache 控制文本质量、长上下文、格式稳定性
输入管线resize、batch、缓存、零拷贝图像质量损失或工程复杂度上升
输出约束JSON schema、规则校验、重试延迟增加,错误恢复复杂

如果 VLM 任务涉及 OCR、小目标、图表理解或空间关系,低比特量化后的质量下降可能比纯文本任务更难通过主观观察发现。课程要求保留失败样例。

Agent 系统链路

Agent 的端侧部署更像一个受控系统,而不是一个单模型推理任务。

Agent 端侧化的关键不是“模型会不会调用工具”,而是“工具调用是否可控、可回滚、可审计”。

Agent 权限边界

端侧 Agent 接近真实系统操作,必须先定义工具权限。

{
"allowed_tools": ["read_local_note", "summarize_text", "search_local_index"],
"confirm_required": ["rename_file", "move_file", "send_request"],
"blocked_tools": ["delete_file", "send_email", "run_shell"],
"fallback": "cloud_model_when_task_requires_complex_reasoning"
}

推荐把工具分成四类:

类别示例默认策略
只读工具读取笔记、查询本地索引、查看图片元数据可允许,但要限制路径和范围
可逆写入新建草稿、生成报告、标记分类可执行,但要保留日志
高风险操作删除、发送、支付、设备控制默认禁止或必须确认
外部联网云端检索、远程 API、模型 fallback需要隐私和网络策略

端侧 Agent 的状态管理

Agent 经常失败在状态,而不是单次推理。

状态风险处理建议
对话历史上下文膨胀、隐私泄露摘要、截断、分级保存
工具结果旧结果被误用给每次工具结果加时间和来源
用户偏好过度个性化或错误记忆可查看、可删除、可关闭
任务进度中断后重复执行使用步骤状态和确认点
错误日志泄露路径或敏感内容脱敏后保存

端侧 Agent 的“记忆”不应该默认永久保存。课程建议先实现短期状态和显式项目记录,再讨论长期记忆。

端云协同 Agent

本地小模型适合处理隐私、低延迟和格式化任务;云端大模型适合复杂推理、长上下文和知识密集任务。

端云协同需要明确三种规则:

  • 隐私规则:哪些内容只能本地处理。
  • 能力规则:哪些任务本地模型不应硬做。
  • 失败规则:本地失败、云端失败、网络失败时如何退化。

Jetson 上的 VLM/Agent 形态

Jetson 在 VLM/Agent 中更适合作为边缘节点,而不是所有能力的唯一承载点。

形态Jetson 职责其他组件适用场景
摄像头 + 视觉模型图像采集、检测、告警云端报表或人工复核工业巡检、安防
Jetson + 小 LLM本地问答、状态解释、轻量总结云端知识库或大模型设备运维助手
Jetson + VLM 初筛低分辨率理解、隐私过滤云端复杂视觉问答机器人、现场助手
Jetson Agent 节点本地工具调用、传感器状态、权限控制云端 planner边缘自动化

评估 Jetson 方案时要记录温度、功耗模式和长时间运行稳定性。VLM/Agent 通常比单次 LLM 推理更容易暴露系统问题。

代码/命令示例

本地服务是 VLM/Agent 的基础组件。先确认 OpenAI-compatible API 可被调用。

from openai import OpenAI

client = OpenAI(
base_url="http://127.0.0.1:8080/v1",
api_key="local-no-key",
)

response = client.chat.completions.create(
model="local-model",
messages=[
{"role": "system", "content": "你是一个只处理低风险本地任务的助手。"},
{"role": "user", "content": "把这段日志总结成三条问题。"},
],
)

print(response.choices[0].message.content)

Agent 工具注册建议先用静态白名单:

tools:
read_local_note:
mode: read_only
path_scope: ./workspace/notes
summarize_text:
mode: transform
network: false
run_shell:
mode: blocked
reason: requires explicit human approval

配套实作

对应实作章节:本地 OpenAI-compatible 服务

本课程第一阶段不直接部署完整 VLM 或完整 Agent,而是先完成本地 LLM 服务化。它是后续 VLM/Agent 的基础组件:

  • VLM 可以把 LLM server 作为文本推理模块。
  • Agent 可以把本地小模型作为低风险任务 planner、summarizer 或 formatter。
  • 端云协同可以把本地 server 作为隐私优先路径。
  • Jetson 可以作为边缘节点承载采集、预处理、小模型推理和权限控制。

验收结果

产物验收标准
VLM 链路图能指出 vision encoder、projector、LLM、输入管线各自可能的瓶颈
Agent 权限表能区分允许、确认、拒绝、需要云端兜底的工具
端云协同图能说明本地、云端、fallback 和隐私边界
服务化基线本地 LLM server 可被后续 VLM/Agent 组件调用
风险清单至少覆盖权限、状态、输出格式、网络和日志脱敏

案例模板:VLM

## VLM 任务

- 输入类型:
- 图像分辨率:
- 输出类型:
- 是否涉及隐私:
- 是否需要实时:

## 组件拆解

| 组件 | 模型/工具 | 是否端侧运行 | 风险 |
| --- | --- | --- | --- |
| 预处理 | 待填 | 待填 | 待填 |
| Vision Encoder | 待填 | 待填 | 待填 |
| Projector | 待填 | 待填 | 待填 |
| LLM | 待填 | 待填 | 待填 |
| 后处理 | 待填 | 待填 | 待填 |

## 质量样例

- 成功样例:
- 失败样例:
- 需要人工复核的样例:

案例模板:Agent

## Agent 任务

- 用户目标:
- 本地数据范围:
- 可用工具:
- 禁止工具:
- 是否允许云端兜底:

## 工具权限表

| 工具 | 权限级别 | 是否需要确认 | 日志要求 |
| --- | --- | --- | --- |
| 待填 | 待填 | 待填 | 待填 |

## 失败恢复

- 本地模型输出格式错误:
- 工具调用失败:
- 网络不可用:
- 用户拒绝授权:

复盘问题

  • VLM 任务失败时,如何判断问题来自图像侧、projector、LLM 还是后处理?
  • 对 OCR、小目标和空间关系任务,为什么不能只看普通文本问答质量?
  • Agent 端侧运行时,哪些工具必须默认禁止?
  • 本地小模型不够聪明时,是换模型、降低任务复杂度,还是引入云端 fallback?
  • Jetson 作为边缘节点时,哪些组件应本地运行,哪些组件应放到云端?
  • 如何在日志里保留足够证据,同时避免泄露本地路径和敏感内容?

常见问题

  • 只压缩 LLM:VLM 的图像侧、projector 和输入管线也可能是瓶颈。
  • 忽略工具权限:Agent 端侧运行更接近真实系统操作,权限边界必须先定义。
  • 把端侧当成全离线:很多产品更适合端云协同,而不是强行全端侧。
  • 没有失败恢复:工具调用失败、网络失败、输出格式错误都需要恢复策略。
  • 把 demo 当产品:一次成功调用不能证明权限、状态和日志策略可用。

参考资料