python下mxnet 編譯安裝遇到問題彙總(二)

上次講到編譯安裝mxnet, 這次講一下對因特爾CPU處理器優化的mxnet(mxnet-mkl)編譯安裝,也是工作需要,目前mxnet在最模型推理時,耗時長(與開發相比慢了將近10倍)。

首先還是先將源碼下載下來,我這邊下載的是最新發布版mxnet-1.6.0。值得注意的一點細節, mxnet-1.6.0版本也是最後一個支持pyhon2的版本,之後不再對python2進行支持。

wget  https://github.com/apache/incubator-mxnet/archive/1.6.0.tar.gz

第一步、 環境準備:

第二步、切換代碼安裝路徑:

cd python

pip install setup.py

 

第三步、驗證是否安裝正確

import mxnet as mx
import numpy as np

shape_x = (1, 10, 8)
shape_w = (1, 12, 8)

x_npy = np.random.normal(0, 1, shape_x)
w_npy = np.random.normal(0, 1, shape_w)

x = mx.sym.Variable('x')
w = mx.sym.Variable('w')
y = mx.sym.batch_dot(x, w, transpose_b=True)
exe = y.simple_bind(mx.cpu(), x=x_npy.shape, w=w_npy.shape)

exe.forward(is_train=False)
o = exe.outputs[0]
t = o.asnumpy()

          更詳細的驗證結果:

# You can open the MKL_VERBOSE flag by setting environment variable:
export MKL_VERBOSE=1

         輸出結果

Numpy + Intel(R) MKL: THREADING LAYER: (null)
Numpy + Intel(R) MKL: setting Intel(R) MKL to use INTEL OpenMP runtime
Numpy + Intel(R) MKL: preloading libiomp5.so runtime
MKL_VERBOSE Intel(R) MKL 2019.0 Update 3 Product build 20190125 for Intel(R) 64 architecture Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) enabled processors, Lnx 2.40GHz lp64 intel_thread NMICDev:0
MKL_VERBOSE SGEMM(T,N,12,10,8,0x7f7f927b1378,0x1bc2140,8,0x1ba8040,8,0x7f7f927b1380,0x7f7f7400a280,12) 8.93ms CNR:OFF Dyn:1 FastMM:1 TID:0  NThr:40 WDiv:HOST:+0.000

第四步、基於mkl 推理優化設置

export MXNET_SUBGRAPH_BACKEND=MKLDNN

更多MKL-DNN計算圖優化請詳看https://cwiki.apache.org/confluence/display/MXNET/MXNet+Graph+Optimization+and+Quantization+based+on+subgraph+and+MKL-DNN

最後, 對mkl支持的計算算子操作,

更加具體請查看https://github.com/apache/incubator-mxnet/blob/v1.5.x/docs/tutorials/mkldnn/operator_list.md

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章