🏥

「Folding@home」の新型コロナ解析分散処理プロジェクトにAzure仮想マシンで参加する

2022/05/12に公開

はじめに

少しでも新型コロナのウィルス解析に貢献できたらと考え、余剰CPUパワーを活用して個人でも参加できる「Folding@home」にAzure仮想マシンから参加しました。

FOLDING@HOME

Azure仮想マシンの準備

今回は2023年8月31日に廃止が決まっているGPUインスタンスである「NV」シリーズから、6Core 56GB Memoryの「Standard_NV6_Promo」を選択します。

NV シリーズ

2023 年 8 月 31 日までに NV および NV_Promo シリーズの仮想マシンを移行してください

こちらは、Gen1イメージのみの対応で、Premium_SSDも使えない古めのものですが、それでもNVIDIAのGPUが乗っているので少しは貢献できるでしょうか。

OSは「Ubuntu 20.04 LTS」を選択して、とりあえず適当なリソースグループに作成しました。

img

仮想マシンデプロイ後、sshログインして取り合えずaptパッケージの最新化。

sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y

GPUドライバのインストールは以下を参考に行います。

NV または NVv3 シリーズの VM に GRID ドライバーをインストールする

中の手順を見ると、Ubuntu Desktopなど今回は不要なパッケージのインストールもありますが、特殊な手順は行わずドキュメント通りに設定しました。

GPUが認識しているかを確認
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
Nouveauカーネルドライバの無効化
sudo sh -c 'cat <<EOF >/etc/modprobe.d/nouveau.conf
blacklist nouveau
blacklist lbm-nouveau
EOF'
再起動
sudo reboot
Xサーバの終了とNVIDIAドライバのインストール
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」を選択。

img

32bitドライバも入れるかと聞かれたのでとりあえず「Yes」で。

img

ドキュメントでもこちらは「Yes」にするように指示があったので、デフォルトのNoから変更。

img

gridd.confの配置
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を使用していることが確認できますね。

img

Foldig@homeソフトウェアのダウンロードとインストール

PCブラウザから最新パッケージのURLを確認します。

ALTERNATIVE DOWNLOADS

こちらのDebianパッケージですね。

img

今回は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」でいきます。

img

特にどこかのチームに参加もしませんので、デフォルトの「0」のままにします。

img

「Passkey」はAnonymousの場合は空で良いです(スクショでは何か設定していますが無視で)。

img

システムリソースの使用量については、今回は解析専用とするため「full」を選択しました。

img

自動起動も有効化します。

img

一応この時点で「FAHClient」が起動します。

systemctl status FAHClient

img

設定ファイルの変更

初期状態ではGPUの利用がOFFになっているので、変更します。

また、先にお伝えした通り、ブラウザ経由でステータス画面にアクセスできるようにも設定変更をします。

適当なエディタで「/etc/fahclient/config.xml」を編集します。

sudo vi /etc/fahclient/config.xml

とりあえず最終的な設定を以下に示します。

「<allow></allow>」「<web-allow></web-allow>」内のIPアドレスは自宅のWAN側の値を設定しました。ここは適宜環境毎に変更します。

/etc/fahclient/config.xml
<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を許可します。

img

ブラウザからの接続

クライアントPCから「http://<Azure仮想マシンのIPアドレス>:7396」に接続します。

img

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%程度は使われているようでした。

img

後日追記

初稿のあと、Anonymousから自分のユーザIDとパスワードを取得して登録後、いくつか割り当てられたProjectをこなしました。

割り当てられたプロジェクトの内容・進行状況によってCPU・GPUの使用率は変動するようで、特にチューニングは不要なのかと考えます。

以下は開始からおおよそ20時間経過後の画面ですが、現在はCPU・GPU共に比較的頑張っているようです。

CPU SlotはFalseにしてGPUだけに寄せた方がいいのかなとは考えますが、Azure NVシリーズに乗っているNVIDIA Tesla T4の性能がどの程度なのか私には知見が無いため今の構成で暫く運用していきます。

img

おわりに

Azure仮想マシンのNV6_Promoサイズは、8万円/月程度のコストがかかります。

普通に考えて私のようなパンピーではお小遣いから捻出するのは難しいため、起動時間には注意が必要です(今回はMSから無償提供されているクレジットを使用しています)。

長時間解析すればするほど、医療の世界に貢献できる気持ちはありますが、自身が負担できる範囲で参加するのが良いと考えます。

先にも書きましたが、CPUとGPUを最大限活用するための設定Tipsなどがありましたらご一報くださいね。

Discussion