夺冠之作!揭秘基于InternLM2的离线具身智能导盲犬
在之前的一篇文章中,我们带领大家走进了实战营优秀学员郭一凡的故事。今天,让我们把目光转向实战营明星项目《基于 InternLM2 大模型的离线具身智能导盲犬》。
团队队长安泓郡是首期书生·浦语大模型实战营优秀学员,也是第 2 期实战营《LMDeploy 量化部署 LLM-VLM 实践》课程的讲师。项目孵化于首期实战营期间,因表现出色经官方推荐参与“书生·浦源大模型挑战赛”并最终荣获最高荣誉。
目前通过实验,该团队开发的离线具身智能导盲犬已能够与视障人士流畅沟通指令,并带领其通过马路、楼梯、电梯等多样复杂环境。
项目链接:https://github.com/BestAnHongjun/InternDog
体验地址:https://openxlab.org.cn/apps/detail/Coder-AN/InternDog
(demo视频)
项目背景
视障人士在日常生活中面临着诸多挑战,导盲犬可以提供更为便捷、安全的导航方式,然而成功培养一条合格导盲犬的成功率较低且费用昂贵。
四足机器人技术的快速发展使得机器狗代替传统导盲犬成为可能,本团队结合大语言模型技术,开发了一只基于 InternLM2 大模型的离线具身智能导盲犬 InternDog。
项目简介
InternDog 使用情景模拟器生成的情景数据作为微调数据集,使用 XTuner 工具基于 InternLM2-Chat-1.8B-SFT 模型进行微调,然后使用本团队开发的 LMDeploy-Jetson 工具对模型进行 W4A16 量化,在宇树 Go1 机器狗板载NVIDIA Jetson Xavier NX (8G)上离线部署。
LMDeploy-Jetson: LMDeploy 在 Jetson 系列板卡上的移植版本。
基于 Function Calling 机制,本团队提出了“多层次离线具身智能开发框架”。
主要原因在于:
- 大模型虽然具备较强的模糊意图理解能力以及复杂任务的自主规划能力,但受算力限制,推理速度较慢,不适用于对控制周期较短的实时控制任务。
- 小模型推理速度较快,但是对输入输出有严格的要求,不具备模糊意图识别能力以及复杂任务的规划能力。
因此团队结合大模型和小模型各自的优势,类比哺乳类动物神经系统的分层结构,与底层硬件传感器以及实时闭环运动控制系统将工程整体架构划分为三个层次,各自侧重不同的工作:
- 高级中枢:推理速度相对较慢,因此主要负责对时效性要求不高但对模糊意图理解能力要求较强的工作,如人机自然语言交互、复杂任务规划等;
- 中级中枢:推理速度适中,基于 YOLO 系列目标检测算法、OCR 算法对场景进行视觉感知,基于科大讯飞语音模块内置的模型进行离线语音识别、语音合成等任务;
- 低级中枢:传感器数据接收、控制电机等硬件实时运动等。
其中,“中级中枢”和“低级中枢”统称为“底层控制程序”。
体验 Demo
由于项目涉及真实场景,对于没有机器狗实物的研究者很难复现全部内容验证项目的真实性。为此,团队模拟真实场景,基于 OpenXlab 平台和 Gradio 工具制作了一个场景模拟器,由用户来模拟底层控制程序做出相应反应,从而测试大模型的真实表现。
在线体验地址:https://openxlab.org.cn/apps/detail/Coder-AN/InternDog
**本地体验方法(**8G显存以上NVIDIA GPU):
# 克隆仓库
git clone https://github.com/BestAnHongjun/InternDog.git
# 进入项目目录
cd InternDog
# 安装依赖
pip install -r requirements.txt
# 运行网页版demo
python app.py
# 运行终端demo
python app_cli.py
使用教程
使用本项目开发的场景模拟器生成训练数据。
cd data
python gen_all_data.py
安装依赖项。
pip install -r requirements_all.txt
下载 InternLM2-Chat-1.8B-SFT 大模型。
python python fine-tune/download_pretrain_model.py
基于 XTuner 微调模型。
xtuner train ./fine-tune/internlm2_1_8b_qlora_lift_e3.py --deepspeed deepspeed_zero2
生成 Adapter。
# 注意修改.sh文件第六行模型文件路径
./tools/1.convert_model.sh
合并 Adapter。
# 注意修改.sh文件第六行模型文件路径
./tools/1.convert_model.sh
W4A16 量化模型。
# 注意修改模型路径
./tools/3.quantize_model.sh
转化为 TurboMind 模型。
# 注意修改模型路径
./tools/4.turbomind_model.sh
路径
./tools/3.quantize_model.sh
转化为 TurboMind 模型。
```Python
# 注意修改模型路径
./tools/4.turbomind_model.sh
可参考社区项目 LMDeploy-Jetson 在 Jetson 板卡部署模型:https://github.com/BestAnHongjun/LMDeploy-Jetson