Пакет tvmc не найден в контейнере TVM Docker
Я новичок в Apache TVM.
Я попытался создать и запустить образ докера с именем tvm.ci_cpu:latest , как описано в следующем руководстве:
https://tvm.apache.org/docs/install/docker.html#docker-источник
Я попытался использовать приложение Python tvmc внутри контейнера докеров, как описано в руководстве ниже:
https://tvm.apache.org/docs/tutorial/tvmc_command_line_driver.html#using-tvmc
Затем я получил следующую ошибку:
$ tvmc --help
bash: tvmc: command not found
Я попытался использовать другой метод, упомянутый в статье выше, но получил следующую новую ошибку:
$ python3 -m tvm.driver.tvmc --help
Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/usr/lib/python3.6/runpy.py", line 109, in _get_module_details
__import__(pkg_name)
File "/opt/share0/bob/project/tvm/python/tvm/__init__.py", line 26, in <module>
from ._ffi.base import TVMError, __version__, _RUNTIME_ONLY
File "/opt/share0/bob/project/tvm/python/tvm/_ffi/__init__.py", line 28, in <module>
from .base import register_error
File "/opt/share0/bob/project/tvm/python/tvm/_ffi/base.py", line 71, in <module>
_LIB, _LIB_NAME = _load_lib()
File "/opt/share0/bob/project/tvm/python/tvm/_ffi/base.py", line 51, in _load_lib
lib_path = libinfo.find_lib_path()
File "/opt/share0/bob/project/tvm/python/tvm/_ffi/libinfo.py", line 146, in find_lib_path
raise RuntimeError(message)
RuntimeError: Cannot find libraries: ['libtvm.so', 'libtvm_runtime.so']
List of candidates:
/opt/sgxsdk/lib64/libtvm.so
/opt/share0/bob/project/tvm/libtvm.so
/usr/local/sbin/libtvm.so
/usr/local/bin/libtvm.so
/usr/sbin/libtvm.so
/usr/bin/libtvm.so
/sbin/libtvm.so
/bin/libtvm.so
/opt/rust/bin/libtvm.so
/usr/lib/go-1.10/bin/libtvm.so
/opt/share0/bob/project/tvm/python/tvm/libtvm.so
/opt/share0/bob/project/libtvm.so
/opt/sgxsdk/lib64/libtvm_runtime.so
/opt/share0/bob/project/tvm/libtvm_runtime.so
/usr/local/sbin/libtvm_runtime.so
/usr/local/bin/libtvm_runtime.so
/usr/sbin/libtvm_runtime.so
/usr/bin/libtvm_runtime.so
/sbin/libtvm_runtime.so
/bin/libtvm_runtime.so
/opt/rust/bin/libtvm_runtime.so
/usr/lib/go-1.10/bin/libtvm_runtime.so
/opt/share0/bob/project/tvm/python/tvm/libtvm_runtime.so
/opt/share0/bob/project/libtvm_runtime.so
Я попытался получить и использовать следующие сторонние образы докеров вместо тех, которые я создал сам:
Тем не менее, я все еще встречал те же проблемы, что и раньше.
ЗАЧЕМ? Я вообще понятия не имел.
Буду признателен за вашу помощь.
1 ответ
Я нашел ответ pingsutw в https://discuss.tvm.apache.org/t/import-tvm-returns-runtime-error-cant-find-libtvm-so-when-using-docker-demo-cpu-image . /5110 . Ссылаясь на его совет, попробовал пересобрать tvm в контейнере, запускаемом из образа
tvm.ci_cpu:latest
который построил сам.
pushd path/to/tvm && \
chmod +x 3rdparty/libbacktrace/configure && \
mkdir -p cmake-build && \
cmake -H. -Bcmake-build -DUSE_LLVM=ON && \
cmake --build cmake-build --target all -- -j 4 && \
mv cmake-build build && \
popd
После вышеизложенного я попытался ввести команду
python3 -m tvm.driver.tvmc --help
и получил следующий вывод.
usage: tvmc [-v] [--version] [-h] {run,tune,compile} ...
TVM compiler driver
optional arguments:
-v, --verbose increase verbosity
--version print the version and exit
-h, --help show this help message and exit.
commands:
{run,tune,compile}
run run a compiled module
tune auto-tune a model
compile compile a model.
TVMC - TVM driver command-line interface
Как видите, теперь это работает.
Удивительно,
libtvm.so
а также
libtvm_runtime.so
не встроены в образ докера tvm. Возможно, образ докера стороннего tvm не работает. Возможно, следует обновить файл Dockerfile для создания образа докера tvm. Может быть, он предназначен для гибкой компиляции для удовлетворения различных потребностей.