- 作者:
- 分类:知识&开发->AI->edge_AI
- 阅读:454
- 点赞:4
- 版权:CC BY-SA 4.0
- 创建:2022-09-30
- 更新:2022-10-08
从AXera-Pi 的模型转换工具 docker 镜像中抽离出 pulsar 工具链在本机上或者服务器上跑
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/450
原文链接(持续更新):https://neucrack.com/p/450
因为 Maix-III AXera-Pi 的模型转换工具是用 docker 封装起来的, 好处是简单,不需要搭建环境,但是你也可能想在自己的本机直接运行,或者封装到其它 docker 等用处时,想要将软件抽离出来,这里介绍了如何将 pulsar 从 docker 镜像里面抽离出来。
创建容器并运行
docker run -it --net host --rm --shm-size 32g -v $PWD:/data sipeed/pulsar
保持容器运行,在新的终端中执行命令拷贝出文件
docker cp sipeed/pulsar:/root .
主要需要从 docker 拷贝出来的python_modules
文件夹和VERSION
文件
因为要使用特定的 Python
版本(对于0.6.1.14
版本使用的 Python 3.6.9),可以安装 miniconda 来实现
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh -b
# source /root/miniconda3/etc/profile.d/conda.sh # 找不到 conda 命令时执行, 路径根据你安装 miniconda 的路径,这里以 root 用户安装的举例
conda create -y -n pulsar python=3.6.9
然后 pulsar_requirements.txt
(可能写得不全,实际遇到报错缺包再安装也行,或者直接在 docker 容器里面执行 pip freezen > requirements.txt
将所有包导出来):
torchvision
torch
numpy
protobuf
tabulate
onnx==1.8.1
onnxruntime
flatbuffers
opencv-python
filelock
MegEngine
PuLP
contextvars
bitarray
cached-property
ipython
安装依赖
conda activate pulsar
python --version
pip install -r /root/pulsar_requirements.txt -i https://pypi.douban.com/simple
运行前需要设置变量,这些变量导出来自于拷贝的文件夹下的.bashrc
export WORKDIR=/root
export NEUWIZARD_LATEST_PYTHONPATH=$WORKDIR/python_modules/neuwizard-latest
export PATH=$WORKDIR:$WORKDIR/python_modules/neuglass:$WORKDIR/caffe2onnx:$NEUWIZARD_LATEST_PYTHONPATH/neuwizard/backends/joint:$WORKDIR/python_modules/super_pulsar:$WORKDIR/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$WORKDIR/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin:/root/.local/bin:$PATH
export PYTHONPATH=$NEUWIZARD_LATEST_PYTHONPATH:$WORKDIR/python_modules:$WORKDIR/python_modules/super_pulsar:$PYTHONPATH
export PULSAR_TMPDIR=$WORKDIR
export LOGGING_LEVEL=debug
export LANG=C.UTF-8
export NEUWIZARD_TOOLS_VERSION=`cat $WORKDIR/VERSION`
export OMP_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
这里 WORKDIR
是python_modules
和VERSION
文件所在文件夹
然后就可以执行 pulsar
命令了,可以把这些 export
变量放到~/.bashrc
或者~/.zshrc
中
pulsar -h
也可以封装成一个脚本,比如叫pulsar-helper.sh
#/bin/bash
set -e
export WORKDIR=/root
export NEUWIZARD_LATEST_PYTHONPATH=$WORKDIR/python_modules/neuwizard-latest
export PATH=$WORKDIR:$WORKDIR/python_modules/neuglass:$WORKDIR/caffe2onnx:$NEUWIZARD_LATEST_PYTHONPATH/neuwizard/backends/joint:$WORKDIR/python_modules/super_pulsar:$WORKDIR/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$WORKDIR/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin:/root/.local/bin:$PATH
export PYTHONPATH=$NEUWIZARD_LATEST_PYTHONPATH:$WORKDIR/python_modules:$WORKDIR/python_modules/super_pulsar:$PYTHONPATH
export PULSAR_TMPDIR=$WORKDIR
export LOGGING_LEVEL=debug
export LANG=C.UTF-8
export NEUWIZARD_TOOLS_VERSION=`cat $WORKDIR/VERSION`
export OMP_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
source /root/miniconda3/etc/profile.d/conda.sh
conda activate pulsar
pulsar $@
conda deactivate
这样就只需要执行
pulsar-helper.sh -h