[解決済み】DockerコンテナからGPUを使用する?
2022-04-16 05:52:14
質問
dockerコンテナ内からGPUを使用する方法を探しています。
コンテナは任意のコードを実行するので、特権モードは使いたくありません。
何かヒントがあれば教えてください。
以前の調査から、私は以下のことを理解しました。
run -v
および/またはLXC
cgroup
ということだったのですが、どうすればいいのかよくわかりません。
どのように解決するのですか?
すでにある回答のほとんどは現在では時代遅れになっているため、最新の回答を書いています。
より前のバージョン
Docker 19.03
は、以前は
nvidia-docker2
であり
--runtime=nvidia
フラグを使用します。
以来
Docker 19.03
をインストールする必要があります。
nvidia-container-toolkit
パッケージを使用し、その上で
--gpus all
フラグを使用します。
では、基本的なことを説明します。
パッケージのインストール
をインストールします。
nvidia-container-toolkit
パッケージは
Githubにある公式ドキュメント
.
RedhatベースのOSの場合、以下のコマンド一式を実行します。
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
$ sudo yum install -y nvidia-container-toolkit
$ sudo systemctl restart docker
DebianベースのOSの場合、以下のコマンド一式を実行します。
# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
GPUをサポートしたDockerの実行
docker run --name my_all_gpu_container --gpus all -t nvidia/cuda
なお、フラグ
--gpus all
は、利用可能なすべてのgpusをドッカーコンテナに割り当てるために使用されます。
特定のGPUをドッカーコンテナに割り当てる場合(マシンに複数のGPUがある場合)
docker run --name my_first_gpu_container --gpus device=0 nvidia/cuda
または
docker run --name my_first_gpu_container --gpus '"device=0"' nvidia/cuda
関連
-
[解決済み】エラー "入力デバイスはTTYではありません"
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] 既に起動しているDockerコンテナに新しいTTYで入る方法
-
CUDA (V) deviceQueryを使ったGPUのプロパティ
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】Dockerコンテナからホストポートにアクセスする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
CUDAのcudaMalloc()のパラメータを理解する方法
-
MatlabからCUDAへの呼び出しの概要(Windows, Ubuntu)
-
CUDAアトミック操作
-
CUDA プログラミングのエラー処理
-
cudaMemcpyとcudaMemcpyAsyncの違い
-
[解決済み] CUDAバージョンの取得方法を教えてください。
-
CUDA (V) deviceQueryを使ったGPUのプロパティ
-
[解決済み】DockerコンテナからGPUを使用する?
-
[解決済み] CUDAのグリッド寸法、ブロック寸法、スレッド構成を理解する(簡単な説明)【終了しました。
-
[解決済み] グローバル機能とデバイス機能の違い