docker tvm :AttributeError: module 'tvm' has no attribute 'testing'
阿新 • • 發佈:2018-12-21
最近在搞tvm [官網:https://tvm.ai/], 我採用的docker的方式來快速入手的, 總體來說很簡單:
1. 獲取docker映象
sudo docker pull tvmai/demo-gpu
2. 執行docker映象, 注意這裡我們使用了GPU, 需要用到nvidia-docker來共享gpu裝置, 由於要使用到jupyter notebook, 所以要埠, 預設的是8888, 可以自行配置, 最後就是共享了一個工作目錄. 命令如下:
sudo nvidia-docker run -it -p 8888:8888 tvmai/demo-gpu -v /tvm_source:/source --name tvmai_gpu /bin/bash
3. 執行jupyter notebook , 由於是root使用者, 要加一個 --allow-root 引數
jupyter notebook --allow-root
道理就是這樣, 但是好像有坑, 具體錯誤沒有記錄, 好像是socket.error bind端口出錯了, 這個時候是因為沒有notebook的配置.
4. 配置下jupyter notebook [參考的FQ_G的部落格]
jupyter notebook --generate-config
vim ~/.jupyter/jupyter_notebook_config.py
找到下面引數, 做些修改:
c.NotebookApp.ip = '0.0.0.0' #所有的網路都可以 # 如果你希望本機訪問,可以配置為 127.0.0.1, # 我試著配置了localhost, 發現不得行, 不曉得是hosts檔案沒有配置還是啥的, 供參考 c.NotebookApp.port = 8888 #這裡可以配置執行的埠
配置了過後, 就jupyter notebook執行就沒得毛病了
5. 另外一個坑, 跟著教程走, 遇到
AttributeError: module 'tvm' has no attribute 'testing'
這個錯誤網上沒有找到,於是只有看原始碼了, 其實有個testing.py 很簡單, 程式碼如下:
""" TVM testing utilities """ import numpy as np def assert_allclose(actual, desired, rtol=1e-7, atol=1e-7): """ Version of np.testing.assert_allclose with `atol` and `rtol` fields set in reasonable defaults. Arguments `actual` and `desired` are not interchangable, since the function compares the `abs(actual-desired)` with `atol+rtol*abs(desired)`. Since we often allow `desired` to be close to zero, we generally want non-zero `atol`. """ np.testing.assert_allclose(actual, desired, rtol=rtol, atol=atol, verbose=True)
所以, 遇到這個錯誤, 你就可以直接把 tvm.testing 轉換為 np.testing 即可, 如:
tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + b.asnumpy())
轉換為:
np.testing.assert_allclose(c.asnumpy(), a.asnumpy() + b.asnumpy(), rtol=1e-7, atol=1e-7, verbose=True)
恩恩, 估計還會遇到不少問題, 繼續慢慢看了, 有小夥伴在研究的, 可以組團 [w.w]