Folding@homeに参加して新型コロナウイルスの治療薬作成を支援する

by YAMAMOTO Yuji on March 22, 2020


↓こんなプロジェクトがあるということで、私も参加してみました:

新型コロナウイルスの解析、分散コンピューティングで誰でも参加できるように 「Folding@home」が対応 - ITmedia NEWS

Folding@homeは米スタンフォード大学を中心としたタンパク質構造解析のための分散コンピューティングプロジェクト。ネット接続された世界中のコンピュータの処理能力を集めて巨大なスーパーコンピュータを形成し、アルツハイマー病、がん、パーキンソン病などの治療に関する解析やシミュレーションに活用している。

基本的にやることはStart folding – Folding@homeからクライアントのインストーラーをダウンロードしてインストールするだけ… なんですが、FAQを読むと(恐らくまだ日本語のメディアで共有されていない)注意事項が見つかったし、実際にやってみて気づいたこともあるので共有したいと思います。
速いPCは持ってるけど英語が読めなくて参加するのが怖い!なんて人にも届きますように🙏

2020/03/25 追記: Impress様よりスクショ付きの解説をいただきました!ちょうど私の記事を補完するような内容になってますね!

使用した我が家のデスクトップPCのスペックは以下の通り:

家庭用PCとしてはまぁまぁ速い方だとは自負しておりますが、もっともっと適切なマシンはいわゆる逸般の誤家庭にも各種企業様にもたくさんあると思うので、是非お財布と予算の相談をしながら参加をご検討ください🙇

注意事項

2020/04/05 追記: 電気代について

Twitterを検索していると「電気代が不安」といった声も散見されますが、実際のところ、一般的な家庭用のパソコンのように、CPUが一つしかないマシンでやる分にはそれほど高くかかりません。
参考までに、Folding@homeのFAQにおける、同様の質問とその回答を翻訳して載せておきます。

Folding@homeを四六時中ずっと実行させっぱなしにした場合、どれぐらいのお金や電力がかかりますか?

大雑把に、一つのCPUが利用する電力(ワット)は典型的な電球と同じくらいです。ほとんどのコンピューターの電力供給力は400ワットと見積もられてますが、平均的な使用量はもっと低いです。平均して、Pentiumのような(訳注: よくあるタイプの)コンピューターは100ワットほど使います(モニターをオフにしていた場合)。なので、Folding@homeを起動している場合と起動していない場合の差はだいたい24×100 = 2.4 kWhくらいでしょう。(ここカリフォルニアにおけるPG&Eのように)1キロワットあたり0.15ドルとした場合、これは1日あたり0.36ドルと計算されます。一般に、家庭における電力の使用量では、コンピューターよりも照明や空調設備が消費する量の方が遥かに多くを占めます。そのため、電気代やエネルギーを節約したい場合は、照明を切ったり、コンピューターのモニター(CPUよりも多くの電力を使います)を切ったり、暖房の温度を下げたりするのがベストな策でしょう。

ただし、もちろんこれはCPUが一つしか入っていないマシンでの計算です。
サーバー機など、CPUをたくさん積んだマシンでは、その数に比例して電力を消費すると思われるのでご注意ください(まぁ、そんなマシン持ってる人は普段使いする時点で重々承知かとは思いますが…)

基本的な使い方

冒頭で触れたとおり、単純に動かすだけならStart folding – Folding@homeからクライアントのインストーラーをダウンロードしてインストールするだけなので、その詳細は省略します。
WindowsでもMacでもLinuxでも、他のソフトウェアをインストールしたことがある方なら十分簡単かと思います。
(多分他のOSでも同様の措置が執られるかとは思いますが)Windows版の場合インストールするとスタートアップに登録され、OS起動時に計算を始めるようになるので、その点はご注意ください。

インストールが終了すると、お使いのブラウザーに👇のようなウェブページが表示されるでしょう。

この画面はFolding@homeのクライアントをインストールした上でhttps://client.foldingathome.org/にアクセスすると表示される、現在の計算状況を表示する画面です2
インストール直後は自動で表示されるはずです。計算状況を再度確認するときにもアクセスすることになるので、ブックマークしておきましょう。

この画面からは計算状況を確認したり、計算を停止・再開したり、使用する電力を調整したりすることができます。

