日韩专区一区,亚洲va综合va国产va中文,黄色精品国产,欧美黑人一级视频

搭建一個atlas 200 帶運行環境的docker鏡像

搭建一個atlas 200 帶運行環境的docker鏡像

搭建一個atlas 200 帶運行環境的docker鏡像

最近在學習docker,實戰是最好的提升,于是就想著慢慢出一波案例來感受。

 

場景描述

altas 200dk RC ubuntu18.04 分設模式下 + 參考Ascend/samples v0.6.0+(不過目前環境指導沒啥變化。之后版本應當也可以)開發c++和python應用

 

之前都是裝在物理機上的,但是目前出現了docker的場景,但官方提供的鏡像貌似有問題,且不包含python和C++環境,于是產生制作一個docker鏡像的想法,搭建支持samples c++和python樣例的環境,達到開箱即用,之前也沒學過docker,現在正好學習一下。我這里的docker使用的都是root用戶,望周知。

 

官方文檔參考連接:

https://support.huawei.com/enterprise/zh/doc/EDOC1100191942/f3364285

 

前置條件

已經包含驅動和固件的一臺atlas 200dk物理機(配置正常聯網,apt鏡像源)。

已經在物理機正確的搭建一次samples的環境,樣例測試無誤,準備好第三方依賴包和driver包。主要是為了保證第三方依賴安裝的沒有問題,環境搭建中涉及到的編譯的文件只需要拷貝和解壓,節省時間。

準備Ascend-cann-nnrt_5.0.3.1_linux-aarch64.run安裝包

安裝過程


一. 安裝docker>18.03

在物理機上

 

su root

apt remove docker docker-engine docker-ce docker.io

apt update

apt install -y apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

apt update

apt install  docker-ce

systemctl status docker

 

檢查一下docker版本:

 

docker -v



二. 準備以下文件

Ascend-cann-nnrt_5.0.3.1_linux-aarch64.run

Dockerfile

ascend_install.info

3rdenv.tar.gz

driver.tar.gz

install.sh

version.info

 

統一放置在同一目錄。其中:

 

  1. Ascend-cann-nnrt_5.0.3.1_linux-aarch64.run 不必多說

 

  1. Dockerfile docker鏡像制作操作文件,內容如下

 

#操作系統及版本號,根據實際修改

FROM ubuntu:18.04

#設置離線推理引擎包參數

ARG NNRT_PKG

#設置環境變量

ARG ASCEND_BASE=/usr/local/Ascend

ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ASCEND_BASE/nnrt/latest/lib64:/usr/lib64

ENV ASCEND_AICPU_PATH=$ASCEND_BASE/nnrt/latest

#設置進入啟動后的容器的目錄,本示例以root用戶運行為例,如果想使用非root用戶運行,可將命令改為WORKDIR /home

WORKDIR /root

ENV DEBIAN_FRONTEND=noninteractive

#拷貝離線推理引擎包c79_withruntime:0.6.0

COPY 3rdenv.tar.gz .

COPY driver.tar.gz .

COPY install.sh .

#配置樣例主要環境變量

ENV CPU_ARCH=aarch64

ENV THIRDPART_PATH=/root/Ascend/thirdpart/${CPU_ARCH}

ENV INSTALL_DIR=$ASCEND_BASE/nnrt/latest

ENV PYTHONPATH=${THIRDPART_PATH}/acllite:$PYTHONPATH

ENV LD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH

# 運行環境安裝腳本

RUN sh install.sh && \

 rm install.sh

#創建驅動進程訪問目錄

RUN mkdir -p /usr/slog

RUN mkdir -p /run/driver

RUN mkdir -p /var/driver

#修改目錄權限(非root用戶運行時需要修改)

#RUN chown -R HwHiAiUser:HwHiAiUser /usr/slog/

#RUN chown -R HwHiAiUser:HwHiAiUser /var/driver/

