一、 宿主机安装bstnnx docker环境
(具体细节参考黑芝麻资料网站中的《深度学习工具链安装教程bsnn 4.1.0》)
登陆黑芝麻官网,下载toolchain docker 转换工具链,这里我下载的是bsnn_release_4.2.0。(该版本已集成auto_dal和auto_ptq)。
1.导入镜像
将bsnn_release_4.2.0中的所有文件下载到主目录中的toolchain文件夹中,进入终端导入image:
docker load -i ./bsnn_tools_docker_4.2.0.tar
2.创建容器
load成功后,创建container(有很多方法),黑芝麻推荐的是:
./run_docker_container.sh --root --keep --network=host
但是我运行会报错,所以用的是系统推荐的方法:
docker exec -it bsnn-tools-container-stk-4.2.0 /bin/bash
或者
docker exec -it bsnn-tools-container-stk-4.2.0 bash
3.使用jupyter
该工具编译还可以直接用jupyter,查询 jupyter 服务:
jupyter notebook list
“ tocken=” 后的字符串为 jupyter 登录密码
打开浏览器,输入http://0.0.0.0:8370,在刷新的界面中,
输入:be2ec6aae21bc8bd9272a7a97a67a087bd52eb2c00ab6d0a
Log in
4.申请license文件
给黑芝麻技术支持团队写邮件,提供Linux系统的MAC地址,申请license文件。将得到一个license.lic文件。
Linux系统的MAC地址查询: ifconfig
我的是enp0s31f6(每个电脑略有差别),MAC地址:00:be:43:b8:40:1b
5.部署License文件
将申请到的License文件拷贝到bstnnx docker环境中,指令:docker cp ./license.lic 你container的名称:/workspace/license.lic
这里我是:
docker cp license.lic bsnn-tools-container-stk-4.2.0:/workspace/license.lic
修改/workspace/tools/Net-FW/utilities/script/xtensa_setup.sh文件中
export XTENSAD_LICENSE_FILE='/workspace/license.lic'
至此,基于toolchain docker 转换工具链bsnn_release_4.2.0的bstnnx docker环境就安装完成。
同样bsnn-tools-container-stk-4.2.0可以用VS code打开,为了方便快捷,以后我都从VS code中运行容器。(如果不知道怎么运行,请参考我关于黑芝麻A1000主题的第二篇文章)
二、自带案例模型转换
bsnn-tools-container-stk-4.2.0中内置了一个样例sample
为了防止后续操作不当破坏了sample,所以这里我将其拷贝到其他文件夹进行转换部署。
1.拷贝
将sample拷贝到同目录下的models中
2.修改test1.yaml
修改sample/test1.yaml中的model_path、input_data_set_path、image_process_config路径:
并在priority: 1100上添加:
XTSC_NET_SIM: True
generate_rbf_only: True
3.转换模型
在容器中运行:
bstnnx_run --config models/sample/test1.yaml --result_dir output/hwGenTest3
结果:
cd /workspace/output/hwGenTest3/1100_HardwareTestingStage/test1_mini_model.20240905091923.hw_test_config
,该文件夹是模型量化结果输出的路径。
其中,weights.bin
及fw_integration中.lib .meta
共三个,是后期编写cmake工程和开发板端运行的重要文件。
4.(因为黑芝麻的深度学习系列的都是基于SDK V2.3.1.2版本进行的,建议将开发板中的SDK烧录为V2.3.1.2版本,具体参考另一篇专门写烧录的文章)
5.如果开发板烧录的SDK版本较低,是需要安装nndeploy相关组件,安装请参考另一篇。这里我烧录了V2.3.1.2版本,该版本不需要。
6.测试模型量化是否成功
/workspace/output/hwGenTest3/1100_HardwareTestingStage/test1_mini_model.20240905091923.hw_test_config该路径下有三个shell脚本:run_dsp.sh, run_dsp_lite.sh, run_perf.sh
,这三个脚本是 用于 dsp baremetal 测试。(具体说明查看黑芝麻资料网站中的《深度学习工具链安装教程bsnn 4.1.0》)
USB连接宿主机和A1000
1)evb_util 文件拷贝到开发板
将docker image 内/workspace/tools/Net-FW/utilities/evb_util
文件夹复制到宿主机
docker cp bsnn-tools-container-stk-4.2.0:/workspace/tools/Net-FW/utilities/evb_util /home/stk/heizhima
bsnn-tools-container-stk-4.2.0为 docker containter name
再从宿主机将evb_util
push 到嵌入式A1000板子上
adb push evb_util /home/root
登陆A1000开发板,执行
source /home/root/evb_util/env.sh
2).hw_test_config 文件拷贝到开发板
将1100 stage 路径下生成的 test1_mini_model.20240905091923.hw_test_config 文件夹 push 到板子。
先将其从容器中拷贝到宿主机:
docker cp bsnn-tools-container-stk-4.2.0:/workspace/output/hwGenTest3/1100_HardwareTestingStage/test1_mini_model.20240905091923.hw_test_config /home/stk/heizhima
再将其从宿主机拷贝到A1000:
adb push test1_mini_model.20240905091923.hw_test_config /home/root
3)执行run_dsp.sh
执行run_dsp.sh
cd /home/root/test1_mini_model.20240905091923.hw_test_config
./run_dsp.sh
出现
Memory dump complete
test PASS.
说明模型转化成功。
如果出现错误,查询黑芝麻资料《深度学习工具链安装教程bsnn 4.1.0》文档。