はじめに
研究室内のPCサーバ内にJupyterHub環境を構築し,メンバーが空いているGPUマシンのリソースを自由に用いることができるようにすることで,作業効率が向上すると考え,今回はGPUマシンを贅沢に4台も使って,作ってみることにした.
しかし,せっかくGPUマシンを4台も用意したところで,複数人で作業する時に上手くリソースを配分できなければ,使われていない領域は無駄になってしまう.
そこで,GPUのリソースを最大限,有効活用するために,複数のGPUをクラスタ化する方法について,色々検証していこうと思う.
使用機材について
PCスペック
CPU:Core i9-11900K プロセッサー (3.50-5.30GHz/8コア/16スレッド/16MBキャッシュ/TDP 125W)
GPU:NVIDIA GeForce RTX 3070 8GB GDDR6
メモリ:DDR4-3200 32GB×4
ディスク:2TB SSD / NVMe M.2 [PCIe 4.0×4] + 4T HDD
水冷
計4台
LANスイッチングハブ
TP-Link TL-SX1008 (8ポート 10G)
Ubuntuインストール
1.UbuntuのライブUSBを作成
下記のサイトを参考にして,UbuntuのOSイメージが入ったUSBメモリを作成
MacでUbuntuのライブUSBを作ってインストールするまでの流れ
2.ライブUSBを用いて,PCにUbuntuをインストール
ssh接続
ubuntuを導入した4台のPCのうち3台をサーバ,1台をクライアントとして1台から残りの3台にアクセスできるようにする.
これは後にGPU-Clusterとしてジョブを割り当てる際に必要になる設定でもあり,これから先インストールするモジュールなどを4台同時にインストールできるようにして仕事効率を上げるためでもある.
手順を以下に示す
1. クライアントとサーバの設定
これは以下のサイトの手順通りに行なった.
公開鍵認証でのssh接続
この通りに作業を行うことで簡単にssh接続することができた.
2. サーバでのアクセス可能クライアントの制限
サーバとするPCでAllowUserの設定を行なった.これは,クライアントPC以外からのssh接続を無効にするためである.
AllowUserまたはGroupの設定方法
後に,研究室のPCからGPU-Clusterにアクセスできるよう,クライアントとしているPCにも同様の設定を行う.
イメージ
クライアントPCからサーバPCにssh接続してみた
無事1台のクライアントPCから他3台のサーバPCにssh接続することができました!
次にやること
次回は,以下のサイトを参考にしながら,それぞれのGPUにKubernetes,Dockerをインストールしていこうと思う.
Docker環境構築
Kubernetes環境構築