やろうとしていること
Docker+GPU+TensorFlowの実行環境を作ろうと思っています。
対応
GPUを積んだ機体はproxy環境下にあり、ネットワーク設定が困難であったため、GPU非搭載で別ネットワーク下のMacBookでコンテナのイメージを作成し、このイメージをGPU搭載機体(Ubuntu16.04)にコピーしてdocker load→docker runしました。この方法が悪いのか不明ですか、Docker上でGPUを認識しません。そこで、問題の切り分け方法をアドバイスいただけないでしょうか?
問題の想定原因
TensorFlowからGPU認識を確認するコマンドを行ったところ(TensorFlowからGPUが認識できているかを2行コードで確認する)、kernel version 430.64.0 does not match DSO version 410.129.0 -- cannot find working devices in this configurationというErrorがでました。
確認事項等
- ホストOS(GPU搭載機体)には、Nvidiaのドライバの430.64をインストールしました(古いバージョンからアップデートしたので、そこが原因かもしれません)。その後本体再起動しています。
- ホストコンピュータ上でもコンテナ上でもnvidia-smiコマンドは通り、共にドライバは430.64で認識されます。
- nvidiaドライバ、cuda、tensorflow、pythonのバージョンを合わせて導入したつもりです。
- GPU利用可能なTensoflowのイメージを利用しても問題が再現しました。
- GPUはGeFroce GTX 1080Ti(4枚)となります。
実行ファイル等
DockerFile
1FROM nvidia/cuda:10.0-cudnn7-runtime-ubuntu16.04 2 3RUN apt-get update && apt-get install -y wget curl sudo vim unzip git sudo 4RUN apt update && apt install -y software-properties-common 5 6# PPAからpython3.7インストール 7RUN add-apt-repository ppa:deadsnakes/ppa 8RUN apt update && apt install -y python3.7 9 10# pipのインストール 11RUN curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 12RUN python3.7 get-pip.py 13RUN pip3 install -U pip 14 15# tensorflow-gpuのインストール 16RUN pip3 install tensorflow-gpu==2.0.0
bash
1$ docker run -it --gpus all tensor_image /bin/bash
python
1from tensorflow.python.client import device_lib 2device_lib.list_local_devices() 3 4# 2021-08-04 06:13:56.206162: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 5# 2021-08-04 06:13:56.228115: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2993095000 Hz 6# 2021-08-04 06:13:56.239632: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x44c86a0 executing computations on platform Host. Devices: 7# 2021-08-04 06:13:56.239687: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): Host, Default Version 8# 2021-08-04 06:13:56.245282: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1 9# 2021-08-04 06:13:56.246894: E tensorflow/stream_executor/cuda/cuda_driver.cc:318] failed call to cuInit: CUDA_ERROR_SYSTEM_DRIVER_MISMATCH: system has unsupported display driver / cuda driver combination 10# 2021-08-04 06:13:56.246948: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: 89c089af9927 11# 2021-08-04 06:13:56.246968: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: 89c089af9927 12# 2021-08-04 06:13:56.247069: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:200] libcuda reported version is: 410.129.0 13# 2021-08-04 06:13:56.247121: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:204] kernel reported version is: 430.64.0 14# 2021-08-04 06:13:56.247139: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:313] kernel version 430.64.0 does not match DSO version 410.129.0 -- cannot find working devices in this configuration 15# [name: "/device:CPU:0" 16# device_type: "CPU" 17# memory_limit: 268435456 18# locality { 19# } 20# incarnation: 7504376849925051239 21# , name: "/device:XLA_CPU:0" 22# device_type: "XLA_CPU" 23# memory_limit: 17179869184 24# locality { 25# } 26# incarnation: 11837196615187333375 27# physical_device_desc: "device: XLA_CPU device" 28# ]
コンテナ内でのライブラリパス確認
bash
1$ echo $LD_LIBRARY_PATH 2# /usr/local/nvidia/lib:/usr/local/nvidia/lib64 3 4ldconfig -p | grep libcuda 5# libcudart.so.10.0 (libc6,x86-64) => /usr/local/cuda-10.0/targets/x86_64-linux/lib/libcudart.so.10.0 6# libcuda.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcuda.so.1
バージョン等確認
bash
1# ホスト 2$ docker —version 3Docker version 20.10.7, build f0df350 4 5# ホスト 6$ nvidia-container-cli info 7NVRM version: 430.64 8CUDA version: 10.1 9GPU認識されているが省略 10 11# ホスト 12$ ls -lh /usr/lib/x86_64-linux-gnu/libcuda.so* 13ls: '/usr/lib/x86_64-linux-gnu/libcuda.so*' にアクセスできません: そのようなファイルやディレクトリはありません 14 15# コンテナ 16$ ls -lh /usr/lib/x86_64-linux-gnu/libcuda.so* 17lrwxrwxrwx 1 root root 18 Aug 5 05:21 /usr/lib/x86_64-linux-gnu/libcuda.so.1 -> libcuda.so.410.129 18-rw-r--r-- 1 root root 15M Aug 14 2019 /usr/lib/x86_64-linux-gnu/libcuda.so.410.129
回答1件
あなたの回答
tips
プレビュー