また、「Change Identity」というリンク(初期状態では違う名前のリンクかも?)をクリックして、「Name」や「Team Number」、こちらのページで取得した「Passkey」を設定しておけば、あなたのマシンが計算した成果を名前付きで誇ることができます😤。ぜひ設定しましょう!
(このあたりの初期設定に関しては割と記憶が曖昧です。すみません!)

現在の計算状況

しばらく待てば「Work Unit」という計算の単位が割り当てられ、次のように「CPU」・「GPU」それぞれの進捗が表示されるはずです。
どちらか一方のみに割り当てられることもあるので、気長に待ちましょう。

ちなみに話題の新型コロナウイルス、SARS-CoV-2を解析するプロジェクトは主にCPUで計算するプロジェクトのようですが、「CPUだけ動かして、GPUは止めたい!」みたいな設定は(少なくともこの管理画面からは)できないみたいです。

以降、👆のスクショに基づいて表示されているものを簡単に説明します。

Power: 電力の調整

「Power」と書かれた箇所にあるスライダーを調整すると、計算に使用するCPU・GPUの使用率を調整できます。
試しに調整してみた感じ、各段階における使用量は次のように変わるみたいです。

なお、私の環境ではこのスライダーによる切り替えは、CPUの使用率のみに作用しました。
事情はわかりませんが、GPUは特に変わりませんでした。
2020/03/25 修正: CPUとGPU両方にWork Unitが割り当てられている場合に「Light」にすると、GPUによる計算はストップするみたいです。

また、こちらは試してませんが「Only when idle」と書かれているラジオボタンに切り替えると、他のプロセスが計算していないときだけ計算するようです。
夜寝るときだけ計算します、なんて人はお試しください。
ただし、先ほども触れたとおり締め切りは極力守るようご注意ください。

Stop Folding: 計算の停止

画面の下にある「Stop Folding」と書かれたボタンが、文字通り計算を終了させるボタンです。
ブラウザーのタブを閉じても終了しないのでくれぐれもご注意を!
また、終了させてもOS再起動後には自動的に始まる点にもご注意ください。

このボタンを押すと「Finish up, then stop」つまり今計算しているWork Unitを終えてから止めるか、「Stop now」、つまり直ちに計算を終えるか選択することができます。
しつこいようですが、例え止めるにしても締め切りは守るべくタイミング・時間は調整するべきですし、こちらのFAQ曰く、途中までの計算は決まった割合毎にしか保存されないそうなので、特に遅いマシンで計算を無駄にしたくない場合は、「Finish up, then stop」を選択した方がいいかもしれません。

実績を共有する

「Change Identity」というリンクから名前などを設定している場合、https://stats.foldingathome.org/donor/<設定した名前>という形式のURLから、計算の実績を見ることができます。
お友達に自慢するときはこのURLを使いましょう!
ただし、このページに反映されるようになるまでは計算を始めてから1日から2日程度かかるようです。
ちなみに、ランク圏外のようですが私の実績はこちら:

終わりに

一昨日から使用し出して以降、執筆時点で、私のマシンにはあまりWork Unitが割り当てられなくなってしまいました。
どちらかというとGPU向けのWork Unitが多く割り当てられます。
今計算しているのは「Project 14310」というガンに関するシミュレーションであり、SARS-CoV-2とは関係がありません。
ですが当然、この世にある病気は新型コロナウイルスだけではないのですから、将来誰かの命を救う研究につながる計算だと、私は信じています。
もっと高速なCPUを搭載していれば、もっとたくさんのSARS-CoV-2関連のWork Unitが割り当てられているかも知れません。
ぜひ余力のある、十分高速なマシンをお持ちの方はチャレンジしてみてください!💪
計算を開始すれば残り時間が推定されるので、とりあえず試しにやってみるのでもいいと思います!


  1. 後述の通り「Power」を「Full」にしなければある程度余力を持ってくれるし、制限時間を守るよう調整することさえできれば別にいいんじゃないかな、という気もしますが、決しておすすめはしませんし、お使いのホスティングサービスにBANされても私は何の責任もとりません。↩︎

  2. この画面をブラウザーの開発ツールで見るとわかるとおり、私の手元ではlocalhostの7396番ポートを使用して、稼働しているFolding@homeのクライアントの状態を確認しているみたいです。↩︎


I'm a Haskeller Supported By Haskell-jp.