はじめに
少し前にメインで使っているゲーミングPCを新調し、それに伴って今まで使っていたゲーミングPCがお役御免になりました。
部屋の隅で置物と化していたのですが、このままでは勿体無い!ということでUbuntu Serverを入れて、気軽に使えるGPUサーバーとして転生させることにしたのです。
この記事では、PCにUbuntu Serverを入れてSSH接続した後、まっさらな状態から行った環境構築の手順をメモとして残します。
Ubuntu Serverのインストールと、SSH接続に関しては、個人ブログの方に書いています。
PCスペック
本筋とは関係ないですが、一応PCスペックを載せておきます。
かなり古いですが、今でも問題なく使用できます。
| パーツ | スペック |
|---|---|
| CPU | Intel Core i7-12700KF |
| メモリ | 32GB |
| GPU | NVIDIA GeForce RTX 3060 12GB |
| SSD | 500GB(OS用) |
| HDD | 4TB(データセット保存用としてマウント予定) |
導入した環境
Ubuntu Server 24.04がPCに入れたOSです。
Dockerを使用する予定なので、Cuda Toolkit は入れずに Container Toolkitをインストールします。
| ツール | バージョン |
|---|---|
| Ubuntu Server | 24.04 LTS |
| Docker | 29.4.0 |
| NVIDIAドライバ | 580系 |
| NVIDIA Container Toolkit | 1.19.0 |
| Git | 2.43.0 |
セットアップ手順
1. NVIDIAドライバのインストール
まず推奨ドライバを確認します。
ubuntu-drivers devices
recommendedと表示されているドライバをインストールします。
私の場合は driver : nvidia-driver-580-open - distro non-free recommended と表示されました。
sudo apt install -y nvidia-driver-580-open
インストール後に再起動します。
sudo reboot
再起動後にドライバが正常にインストールされているか確認します。
atsushi11o7@mlserver:~$ nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.126.09 Driver Version: 580.126.09 CUDA Version: 13.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 NVIDIA GeForce RTX 3060 Off | 00000000:01:00.0 Off | N/A |
| 0% 34C P8 11W / 170W | 1MiB / 12288MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
2. Dockerのインストール
公式のインストールスクリプトを使って一発でインストールします。
curl -fsSL https://get.docker.com | sudo sh
一般ユーザーでもDockerを使えるようにします。
sudo usermod -aG docker $USER
一度ログアウトして再接続後、動作確認します。
atsushi11o7@mlserver:~$ docker run hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
3. NVIDIA Container Toolkitのインストール
DockerコンテナからGPUを使えるようにするためにインストールします。
インストールはこちらの手順に従って行います。
まずは必要となるツールをインストールします
すでに Ubuntu に入っているものもありますが、念の為。
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
ca-certificates \
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-get update
# 記事作成時点でのlatestは1.19.0だったので、それをインストール
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.19.0-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}
DockerにGPUを認識させます。
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
4. Gitのインストール
DevcontainerやDockerfileをGitリポジトリから取得するために、Gitをインストールします。
sudo apt install -y git
5. 動作確認
DockerコンテナからGPUが認識されているか確認します。
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
(私の場合は)RTX 3060が表示されれば成功です。
おわりに
あとはVSCodeのRemote SSH機能から作成したサーバーに接続します。
- 拡張機能(Cmd + Shift + X)で Remote - SSH を検索してインストール
- 左下の緑の
><アイコンをクリック - Connect to Host を選択
-
ユーザー名@IPアドレスを入力してEnter - パスワードを入力
接続後はDev Containers機能を使用して好きに環境を作る感じですかね。
Dev Containersを使った環境構築についての過去記事を載せておきます。
余っているPCがある方はぜひ試してみてください!