ちょっと話題の記事

Folding@HomeでCovid-19の研究を支援する(誰でもできる)

2020.04.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、ドイツのモナです〜

新型コロナウイルス(Covid-19)が全世界に広がってしまい、今多くの人の生活をひっくり返しています。ウイルスの伝播を抑えるために様々な対策が既に実施されていますが、長期的にCovid-19を克服するには研究が必要です。

研究と言えばラボの風景などが浮かぶと思いますが、そればかりではありません。例えば、ウイルスタンパク質の立体構成の折りたたまれ方(フォールディング)の研究ではコンピューターシミュレーションを使用しますが、それに大規模なコンピューティングパワーが必要です。そこで、分散システムとしてパソコンを含むたくさんのコンピューターを利用するプロジェクトがいくつかできました。その中の一つを今回紹介したいと思います。

Folding@Homeの概要

Folding@Homeの名前通り、おうちでもフォールディングの研究に協力できます。有名なスタンフォード大学で生まれたプロジェクトなので期待and信頼できますね。

Windows、 MacOS、 Linux対応なので本当に誰でも参加できてなかなかいいプロジェクトだと思います。しかもバックグラウンドで動いてるので、インストールが終わったらもう気にしなくて大丈夫です。

なお、数年前から存在しているプロジェクトなので、コロナ関係の研究だけではなく、癌やアルツハイマー病などの研究にもFolding@Homeで貢献できます。どのプロジェクトに支援するかは選べませんが、デフォルトの"Any disease"設定にしておけばプライオリティの高い順でプロジェクトが割り当てられて、Covid-19に関するプロジェクトが今最も高いプライオリティになってるので、コロナのプロジェクトに参加する確率が高いです。

デフォルトでは匿名で参加しますが、希望であればユーザ名を決めて参加することもできます。そうすると、合計でどの程度でコントリビュートできたか見ることができます(点数が付けられます)。また、チームとして参加することもできます。格チームにIDが振られるので、そのIDを指定するだけで大丈夫です。チームリストはこちらです。基本的にどのチームを選んでもOKです。なお、developers.ioチームのIDは257916でございます( ^ω^ )

(全メンバーを見るためにスクロールできます)

インストールと設定

Amazon EC2とパソコンの手順を両方紹介します。

EC2インスタンス

コンピューティングパワーを借りるなら、スポットインスタンスがぴったりですね。AMIはAmazon Linux 2を使って試したので以下はその前提となります。

① SSHでログイン

② Folding@Homeをインストール

$ wget https://download.foldingathome.org/releases/public/release/fahclient/centos-5.3-64bit/v7.4/fahclient-7.4.4-1.x86_64.rpm
$ wget https://download.foldingathome.org/releases/public/release/fahcontrol/centos-5.3-64bit/v7.4/fahcontrol-7.4.4-1.noarch.rpm
$ sudo rpm -i --nodeps fahclient-7.4.4-1.x86_64.rpm
$ sudo rpm -i --nodeps fahcontrol-7.4.4-1.noarch.rpm

これだけで動くはずです!でも念のため確認しましょう。

$ top
top - 11:19:19 up 1 day, 19:46,  1 user,  load average: 1,00, 1,00, 1,00
Tasks: 145 total,   2 running,  78 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,0 sy, 12,5 ni, 87,4 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem : 15391720 total, 14490892 free,   212940 used,   687888 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 14904740 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                                                    
16831 fahclie+  39  19  230364  61400  13028 R 100,0  0,4 234:41.75 FahCore_a7                                                                                                                                                                                                 
16827 fahclie+  39  19   96692   4472   4212 S   0,3  0,0   0:03.11 FAHCoreWrapper                                                                                                                                                                                             
    1 root      20   0  191096   5460   3980 S   0,0  0,0   0:03.29 systemd                                                                                                                                                                                                    
    2 root      20   0       0      0      0 S   0,0  0,0   0:00.04 kthreadd                                                                                                                                                                                                   
    4 root       0 -20       0      0      0 I   0,0  0,0   0:00.00 kworker/0:0H                                                                                                                                                                                               
<省略>

そのままほっといてもいいですが、チームに参加したいとか、そういった場合は少し設定が必要です。

③ /etc/fahclient/config.xml のコンフィグファイルを更新

以下は基本設定だけになってます:

  • GPU使用(true, false)
  • パワー(light, medium, full)
  • WebControlアクセス許可(特定IPまたはCIDR形式のサブネット)
  • ユーザ名
  • チームID
  • スロット設定(数、CPUかGPU)
<config>
    <!-- Folding Slot Configuration -->
    <gpu v='false'/>

    <!-- Slot Control -->
    <power v='FULL'/>

    <!-- HTTP Server -->
    <allow v='x.x.x.x'/>
    <web-allow v='127.0.0.1 x.x.x.x'/>

    <!-- User Information -->
    <team v='xxx'/>
    <user v='yyy'/>

    <!-- Folding Slots -->
    <slot id='0' type='CPU'/>
</config>

設定の更新後にサービスを再起動します

$ sudo /etc/init.d/FAHClient stop
Stopping fahclient ... OK
$ sudo /etc/init.d/FAHClient start
Starting fahclient ... OK

④ 7396ポートを開ける(WebControl画面にアクセスしたい場合)

セキュリティグループに7396ポート(TCP)を開ける必要があります。自宅のファイアーウォールももしかすると更新する必要があるかもしれません。

⑤ WebControlを開く

http://<EC2インスタンスのIPアドレス>:7396/ からWebControl画面が見れます!

Chromeを使う場合はうまく見れない恐れがあるので、他のブラウザをお使いください。試したFirefoxでは問題ありませんでした。

上記のコンフィグファイルでも色んな設定ができますが、GUIの方が楽ですよね。WebControl画面から以下の設定ができます。

  • パワー(light, medium, full)
  • コンピューティングパワーを貸す時(作業中、アイドルな時)
  • ユーザ名
  • チームID
  • サポートしたい研究プロジェクト(Any、アルツハイマー病、癌、ハンチントン病、パーキンソン病)

加えてWebControl画面では、一番気になる、今どの研究プロジェクトに参加しているかがわかります!

"CORONAVIRUS PROJECT"が表示されたら、今支援してるプロジェクトがコロナ関係のプロジェクトであるということです。違うのが表示されたら、コロナ関係ではないですが、それは単純に全てのコロナ系のプロジェクトが今別のサポータに分配されてるからです。いいことです!なので、デフォルトの"Any disease"になってれば、コロナの研究を支えることができます。

マイパソコン

① ダウンロード

② システム毎のインストール手順に従ってインストールする

上記と同じで、これだけで動くはずです。

③ 設定

WebControlは http://localhost:7396 からアクセスできて、設定は上記の⑤と同じです。

スロットやGPUの設定は、FAHControlというプログラムから更新できます。

"Add"をクリックすればCPU、GPUのスロットを追加できます。

最後に

分散システムって素晴らしいですよね。誰でもFolding@Homeを動かせるだけであらゆる病気に関する研究を支援することができます。特に最近多くの人の生活に影響を与えている新型コロナウイルスCovid-19の研究が早く進んで欲しいですね。みんなで力(コンピューティングパワー)を合わせて、研究を支えましょう!