← 一覧へ
連載 Agentic OS を、取引で読み直す の一部です ―― 目次を見る →

Agentic OS を、取引で読み直す(4):割れる計算、割れない揃え ―― 手分けの得は、足並みで払う

この記事の読み方
前回までは、一つの場所で、軽く速くする取引でした。

Agentic OS を、取引で読み直す(4):割れる計算、割れない揃え ―― 手分けの得は、足並みで払う

前回の場所から外へ

前回までは、一つの場所で、軽く速くする取引でした。

前置きを毎回作り直さず、取っておいて使い回す。そうすれば、同じものを何度も読む手間を減らせます。場所を占め続ける代わりに、次の仕事を軽くする。これは、一つの場所の中での取引でした。

だが、鍛える相手が、一つの機械では抱えきれないほど大きくなると、話が変わります。

一つの機械で何ヶ月もかかるなら、何百台もの機械に手分けさせたくなります。手分けすれば、速くなります。だが、ただでは速くなりません。手分けには、足並みを揃える手間が、ついてきます。

今回は、その取引です。

割れる計算と、割れない揃え。手分けの得は、足並みで払う、という話です。

鍛えるとは、内側の数を少しずつ動かすこと

モデルを鍛えるとは、何をしているのでしょうか。

大づかみに言えば、大量の素材を見せて、モデルの内側にある無数の数を、少しずつ良い方へ寄せていくことです。

素材を一つ見せます。モデルは、次に来るものや、正しい答えらしきものを予想します。その予想が、どれくらい外れていたかを見る。外れ方をもとに、内側の数を、どちらへ、どれだけ動かせばよいかを計算する。

一回で大きく変えるわけではありません。少しだけ動かします。次の素材を見せます。また外れ方を見ます。また少し動かします。これを、気が遠くなるほど繰り返します。

重いのは、素材の数だけではありません。モデルの内側の数も多い。どの数が、どの予想に、どのくらい効いたのかをたどる必要があります。たどったうえで、それぞれの数を、少しずつ直す必要があります。

だから、一つの機械だけで進めると、時間がかかります。GPUを積んだ機械でも、相手が十分に大きければ、一日や二日では終わりません。何週間、何ヶ月という単位になります。

ここで、人は当然、こう考えます。

一台で遅いなら、たくさん並べればよいのではないか。

計算は、かなりきれいに手分けできる

幸い、鍛える計算には、手分けしやすい部分があります。

大量の素材を、小分けにします。ある機械には、この束を渡す。別の機械には、別の束を渡す。各機械は、自分の手元の素材だけを見て、同時に計算します。

たとえば、一回ぶんの仕事に、千二十四個の素材を使うとします。一台で全部見るなら、その一台が千二十四個を処理します。百二十八台に分けるなら、一台あたり八個を見ればよい。各機械は、自分の八個について、予想し、外れ方を見て、内側の数をどちらへ寄せたいかを計算します。

この部分だけ見れば、手分けは強いです。

台数が二倍になれば、一台あたりの持ち分はだいたい半分になります。計算にかかる時間も、だいたい半分に近づきます。もちろん完全に半分にはなりません。機械ごとの細かな差もありますし、準備の手間もあります。それでも、大きな計算を割れることは間違いありません。

ここまでは、話が素直です。

一つの大きな山を、何百人で崩す。各自が自分の前の土を掘る。掘る作業そのものは、人数を増やせば速くなります。

しかし、モデルを鍛える仕事は、各自が勝手に山を掘って終わりではありません。みんなで一つの同じモデルを鍛えています。ここが、くせ者です。

一区切りごとに、持ち寄って、ならして、配り直す

各機械は、自分の素材を見て、「内側の数をこう動かしたい」という途中結果を出します。

ただし、それぞれの機械が見ている素材は違います。ある機械は、ある種類の素材を見ています。別の機械は、別の種類の素材を見ています。すると、「こう動かしたい」の中身も、少しずつ違います。

ここで、各機械が勝手に内側の数を動かしてしまうと、困ります。

最初は同じモデルから始めたはずなのに、一台ごとに別々の方向へ進んでしまいます。次の一歩では、もう同じモデルではありません。ある機械は、こちらへ少し寄せたモデルを使う。別の機械は、あちらへ少し寄せたモデルを使う。これでは、みんなで一つを鍛えていることになりません。

だから、一区切り計算するごとに、全台で途中結果を持ち寄ります。

各機械が出した「こう寄せたい」を集めます。集めたものを足します。台数ぶんでならします。ならした結果を、もう一度、全台へ配り直します。

その後で、全台が同じだけ内側の数を動かします。これで、全員がまた同じモデルになります。同じ場所に立ち直ってから、次の素材の束へ進みます。

つまり、流れはこうです。

素材を分ける。各機械が同時に計算する。途中結果を持ち寄る。足してならす。全台へ配り直す。同じモデルに揃える。次の一歩へ進む。

手分けできるのは、一区切りの中の計算です。だが、一区切りの終わりには、全員が揃わなければなりません。

揃えるやり取りが、台数とともに重くなる

この「持ち寄って、ならして、配り直す」が、手分けの代金です。

計算は、台数を増やすほど軽くなります。一台あたりの素材が減るからです。ところが、揃えるやり取りは、同じようには軽くなりません。

むしろ、台数を増やすほど、相手が増えます。

