尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

在 Jetson Orin 8GB 上成功部署 Qwen2.5-VL-3B 多模态大模型,图文识别速度 23.0 tok/s

在 Jetson Orin 8GB 上成功部署 Qwen2.5-VL-3B 多模态大模型,图文识别速度 23.0 tok/s 最近世界机器人运动会正在如火如荼地进行世界机器人大会也在北京举行看到王兴兴的演讲后突然对当前的机器人大模型技术有了兴趣。经过几天的研究发现目前机器人和自动驾驶领域的大模型应用技术最前沿的是 WAMWorld-Action Model世界-动作模型。由于数据太少这个模型还没有真正的工程化应用目前工程化应用的技术大多为 VLA 模型。VLAVision-Language-Action 视觉-语言-动作模型 VLM视觉语言模型 动作输出。VLM 输出文本回答VLA 则能够直接输出机器人可执行控制动作。代表模型有RT-2Google、OpenVLA斯坦福、π0、GR00T适合机械臂、人形机器人具身控制。还有很多的机器人公司基于的硬件平台算力有限或者主打低成本使用的是 VLM 模型输出文本然后根据文本再用自己的平台技术生成 Action 动作。于是我就想试试这些模型的性能经过研究然后我就发现我手头的 Jetson Orin Nano Super 8GB 内存无论如何也不够部署现有的 VLA 模型除非进行量化、裁剪和蒸馏改造工程量太大。我就先在这个只有 8GB 内存的 Jetson Orin 上跑一个能看图的 VLM 大模型看看性能如何做几个应用试试。经过一番折腾Qwen2.5-VL-3B 愉快地跑了起来速度不慢完全满足我的要求今天就来跟大家分享一下这个实战经验。 为什么要做这个实验说实话现在的 AI 圈子真是卷得不行。GPT-4V、Gemini 这些大模型是多模态但都是云端服务。对于边缘设备部署我们想要的是 本地运行数据不上传隐私有保障 成本控制不用付费 API一次部署终身使用⚡ 响应快速本地推理网络延迟为 0 灵活定制可以根据具体需求微调和优化手头的 Jetson Orin 8GB 作为测试平台这个设备算是边缘 AI 的黄金配置——不算太贵性能也够用。关键是只有 8GB 内存这能真正考验模型的实用性。能识别图片又能给文字指令的话我能发挥的地方就多了比如我可以让它监视我家的傻狗有没有拆家、拆家报警。可以监视儿童的睡眠和苏醒盯着孩子写作业监控疲劳驾驶。这些都是比较有实际应用价值的工作设备低功耗时只有 15W超频 25W还不如你家头顶照明灯的功率大电费超级省部署 VLM 后不用担心像频繁使用网络模型那样超支。总之我相信算力越便宜用的人越多。️ 环境准备硬软件配置硬件配置设备NVIDIA Jetson Orin 8GB RAM架构ARM64, sm_87Orin 专用架构CUDA12.6 (JetPack 6.2)说实话一开始我还担心 8GB 内存不够用。但经过测试只要合理配置完全够用软件环境操作系统Linux (Ubuntu based)编译工具build-essential, cmake, git, curl模型格式GGUF (Quantized 4-bit) 第一步编译 llama.cpp踩坑记录1.1 系统依赖安装sudoaptupdatesudoaptinstall-ybuild-essential cmakegitcurl1.2 llama.cpp 源码获取与编译这里我要重点说一下一开始我直接git clone然后编译结果发现没有启用 CUDA 加速速度慢得要命。后来才发现需要加上-DGGML_CUDAON参数gitclone https://github.com/ggml-org/llama.cpp.gitcdllama.cpp# 注意这个参数很重要cmake-Bbuild-DGGML_CUDAON cmake--buildbuild--configRelease-j$(nproc) 编译要点一定要启用 CUDA backend不然就只能用 CPU 跑速度会慢很多多线程编译-j $(nproc)能大大加快编译速度Release 优化这样编译出来的版本运行效率更高编译过程大概需要 10-15 分钟大家可以趁机泡杯咖啡 ☕ 第二步模型下载关键步骤2.1 主模型下载huggingface-cli download Taoufik/Qwen2.5-VL-3B-Instruct-Q4_K_M-GGUF\--local-dir ./qwen_vl_gguf/2.2 视觉投影组件下载⚠️ 重点来了很多人部署多模态模型失败就是因为漏了这个步骤wgethttps://huggingface.co/Mungert/Qwen2.5-VL-3B-Instruct-GGUF/resolve/main/Qwen2.5-VL-3B-Instruct-mmproj-f16.gguf\-P/home/zy/Desktop/workplace/models/qwen_vl_gguf/模型组成说明主模型qwen2.5-vl-3b-instruct-q4_k_m.gguf(~1.8GB) - 这是语言模型部分视觉投影Qwen2.5-VL-3B-Instruct-mmproj-f16.gguf(~几百MB) - 这是处理图片的部分两个缺一不可我第一次测试的时候就只下载了主模型结果报 500 错误查了半天才发现是少了这个 mmproj 组件。 第三步文本能力测试先跑个简单的在测试视觉功能之前我们先验证一下基本的文本生成能力是否正常。3.1 命令行模式测试./build/bin/llama-cli\-m~/Desktop/workplace/models/qwen_vl_gguf/qwen2.5-vl-3b-instruct-q4_k_m.gguf\-p解释量子计算的基本原理\-n512\--ctx-size2048测试结果模型成功生成关于量子计算的详细解释推理性能Prompt: 151.1 tok/s | Generation: 23.2 tok/s输出质量逻辑清晰内容准确完全符合预期说实话看到这个结果的时候我还是挺激动的。毕竟在边缘设备上能达到这样的推理速度已经很实用了。3.2 服务器模式测试接下来我们启动一个 HTTP 服务这样其他程序也能通过 API 调用./build/bin/llama-server\-m~/Desktop/workplace/models/qwen_vl_gguf/qwen2.5-vl-3b-instruct-q4_k_m.gguf\--host127.0.0.1\--port8080\--ctx-size2048API 测试curlhttp://localhost:8080/v1/chat/completions\-HContent-Type: application/json\-d{ model: gpt-3.5-turbo, messages: [ {role: user, content: 你好请用一句话介绍一下你自己} ], max_tokens: 128 }服务器性能数据Prompt 处理157.47 tokens/s文本生成19.37 tokens/s响应时间158.76ms (prompt), 981.08ms (generation)内存占用稳定运行在 8GB 限制内看到这个服务器跑起来我心里就有底了。OpenAI 兼容的 API 接口意味着集成起来会非常方便。️ 第四步视觉理解能力测试重头戏来了现在到了最关键的部分了——测试图像理解能力4.1 CLI 模式图像识别./build/bin/llama-cli\-m~/Desktop/workplace/models/qwen_vl_gguf/qwen2.5-vl-3b-instruct-q4_k_m.gguf\--mmproj~/Desktop/workplace/models/qwen_vl_gguf/Qwen2.5-VL-3B-Instruct-mmproj-f16.gguf\--image~/Desktop/workplace/tensorRT/vlm_lama_cpp_deploy/test_resized.jpg\-p这张图片里有什么\-n256\--ctx-size2048图像识别结果说实话看到这个结果的时候我真的很惊喜模型不仅识别出了主要的物品还注意到了一些细节。这种细致的观察能力在边缘设备上真的很有用。4.2 服务器模式视觉测试现在我们启动完整的多模态服务器./build/bin/llama-server\-m~/Desktop/workplace/models/qwen_vl_gguf/qwen2.5-vl-3b-instruct-q4_k_m.gguf\--mmproj~/Desktop/workplace/models/qwen_vl_gguf/Qwen2.5-VL-3B-Instruct-mmproj-f16.gguf\-ngl99\--ctx-size3072\--host127.0.0.1\--port8080这里我要特别说明几个参数--mmproj这个参数非常重要指定视觉投影组件的路径-ngl 99将所有层都卸载到 GPU充分利用硬件加速--ctx-size 3072图像理解需要更大的上下文窗口Python 自动化测试python test_vlm.py--urlhttp://localhost:8080--image./test.jpg\--max-tokens512--resize768--prompt图片里是什么内容有没有可乐视觉测试结果图片处理自动缩放至 768px 长边 (432x768)内容识别详细描述冰箱内物品布局和种类有没有肥宅快乐水性能指标总耗时: 3.78s生成速度: 23.0 tok/sToken 使用: 87 completion 430 prompt 517 total这个结果真的很不错3.78 秒的总耗时包括图像编码、模型推理和文本生成对于边缘设备来说已经完全实用了。 性能实测数据分析性能表现总结任务类型功耗Prefill (tok/s)TTFT (ms)Decode (tok/s)纯文本15W233.411615.3纯文本25W372.07223.9图片理解15W180.2252515.2图片理解25W268.6169423.5 性能分析⚡ 功耗对比15W 模式节能模式适合长期运行的离线应用25W 模式高性能模式推理速度提升约40-50% 任务类型对比纯文本任务TTFT 仅 72-116ms首字生成速度极快图片理解任务TTFT 较高1.7-2.5s但解码速度仍保持 15-23 tok/s 最佳实践建议实时交互场景 → 使用25W 模式长期监控场景 → 使用15W 模式更省电且速度仍可接受功能验证结果✅文本生成能力完全正常逻辑清晰内容准确✅视觉理解能力准确识别图像内容细节描述到位✅多模态融合成功处理图文结合的复杂任务✅API 兼容性OpenAI 格式接口易于集成边缘设备适应性分析✨ 优势体积适中模型量化后 ~1.8GB适合边缘部署内存可控8GB RAM 完全够用还有富余⚡GPU 加速推理速度实用不拖泥带水灵活配置支持调整上下文大小适应不同需求⚠️ 限制组件依赖图片处理需要额外的 mmproj 组件分辨率敏感高分辨率图片会显著增加 token 消耗速度差异视觉任务相比纯文本速度稍慢 技术要点与踩坑经验1. 模型组件理解关键主模型 GGUF包含量化的语言模型参数负责文本生成mmproj GGUF视觉编码器和投影层处理图像输入两者配合完整的多模态能力需要同时加载这两个组件我第一次测试的时候就吃了这个亏只下载了主模型结果一直报 500 错误。后来查了半天日志才发现是缺少 mmproj 组件。2. 性能优化策略GPU 加速-ngl 99将所有层卸载到 GPU充分利用硬件性能上下文管理根据任务调整--ctx-size避免资源浪费图片预处理缩小图片尺寸能大幅减少 token 消耗量化选择Q4_K_M 在精度和速度间取得了很好的平衡3. 踩坑经历与解决方案❌ 问题 1图片处理超出上下文限制error: request (2716 tokens) exceeds the available context size (2048 tokens)✅ 解决方案方案 A调整--ctx-size 4096增大上下文窗口方案 B使用图片缩放--resize 768减少图片 token❌ 问题 2视觉功能报 500 错误HTTP Error 500: Internal Server Error✅ 解决方案确保启动时加载 mmproj 组件--mmproj/path/to/mmproj.gguf❌ 问题 3端口被占用couldnt bind HTTP server socket, hostname: 0.0.0.0, port: 8000✅ 解决方案# 查看占用端口的进程sudolsof-i:8000# 杀掉进程或换端口--port8080 应用前景这能用来做什么经过这次测试我发现这个部署方案有很多实用场景 智能边缘设备工业检测产品质检、缺陷识别智能监控实时场景分析、异常检测机器人视觉环境理解、物体识别 多模态应用图文理解社交媒体内容分析场景识别安防监控、智能家居辅助功能视障人士辅助、教育辅助 未来改进方向虽然现在已经成功了但我觉得还有提升空间⚡ 性能优化进一步优化内存使用和推理速度 功能扩展添加更多视觉任务支持比如目标检测 部署简化开发一键部署脚本降低使用门槛 应用集成构建完整的应用解决方案而不仅仅是模型 总结这次实战的收获说实话这次实验真的是收获满满✅ 部署成功在 Jetson Orin 8GB 上成功部署了完整的 Qwen2.5-VL-3B 多模态模型✅ 功能验证文本生成和视觉理解功能都正常工作效果超出预期✅ 性能可行推理速度满足实际应用需求16.7 tok/s 的图像理解速度很实用✅ 内存可控总体内存占用在 8GB 限制内还有优化空间最重要的是证明了在资源受限的边缘设备上我们完全可以运行复杂的多模态大模型。这对于 IoT、机器人、工业自动化等领域来说意义重大。 关键命令速查启动完整服务./build/bin/llama-server\-m/path/to/qwen2.5-vl-3b-instruct-q4_k_m.gguf\--mmproj/path/to/mmproj.gguf\--ctx-size3072\-ngl99\--host0.0.0.0\--port8000测试脚本使用# 纯文本测试python test_vlm.py--prompt解释量子计算# 视觉理解测试python test_vlm.py--image./test.jpg--resize768# OCR 能力测试python test_ocr.py--image./document.jpg--typedocument 写在最后这次实验从下午开始到晚上差不多就完成了。整个过程虽然遇到了一些坑但解决后的成就感真的很棒。边缘 AI 正处于爆发期能在有限资源下运行复杂模型这才是真正的技术挑战。希望我的这次实战经验能对大家有所帮助。如果你也在做边缘 AI 部署欢迎交流踩坑经验毕竟解决实际问题才是我们工程师的价值所在对吧 实验时间2024年8月23日约4小时 实验环境llama.cpp CUDA 12.6 JetPack 6.2 Python 3.10 相关资源llama.cpp GitHubQwen2.5-VL 模型Jetson Orin 开发者指南 下一期预告我会分享如何将这个多模态模型集成到实际的机器人系统中实现真正的AI 眼睛。敬请期待 觉得有用的话别忘了点赞关注有问题的朋友欢迎评论区交流我们一起成长#边缘AI #大模型部署 #JetsonOrin #多模态AI #技术实战
返回列表