Agentic OS を、取引で読み直す(4):割れる計算、割れない揃え ―― 手分けの得は、足並みで払う
前回までは、一つの場所で、軽く速くする取引でした。
Agentic OS を、取引で読み直す(4):割れる計算、割れない揃え ―― 手分けの得は、足並みで払う
前回の場所から外へ
前回までは、一つの場所で、軽く速くする取引でした。
前置きを毎回作り直さず、取っておいて使い回す。そうすれば、同じものを何度も読む手間を減らせます。場所を占め続ける代わりに、次の仕事を軽くする。これは、一つの場所の中での取引でした。
だが、鍛える相手が、一つの機械では抱えきれないほど大きくなると、話が変わります。
一つの機械で何ヶ月もかかるなら、何百台もの機械に手分けさせたくなります。手分けすれば、速くなります。だが、ただでは速くなりません。手分けには、足並みを揃える手間が、ついてきます。
今回は、その取引です。
割れる計算と、割れない揃え。手分けの得は、足並みで払う、という話です。
鍛えるとは、内側の数を少しずつ動かすこと
モデルを鍛えるとは、何をしているのでしょうか。
大づかみに言えば、大量の素材を見せて、モデルの内側にある無数の数を、少しずつ良い方へ寄せていくことです。
素材を一つ見せます。モデルは、次に来るものや、正しい答えらしきものを予想します。その予想が、どれくらい外れていたかを見る。外れ方をもとに、内側の数を、どちらへ、どれだけ動かせばよいかを計算する。
一回で大きく変えるわけではありません。少しだけ動かします。次の素材を見せます。また外れ方を見ます。また少し動かします。これを、気が遠くなるほど繰り返します。
重いのは、素材の数だけではありません。モデルの内側の数も多い。どの数が、どの予想に、どのくらい効いたのかをたどる必要があります。たどったうえで、それぞれの数を、少しずつ直す必要があります。
だから、一つの機械だけで進めると、時間がかかります。GPUを積んだ機械でも、相手が十分に大きければ、一日や二日では終わりません。何週間、何ヶ月という単位になります。
ここで、人は当然、こう考えます。
一台で遅いなら、たくさん並べればよいのではないか。
計算は、かなりきれいに手分けできる
幸い、鍛える計算には、手分けしやすい部分があります。
大量の素材を、小分けにします。ある機械には、この束を渡す。別の機械には、別の束を渡す。各機械は、自分の手元の素材だけを見て、同時に計算します。
たとえば、一回ぶんの仕事に、千二十四個の素材を使うとします。一台で全部見るなら、その一台が千二十四個を処理します。百二十八台に分けるなら、一台あたり八個を見ればよい。各機械は、自分の八個について、予想し、外れ方を見て、内側の数をどちらへ寄せたいかを計算します。
この部分だけ見れば、手分けは強いです。
台数が二倍になれば、一台あたりの持ち分はだいたい半分になります。計算にかかる時間も、だいたい半分に近づきます。もちろん完全に半分にはなりません。機械ごとの細かな差もありますし、準備の手間もあります。それでも、大きな計算を割れることは間違いありません。
ここまでは、話が素直です。
一つの大きな山を、何百人で崩す。各自が自分の前の土を掘る。掘る作業そのものは、人数を増やせば速くなります。
しかし、モデルを鍛える仕事は、各自が勝手に山を掘って終わりではありません。みんなで一つの同じモデルを鍛えています。ここが、くせ者です。
一区切りごとに、持ち寄って、ならして、配り直す
各機械は、自分の素材を見て、「内側の数をこう動かしたい」という途中結果を出します。
ただし、それぞれの機械が見ている素材は違います。ある機械は、ある種類の素材を見ています。別の機械は、別の種類の素材を見ています。すると、「こう動かしたい」の中身も、少しずつ違います。
ここで、各機械が勝手に内側の数を動かしてしまうと、困ります。
最初は同じモデルから始めたはずなのに、一台ごとに別々の方向へ進んでしまいます。次の一歩では、もう同じモデルではありません。ある機械は、こちらへ少し寄せたモデルを使う。別の機械は、あちらへ少し寄せたモデルを使う。これでは、みんなで一つを鍛えていることになりません。
だから、一区切り計算するごとに、全台で途中結果を持ち寄ります。
各機械が出した「こう寄せたい」を集めます。集めたものを足します。台数ぶんでならします。ならした結果を、もう一度、全台へ配り直します。
その後で、全台が同じだけ内側の数を動かします。これで、全員がまた同じモデルになります。同じ場所に立ち直ってから、次の素材の束へ進みます。
つまり、流れはこうです。
素材を分ける。各機械が同時に計算する。途中結果を持ち寄る。足してならす。全台へ配り直す。同じモデルに揃える。次の一歩へ進む。
手分けできるのは、一区切りの中の計算です。だが、一区切りの終わりには、全員が揃わなければなりません。
揃えるやり取りが、台数とともに重くなる
この「持ち寄って、ならして、配り直す」が、手分けの代金です。
計算は、台数を増やすほど軽くなります。一台あたりの素材が減るからです。ところが、揃えるやり取りは、同じようには軽くなりません。
むしろ、台数を増やすほど、相手が増えます。
十台なら、十台ぶんの途中結果を集めればよい。百台なら、百台ぶんです。千台なら、千台ぶんです。しかも、途中結果は小さな紙切れではありません。モデルの内側にある多くの数について、「こちらへこれだけ動かしたい」という量を持っています。
もちろん、毎回、すべてを素朴に一か所へ集めるわけではありません。近い機械同士で先に足す。まとまったものを上へ送る。別の組から来たものと合わせる。最後に、ならした結果を逆向きに広げる。そういう段取りを組みます。
それでも、本質は変わりません。
全員が同じ次の一歩へ進むには、全員の途中結果が、どこかの形で混ざらなければなりません。そして、混ざった結果が、全員へ戻らなければなりません。
この往復は、計算そのものではありません。GPUが素材を読んで、予想して、外れ方をたどっている時間ではありません。機械同士が結果を運び、合わせ、戻す時間です。
はじめのうちは、計算のほうがずっと重いので、このやり取りは目立ちません。手分けの得が大きく見えます。
しかし、台数を増やすと、計算はどんどん短くなります。一台あたりの持ち分が小さくなるからです。一方で、揃えるやり取りは、相手が増え、運ぶ量も残り、段取りも複雑になります。
すると、ある所で逆転します。
もう計算は十分速い。だが、一区切りの終わりに足並みを揃える時間が長い。全体の速さを決めているのは、素材を計算する時間ではなく、揃える時間のほうになる。
ここまで来ると、台数を増やしても、思ったほど速くなりません。
百台を二百台にしても、二倍速くはならない。二百台を四百台にしても、また同じです。計算は短くなっているのに、揃える所が重く残るからです。
だから、大勢で鍛える仕事では、ただ台数を増やせばよい、とはなりません。
どれくらいの大きさで一区切りにするか。どの順で持ち寄るか。どこまで近い機械同士でまとめるか。運ぶ量をどこまで減らせるか。遅い機械をどう扱うか。
こうした足並みの設計が、計算そのものと同じくらい重要になります。
一台が遅れると、全台が待つ
もう一つ、手分けには脆さがあります。
足並みを揃える以上、全台が互いを待ちます。一区切りの終わりに、全員の途中結果が必要だからです。
百台のうち九十九台が計算を終えていても、最後の一台がまだ終わっていなければ、ならせません。その一台の途中結果が欠けているからです。ならせないなら、次の同じ一歩へ進めません。
つまり、全体の速さは、いちばん遅い一台に引っ張られます。
遅れ方はいろいろあります。ある機械だけ、少し熱を持って遅くなる。ある機械だけ、素材の処理に時間がかかる。ある機械のつながりだけ、混み合う。ある機械が、一瞬止まる。完全にこけることもあります。
一台だけの問題に見えても、足並みを揃える仕組みでは、全体の問題になります。
しかも、台数が増えるほど、どれか一台に何かが起きる目は増えます。十台ならめったに起きないことも、千台ならよく起きます。長い時間走らせるほど、なおさらです。
ここに、手分けの皮肉があります。
たくさんの機械を使えば、計算する力は強くなります。だが同時に、待たなければならない相手も増えます。どれか一台が遅れれば、残り全部が待つ。どれか一台がこければ、全体が止まる。
手分けして強くしたはずの仕組みが、いちばん弱い一台に縛られるのです。
これは、速さを買って、揃えを背負う取引です
この取引の芯は、単純です。
鍛える計算は、割れます。素材を分け、何百台もの機械に配り、同時に進めれば、一回ぶんの計算は速くなります。
しかし、みんなで一つのモデルを鍛えている以上、各機械が勝手に進むわけにはいきません。一区切りごとに、途中結果を持ち寄り、足して、ならして、配り直す必要があります。そうして初めて、全台が同じモデルから次の一歩へ進めます。
この揃えるやり取りは、台数を増やすほど重くなります。相手が増えるからです。運ぶ途中結果も大きいからです。計算が速くなるほど、かえって揃えの重さが目立つからです。
さらに、一台でも遅れれば、全台が待ちます。一台でもこければ、全体が止まります。
だから、手分けは無料の速さではありません。
割れる計算で速さを得る。割れない揃えで代金を払う。足並みを揃える以上、脆さも引き受ける。
これが、大勢の機械で一つのモデルを鍛えるときの、いちばん太い取引です。
二つの谺
モデルの中で、入力を一部の専門家だけに振り分ける門も、同じ匂いがあります。手分けで容量を稼ぎますが、選んだ先がばらけていれば、そこへ運ぶやり取りが要ります。
多くのエージェントに仕事を分けて同時に働かせるときも、同じです。手分けは速いですが、互いの結果を持ち寄って束ねる所で、待ちと食い違いが生まれます。
次は、待つか束ねるか
重い計算は、手分けで速くなります。
だが、みんなで一つを鍛える以上、一区切りごとに足並みを揃えるやり取りが要ります。そのやり取りは、台数とともに重くなります。やがて、計算ではなく、揃える時間のほうが、全体の速さを縛ります。
しかも、揃える以上、一台がこければ全体が止まります。
割れる計算と、割れない揃え。手分けの得は、揃えと脆さで払います。
そして、足並みを揃えるには、互いを待つ必要があります。
この「待つ」は、もっと身近な所でも効いています。一件ずつすぐやるか。少し待って、何件かまとめてやるか。待てば、まとめて捌けて得をします。けれど、待たされた一件は遅くなります。
次は、待つか、束ねるか、という取引へ進みます。
← 一覧へ