ストリーミング応答Streaming

答えができた分から先に送る方式

ポイント
  • ストリーミングは答えができ上がるまで待たず、できた断片から先に送る方式です。
  • 答えが終わる時刻はほぼ同じです。変わるのは最初の文字を見るまでの時間です。
  • 言語モデルはもともと断片を一つずつ作るので、ストリーミングはその過程をそのまま流し出すだけです。
  • 読んでいて違うと思えば途中で止められるので、時間と費用を節約できます。
  • 一方で全部受け取らないと判断できない作業には向きません。
目次

1たとえで理解する

大きな鍋でスープが煮えている前で、椀に一杯ずつよそってくれる配膳台を思い浮かべてください。鍋を丸ごと空にして卓に出すまで待てと言われたら、並んでいる人はしばらく立ちっぱなしです。お玉で一杯ずつすくって椀に注いでくれれば、受け取った人は自分の分がいっぱいになる前から食べ始められます。

ストリーミングはこのお玉です。モデルが答えを断片ごとに作るそばから、できた断片をそのまま画面に押し出します。文字がだらだらと流れ出るように見える理由です。

鍋を空にするまでにかかる時間はどちらでもほぼ同じです。変わるのは最初の一口をすくうまでの待ち時間です。ただし、すでに椀に注いだスープはすくい直せません。先に流してしまった部分は元に戻せないのと同じです。

2くわしく

答えはもともと断片単位で作られます

言語モデルは答え全体を一度に思い浮かべるわけではありません。ここまで積み重なった内容を見て次に来る断片を一つ選び、その断片をつないでまた一つ選ぶことを繰り返します。答えが長ければこの過程が数百回、数千回と続きます。

だから答えが終わる前でも前半部分はすでにでき上がった状態で置かれています。ストリーミングはそのでき上がった部分を抱え込まず、そのつど送り出すだけです。なかった速さを新しく作る技術ではなく、すでにできたものを握りしめない方式です。

画面に一文字ずつ出るように見えても、実際の単位は断片なので、二、三文字がまとめて飛び出すこともあります。短い単語一つがまるごと現れる瞬間がそれです。

最初の文字までの時間が縮まります

応答の速さを語るときは二つの時間を分けて見ます。最初の断片が届くまでの時間と、断片と断片の間隔です。ストリーミングをつけると前者の時間が大きく縮まります。後者の間隔はそのままです。

人が感じるもどかしさの多くは前者の時間から来ます。何もない空白の画面を数秒見ることと、すぐに文字が流れ始めることでは体感がまったく違います。実際に読む速さより文字が早く出てくれば、全部出そろうまで待ったのとほぼ同じ感覚で読めます。

答えが長いほど差が大きくなります。答えが長いほど完成までの時間も長くなるので、でき上がるまで抱え込んでいると空白の画面を見る時間も一緒に延びます。

途中で止められます

流れ出る答えを見ていて方向がずれたと気づけば、すぐに止められます。質問を直して聞き直すほうが速いからです。このときまだ作られていない部分はそもそも計算されないので、その分だけ時間も費用もかかりません。

プログラム側でも同じことをします。必要な部分だけ受け取って接続を切ったり、流れてくる途中で禁止された表現が出たらその場で中断させたりします。答えを全部受け取ってから検査する方式より反応が速くなります。

向かない場面もあります

答え全体がそろって初めて判断できる作業には、ストリーミングはあまり役立ちません。決まった形式に合っているか検査してから渡さなければならなかったり、答えの中の値を取り出してほかのプログラムに入れなければならなかったり、複数の答えの中から一つを選ばなければならなかったりする場合です。どのみち最後まで待つ必要があるので、画面に先に流してみても意味がありません。

受け取る側が複雑になる問題もあります。断片が届くたびにつなぎ合わせ、途中で接続が切れれば立て直し、最後に終わったという合図を受けて締めくくらなければなりません。画面に文字を見せる用途でなければ、一度に受け取るほうがかえって単純です。

3もう少し正確に

ストリーミングは、サーバーが応答を一つのかたまりとして閉じて送るのではなく、接続を開いたままできた断片を順番に流し出す通信方式です。最後には終わったという合図が別に来ます。断片の単位は文字ではなく、モデルが扱うトークンです。

たとえがずれる点もあります。お玉ですくう人は鍋の中にスープがどれだけ残っているかを見ていますが、モデルは答えがあとどれだけ続くかを前もって知りません。終わりが決まったあとで配るのではなく、断片を一つ作るたびに次を続けるかここで終わるかをその場で決めています。だから進み具合を正確に描くことができません。また先に流した断片をあとから書き直すこともできないので、前半で方向を誤るとそのまま引きずってしまいます。流れ出る速さが一定でないのもこのためです。利用者が集中すると断片の間隔が延び、答えがいったん止まってからまた流れ出すこともあります。

4やってみる

5よくある誤解

  • ストリーミングをつければ答えが早く終わると思われがちですが、実際には最後の文字が出る時刻はほぼ同じで、最初の文字が早く見えるだけです。

  • 文字が一つずつ出るので一文字ずつ作られると見なされがちですが、実際には文字より大きな断片の単位で作られるので複数の文字がまとめて現れます。

  • 途中で止めても料金は全部かかると思われがちですが、実際には作られなかった部分は計算されないので、その分だけ料金が少なくなります。

7ひとこと要約

つまりストリーミングはでき上がった答えを待って渡す代わりに、できた断片からお玉ですくうように送り出して、待ち時間を短くする方式です。

誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02