十台なら、十台ぶんの途中結果を集めればよい。百台なら、百台ぶんです。千台なら、千台ぶんです。しかも、途中結果は小さな紙切れではありません。モデルの内側にある多くの数について、「こちらへこれだけ動かしたい」という量を持っています。

もちろん、毎回、すべてを素朴に一か所へ集めるわけではありません。近い機械同士で先に足す。まとまったものを上へ送る。別の組から来たものと合わせる。最後に、ならした結果を逆向きに広げる。そういう段取りを組みます。

それでも、本質は変わりません。

全員が同じ次の一歩へ進むには、全員の途中結果が、どこかの形で混ざらなければなりません。そして、混ざった結果が、全員へ戻らなければなりません。

この往復は、計算そのものではありません。GPUが素材を読んで、予想して、外れ方をたどっている時間ではありません。機械同士が結果を運び、合わせ、戻す時間です。

はじめのうちは、計算のほうがずっと重いので、このやり取りは目立ちません。手分けの得が大きく見えます。

しかし、台数を増やすと、計算はどんどん短くなります。一台あたりの持ち分が小さくなるからです。一方で、揃えるやり取りは、相手が増え、運ぶ量も残り、段取りも複雑になります。

すると、ある所で逆転します。

もう計算は十分速い。だが、一区切りの終わりに足並みを揃える時間が長い。全体の速さを決めているのは、素材を計算する時間ではなく、揃える時間のほうになる。

ここまで来ると、台数を増やしても、思ったほど速くなりません。

百台を二百台にしても、二倍速くはならない。二百台を四百台にしても、また同じです。計算は短くなっているのに、揃える所が重く残るからです。

だから、大勢で鍛える仕事では、ただ台数を増やせばよい、とはなりません。

どれくらいの大きさで一区切りにするか。どの順で持ち寄るか。どこまで近い機械同士でまとめるか。運ぶ量をどこまで減らせるか。遅い機械をどう扱うか。

こうした足並みの設計が、計算そのものと同じくらい重要になります。

一台が遅れると、全台が待つ

もう一つ、手分けには脆さがあります。

足並みを揃える以上、全台が互いを待ちます。一区切りの終わりに、全員の途中結果が必要だからです。

百台のうち九十九台が計算を終えていても、最後の一台がまだ終わっていなければ、ならせません。その一台の途中結果が欠けているからです。ならせないなら、次の同じ一歩へ進めません。

つまり、全体の速さは、いちばん遅い一台に引っ張られます。

遅れ方はいろいろあります。ある機械だけ、少し熱を持って遅くなる。ある機械だけ、素材の処理に時間がかかる。ある機械のつながりだけ、混み合う。ある機械が、一瞬止まる。完全にこけることもあります。

一台だけの問題に見えても、足並みを揃える仕組みでは、全体の問題になります。

しかも、台数が増えるほど、どれか一台に何かが起きる目は増えます。十台ならめったに起きないことも、千台ならよく起きます。長い時間走らせるほど、なおさらです。

ここに、手分けの皮肉があります。

たくさんの機械を使えば、計算する力は強くなります。だが同時に、待たなければならない相手も増えます。どれか一台が遅れれば、残り全部が待つ。どれか一台がこければ、全体が止まる。

手分けして強くしたはずの仕組みが、いちばん弱い一台に縛られるのです。

これは、速さを買って、揃えを背負う取引です

この取引の芯は、単純です。

鍛える計算は、割れます。素材を分け、何百台もの機械に配り、同時に進めれば、一回ぶんの計算は速くなります。

しかし、みんなで一つのモデルを鍛えている以上、各機械が勝手に進むわけにはいきません。一区切りごとに、途中結果を持ち寄り、足して、ならして、配り直す必要があります。そうして初めて、全台が同じモデルから次の一歩へ進めます。

この揃えるやり取りは、台数を増やすほど重くなります。相手が増えるからです。運ぶ途中結果も大きいからです。計算が速くなるほど、かえって揃えの重さが目立つからです。

さらに、一台でも遅れれば、全台が待ちます。一台でもこければ、全体が止まります。

だから、手分けは無料の速さではありません。

割れる計算で速さを得る。割れない揃えで代金を払う。足並みを揃える以上、脆さも引き受ける。

これが、大勢の機械で一つのモデルを鍛えるときの、いちばん太い取引です。

二つの谺

モデルの中で、入力を一部の専門家だけに振り分ける門も、同じ匂いがあります。手分けで容量を稼ぎますが、選んだ先がばらけていれば、そこへ運ぶやり取りが要ります。

多くのエージェントに仕事を分けて同時に働かせるときも、同じです。手分けは速いですが、互いの結果を持ち寄って束ねる所で、待ちと食い違いが生まれます。

次は、待つか束ねるか

重い計算は、手分けで速くなります。

だが、みんなで一つを鍛える以上、一区切りごとに足並みを揃えるやり取りが要ります。そのやり取りは、台数とともに重くなります。やがて、計算ではなく、揃える時間のほうが、全体の速さを縛ります。

しかも、揃える以上、一台がこければ全体が止まります。

割れる計算と、割れない揃え。手分けの得は、揃えと脆さで払います。

そして、足並みを揃えるには、互いを待つ必要があります。

この「待つ」は、もっと身近な所でも効いています。一件ずつすぐやるか。少し待って、何件かまとめてやるか。待てば、まとめて捌けて得をします。けれど、待たされた一件は遅くなります。

次は、待つか、束ねるか、という取引へ進みます。

← 一覧へ