ml-suite-1.5环境安装以及实验记录(vcu1525平台)

ml-suite-1.5环境安装记录


硬件平台:vcu1525

1. 下载并安装xrt和shell firmware

(1)安装xrt
wget https://www.xilinx.com/bin/public/openDownload?filename=xrt_201802.2.1.127_16.04-xrt.deb && sudo apt install ./*.deb
(2)安装shell firmware

download

(3) 运行
sudo bash ./xrt-install.sh

2. 安装docker

2.1 下载安装包

download

目前下载的能用的版本是:

docker-ce_19.03.15_3-0_ubuntu-xenial_amd64.deb

2.2 安装
sudo dpkg -i docker-ce_19.03.15_3-0_ubuntu-xenial_amd64.deb
2.3 下载ml-suite环境镜像

download

2.4 加载镜像
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
2.4 测试是否安装成功
docker run hello-world
2.5 激活ml-suite环境

输入下面的命令查看容器的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

激活成功:

在这里插入图片描述

3. 运行测试用例

参考Jupyter Notebooks README.

3.1 获取模型
cd examples/tensorflow
python getModels.py
3.2 获取测试数据

首先运行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
3.3 Launch Jupyter notebook server
cd /opt/ml-suite/notebooks
jupyter notebook --no-browser --ip=0.0.0.0 --NotebookApp.token='' --NotebookApp.password=''
3.4 Open a broswer, and navigate to :
  • 127.0.0.1:8888

4. docker从宿主机拷贝到容器或相反操作

4.1 查看容器名字
docker ps
4.2 从宿主机拷贝文件到容器
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里的对应路径

示例:

docker cp /opt/test.js mycontainer:/usr/local/tomcat/test/js

注意,这里的冒号前后没有空格!

4.3 从容器拷贝文件到宿主机
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径

5. container_pipeline go through 过程

container_pipeline.md.

5.1 创建一个共享目录来映射容器,以便在不同阶段之间共享中间结果
mkdir $HOME/share
sudo chmod -R 777 $HOME/share
5.2 Clone ML Suite
cd $HOME/share
git clone https://github.com/Xilinx/ml-suite.git

原教程中没有cd $HOME/share,但放到该路径下,到时候加载容器时,可以挂载到容器实现共享。

5.3 使用Collective Knowledge(CK)下载Imagenet2012_val_min.
5.3.1 安装CK
pip install ck

这里如果出错,可能是代理的原因,解决方法:

unset all_proxy && unset ALL_PROXY
5.3.2 测试ck是否安装成功
$ python
> import ck.kernel as ck
> ck.version({})
5.3.3 使用ck进行数据集下载
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下。

5.3 下载MLsuite docker container并加载
# 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目录挂载到容器的适当位置,如下面的各个步骤所示。

5.4 Prepare for inference

它在一个步骤中执行量化、编译和子图切割。

  • 量化模型--量化器将为量化浮点数INT8产生缩放参数。这是必需的,因为fpga将利用定点精度,实现更多的并行化在较低功率。

  • 编译模型--在这个步骤中,网络图(prototxt)和重量(caffemodel)由编译器编译。

  • 子图切割--在这一步中,原始的图被切割,并插入一个定制的FPGA加速python层用于推理。

踩坑:

  1. 在运行这一步之前要先将ml-suite/examples/caffe/run.py拷贝到$HOME/share路径下!!!
  2. 注意,这里将原来的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'
5.8 Inference REST API Server for Classification, 启动服务器

在这个步骤中,启动一个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'
5.9 Classification (Passing an Image for Inference)

另开一个终端:

curl -X POST -F image=@$HOME/share/CK-TOOLS/dataset-imagenet-ilsvrc2012-val-min/ILSVRC2012_val_00000001.JPEG 'http://localhost:5000/predict'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值