English | 简体中文
hobot_llm 是地平线RDK平台集成的端侧Large Language Model (LLM) Node,用户可在端侧体验LLM。目前提供两种体验方式,一种直接终端输入文本聊天体验,一种订阅文本消息,然后将结果以文本方式发布出去。
机器人名称 | 生产厂家 | 参考链接 |
---|---|---|
RDK X3(4GB内存) | 多厂家 | 点击跳转 |
在体验之前,需要具备以下基本条件:
- 确认地平线RDK为4GB内存版本
- 地平线RDK已烧录好地平线提供的Ubuntu 20.04系统镜像
- 安装transformers,命令为
pip3 install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
- 更新hobot-dnn,命令为
sudo apt update; sudo apt install hobot-dnn
启动RDK X3后,通过终端SSH或者VNC连接机器人,复制如下命令在RDK的系统上运行,完成相关Node的安装。
tros foxy 版本
sudo apt update
sudo apt install -y tros-hobot-llm
tros humble 版本
sudo apt update
sudo apt install -y tros-humble-hobot-llm
运行程序前,需要下载模型文件并解压,命令如下:
tros foxy 版本
# 下载模型文件
wget http://sunrise.horizon.cc/llm-model/llm_model.tar.gz
# 解压,
sudo tar -xf llm_model.tar.gz -C /opt/tros/${TROS_DISTRO}/lib/hobot_llm/
tros humble 版本
# 下载模型文件
wget http://sunrise.horizon.cc/llm-model/llm_model.tar.gz
# 解压
source /opt/tros/humble/setup.bash ##export TROS_DISTRO=humble
sudo tar -xf llm_model.tar.gz -C /opt/tros/${TROS_DISTRO}/lib/hobot_llm/
同时需要修改BPU保留内存大小为1.7GB,设置方法参考TODO。
重启后调整CPU最高频率为1.5GHz,以及设置调度模式为performance
,命令如下:
sudo bash -c 'echo 1 > /sys/devices/system/cpu/cpufreq/boost'
sudo bash -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor'
目前提供两个运行程序 hobot_llm_chat 和 hobot_llm,其中 hobot_llm_chat 提供终端交互体验,用户可直接输入文本体验大模型,hobot_llm 程序订阅 std_msgs/msg/String
类型文本消息,送给大模型处理,最后再将结果以 std_msgs/msg/String
类型发布出去,该程序可串联其他Node,例如将输出文本语音播放出去。
tros foxy 版本
source /opt/tros/setup.bash
ros2 run hobot_llm hobot_llm_chat
tros humble 版本
source /opt/tros/humble/setup.bash
ros2 run hobot_llm hobot_llm_chat
程序启动后,可直接在当前终端和机器人聊天。
-
启动 hobot_llm
tros foxy 版本
source /opt/tros/setup.bash ros2 run hobot_llm hobot_llm
tros humble 版本
source /opt/tros/humble/setup.bash ros2 run hobot_llm hobot_llm
-
新开一个终端订阅输出结果topic
tros foxy 版本
source /opt/tros/setup.bash ros2 topic echo /text_result
tros humble 版本
source /opt/tros/humble/setup.bash ros2 topic echo /text_result
-
新开一个终端发布消息
tros foxy 版本
source /opt/tros/setup.bash ros2 topic pub --once /text_query std_msgs/msg/String "{data: ""中国的首都是哪里""}"
tros humble 版本
source /opt/tros/humble/setup.bash ros2 topic pub --once /text_query std_msgs/msg/String "{data: ""中国的首都是哪里""}"
hobot_llm 程序接口说明如下:
名称 | 消息类型 | 说明 |
---|---|---|
/text_query | std_msgs/msg/String | 默认订阅topic |
/text_result | std_msgs/msg/String | 默认结果发布topic |
参数名 | 类型 | 解释 | 是否必须 | 支持的配置 | 默认值 |
---|---|---|---|---|---|
topic_sub | std::string | 订阅文本topic名称 | 否 | 根据实际部署环境配置 | /text_query |
topic_pub | std::string | 发布结果topic名称 | 否 | 根据实际部署环境配置 | /text_result |
-
模型加载失败
确认开发板内存为4GB,同时修改BPU保留内存大小为1.7GB。
-
输出结果乱码
确认已使用命令
sudo apt update; sudo apt install hobot-dnn
更新 hobot-dnn。 -
如何手动修改BPU保留内存为1.7GB?
修改方法参考在设备树中设置ion_cam size,修改 alloc-ranges 和 size 属性中的 0x2a000000 为 0x6a400000。