简易开发

本章节中,我们将为您介绍D-Robotics-LLM的基本使用流程,便于您实现快速上手。这里我们以Qwen2.5-Omni-3B模型为例,为您进行使用说明。

模型及部署包准备

  • 下载我们提供的D-Robotics_LLM_{version}.tar.gz部署包并解压。

  • 下载我们提供的Qwen2.5_Omni_3B_Audio.hbmQwen2.5_Omni_3B_Visual.hbmQwen2.5_Omni_3B_Text.hbm模型,以及模型的输入嵌入权重embed_tokens.bin文件。

提示

关于hbm模型的下载链接,请参见oellm_runtimemodel文件夹的resolve_model.txt文件。

准备完毕后,我们将模型(*.hbm),embed_tokens.bin文件,以及部署包中的oellm_runtime SDK整合到一起,参考目录结构如下:

llm └── D-Robotics_LLM_{version} └── oellm_runtime ├── model │ ├── resolve_model.txt │ ├── Qwen2.5_Omni_3B_Audio.hbm │ ├── Qwen2.5_Omni_3B_Visual.hbm │ ├── Qwen2.5_Omni_3B_Text.hbm │ └── embed_tokens.bin ├── example │ ├── oellm_omni_offline │ │ ├── oellm_omni_offline │ │ ├── omni_offline_config.json │ │ ├── omni_offline_prompt.json │ │ └── draw_guitar.mp4 │ └── oellm_omni_online ├── config ├── include ├── lib └── set_performance_mode.sh

板端运行准备

在板端创建工作目录,参考命令如下:

# 创建工作目录 mkdir -p /home/root/llm cd /home/root/llm

将开发机中整合的文件夹拷贝至此板端目录下,参考命令如下:

scp -r llm/* root@{board_ip}:/home/root/llm

最后,在/home/root/llm/D-Robotics_LLM_{version}/oellm_runtime路径下,对LD_LIBRARY_PATH进行配置,参考命令如下:

# 修改硬件寄存器的值使设备调整为性能模式 sh set_performance_mode.sh # 设置环境变量 lib=/home/root/llm/D-Robotics_LLM_{version}/oellm_runtime/lib export LD_LIBRARY_PATH=${lib}:${LD_LIBRARY_PATH}

板端运行

Qwen2.5_Omni_3B模型有online和offline两种运行模式。这里以offline模式为例,模型板端运行参考指令如下:

cd ./example/oellm_omni_offline ./oellm_omni_offline --config ./omni_offline_config.json

在offline模式中,可执行文件的参数如下:

参数参数说明是否可选
-h, --help显示帮助信息。/
-c, --config用于指定运行时的json配置文件路径。必填

json配置文件示例如下:

omni_offline_config.json
{ "visual_hbm_path": "../../model/Qwen2.5_Omni_3B_Visual.hbm", "audio_hbm_path": "../../model/Qwen2.5_Omni_3B_Audio.hbm", "text_hbm_path": "../../model/Qwen2.5_Omni_3B_Text.hbm", "embed_tokens": "../../model/embed_tokens.bin", "tokenizer_dir": "../../config/Qwen2.5_Omni_3B_config/", "model_type": 5, "online_mode": false }

json配置文件参数说明如下:

参数参数说明是否可选
visual_hbm_path用于指定量化后的视频图像特征提取模型文件(*.hbm)路径。必填
audio_hbm_path用于指定量化后的音频特征提取模型文件(*.hbm)路径。必填
text_hbm_path用于指定量化后的文本模型文件(*.hbm)路径。必填
embed_tokens用于指定模型的输入嵌入权重(embed_tokens.bin)路径。必填
tokenizer_dir用于指定分词器和部分初始化数据的配置路径。必填
model_type用于指定运行的模型类型,当前Omni模型类型为5。必填
online_mode用于指定模型以在线或者离线方式运行。
取值范围: 'true''false'
必填

运行结果

运行后,即可进行测试,参考如下:

xlm init success 板端Omni多模态大模型对话交互offline demo,请输入包含输入信息的json文件路径 当前支持的多模态输入组合如下 1.文字 2.音频(mp3|wav) 3.图片(jpg|png|bmp|jpeg) 4.图片(jpg|png|bmp|jpeg)+文字 5.图片(jpg|png|bmp|jpeg)+音频(mp3|wav) 6.含音频的视频(mp4|mkv)+文字 7.含音频的视频(mp4|mkv)+音频(mp3|wav) 8.不含音频的视频(mp4|mkv) 9.不含音频的视频(mp4|mkv)+文字 json内容填写示例 {"conversation": [{"role": "system","content": [{"type": "text","text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech."}]},{"role": "user","content": [{"type": "text","text": "简单介绍人工智能"}]}]} 用户输入示例 [User] <<< ./omni_offline_prompt.json 退出请输入exit [User] <<< omni_offline_prompt.json Role: system Type: text Text: "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech." Role: user Type: video Video: "draw_guitar.mp4" VideoPreprocess Time: 1799.69ms Audio(inVideo)Preprocess Time: 214.787ms [Assistant] >>> Oh, that's really cool! You're drawing a guitar on the tablet. Have you been practicing drawing for a long time?If you want to practice more, you can try to draw other things like flowers or animals. It's also a great way to relax and have fun. So, what do you think about it? Performance prefill: 895.73tokens/s decode: 14.03tokens/s

Qwen2.5_Omni_3B模型运行时需传入json文件的路径,您需在该json文件中配置音频、视频、图像、文本等输入内容。程序运行过程中,会将json文件中的输入信息同步打印至终端。 在该示例中,omni_offline_prompt.json文件内容如下:

omni_offline_prompt.json
{ "conversation": [ { "role": "system", "content": [ { "type": "text", "text": "You are Qwen, a virtual human developed by the Qwen Team, Alibaba Group, capable of perceiving auditory and visual inputs, as well as generating text and speech." } ] }, { "role": "user", "content": [ { "type": "video", "video": "draw_guitar.mp4", "resized_width": 448, "resized_height": 448 } ] } ] }

关于多模态输入的完整支持范围、在线运行模式的具体说明,以及json文件的详细填写规范等内容,请参考 进阶开发 章节。