大模型本地部署:端侧 LLM/VLM 实现机械臂自然语言指令控制 📅 2026/8/6 1:32:45 大模型本地部署端侧 LLM/VLM 实现机械臂自然语言指令控制“把红色杯子拿给我”——这句人话机械臂怎么听懂答案是大模型。但云端 API 延迟高、断网就废所以我们要把大模型塞进嵌入式板子里本地跑。一、具身智能为什么要本地部署大模型云端大模型 API如 OpenAI、通义千问云端确实强大但具身智能场景有三个硬约束延迟机械臂需要毫秒级响应云端一来一回动辄 500ms~2s动作延迟感明显隐私工厂/实验室内部数据不上云是合规底线断网可用生产环境网络不稳定断网就停机是不可接受的本地部署解决这三个问题推理在板子上跑延迟可控、数据不出设备、断网照常工作。二、端侧 LLM 选择在 RK35888GB 内存这类嵌入式平台上大模型的选择受限于内存和算力模型参数量量化后内存占用适用场景Qwen2.5-1.5B1.5B~1GBINT4指令解析、简单对话Qwen2.5-3B3B~2GBINT4复杂指令解析、任务规划Llama3-8B-Quantized8B~4GBINT4多轮对话、复杂推理Phi-3-mini3.8B~2GBINT4指令理解、代码生成推荐首选Qwen2.5-1.5B或3B。原因中文能力强Qwen 原生中文训练、参数适中、INT4 量化后在 RK3588 上内存刚好够用、推理速度可接受。三、端侧 VLM 选择VLM视觉语言模型能看图说话让机械臂不仅能理解文字指令还能理解摄像头画面模型能力嵌入式可行性Qwen2-VL-2B图像理解文字对话INT4量化后~1.5GBRK3588勉强可跑LLaVA-1.5-7B图像描述对话INT4量化后~4GB推理偏慢InternVL2-2B中文图像理解量化后~1.5GB中文场景优选VLM 的价值用户说桌上有啥VLM 直接分析摄像头画面回答桌上有一个红色杯子和一个蓝色盒子然后 LLM 再解析指令做动作规划——VLM 负责看LLM 负责想。四、RK3588 部署 LLM 方案4.1 llama.cpp RKLLMllama.cpp 是轻量级 LLM 推理框架纯 C/C 实现支持 GGUF 格式模型Qwen2.5-1.5B (原版 HF格式) ↓ convert-hf-to-gguf.py 转换 GGUF 模型支持多种量化级别 ↓ llama.cpp 推理 本地推理结果瑞芯微官方还提供了RKLLMSDK针对 RK3588 NPU 做了专门优化INT4 量化后推理速度比纯 CPU 快 3~5 倍。4.2 MNN 推理框架阿里开源的 MNNMobile Neural Network也支持在 ARM 端跑 LLM支持动态batch和KV Cache针对 ARM NEON 指令集优化支持 INT4/INT8 量化推理方案选择追求极致速度用RKLLMNPU加速追求通用性用llama.cpp跨平台兼容已用阿里生态用MNN。五、模型量化FP16 → INT4/INT8量化就是降低模型参数的数值精度用更少的位数存储和计算量化级别内存占用精度损失推理速度FP16原始2倍参数字节无损最慢INT8参数字节减半微损1%快INT4参数字节减至1/4有损2~5%最快建议指令解析任务对精度要求不高INT4 完全够用。复杂推理任务用 INT8 保精度。# llama.cpp 量化示例python convert-hf-to-gguf.py /path/to/Qwen2.5-1.5B--outtypef16--outfileqwen1.5b-f16.gguf ./llama-quantize qwen1.5b-f16.gguf qwen1.5b-q4_k_m.gguf Q4_K_M六、自然语言指令解析用户说“把红色杯子拿给我”LLM 需要将其解析为结构化任务原始指令: 把红色杯子拿给我 ↓ LLM 解析 结构化输出: { target: 红色杯子, action: 抓取, destination: 人面前, priority: normal }关键点LLM 输出不是自由文本而是结构化 JSON——这样才能被下游程序解析并调用对应的运动规划 API。七、Prompt Engineering 设计系统提示词模板决定了 LLM 的输出质量和格式SYSTEM_PROMPT你是一个机械臂控制指令解析器。用户会给你自然语言指令 你需要将其解析为结构化JSON格式。 输出格式要求 { target: 目标物体名称及特征颜色、形状等, action: 动作类型抓取/放置/推送/旋转, destination: 目标位置描述, parameters: { speed: slow/normal/fast, force: light/medium/heavy } } 可选动作抓取、放置、推送、旋转、指向 可选位置人面前、桌面左侧、桌面右侧、桌面中心、指定坐标 只输出JSON不要输出任何解释文字。USER_INPUT把红色杯子拿给我# 组合promptfull_promptf{SYSTEM_PROMPT}\n用户指令{USER_INPUT}\n输出好的 Prompt 要做到角色明确、格式严格、选项有限——让 LLM 在约束范围内精准输出。八、指令到动作的映射LLM 输出 JSON 后程序解析并调用运动规划 APIimportjsondefparse_and_execute(llm_output):解析LLM输出JSON → 调用机械臂APItry:cmdjson.loads(llm_output)exceptjson.JSONDecodeError:print(LLM输出格式错误无法解析)returnFalsetargetcmd[target]# 红色杯子actioncmd[action]# 抓取destinationcmd[destination]# 人面前# 第1步视觉检测目标obj_posevision_detect(target)# YOLO检测 坐标转换# 第2步运动规划ifaction抓取:trajectoryplan_grasp(obj_pose)elifaction放置:target_posget_position(destination)trajectoryplan_place(obj_pose,target_pos)else:print(f未知动作:{action})returnFalse# 第3步执行robot_execute(trajectory)returnTrue九、代码示例Python 调用 llama.cpp 推理 指令解析fromllama_cppimportLlama# 加载量化模型llmLlama(model_pathqwen1.5b-q4_k_m.gguf,n_ctx512,# 上下文窗口长度n_threads4,# CPU线程数RK3588有4个A72大核temperature0.1,# 低温度更确定性的输出top_p0.9)SYSTEM_PROMPT你是一个机械臂控制指令解析器。将用户自然语言指令解析为JSON。 输出格式{target:..., action:..., destination:...} 可选动作抓取/放置/推送/旋转。只输出JSON。defparse_instruction(user_text):自然语言指令 → 结构化JSONresponsellm.create_chat_completion(messages[{role:system,content:SYSTEM_PROMPT},{role:user,content:user_text}],max_tokens200)raw_outputresponse[choices][0][message][content]try:returnjson.loads(raw_output)exceptjson.JSONDecodeError:# LLM可能输出多余文字尝试提取JSON部分importre json_matchre.search(r\{.*\},raw_output)ifjson_match:returnjson.loads(json_match.group())returnNone# 测试resultparse_instruction(把红色杯子放到左边)print(result)# 输出: {target: 红色杯子, action: 放置, destination: 桌面左侧}十、RK3588 性能数据参考配置模型量化首 token延迟掞理速度内存占用RK3588 CPU (4×A72)Qwen2.5-1.5BINT4~300ms~15 tok/s~1.2GBRK3588 NPU (RKLLM)Qwen2.5-1.5BINT4~200ms~25 tok/s~1.0GBRK3588 CPUQwen2.5-3BINT4~500ms~8 tok/s~2.5GBx86 (i5-12400)Qwen2.5-7BINT4~100ms~30 tok/s~4GB1.5B 模型在 RK3588 上推理速度约15~25 tok/s一条指令解析通常只需 50~80 个 token耗时2~5 秒——对于机械臂任务规划来说完全可接受。十一、本地部署 vs 云端 API 对比对比维度本地部署云端 API响应延迟2~5秒1.5B模型0.5~2秒网络波动更大断网可用可用不可用数据隐私完全本地数据上云模型能力1.5B~3B够用但不强GPT-4级能力远超成本硬件一次性投入按调用计费长期成本高部署难度需要量化转换调试API调用即用升级迭代需重新量化部署服务端自动升级结论具身智能场景优先本地部署延迟可控、断网可用极端复杂任务可混合方案——简单指令本地解析复杂推理云端兜底。大模型从云端搬到家门口机械臂才真正拥有了自己的脑子。模型够小、量化够狠、Prompt 写得够准嵌入式端也能玩转自然语言控制。