ボランティア・コンピューティング

ボランティア・コンピューティング (Volunteer computing) とは、分散コンピューティングの一種で、人々が自分のコンピュータの未使用のリソースを研究向けのプロジェクトに寄付するものである。
1990年代半ばにまで遡るこの手法は、研究者が最小限のコストでかなりの処理能力を利用できるようになる可能性がある。典型的には、ボランティアのコンピュータ上で実行されているプログラムが、定期的に研究アプリケーションに接続し、仕事をリクエスト、その結果を報告する。ミドルウェアシステムは通常、仲介者としてその任を務める。
歴史.
最初のボランティア・コンピューティング・プロジェクトは、1996年1月に開始された Great Internet Mersenne Prime Search (GIMPS) であった。1997年、distributed.netがそれに続いた。1997年と1998年には、いくつかの学術研究プロジェクトがボランティア・コンピューティング用Javaベースのシステムを開発した。たとえば、Bayanihan、Popcorn、Superweb、Charlotte である。
ボランティア・コンピューティング("volunteer computing")という言葉は、Bayanihanの開発者であるルイス・F・G・サルメンタ(Luis F. G. Sarmenta)によって作られた。また、ハーバード・ビジネス・レビュー で報告されているような社会的責任へのグローバルな取り組みや、あるいは企業の社会的責任、あるいはResponsible ITフォーラム での活用などでアピールされている。
1999年には、SETI@homeとFolding@homeプロジェクトが開始された。これらのプロジェクトはメディアに大きく取り上げられ、それぞれ数十万人のボランティアが集まった。
1998年から2002年の間に、ボランティア・コンピューティングを含むビジネスモデルでいくつかの企業が設立された。例としては、Popular Power, Porivo, Entropia, United Devicesが挙げられる。
2002年には、カリフォルニア大学バークレー宇宙科学研究所の「Berkeley Open Infrastructure for Network Computing」(BOINC) プロジェクトが、国立科学財団の資金援助を受けて設立された。BOINCは、クライアント、クライアントGUI、アプリケーションランタイムシステム、サーバーソフトウェア、プロジェクトのウェブサイトを実装するソフトウェアなど、ボランティア・コンピューティングのための完全なミドルウェアシステムを提供している。BOINCをベースにした最初のプロジェクトは、スクリップス研究所のPredictor@homeで、2004年に運用を開始した。その後すぐにSETI@homeとClimatePrediction.netがBOINCを使い始めた。その後数年の間に、Rosetta@home, Einstein@home, AQUA@home など、BOINCをベースにした新しいプロジェクトが次々と誕生した。2007年、IBM World Community Grid は United Devices プラットフォームからBOINCに切り替わった。
2015年には、スマートフォン向けのボランティア・コンピューティングアプリケーション、DreamLabがリリースされた。
ミドルウェア.
初期のボランティア・コンピューティングプロジェクトのクライアントソフトウェアは、科学計算と分散コンピューティング・インフラストラクチャを組み合わせた単一のプログラムで構成されていた。このモノリシック・アーキテクチャには柔軟性がなかった。たとえば、新しいアプリケーションバージョンを展開するのは困難であった。
最近では、ボランティア・コンピューティングは、科学的計算から独立した分散コンピューティング・インフラストラクチャを提供するミドルウェア・システムへと移行している。例としては、次のようなものがある。
これらのシステムのほとんどは基本的な構造は同じで、ボランティアのコンピュータ上でクライアントプログラムが動作する。このプログラムは、インターネットを介してプロジェクトが運営するサーバーに定期的に接続し、仕事をリクエストして、完了した仕事の結果を報告する。多くのボランティアのコンピュータがファイアウォールの背後にあり、着信接続を許可しないために、この「プル」モデル (pull model) が必要である。システムは、各ユーザーの「クレジット」(credit) を追跡し、そのユーザーのコンピュータがプロジェクトのためにどれだけの仕事をしたかを数値的に測定する。
ボランティア・コンピューティング・システムは、ボランティア・コンピュータに関わるいくつかの問題に対処する必要がある。参加するコンピュータの多様性、解約 (個々のコンピュータが時間の経過とともにネットワークに参加したり離脱する傾向)、散発的な利用可能性、そして通常の使用中にパフォーマンスを妨害しない必要性である。
さらに、ボランティア・コンピューティングシステムは、正しさに関する問題に対処しなければならない。
このような問題に対する一般的なアプローチとして、各ジョブが少なくとも2台のコンピュータで実行されるレプリケート・コンピューティングがある。仕事の結果 (および対応するクレジット) は、それらが十分に一致した場合にのみ受け入れられる。
参加者の不利益.
これらの効果は目に見えない場合も目に見える場合もあり、たとえ目立ったとしても、ボランティアは参加の継続を選択をする場合がある。しかし、消費電力の増加は、クライアントが使用するプロセッサの割合を制限するオプションを設定することによって、ある程度まで改善することができる。
研究者の利益.
計算力.
ボランティア・コンピューティングは、他の方法では達成できないコンピューティングパワーを研究者に提供することができる。例えば、Folding@homeは、世界最速のコンピューティングシステムの一つとして位置づけられている。COVID-19パンデミックの影響でプロジェクトへの関心とボランティアの参加が高まったことで、システムは2020年3月下旬に約1.22エクサフロップスの速度を達成、2020年4月12日には2.43エクサフロップスに達し、世界初のエクサフロップス・コンピューティングシステムになった。
コスト.
多くの場合、ボランティア・コンピューティングは、他の形態の分散コンピューティングよりも安価である。
重要性.
プロジェクトを実施する上で、参加者と研究者の間に説明責任や信頼関係の欠如などの課題はあるが、特に資金が限られているプロジェクトにおいては、ボランティア・コンピューティングは非常に重要である。