【メモ】GPUコンテナが動かない?Ubuntuアップデート後のトラブル解消法

今後、失敗してもリカバリできるようにメモ🥲

Ubuntuでアプリセンターなどでアプリ関係のアップデートを行うとNVIDIACUDAのドライバー関連、Docker側のGPUドライバを含んだ形でアップデートされてしまい。コンテナ関連が動作しなくなるという現象が発生しました。そこで、なんとかリカバリできたので、その方法をメモしておこうと思います。

(注意):コンテナはそのまま使用できるので絶対に削除しないでください。

エラーの状況

ollamaというコンテナ(GPU使用)を起動しようとすると以下のようなエラーが発生しました。

エラーメッセージ

$ docker start ollama
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown
Error: failed to start containers: ollama

このエラーの内容:

nvidia-container-cliが初期化に失敗、GPUドライバがロードされていない。 nvidia-container-cliは、DockerがNVIDIAGPUを利用する際に使用するライブラリです。

突然発生したので全く意味がわからなかったのですが、前回の電源OFF時にUbuntuのソフトウエアアップデートを行ったことを思い出し、あ~😫これか~という顔になりました。アップデート時にGPU関連のドライバやミドルウエアも巻き込んでアップデートされてしまったみたいです。

チェック

ドライバの情報が取得できるか確認していきます。nvidia-smiを使用することで現在の状態を調べる事ができます。今回のチェックでは情報のアウトプットは取得できませんでした。

$ nvidia-smi

nvidia-smiが正常に動作すれば、GPUの詳細情報が表示されます。もし何も表示されない、またはエラーメッセージが出力される場合、NVIDIAドライバの再インストールが必要です。

復旧

復旧は以下の手順で行っていきました。

  1. ドライバの再インストール
  2. システム再起動後のドライバのチェック
  3. nvidia-container-toolkitの再インストール
  4. nvidia-container-toolkitインストール後のチェック

(1)ドライバの再インストール

まずはドライバの再インストールを行います。

# 現在のNVIDIAドライバを削除
$ sudo apt-get purge nvidia*

# aptの情報をアップデート
$ sudo apt-get update

# ドライバを自動検出してインストール
$ sudo ubuntu-drivers autoinstall

# OSを再起動
$ sudo reboot

(2)システム再起動後のドライバのチェック

再度、nvidia-smiを実行し、情報が表示されていればドライバの再インストールは成功しています。

$ nvidia-smi

(3)nvidia-container-toolkitの再インストール

アプリのアップデートでNVIDIAドライバとともにDockerのコンテナ側からNVIDIAの機能を使用するミドルウエアであるnvidia-container-toolkitも影響を受けた可能性が考えられます。

以下の手順で再インストールします。

# 現在のNVIDIA Container Toolkitをアンインストール
$ sudo apt-get purge nvidia-container-toolkit

# 改めてNVIDIA Container Toolkitをインストール
$ sudo apt-get install -y nvidia-container-toolkit

# dockerサービスを再起動
$ sudo systemctl restart docker

(4)nvidia-container-toolkitインストール後のチェック

nvidia-container-toolkitがうまく動作するか確認します。GPUを使用しているコンテナを動かせば確認ができます。

$ docker start ollama

成功すれば、コンテナ名が1行出力されます。もし、ここで以下のようなエラーが発生する場合には、nvidia-container-toolkitの再インストールが失敗しています。再度手順を確認してください。

$ docker start ollama
Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
Error: failed to start containers: ollama

おわりに

今回紹介した手順で、なんとかUbuntuのアプリアップデート後に発生したNVIDIAドライバDockerGPU関連エラーに対処することができました。噂には聞いていましたが、アップデートによるトラブルは予期できません。とはいえ、無事にリカバリできてホッとしました🙂同様の問題に直面した方が、この記事の内容で役立てば幸いです。