cpp目录下提供了C++例程以供参考使用,具体情况如下:
序号 | C++例程 | 说明 |
---|---|---|
1 | vila_sail | 使用SAIL推理 |
如果您在x86/arm平台安装了PCIe加速卡(如SC系列加速卡),可以直接使用它作为开发环境和运行环境。您需要安装libsophon、sophon-opencv和sophon-ffmpeg,具体步骤可参考x86-pcie平台的开发和运行环境搭建或arm-pcie平台的开发和运行环境搭建或riscv-pcie平台的开发和运行环境搭建。
如果您使用SoC平台(如SE、SM系列边缘设备),刷机后在/opt/sophon/
下已经预装了相应的libsophon、sophon-opencv和sophon-ffmpeg运行库包,可直接使用它作为运行环境。通常还需要一台x86主机作为开发环境,用于交叉编译C++程序。
C++程序运行前需要编译可执行文件。
可以直接在PCIe平台上编译程序:
如果您使用sophon-sail接口,需要编译安装sophon-sail,然后进行如下步骤。
cd cpp
pip3 install dfss -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade
python3 -m dfss [email protected]:sophon-demo/vila/cpp/third_party.zip
unzip third_party.zip
rm -f third_party.zip
cd vila_sail
mkdir build && cd build
cmake ..
make
cd ..
编译完成后,会在vila_sail目录下生成vila_sail.pcie。
通常在x86主机上交叉编译程序,您需要在x86主机上使用SOPHON SDK搭建交叉编译环境,将程序所依赖的头文件和库文件打包至soc-sdk目录中,具体请参考交叉编译环境搭建。本例程主要依赖libsophon、sophon-opencv和sophon-ffmpeg运行库包。
交叉编译环境搭建好后,使用交叉编译工具链编译生成可执行文件:
如果您使用sophon-sail接口,需要参考交叉编译安装sophon-sail,给soc环境配置sophon-sail,然后进行如下步骤。
cd cpp
pip3 install dfss -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade
python3 -m dfss [email protected]:sophon-demo/vila/cpp/third_party.zip
unzip third_party.zip
rm -f third_party.zip
cd vila_sail
mkdir build && cd build
#请根据实际情况修改-DSDK和-DSAIL_PATH的路径,需使用绝对路径。
cmake -DTARGET_ARCH=soc -DSDK=/path_to_sdk/soc-sdk -DSAIL_PATH=/path_to_sail/sophon-sail/build_soc/sophon-sail ..
make
cd ..
编译完成后,会在vila_sail目录下生成vila_sail.soc。
对于PCIe平台,可以直接在PCIe平台上推理测试;对于SoC平台,需将交叉编译生成的可执行文件及所需的模型、测试数据拷贝到SoC平台中测试。测试的参数及运行方式是一致的,下面主要以PCIe模式进行介绍。
可执行程序默认有一套参数,请注意根据实际情况进行传参,以vila_sail.pcie为例,具体参数说明如下:
Usage: vila_sail.pcie [params]
--dev_id (value:0)
TPU device id
--help (value:1)
print help information.
--llm (value:../../models/BM1684X/llama_int4_seq2560.bmodel)
path of llm model
--num_input_frames (value:6)
the number of sampled frames to infer
--tokenizer_path (value:../../python/config/llm_token/tokenizer.model)
path of tokenizer config
--video (value:../../datasets/test_car_person_1080P.mp4)
path of video
--vision (value:../../models/BM1684X/vision_embedding_6batch.bmodel)
path of vision_embedding model
注意: cpp例程传参与python不同,需要用等于号,例如
./vila_sail.pcie --llm=xxx
。
需要在cpp/vila_sail
目录下执行程序,视频测试实例如下。
./vila_sail.pcie --video=../../datasets/test_car_person_1080P.mp4
在Question for this video: 处进行提问,例如:Please describe this video,接着程序会将预测结果输出,同时会打印FTL、推理速度等信息。
vila1.5模型有vision_embedding和LLM模块,其中vision_embedding模块负责将图片转化为向量再和LLM生成的词向量combine起来,最终由LLM模块输出回答。