Hi,
I build tvm in CentOS 7 linux, with a llvm 6.0.1 prebuilt version( SUSE-12). And then everything goes fine in the python package installation. I also accelerate my face recognition model (insightface) from 320ms to 70ms in extracting face features for one face picture.
However, our manufacturing environment is SUSE-12 with out GPU. And there is no cmake in that linux. So I copy the built version from CentOS 7 system (i.e., the whole tvm folder and the llvm 6.0.1 prebulit version into SUSE-12. Everything still goes fine in the python package installation. However, when I import nnvm or topi, it report error as follows. Import tvm is successful.
Traceback (most recent call last):
File “”, line 1, in
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/ init .py”, line 10, in
from . import frontend
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/frontend/ init .py”, line 4, in
from .onnx import from_onnx
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/frontend/onnx.py”, line 24, in
from .onnx_caffe2_utils import dimension_picker, dimension_constraint,
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/frontend/onnx_caffe2_utils.py”, line 20, in
from nnvm.compiler import graph_util
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/compiler/ init .py”, line 19, in
from … import top as _top
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/top/ init .py”, line 6, in
from . import tensor
File “/usr/lib/python3.6/site-packages/nnvm-0.8.0-py3.6.egg/nnvm/top/tensor.py”, line 22, in
import topi
File “/home/wjk/tvm/topi/python/topi/ init .py”, line 25, in
from . import nn
File “/home/wjk/tvm/topi/python/topi/nn/ init .py”, line 6, in
from .deformable_conv2d import *
File “/home/wjk/tvm/topi/python/topi/nn/deformable_conv2d.py”, line 23, in
from …cpp.image import bilinear_sample_nchw
ImportError: cannot import name ‘bilinear_sample_nchw’
@vinx13 ok then I found out the problem, the libtvm_topi.so lib is not installed/copied in the lib/python3.5/site-packages/topi.
I’m using python setup.py bdist_wheel from the wheel package to build, distribute and install the whl in different virtual environments.
When using python setup.py install as documented the library is actually copied (to lib/python3.5/site-packages/topi-0.6.dev0-py3.5.egg/topi/libtvm_topi.so) and it works.
Ok
This problem did related to the libtvm_topi.so, do 'export LD_LIBRARY_PATH=/lib/python3.5/site-packages/ topi-0.6.dev0-py3.5.egg/topi then it works.
Traceback (most recent call last):
File "./compile.py", line 84, in <module>
from tvm import relay
File "/usr/local/lib/python3.6/dist-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/relay/__init__.py", line 27, in <module>
from . import expr_functor
File "/usr/local/lib/python3.6/dist-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/relay/expr_functor.py", line 24, in <module>
from .op import Op
File "/usr/local/lib/python3.6/dist-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/relay/op/__init__.py", line 20, in <module>
from .op import get, register, register_schedule, register_compute, register_gradient, \
File "/usr/local/lib/python3.6/dist-packages/tvm-0.6.dev0-py3.6-linux-x86_64.egg/tvm/relay/op/op.py", line 19, in <module>
import topi
File "/usr/local/lib/python3.6/dist-packages/topi-0.6.dev0-py3.6.egg/topi/__init__.py", line 43, in <module>
from . import nn
File "/usr/local/lib/python3.6/dist-packages/topi-0.6.dev0-py3.6.egg/topi/nn/__init__.py", line 23, in <module>
from .deformable_conv2d import *
File "/usr/local/lib/python3.6/dist-packages/topi-0.6.dev0-py3.6.egg/topi/nn/deformable_conv2d.py", line 23, in <module>
from ..cpp.image import bilinear_sample_nchw
ImportError: cannot import name 'bilinear_sample_nchw'
If tvm, nnvm and topi were installed using setup.py we do not need to set LD_LIBRARY_PATH
@tqchen@yzhliu Do you know why import topi or from tvm import relay needs LD_LIBRARY_PATH to point to libtvm_topi.so folder explicitly now?
I looked at the folder to where topi was installed using setup.py - the folder does have libtvm_topi.so
@vinx13@tqchen To prevent any side effects from previously installed soft I create new Docker image using the following Dockerfile
FROM ubuntu:19.10
RUN apt update
RUN apt install -y build-essential
RUN apt install -y llvm-9 clang-9
RUN apt install -y cmake git wget curl vim zip
RUN apt install -y python3 python3-dev
RUN apt install -y libedit-dev libxml2-dev antlr4
RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py && rm get-pip.py
RUN pip3 install numpy decorator attrs antlr4-python3-runtime
WORKDIR /root
RUN git clone --recursive https://github.com/apache/incubator-tvm.git tvm
WORKDIR /root/tvm/build
RUN cmake -DUSE_LLVM=ON -DUSE_ANTLR=ON .. && make -j$(nproc)
WORKDIR /root/tvm/python
RUN python3 setup.py install
WORKDIR /root/tvm/nnvm/python
RUN python3 setup.py install
WORKDIR /root/tvm/topi/python
RUN python3 setup.py install
Create image and start container with freshly build and installed TVM
docker build .
docker run -ti <image_id>
inside the container run
python3
import topi
Error
python3
>>> import topi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/dist-packages/topi-0.6.dev0-py3.7.egg/topi/__init__.py", line 43, in <module>
from . import nn
File "/usr/local/lib/python3.7/dist-packages/topi-0.6.dev0-py3.7.egg/topi/nn/__init__.py", line 23, in <module>
from .deformable_conv2d import *
File "/usr/local/lib/python3.7/dist-packages/topi-0.6.dev0-py3.7.egg/topi/nn/deformable_conv2d.py", line 23, in <module>
from ..cpp.image import bilinear_sample_nchw
ImportError: cannot import name 'bilinear_sample_nchw' from 'topi.cpp.image' (/usr/local/lib/python3.7/dist-packages/topi-0.6.dev0-py3.7.egg/topi/cpp/image.py)
>>>
I found that the change which causes import topi to fail was merged between Nov 10 and Nov 15, between the following 2 commits
import topi works
Nov 10 [tutorial] Relay pass infra tutorial (#4083) - cff62bdbd20bab3ebcc27213be1e6d79da00c842
import topi fails
Nov 15 proper device query through rocm api (#4305) - 022b285dce9822ea6dcd9147b21ccbb33029610a