PodmanでNVIDIA Container Toolkitを動かす
CUDAが正常に動いているUbuntu 24.04.2 LTSで以下の手順でセットアップした.
必要なパッケージのインストール
NVIDIA公式サイトの手順通りに作業を行う.
$ sudo apt update $ sudo apt install --no-install-recommends curl gnupg2
リポジトリの追加
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
パッケージリスト更新
$ sudo apt update
パッケージのインストール
$ export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.1-1
$ sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
Container Device Interface (CDI)の設定
$ nvidia-ctk cdi list INFO[0000] Found 0 CDI devices
nvidia-cdi-refreshサービスが自動的に/var/run/cdi/nvidia.yamlを生成してくれるようなので,PCを再起動.sudo systemctl restart nvidia-cdi-refresh.serviceでサービスを再起動して自動生成(参考).
でもCDIデバイスが見つからない状態だったため,NVIDIA公式ページにかかれている通り,直接コマンドを実行して生成.
$ sudo nvidia-ctk cdi generate --output=/var/run/cdi/nvidia.yaml
すると接続しているGPU2台分見つかった.
$ nvidia-ctk cdi list INFO[0000] Found 5 CDI devices nvidia.com/gpu=0 nvidia.com/gpu=1 nvidia.com/gpu=GPU-258fe8fe-2cd4-ad3d-221a-948ba4d376e3 nvidia.com/gpu=GPU-e6101b02-b410-8a5a-84e9-8cfca6ec344d nvidia.com/gpu=all
Podmanコンテナの実行テスト
$ podman run --rm --device nvidia.com/gpu=all docker.io/nvidia/cuda:12.9.1-cudnn-runtime-ubuntu24.04 nvidia-smi
Ubuntu24.04.2 LTSへのPodmanのインストール
aptでインストール
$ sudo apt update $ sudo apt install podman podman-compose
trueになっていればrootless
$ podman info | grep rootless
rootless: true
Warningの削除
podman psとかを実行すると
WARN[0000] Network file system detected as backing store. Enforcing overlay option `force_mask="700"`. Add it to storage.conf to silence this warning
のWarningが出ていたので,~/.config/containers/storage.confを作成して,下記を追記し,Warningが出ないように設定を変更した.
[storage] driver = "overlay" [storage.options] mount_program = "/usr/bin/fuse-overlayfs" [storage.options.overlay] force_mask="0700"
これ以下は一般的には不要な手順
ホームディレクトリがNFS上にある場合
NFSのアクセス制限の設定によっては,下のようなエラーが出てpodman runが途中で止まる.
Error: copying system image from manifest list: writing blob: adding layer with blob "sha256:32f112e3802cadcab3543160f4d2aa607b3cc1c62140d57b4f5441384f40e927": processing tar file(lsetxattr /boot: operation not supported): exit status 1
これはPodmanのイメージがホームディレクトリ下に保存されることが原因なため,NFS共有されていないストレージに保存場所を変更すると解決できる.
~/.config/containers/storage.confを編集して,graphrootをローカルHDD等に変更する(<USER>はユーザ名等に置き換える).
[storage]
+ graphroot = "/mnt/hdd/<USER>/podman"
コンテナ内でapt-getを実行できない場合
apt-getを実行すると,下記のようなエラーが表示され実行できない場合の対策
E: setgroups 65534 failed - setgroups (1: Operation not permitted) E: setegid 65534 failed - setegid (22: Invalid argument) E: seteuid 42 failed - seteuid (22: Invalid argument) E: setgroups 0 failed - setgroups (1: Operation not permitted) ...
subuid,subgidを設定する必要がある.UID=1234の場合は,
$ sudo usermod --add-subuids 123400000-123465535 --add-subgids 123400000-123465535 ユーザ名 $ podman system migrate
とするとうまく動くようになる.
CentOS Stream9でdockerを動かす
Dockerのインストール
Podmanとかを削除
$ sudo dnf remove podman runc
ここからは公式の情報をdnfに置き換えて実行していく。
リポジトリを追加
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
インストール
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin $ docker --version Docker version 20.10.18, build b40c2f6
サービスの起動
$ sudo systemctl enable docker $ sudo systemctl start docker
dockerグループにユーザを追加する
$ sudo gpasswd -a ユーザ名 docker
ログインし直すと
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE
docker-composeのインストール
最新バージョンをdocker/compose - GitHubで確認してcurlでコピーする
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
パーミッションを設定
$ sudo chmod 0755 /usr/local/bin/docker-compose
確認
$ docker-compose --version Docker Compose version v2.10.2
UNKNOWN attributeDescription "AUTOMOUNTINFORMATION" insertedの原因
OpenLDAPサーバーにうまくつながらず、調べてみると
$ sudo slapcat > /dev/null 6226d131 UNKNOWN attributeDescription "AUTOMOUNTINFORMATION" inserted.
と警告文が出ていた。
9.4.4. LDAP を使用した自動マウント機能マップの格納 Red Hat Enterprise Linux 6 | Red Hat Customer Portal を見る限りおそらくAutoFS(使っていない)の設定が原因っぽい。
とりあえずAutoFS関連のパッケージを削除するとつながるようになった。
$ sudo apt purge autofs autofs-ldap
警告文の仕方はわからなかった...
RTX3090+Ubuntu20.04でPyTorchを動かす
RTX3090 + Ubuntu20.04でPyTorch-1.7.0が動いたので、メモ.
ドライバのインストール
$ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt update $ sudo apt install nvidia-driver-455
インストール後に再起動
$ sudo reboot
CUDA-11.1のインストール
RTX3000シリーズはCUDA11にしか対応してない?
CUDA Toolkit 11.1 Update 1 Downloads | NVIDIA Developerの通りにコマンドを実行する
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin $ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub $ sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" $ sudo apt-get update $ sudo apt-get -y install cuda
cuDNN-8.0.5のインストール
NVIDIA cuDNN | NVIDIA DeveloperのDownload cuDNNからダウンロードしてきたlibcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.debをインストールする。
$ sudo apt install -y ./libcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.deb
PyTorchのインストール
を選んで出てきたコマンドを実行する
$ pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
これでRTX3090+Ubuntu20.04+PyTorch1.7.0が動いた。
FreeBSD 12.1の初期設定
suを使えるようにする
suを使いたいユーザをwheelグループに追加する
$ vi /etc/group
- wheel:*:0:root + wheel:*:0:root,kento
パッケージのアップデート、必須パッケージのインストール
$ su # pkg update # pkg install sudo bash vim
sudoの設定
$ su # visudo
- # %wheel ALL=(ALL) ALL + %wheel ALL=(ALL) ALL
デフォルトシェルをbashに変更
$ chsh -s /usr/local/bin/bash
IP固定
DHCPで下のように設定されていたものを固定割当に変更する
$ ifconfig
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,LINKSTATE>
ether 08:60:6e:6e:d5:27
inet 192.168.1.6 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (1000baseT <full-duplex,master>)
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
rcファイルを編集する
$ sudo vim /etc/rc.conf
- ifconfig_re0="DHCP" + ifconfig_re0="inet 192.168.1.6 netmask 255.255.255.0 broadcast 192.168.1.255 + defaultrouter="192.168.11.1"
DNSはインストール時のまま変更する必要がなかった
$ cat /etc/resolv.conf # Generated by resolvconf nameserver 192.168.1.1
Arch LinuxでKVMを動かす
環境
- CPU: Ryzen 3600
- Kernel: 5.8.13-arch1-1
$ LC_ALL=C lscpu | grep Virtualization Virtualization: AMD-V
の通り、AMD-Vで仮想化がサポートされている
インストール
$ sudo pacman -S qemu libvirt virt-manager virt-viewer
自動起動
$ sudo systemctl start libvirtd $ sudo systemctl enable libvirtd
IOMMUの有効化
bootオプションにamd_iommu=oを追加する
$ sudo vim /boot/loader/entries/arch.conf
- options root=PARTUUID=296bb6cc-2a3f-45d4-a3ad-9e8041d75903 rw + options root=PARTUUID=296bb6cc-2a3f-45d4-a3ad-9e8041d75903 rw amd_iommu=on
編集後に再起動する
$ sudo reboot
dmesgを確認し下のような出力が出てこればIOMMUが有効化されている
$ dmesg | grep IOMMU [ 0.395281] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de> [ 0.395282] AMD-Vi: AMD IOMMUv2 functionality not available on this system
virt-managerの起動
$ sudo virt-manager
とするとroot権限でVirtManagerが起動できるはず。