Closed1
nvidia-dockerが突然GPUを認識しなくなる問題
以下の記事で対処法について知った。
なお、この問題についてはnvidia-dockerがISSUEの原因と対処法について文書を公開している。
原因は、簡単にいうと、cgroupの管理がsystemctlとdockerとで競合しているということらしい。cgroupの管理をsystemctl以外にすることがワークアラウンドになる。
nvidia-dockerの次のpactch releaseで解決する予定とのこと。
環境
$ docker --version
Docker version 24.0.4, build 3713ee1
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
やったこと
自分の環境が本事象に該当するかどうかの確認
$ docker info | grep Cgroup
Cgroup Driver: systemd
Cgroup Version: 2
cgroup driverにsystemdを利用している -> 該当する。
事象の再現方法
container起動中にsudo systemctl daemon-reload
を実行後、コンテナ内からGPUが利用できなくなること。
import torch
torch.cuda.is_available()
# False
ワークアラウンド
Cgroupの管理をsystemdでなくcgroupfsにやらせる。 "exec-opts": ["native.cgroupdriver=cgroupfs"]
の一行を /etc/docker/daemon.json
のトップレベルに追加(※)し、dockerを再起動する。
$ sudo systemctl restart docker.service
※参考:
設定が反映されていることの確認
cgroupの設定
$ docker info | grep Cgroup
Cgroup Driver: cgroupfs
Cgroup Version: 2
Cgroup Driverがcgroupfsに変わっていること。
事象が再現しなくなること
sudo systemctl daemon-reload
import torch
torch.cuda.is_available()
# True
このスクラップは6ヶ月前にクローズされました