赞
踩
硬件平台:vcu1525
wget https://www.xilinx.com/bin/public/openDownload?filename=xrt_201802.2.1.127_16.04-xrt.deb && sudo apt install ./*.deb
sudo bash ./xrt-install.sh
目前下载的能用的版本是:
docker-ce_19.03.15_3-0_ubuntu-xenial_amd64.deb
sudo dpkg -i docker-ce_19.03.15_3-0_ubuntu-xenial_amd64.deb
sudo chmod 666 /var/run/docker.sock
docker load < xilinx-ml-suite-ubuntu-16.04-xrt-2018.2-tensorflow-1.12.0-mls-1.5.tar.gz
docker run hello-world
输入下面的命令查看容器的ID:
docker images
显示如下:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 26b77e58432b 9 days ago 72.9MB
hello-world latest d1165f221234 5 weeks ago 13.3kB
<none> <none> 5764b4f11309 20 months ago 4.13GB
这里的
<none>
就是我们上面加载的ml-suite环境容器。
然后输入下面的命令进入容器镜像并激活ml-suite环境:
./docker_run.sh 5764b4f11309
激活成功:
cd examples/tensorflow
python getModels.py
首先运行docker images
或者docker ps
,确定容器的 ID.
./docker_run.sh 5764b4f11309 #激活环境,后面为容器的ID
cd examples/tensorflow
python -m ck pull repo:ck-env
python -m ck install package:imagenet-2012-val-min
python -m ck install package:imagenet-2012-aux
head -n 500 $HOME/CK-TOOLS/dataset-imagenet-ilsvrc2012-aux/val.txt > \
$HOME/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min/val_map.txt
# Resize all the images to a common dimension for Caffe
python resize.py $HOME/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min 256 256
注意一:
这里第三行报错,原因:一般是没有初始化git本地版本管理仓库,所以无法执行git命令
解决方法:操作之前执行以下命令行: git init
将第三行替换为:
cd /home/mluser/CK/ck-env
git init
git pull https://github.com/ctuning/ck-env master
git pull 是将远程origin的master分支拉取过来,与本地当前分支合并,参考这里。
注意二:
第四行速度太慢
解决方法:在windows电脑上下载,下载地址.
下载完成后放到容器的路径:/home/mluser/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min/ILSVRC2012_img_val.tar
下。
然后解压:
cd /home/mluser/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min
tar -xf ILSVRC2012_img_val.tar
第五行和第四行处理方法相同,下载地址.
下载完成后放到容器的路径:/home/mluser/CK-TOOLS/dataset-imagenet-ilsvrc2012-aux/caffe_ilsvrc12.tar.gz
.
解压:
cd /home/mluser/CK-TOOLS/dataset-imagenet-ilsvrc2012-aux/
tar -zxvf caffe_ilsvrc12.tar.gz
cd /opt/ml-suite/notebooks
jupyter notebook --no-browser --ip=0.0.0.0 --NotebookApp.token='' --NotebookApp.password=''
127.0.0.1:8888
docker ps
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里的对应路径
示例:
docker cp /opt/test.js mycontainer:/usr/local/tomcat/test/js
注意,这里的冒号前后没有空格!
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
mkdir $HOME/share
sudo chmod -R 777 $HOME/share
cd $HOME/share
git clone https://github.com/Xilinx/ml-suite.git
原教程中没有cd $HOME/share
,但放到该路径下,到时候加载容器时,可以挂载到容器实现共享。
pip install ck
这里如果出错,可能是代理的原因,解决方法:
unset all_proxy && unset ALL_PROXY
$ python
> import ck.kernel as ck
> ck.version({})
python -m ck pull repo:ck-env
python -m ck install package:imagenet-2012-val-min
python -m ck install package:imagenet-2012-aux
head -n 500 $HOME/CK-TOOLS/dataset-imagenet-ilsvrc2012-aux/val.txt > $HOME/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min/val_map.txt
将所有图片都Resize到Caffe需要的大小-256
python -m pip --no-cache-dir install opencv-python --user
python MLsuite/examples/caffe/resize.py $HOME/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min 256 256
Move $HOME/CK-TOOLS
to $HOME/share/CK-TOOLS
mv $HOME/CK-TOOLS $HOME/share/CK-TOOLS
从xilinx下载示例模型。
mkdir $HOME/share/models
mkdir $HOME/share/models/caffe
更改
MLsuite/examples/caffe/getModels.py
中的modelsDir = "/opt/models/caffe/"
为$HOME/share/models/caffe
.
运行getModel.py将模型下载到路径$HOME/share/models/caffe
下。
# May need sudo
$ docker load < xilinx-ml-suite-ubuntu-16.04-xrt-2018.2-tensorflow-1.12.0-mls-1.5.tar.gz
$ docker load < xilinx-ml-suite-ubuntu-16.04-xrt-2018.2-caffe-1.0-mls-1.5.tar.gz
注意包含“<”符号。
在接下来的几个步骤中,我们将启动容器的单个实例,以运行量化器、编译器、子图切割器和图像分类的推理步骤。这将允许我们水平和垂直地缩放相关步骤。
在调用docker时,确保将$HOME/share
和$HOME/share/CK-TOOLS
目录挂载到容器的适当位置,如下面的各个步骤所示。
它在一个步骤中执行量化、编译和子图切割。
量化模型--量化器将为量化浮点数INT8产生缩放参数。这是必需的,因为fpga将利用定点精度,实现更多的并行化在较低功率。
编译模型--在这个步骤中,网络图(prototxt)和重量(caffemodel)由编译器编译。
子图切割--在这一步中,原始的图被切割,并插入一个定制的FPGA加速python层用于推理。
踩坑:
ml-suite/examples/caffe/run.py
拷贝到$HOME/share
路径下!!!xilinxatg/ml_suite:ubuntu-16.04-caffe-mls-1.4
替换为6909f7cd79d6
.docker run --rm --net=host --privileged=true -a stdin -a stdout -a stderr -t -v /dev:/dev -v /opt/xilinx:/opt/xilinx -w /opt/ml-suite -v $HOME/share:/opt/share -v $HOME/share/CK-TOOLS:/home/mluser/CK-TOOLS -v $HOME/share/models/caffe/bvlc_googlenet:/opt/models/caffe/bvlc_googlenet 6909f7cd79d6 bash -c 'source /opt/ml-suite/overlaybins/setup.sh && cd /opt/share/ && python run.py --prototxt /opt/models/caffe/bvlc_googlenet/bvlc_googlenet_train_val.prototxt --caffemodel /opt/models/caffe/bvlc_googlenet/bvlc_googlenet.caffemodel --prepare'
在这个步骤中,启动一个python flask inference服务器,它接收前面步骤中的caffe模型和原型文件,在FPGA上运行,并公开一个REST API端点来对输入图像执行推断.
这里同样将原来的xilinxatg/ml_suite:ubuntu-16.04-caffe-mls-1.4
替换为6909f7cd79d6
.
docker run --rm --net=host --privileged=true -d -v /dev:/dev -v /opt/xilinx:/opt/xilinx -w /opt/ml-suite -v $HOME/share:/opt/share -v $HOME/CK-TOOLS:/home/mluser/CK-TOOLS -v $HOME/share/models/caffe/bvlc_googlenet:/opt/models/caffe/bvlc_googlenet 6909f7cd79d6 bash -c 'source /opt/ml-suite/overlaybins/setup.sh && cd /opt/share/ && python /opt/ml-suite/examples/caffe/app.py --caffemodel /opt/models/caffe/bvlc_googlenet/bvlc_googlenet.caffemodel --prototxt xfdnn_auto_cut_deploy.prototxt --synset_words /home/mluser/CK-TOOLS/dataset-imagenet-ilsvrc2012-aux/synset_words.txt --port 5000'
最后跑通的命令:
将上面的整体分两步实现:
第一步:
!!!这里修改$HOME/CK-TOOLS:/home/mluser/CK-TOOLS
-> $HOME/share/CK-TOOLS:/home/mluser/CK-TOOLS
docker run --rm --net=host --privileged=true -v /dev:/dev -v /opt/xilinx:/opt/xilinx -w /opt/ml-suite -v $HOME/share:/opt/share -v $HOME/share/CK-TOOLS:/home/mluser/CK-TOOLS -v $HOME/share/models/caffe/bvlc_googlenet:/opt/models/caffe/bvlc_googlenet -it -t 6909f7cd79d6
第二步:
!!!这里修改/opt/ml-suite/examples/caffe/REST/app.py
中的import xdnn_io
-> from xfdnn.rt import xdnn_io
.
bash -c 'source /opt/ml-suite/overlaybins/setup.sh && cd /opt/share/ && python /opt/ml-suite/examples/caffe/REST/app.py --caffemodel /opt/models/caffe/bvlc_googlenet/bvlc_googlenet.caffemodel --prototxt /opt/share/work/xfdnn_auto_cut_deploy.prototxt --synset_words /home/mluser/CK-TOOLS/dataset-imagenet-ilsvrc2012-aux/synset_words.txt --port 5000'
另开一个终端:
curl -X POST -F image=@$HOME/share/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min/ILSVRC2012_val_00000001.JPEG 'http://localhost:5000/predict'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。