概要

docker 上で cuda を動かしたいと思うときがあったので、その方法を調べたところ nvidia container toolkit を使えばいいとわかったので、その手順をまとめました。nvidia-docker や nvidia-docker2 の進化系が nvidia container toolkit です。詳しくはこちらのリンクにまとめられています。

https://github.com/NVIDIA/nvidia-docker より

目的

nvidia container tookit を使って、docker のコンテナ上で cuda(10.1) を動かします。また、opencv と pytorch もコンテナ上に入れます。

環境

  • Ubuntu 18.04
  • docker 19.03
  • nvidia driver 450.36

手順

nvidia container toolkit をインストールする

公式通りに進めます。まずは、nvidia container toolkit のインストールです。

cudaの動作確認

下のコマンドを打てば、自分の入れたい cuda が入っている仮想環境を動かすことができます。今回は、cuda10.1 & ubutu18.04 のイメージをもとに作成しました。こちらに cuda のイメージの一覧があるので、自分の作りたい環境に合わせて、コマンドの nvidia/cuda:10.1-base-ubuntu18.04 の箇所を入れ替えてください。また、gpus のところで使いたい gpus の個数を選べます。今回は gpu を全て使う all としていますが、例えば gpu を4個中2個使いたいときは –gpus 2 とすれば大丈夫です。

pytorch のイメージを入手する

コンテナを作成、起動する

ローカルのディレクトリを docker のディレクトリにマウントします。

-it でそのまま bash を起動します。–gpus で使う gpu の数を決められます。-v でホスト pc のディレクトリを docker のディレクトリにマウントできます。–shm-size はコンテナに割り当てるメモリのサイズです。–name はコンテナ名です。自由に決められます。pytorch/pytorch は pull してきた image の名前です。bash が起動して ls コマンドを打つと、ローカルのディレクトリがマウントされていることが確認できると思います。

opencvをインストール

ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

import cv2 したときに上のようなエラーが出る場合は、下のコマンドを打てば大丈夫だと思います。

まとめ

nvidia container toolkit を使えば簡単に、ローカルを汚さずに環境構築できました。

本記事は qiita にも投稿されております。
元記事:https://qiita.com/Hiroaki-K4/items/c1be8adba18b9f0b4cef