デジタル宇宙を創造する

JP
future

2023年3月にスタンフォード大学の医学部でタンパク質の折り畳みのシミュレーションの研究をしている方と出会った。詳しく聞くと、どうやらシミュレーションには分子間の相互作用を古典力学によって近似したり、機械学習によってある動きの組み合わせをモデリングしているらしい。しかしその方法だと、温度などのふとした条件差によって近似値が理論値と大幅に違ってしまうことがあるそうだ。彼は、そういった場合においても正確にシミュレーションできる方法を模索していた。

video

そこで疑問に思い「原子レベルでシミュレーションすることはできないのか?」と伺った。当時の考えでは、それがもっとも理にかなっていると思った。だって、実際に我々が生きている世界では、一つ一つの原子の反応によって成り立っているからだ。しかし、それは時間がかかりすぎてしまうとのことだった。たしかに考えてみれば、タンパク質は数万個の細胞からなっており、一つの細胞は数百億の原子からなっている。タンパク質5~6個をモデリングするだけでも5~6千兆個もの単位を操作する必要がある。これはいくら性能の高いスーパーコンピューターでも再現するのに何年もかかるだろう。

オンラインRPGやメタバースをプレイしていたときに感じる物足りなさも同じようなことからくる。小さく単純化されたアバターを操作しても没入感を得にくい。かといって人間に近いアバターだと、同期の遅延でとてもプレイどころじゃなくなる。数億人が同時にプレイするなんてもってのほかだ。

このように、大規模な計算を実現するにはまだまだ壁がある。1980年代の研究からすでに取り組まれているのは3つのアプローチだ。

1つめはCPUの処理性能を上げることだ。シミュレーションに足る性能のコンピュータを作り上げることができればいいという簡単な理屈である。ただ、これはほぼ不可能であると言われている。ムーアの法則として知られるCPUの性能のアップデートは終焉を迎えている。もう半導体は分子に近いレベルまで小型化を果たしており、これ以上小さくできないからである。

2つめは量子コンピュータやジョセフソンコンピュータなどの電気信号とは異なるコンピューティングパラダイムを用いることである。これは非常に有力視されており、古典コンピュータでは困難な計算も多項式時間で実行できるアルゴリズムも見つかっている。しかし、一般的には得意な計算と不得意な計算があり、汎用的に用いるのは現実的ではないと言われている。

https://pc.watch.impress.co.jp/docs/news/1340386.html
https://pc.watch.impress.co.jp/docs/news/1340386.html

https://www.jstage.jst.go.jp/article/oubutsu1932/60/4/60_4_373/_pdf
https://www.jstage.jst.go.jp/article/oubutsu1932/60/4/60_4_373/_pdf

3つめは分散コンピューティングによって計算を並列化することだ。たとえば各原子のふるまいは各コンピュータが計算を担い、それをまとめあげる別のコンピュータが何台かいて、、、というように計算を複数のタスクのタスクに分割してネットワークを通じて並行処理させる。うまくタスクを分割することができれば、計算速度を非常に速くすることができる。さらに、必要に応じてサーバーの台数を増やしたり減らしたりするスケールイン/アウトを適用することができるため、スケーラブルである。これはコンピュータのコア並列化と比べて物理的な制約がない。しかし、実際はそこまで実用的とはいえず、様々な課題がある。

まずはセキュリティの課題だ。計算を複数のコンピュータに分割したはいいものの、本当に正直に計算を実行する保証はない。コンピュータだってたまに間違える。これを検証可能にするため考えられる最も簡潔な解決策としては、同じ計算を別のコンピュータで再実行して同じ結果が得られることを確かめることだ。これはSETI@Homeが採用しているが、これでは計算量がn倍に増えることから賢い方法ではない。その他の方法としては、暗号学的証明によって正しさを検証する対話型証明やゼロ知識証明などの技術がある。これらの証明・検証にかかる時間が高速化すればクリアである。それは、今だとTEEくらいが現実的な解決策である。

つぎが計算オーバーヘッドの課題だ。並列化によって得られる高速化よりも、通信によるオーバーヘッドが大きく、トータルで見ると1台のサーバーで計算するよりも遅くなってしまうという課題がある。これを、なんとか通信回数を最小化させるようにアルゴリズムを工夫する必要がある。ただ、通信回数を減らすとオフラインでの計算量が増えたり、送信するデータ量が増えるというトレードオフがある。

分散コンピューティングの最たる実用化例はビットコインのマイニングプールである。ビットコインでは、ブロック生成して報酬を得るために数学的パズルを解く必要がある。これには膨大な計算量が必要であり、多くのマイニング業者は何台ものマイニング専用サーバをもったデータセンタを構築する。これに普通の計算機しかもっていないソロマイナーが対抗するために、ソロマイナー同士で供託してマイニングプールを形成する。それぞれのマイナーは必要な計算を少しずつ分担しあうのだ。マイニングプールの登場以降、ビットコインブロックの8割以上はマイニングプールによって生成されるようになった。

マイニングプールの分散コンピューティグメカニズム

私は、素粒子を何京個もシミュレートするようなデジタル宇宙を実現したいと考えている。これは上記の3つのうち、分散コンピューティングでしか実現できないであろう。なぜなら理論的な計算量の限界値がないからだ。これは宇宙が膨張していくような現象にも対応できるだろう。

もし素粒子レベルでのシミュレーションができれば、脳の構造解析などのシミュレーションもやりやすくなる。あるいは計算リソースを持たないAIの研究室でもありあわせのCPU10台があればローカルLLMの学習ができる。あるいはゴミ山で育つアフリカの子どもたちでもゴミの中から10年前のスマホをかき集めてオンラインで勉強やプログラミングができる。世界中でデジタル・ディバイドをなくすことができれば、発明は加速するだろう。資本を持った企業が技術を独占するような社会を変えることができるだろう。わたしはそんな未来が楽しみで仕方がない。

だから計算リソースを公共化するために分散コンピューティングを実用化する。そのために現在は、分散コンピューティングのセキュリティと計算オーバーヘッドの課題に取り組んでいる。


← Go home