-
Notifications
You must be signed in to change notification settings - Fork 205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ubuntu 18.04ベースのDockerイメージ自動ビルドを追加 #98
Ubuntu 18.04ベースのDockerイメージ自動ビルドを追加 #98
Conversation
Dockerイメージのビルドには成功したけれども、run.pyの実行時にエラーが発生する。 # docker run --rm -it --gpus all aoirint/voicevox_engine:nvidia-ubuntu18.04-0.5.2-aoirint-3
/sbin/ldconfig.real: Can't link /opt/libtorch/lib/terLayoutE0ELin1ELm1EE12block_traitsILm128ELm128ELm32ELm1EE11warp_traitsILm2ELm2ELm1EE21filter_per_cta_traitsILm1ELm3ELm3ELb0EELb0ELNS9_9AlgorithmE1ELNS9_7OpTypesE1ELNS9_6LayoutE4ELNS9_12FeatureNamesE1ELm1ELm8ELm8ELm8ELm16ELm16ELm16ELb1ELb0ELb0EEE13cuDnnIndexingEv to libtorch_cuda_cpp.so
...
Notice: --voicevox_dir is /opt/voicevox_core
Traceback (most recent call last):
File "./run.py", line 56, in make_synthesis_engine
import core
ImportError: libtorch_cuda_cpp.so: cannot open shared object file: No such file or directory
Notice: mock-library will be used. Try re-run with valid --voicevox_dir # docker run --rm -it aoirint/voicevox_engine:cpu-ubuntu18.04-0.5.2-aoirint-3
/sbin/ldconfig.real: file /opt/libtorch/lib/libnvrtc-builtins-07fb3db5.so.11.1 is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libtorch_global_deps.so is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libcaffe2_nvrtc.so is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libc10_cuda.so is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libcudart-6d56b25a.so.11.0 is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libgomp-75eea7e8.so.1 is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libnvToolsExt-24de1d56.so.1 is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libc10.so is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libc10d_cuda_test.so is truncated
/sbin/ldconfig.real: file /opt/libtorch/lib/libnvrtc-3a20f2b6.so.11.1 is truncated
/sbin/ldconfig.real: Can't link /opt/libtorch/lib/terLayoutE0ELin1ELm1EE12block_traitsILm128ELm128ELm32ELm1EE11warp_traitsILm2ELm2ELm1EE21filter_per_cta_traitsILm1ELm3ELm3ELb0EELb0ELNS9_9AlgorithmE1ELNS9_7OpTypesE1ELNS9_6LayoutE4ELNS9_12FeatureNamesE1ELm1ELm8ELm8ELm8ELm16ELm16ELm16ELb1ELb0ELb0EEE13cuDnnIndexingEv to libtorch_cuda_cpp.so
/sbin/ldconfig.real: Can't link /opt/libtorch/lib/INS2_15AgentScanPolicyILi256ELi9EN3c104HalfELNS2_18BlockLoadAlgorithmE3ELNS2_17CacheLoadModifierE0ELNS2_19BlockStoreAlgorithmE3ELNS2_18BlockScanAlgorithmE2ENS2_15MemBoundScalingILi256ELi9ES6_EEEEPS6_SE_NS2_13ScanTileStateIS6_Lb0EEE18__nv_hdl_wrapper_tILb0ELb1E11__nv_dl_tagIPFRNS_6TensorERKSJ_lSK_EXadL_ZNS_6native22_logcumsumexp_out_cudaESM_lSK_EELj3EEFS6_S6_S6_EJEENS2_8NullTypeEiEEvT0_T1_T2_iT3_T4_T5_ to libtorch_cuda_cu.so
...
Notice: --voicevox_dir is /opt/voicevox_core
Traceback (most recent call last):
File "./run.py", line 56, in make_synthesis_engine
import core
ImportError: libc10.so: cannot open shared object file: No such file or directory
Notice: mock-library will be used. Try re-run with valid --voicevox_dir LibTorch 1.5.0の時点で似た問題が報告されている? https://discuss.pytorch.org/t/libtorch-c-so-files-truncated-error-when-ldconfig/46404/6 LibTorchは、glibc 2.31以降でないとldconfigが正しく動作しないかもしれない。 原因は、LibTorchの配布者が
https://sourceware.org/bugzilla/show_bug.cgi?id=25087
# docker run --rm -it --gpus all --entrypoint "" aoirint/voicevox_engine:nvidia-ubuntu18.04-0.5.2-aoirint-3 bash
# LD_LIBRARY_PATH="/opt/libtorch/lib:${LD_LIBRARY_PATH}" gosu user /opt/python/bin/python3 run.py
Traceback (most recent call last):
File "run.py", line 56, in make_synthesis_engine
import core
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /opt/voicevox_core/libcore.so)
Notice: mock-library will be used. Try re-run with valid --voicevox_dir
|
ちょっと状況がわかっていないのですが、実行が難しそうであれば、一旦docker image作成を保留しても良いかもしれないなと思いました。 |
それもよいと思います。 または、サポート期限内ではありますが、Ubuntu 18.04やCentOS 8/CentOS Stream 8など、すこし古い共有ライブラリを使っているOSへの対応は一旦あきらめて、それらの環境では動作しないものとして #96 を進めるのも選択肢と思います。 一応、上のコメント( https://github.com/Hiroshiba/voicevox_engine/pull/98#issuecomment-920488596 )の要点は、以下の2点です。
2について、いまのところ、gccが使用する libcoreのビルドはどのような環境でしていますか? 以下を説明に追記しました。
|
なるほど、libcoceのビルドをやり直せばubuntu18環境でも動かせるということなんですね! |
…base-image-ubuntu18.04
一応、新しいバージョンのlibstdc++をサードパーティのパッケージリポジトリ(PPA)からインストールすることで、Ubuntu 18.04をベースイメージとするDockerコンテナ内で、VOICEVOX ENGINE(run.py/libcore)を正常起動することはできました。 パッチ例: aoirint/voicevox_engine@master...2fa03cb docker pull aoirint/voicevox_engine:cpu-ubuntu18.04-0.5.2-aoirint-14
docker run --rm -it -p '127.0.0.1:50021:50021' aoirint/voicevox_engine:cpu-ubuntu18.04-0.5.2-aoirint-14
docker pull aoirint/voicevox_engine:nvidia-ubuntu18.04-0.5.2-aoirint-14
docker run --rm -it --gpus all -p '127.0.0.1:50021:50021' aoirint/voicevox_engine:nvidia-ubuntu18.04-0.5.2-aoirint-14 しかし、このイメージをLinux用実行バイナリのビルド環境として使ったとしても、Ubuntu 20.04上のビルドと同様の、通常のUbuntu 18.04環境では動かないバイナリが生成されそうです。 このPRでは、Ubuntu 18.04やCentOS 8で動作するバイナリのビルド環境の準備として、Ubuntu 18.04環境を追加したいため、 Ubuntu 18.04上でビルドしたlibcoreができるまで、このPRは保留しようと思います。 |
…base-image-ubuntu18.04
…r-base-image-ubuntu18.04
glibc 2.31より古いバージョンを使ったシステム(Ubuntu 18.04はglibc 2.27)ではldconfigがLibTorchを正しく読み込めないため、
Ubuntu 18.04のコンテナ内で
正常な表示(Ubuntu 20.04)
Ubuntu 20.04の方も同じように entrypointでなく、 また、一度glibcのバージョンを読み取って判定するロジックを書きましたが、複雑になったので採用していません。 GLIBC_VERSION_LINE=($(/lib/x86_64-linux-gnu/libc.so.6 | head -n1 | sed 's/.$//'))
GLIBC_VERSION="\${GLIBC_VERSION_LINE[-1]}"
GLIBC_VERSION_THRESHOLD="2.31"
GLIBC_VERSION_OLDER=$(echo "\${GLIBC_VERSION} \${GLIBC_VERSION_THRESHOLD}" | xargs -n1 | sort --version-sort | head -n1)
# if GLIBC_VERSION < 2.31
if [ "\${GLIBC_VERSION_OLDER}" != "\${GLIBC_VERSION_THRESHOLD}" ]; then
: # old version
fi 一度Ready for reviewにしましたが、GNU Parallelのバージョンが古く、pyopenjtalkの辞書ダウンロードがされていなかったため、Draftに戻します。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
たぶん大丈夫そうなのですが、念の為 https://github.com/Hiroshiba/voicevox_engine/pull/114 がマージされた後にもう一度見させていただこうと思います!
…base-image-ubuntu18.04
コンフリクト起こしているようなので、masterブランチとのマージコミットをpushします |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! コマンド || return=$?
の書き方がとても参考になりました。
内容
公式Dockerイメージに、Ubuntu 18.04(
ubuntu:bionic
)をベースイメージとするイメージを追加します。#114 のコミットを含んでいるため、先に #114 のレビューをお願いします。
Linux用実行バイナリのビルド環境をUbuntu 18.04にしたいためのPRです。
メリット
ビルド環境をUbuntu 18.04にするだけでなく、Ubuntu 18.04の実行環境をDocker Hubに用意するメリット。
デメリット
背景
https://github.com/Hiroshiba/voicevox_engine/issues/95#issuecomment-920446490