Dockerコンテナ内でサーバのGPUを使うまでの環境構築
背景:グラボ付きサーバ内でGPUが使える環境と同時にdockerコンテナ内でも使用できるようにしたい
環境
OS:Ubuntu 22.04
GPU:GeForce RTX 3080ti
エディタ:Visual Studio Code
GPUを使うpythonライブラリ:TensorFlow
環境構築に必要なもの
nvidia-driver
nvidia製グラフィックカードを最大限利用するために必要
cuda-toolkit
nvidia-container-toolkit *dockerコンテナでGPUを使うために必要!
手順
VScodeの編集画面からterminalを操作していく
①purgeしてきれいな環境に
過去に入れたことのあるドライバや古い環境を削除し、クリーンな状態にする
②Nvidia-driverのインストール
サーバのGPUに対応したnvidia-driverのバージョンを選択
nvidia公式サイトで対応ドライバのバージョンを確認できる
terminalで複数のドライバが確認できるが、数字の右に何もないものが公式ドライバ、それ以外はいろんな人が最適化のために作ったもの
③nvidia-smiで確認
nvidia-driverがインストールされているか、対応できるCUDAのバージョンを確認
右側の表示でCUDA Version: 12.4があるが、これはnvidia-driverが対応できるcuda-toolkitのバージョンの限界が表示されているため、インストールされたcuda-toolkitのバージョンではないことに注意
④cuda-toolkitのインストール
今回は、tensorflowとのバージョンの互換性があるので、nvidia-driverに対応可能であり、tensorflowに対応可能なcuda‐toolkitのバージョンを選択し、公式サイトでインストールコードを取得
入れ終わったら、sudo rebootでサーバを再起動
⑤nvidia-container-toolkitのインストール
dockerコンテナ内でコンテナ外のGPUを使うために必要
dockerのバージョンに対応したnvidia-container-toolkitをインストール
⑥GPUを使うライブラリに対応したDockerイメージをベースにコンテナ作成
今回は、nvidia公式のtensorflowイメージをもとにベースイメージを構築
dockerコンテナ内でコードにTensorFlowでGPUが使えるかを確認