「Folding@home」の新型コロナ解析分散処理プロジェクトにAzure仮想マシンで参加する
はじめに
少しでも新型コロナのウィルス解析に貢献できたらと考え、余剰CPUパワーを活用して個人でも参加できる「Folding@home」にAzure仮想マシンから参加しました。
Azure仮想マシンの準備
今回は2023年8月31日に廃止が決まっているGPUインスタンスである「NV」シリーズから、6Core 56GB Memoryの「Standard_NV6_Promo」を選択します。
2023 年 8 月 31 日までに NV および NV_Promo シリーズの仮想マシンを移行してください
こちらは、Gen1イメージのみの対応で、Premium_SSDも使えない古めのものですが、それでもNVIDIAのGPUが乗っているので少しは貢献できるでしょうか。
OSは「Ubuntu 20.04 LTS」を選択して、とりあえず適当なリソースグループに作成しました。
仮想マシンデプロイ後、sshログインして取り合えずaptパッケージの最新化。
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
GPUドライバのインストールは以下を参考に行います。
NV または NVv3 シリーズの VM に GRID ドライバーをインストールする
中の手順を見ると、Ubuntu Desktopなど今回は不要なパッケージのインストールもありますが、特殊な手順は行わずドキュメント通りに設定しました。
yotan@folding-vm01:~$ lspci
(snip)
0001:00:00.0 VGA compatible controller: NVIDIA Corporation GM204GL [Tesla M60] (rev a1)
sudo apt install build-essential ubuntu-desktop -y
sudo apt install linux-azure -y
sudo sh -c 'cat <<EOF >/etc/modprobe.d/nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
EOF'
sudo reboot
sudo systemctl stop lightdm.service
wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272
chmod +x NVIDIA-Linux-x86_64-grid.run
sudo ./NVIDIA-Linux-x86_64-grid.run
こちらは「Continue installation」を選択。
32bitドライバも入れるかと聞かれたのでとりあえず「Yes」で。
ドキュメントでもこちらは「Yes」にするように指示があったので、デフォルトのNoから変更。
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
sudo sh -c 'cat <<EOF >>/etc/nvidia/gridd.conf
IgnoreSP=FALSE
EnableUI=FALSE
EOF'
sudo sed -i 's/^FeatureType=0/#FeatureType=0/' /etc/nvidia/gridd.conf
sudo reboot
再ログイン後、「nvidia-smi」にてGPUステータスの確認をします。
(今回は使いませんが)Xorg、gnome-shellあたりがGPUを使用していることが確認できますね。
Foldig@homeソフトウェアのダウンロードとインストール
PCブラウザから最新パッケージのURLを確認します。
こちらのDebianパッケージですね。
今回はAzure仮想マシン上のGUIは使用しない予定なのと、実は構成変更ツールである「fahcontrol」がPython 2ベースで設計されているらしく、Ubuntu 20.04 LTSとの相性は良くないみたいです。
なので基本的な設定はコンソールから、解析状況の確認はブラウザにて行います。
以下は記事執筆時点でのリンクURLです。
wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/v7.6/fahclient_7.6.21_amd64.deb
ではclientのインストール。
sudo dpkg --install fahclient_7.6.21_amd64.deb
「User Name」はこのままデフォルトの「Anonymous」でいきます。
特にどこかのチームに参加もしませんので、デフォルトの「0」のままにします。
「Passkey」はAnonymousの場合は空で良いです(スクショでは何か設定していますが無視で)。
システムリソースの使用量については、今回は解析専用とするため「full」を選択しました。
自動起動も有効化します。
一応この時点で「FAHClient」が起動します。
systemctl status FAHClient
設定ファイルの変更
初期状態ではGPUの利用がOFFになっているので、変更します。
また、先にお伝えした通り、ブラウザ経由でステータス画面にアクセスできるようにも設定変更をします。
適当なエディタで「/etc/fahclient/config.xml」を編集します。
sudo vi /etc/fahclient/config.xml
とりあえず最終的な設定を以下に示します。
「<allow></allow>」「<web-allow></web-allow>」内のIPアドレスは自宅のWAN側の値を設定しました。ここは適宜環境毎に変更します。
<config>
<!-- Client Control -->
<fold-anon v='true'/>
<!-- Folding Slot Configuration -->
<cause v='COVID_19'/>
<!-- HTTP Server -->
<allow v='XXX.XXX.XXX.XXX 127.0.0.1'/>
<!-- Slot Control -->
<power v='full'/>
<!-- Web Server -->
<web-allow v='XXX.XXX.XXX.XXX 127.0.0.1'/>
<!-- Folding Slots -->
<slot id='0' type='CPU'/>
<slot id='1' type='GPU'>
<pci-bus v='0'/>
<pci-slot v='0'/>
</slot>
<slot id='3' type='GPU'>
<pci-bus v='0'/>
<pci-slot v='0'/>
</slot>
</config>
ここで、OSを再起動しておきます(sudo systemctl stop FAHClientがうまく動作しないため)。
sudo reboot
Azure側のNSG変更
自宅環境からAzure仮想マシンのTCP/7396を許可します。
ブラウザからの接続
クライアントPCから「http://<Azure仮想マシンのIPアドレス>:7396」に接続します。
Web画面では解析するプロダクト(今回はCOVID-19)の変更以外では解析の停止・開始程度しか行えませんが、今回はこのレベルで全然OKです。
「GPU:0:0」がエラーになっていたり、「GPU:-1:-1」が全く使われていなかったりと、まだAzure仮想マシンの構成に合わせて設定変更を行う必要がありそうですが、今後判明したら追記・修正します。
アクティブになっている「CPU」「GPU:0:0 GM204GL」の使用率も100%近くまで上がってこないので、こちらもチューニングが可能であれば今後追記・修正します。
参考までに今回はCPUとGPUそれぞれで以下のProjectが割り当てられました。
Project | 推定時間 |
---|---|
CPU Project | 3時間 |
GPU Project | 12時間 |
やはりGPUパワーをフルで使い切っていない感はありますが、有識者の方がいらっしゃいましたらコメント頂けると助かります。
一応Azureポータルから仮想マシンのCPUメトリックを見ると、80%程度は使われているようでした。
後日追記
初稿のあと、Anonymousから自分のユーザIDとパスワードを取得して登録後、いくつか割り当てられたProjectをこなしました。
割り当てられたプロジェクトの内容・進行状況によってCPU・GPUの使用率は変動するようで、特にチューニングは不要なのかと考えます。
以下は開始からおおよそ20時間経過後の画面ですが、現在はCPU・GPU共に比較的頑張っているようです。
CPU SlotはFalseにしてGPUだけに寄せた方がいいのかなとは考えますが、Azure NVシリーズに乗っているNVIDIA Tesla T4の性能がどの程度なのか私には知見が無いため今の構成で暫く運用していきます。
おわりに
Azure仮想マシンのNV6_Promoサイズは、8万円/月程度のコストがかかります。
普通に考えて私のようなパンピーではお小遣いから捻出するのは難しいため、起動時間には注意が必要です(今回はMSから無償提供されているクレジットを使用しています)。
長時間解析すればするほど、医療の世界に貢献できる気持ちはありますが、自身が負担できる範囲で参加するのが良いと考えます。
先にも書きましたが、CPUとGPUを最大限活用するための設定Tipsなどがありましたらご一報くださいね。
Discussion