#USER HwHiAiUser

 

  1. info 軟件包安裝日志文件,拷貝從host拷貝“/etc/ascend_install.info”文件。

 

  1. tar.gz對應安裝樣例環境時的Ascend/thirdpart,不過為了不進行移動操作,我在外面套了一個Ascend文件然后壓縮,這樣鏡像制作過程中解壓就完成了環境的安裝。

 

  1. tar.gz 對應安裝樣例時的I N S T A L L D I R / d r i v e r / , 這 里 鏡 像 制 作 過 程 中 解 壓 后 到 {INSTALL_DIR}/driver/,這里鏡像制作過程中解壓后到{INSTALL _DIR}/driver/,這里鏡像制作過程中解壓后到{INSTALL_DIR}/driver/就完成安裝

 

  1. sh為安裝樣例環境的主要shell命令操作,安裝樣例環境的主要環境變量配置操作,我放到了Dockerfile中

主要內容如下:

 

#!/bin/bash

 

echo ". /usr/local/Ascend/nnrt/set_env.sh">> ~/.bashrc

echo "export ASCEND_GLOBAL_EVENT_ENABLE=0">> ~/.bashrc

 

source ~/.bashrc

apt update

 

# v0.6.0 sample c++ ENV

cd /root

 

tar xvf 3rdenv.tar.gz

 

rm 3rdenv.tar.gz

 

mkdir -p ${INSTALL_DIR}/driver

 

tar xvf driver.tar.gz -C ${INSTALL_DIR}/driver

 

apt-get install libopencv-dev python3.6 python3-pip -y

 

python3.6 -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

 

pip3 config set  global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

 

 

# v0.6.0 sample python ENV

 

python3.6 -m pip install Cython numpy tornado==5.1.0 protobuf

 

apt-get install python3-opencv -y

 

apt-get install -y libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev

 

apt-get install pkg-config libxcb-shm0-dev libxcb-xfixes0-dev -y

python3.6 -m pip install av==6.2.0

 

apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk -y

 

python3.6 -m pip install Pillow

 

 

  1. info是驅動版本文件,從host拷貝"/var/davinci/driver/version.info"文件

 

 

三 開始構建

su root

chmod 600 Dockerfile

chmod 600 install.sh

docker build -t 鏡像名稱:tag號 --build-arg NNRT_PKG=nnrt軟件包名稱 .

 

鏡像名稱:tag號
鏡像名稱與標簽,用戶可自行設置。

–build-arg 指定dockerfile文件內的參數。

NNRT_PKG=軟件包名稱

舉個例子

docker build -t nnrt5.0.3_sample0.6:0.1 --build-arg NNRT_PKG=Ascend-cann-nnrt_5.0.3.1_linux-aarch64.run .

 

中間會持續一段時間,耐心等待即可
當出現“Successfully built xxx”表示鏡像構建成功。

然后我們可以查看一下image信息

docker images

 

創建容器實例

執行下列操作,不過中間的鏡像和tag號要對應修改

docker run -it --device=/dev/davinci0 --device=/dev/davinci_manager --device=/dev/svm0 --device=/dev/log_drv --device=/dev/event_sched --device=/dev/upgrade --device=/dev/hi_dvpp --device=/dev/memory_bandwidth --device=/dev/ts_aisle -v /usr/local/Ascend/driver/tools:/usr/local/Ascend/driver/tools -v /usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64 -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi -v /var/hdc_ppc:/var/hdc_ppc -v /etc/hdcBasic.cfg:/etc/hdcBasic.cfg -v /etc/rc.local:/etc/rc.local -v /sys:/sys -v /usr/bin/sudo:/usr/bin/sudo -v /usr/lib/sudo/:/usr/lib/sudo/ -v /etc/sudoers:/etc/sudoers/ -v /etc/sys_version.conf:/etc/sys_version.conf 鏡像名稱:tag號 /bin/bash -c "/usr/local/Ascend/driver/tools/minirc_container_prepare.sh;/bin/bash"

 

進入后
我們用vgg測試,和C++樣例測試一下。


訂閱快訊

通過快訊訂閱,您將及時收到我們的信息更新通知。