この実験では nvidia-docker を使用する必要があるため、Ubuntu 18.04 サーバーにインストールする必要があります。以下は私のインストール記録です: nvidia
-docker については、Nvidia にはインストール方法を説明する公式ドキュメントがあります:公式ドキュメントは
単にドキュメントに目を通しましたが、まだいくつかの小さな問題があるため、ここに記録します(すべてのコマンドにはsudo
権限が必要で、root
ユーザーの下で操作し、すべてのコマンドの前にプレフィックスはありませんsudo
)。
まずはdockerをインストールします
私が使用したサーバーには docker 自体があるため、この手順はスキップしました。
docker に基づいて nvidia-docker をインストールします。
最初のステップは docker を起動することです
curl https://get.docker.com | sh \
&& sudo systemctl --now enable docker
基本的にはこの手順で問題ありません。
2 番目のステップは、nvidia-docker のサポートをソースに追加することです。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& 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/$distribution/libnvidia-container.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
3 番目のステップはソースを更新することです
apt-get update
このステップでエラーが発生し始めました。
E: Conflicting values set for option Signed-By regarding source https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64/ /: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg !=
E: The list of sources could not be read.
この場合の対処方法については、インターネット上に NVIDIA の公式記事があります:アドレス
一般的には、コマンド実行結果のファイルを削除することで解決できますのでgrep -l "nvidia.github.io" /etc/apt/sources.list.d/* | grep -vE "/nvidia-container-toolkit.list\$"
、ここではこの方法で対処することに成功しました
。 NVIDIA コンテナ ツールキット、Docker デーモンの構成、Docker を実行して再起動する NVIDIA コンテナを特定します。
apt-get install -y nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker
最後のステップは、インストール結果をテストすることです。公式のテスト コマンドは次のとおりです。
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
ここで注目すべきはnvidia/cuda:11.6.2-base-ubuntu20.04
この部分で、このコマンドをやみくもにコピーするのではなく、自分に合ったcudaのバージョンとUbuntuのバージョンが必要になります。
通常、操作が成功すると、次の結果が表示されます (このコマンドを初めて実行する場合は、コマンドの一部がダウンロードされるまでしばらく時間がかかる場合があります)。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 34C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
公式ドキュメントはここで終わりです。
テストエラー
ただし、上記のコマンドを実行すると、依然としてエラーが発生します。エラーの具体的な内容は記録されていませんが、一般的な意味は、バージョンが一致していないということです。多くのチュートリアルを検索した結果、次のコマンドが機能することがわかりました。
docker run -it --rm --name test --gpus all ubuntu:latest
nvidia-smi
ただし、このコマンドを実行すると、コマンド ラインで docker インターフェイスに直接入力されるため、上記の結果を出力するには、次のように再度入力する必要があります:
1 行目はサーバーのターミナル コマンド、2 行目はコマンド ラインです。 dockerに入った後のコマンドです。
その他のエラー
しかし実際には、これらのコマンドを実行した後も、nvidia-docker
使用中にエラーが発生しました。エラーの結果は、nvidia-docker: command not found
具体的な理由が理解できなかったので、少し怠け者だったので、インストールnvidia-docker
チュートリアルを直接見つけました。インターネットからインストールして (これらのチュートリアルのほとんどは Nvidia のものとは異なります。nvidia-docker2 のインストールなど)、NVIDIA docker をインストールする手順から直接チュートリアルを。
- nvidia-dockerリポジトリを追加
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update
- インストール
apt-gei install nvidia-docker2
- ドッカーを再起動します
service docker restart
- テスト
nvidia-docker
結果:
ここまではテストに成功しました。
ユーザーを追加する
docker
もう 1 つ注意すべき点は、一般ユーザーとして docker を使用できないことを考慮する必要があることです。dockerを使用できるようにするには、管理者がこのユーザー グループにアカウントを追加する必要があります。
usermod -aG docker <用户名>
systemctl restart docker