跳到主要内容

5.2.10 视觉语言模型

功能介绍

本章节介如何在RDK平台体验端侧 Vision Language Model (VLM)。得益于书生大模型, SmolVLM 的优秀成果, 我们在RDK平台上实现了量化与部署。同时, 本示例基于 llama.cpp 中 KV Cache 的强大管理能力, 结合 RDK 平台 BPU 模块的计算优势, 实现了本地 VLM 模型部署。

代码仓库: (https://github.com/D-Robotics/hobot_llamacpp.git)

支持平台

平台运行方式示例功能
RDK X5, RDK X5 ModuleUbuntu 22.04 (Humble)端侧视觉语言大模型体验
RDK S100Ubuntu 22.04 (Humble)端侧视觉语言大模型体验

支持模型

模型类型参数量平台图像编码模型文本编解码模型
InternVL2_51BX5vit_model_int16_v2.binQwen2.5-0.5B-Instruct-Q4_0.gguf
InternVL2_51BS100vit_model_int16.hbmQwen2.5-0.5B-Instruct-Q4_0.gguf
InternVL31BX5vit_model_int16_VL3_1B_Instruct_X5.binqwen2_5_q8_0_InternVL3_1B_Instruct.gguf
InternVL31BS100vit_model_int16_VL3_1B_Instruct.hbmqwen2_5_q8_0_InternVL3_1B_Instruct.gguf
InternVL32BX5vit_model_int16_VL3_2B_Instruct.binqwen2_5_1.5b_q8_0_InternVL3_2B_Instruct.gguf
InternVL32BS100vit_model_int16_VL3_2B_Instruct.hbmqwen2_5_1.5b_q8_0_InternVL3_2B_Instruct.gguf
SmolVLM2256MX5SigLip_int16_SmolVLM2_256M_Instruct_MLP_C1_UP_X5.binSmolVLM2-256M-Video-Instruct-Q8_0.gguf
SmolVLM2500MX5SigLip_int16_SmolVLM2_500M_Instruct_MLP_C1_UP_X5.binSmolVLM2-500M-Video-Instruct-Q8_0.gguf

准备工作

RDK平台

  1. RDK已烧录好Ubuntu 22.04系统镜像。
  2. RDK已成功安装TogetheROS.Bot。
  3. 下载安装功能包
sudo apt update
sudo apt install tros-humble-hobot-llamacpp
注意

如果sudo apt update命令执行失败或报错,请查看常见问题章节的Q10: apt update 命令执行失败或报错如何处理?解决。

使用方式

使用命令srpi-config修改ION memory大小为1.6GB,设置方法参考RDK用户手册配置工具srpi-config使用指南Performance Options章节。

重启后设置CPU最高频率为1.5GHz,以及调度模式为performance,命令如下:

sudo bash -c 'echo 1 > /sys/devices/system/cpu/cpufreq/boost'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu2/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu3/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu4/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu5/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu6/cpufreq/scaling_governor'
sudo bash -c 'echo performance >/sys/devices/system/cpu/cpu7/cpufreq/scaling_governor'

目前提供两种体验方式,一种直接终端输入图片,文本体验,一种订阅图片和文本消息,然后将结果以文本方式发布出去。

Internvl

运行程序前,需要下载模型文件到运行路径,命令如下:

wget https://hf-mirror.com/D-Robotics/InternVL2_5-1B-GGUF-BPU/resolve/main/Qwen2.5-0.5B-Instruct-Q4_0.gguf
wget https://hf-mirror.com/D-Robotics/InternVL2_5-1B-GGUF-BPU/resolve/main/rdkx5/vit_model_int16_v2.bin
source /opt/tros/humble/setup.bash
cp -r /opt/tros/${TROS_DISTRO}/lib/hobot_llamacpp/config/ .
ros2 run hobot_llamacpp hobot_llamacpp --ros-args -p feed_type:=0 -p image:=config/image2.jpg -p image_type:=0 -p user_prompt:="描述一下这张图片." -p model_file_name:=vit_model_int16_v2.bin -p llm_model_name:=Qwen2.5-0.5B-Instruct-Q4_0.gguf

程序启动后,可使用本地图片与自定义提示词进行输出。

internvlm_result

SmolVLM

运行程序前,需要下载模型文件到运行路径,命令如下:

wget https://hf-mirror.com/D-Robotics/SmolVLM2-256M-Video-Instruct-GGUF-BPU/resolve/main/rdkx5/SigLip_int16_SmolVLM2_256M_Instruct_MLP_C1_UP_X5.bin
wget https://hf-mirror.com/D-Robotics/SmolVLM2-256M-Video-Instruct-GGUF-BPU/resolve/main/SmolVLM2-256M-Video-Instruct-Q8_0.gguf
source /opt/tros/humble/setup.bash
cp -r /opt/tros/${TROS_DISTRO}/lib/hobot_llamacpp/config/ .
ros2 run hobot_llamacpp hobot_llamacpp --ros-args -p feed_type:=0 -p model_type:=1 -p image:=config/image2.jpg -p image_type:=0 -p user_prompt:="Describe the image." -p model_file_name:=SigLip_int16_SmolVLM2_256M_Instruct_MLP_C1_UP_X5.bin -p llm_model_name:=SmolVLM2-256M-Video-Instruct-Q8_0.gguf

程序启动后,可使用本地图片与自定义提示词进行输出。

smolvlm_result

注意事项

X5平台 修改ION memory大小为1.6GB, S100平台 修改ION memory大小大于1.6GB, 否则会导致模型加载失败。