世界を動かす技術を、日本語で。

HNに聞く: GPT-4をローカルで動かせないのに、ChatGPTはどのように7億人のユーザーに対応できるのか?

290日前

概要

ChatGPTは 7億人規模の週次ユーザー に対応。 個人環境では GPT-4クラスのモデル を高速・省リソースで動かすのは困難。 大規模サービスでは GPUクラスタ だけでなく多様な 最適化技術 を活用。 低遅延・高スループットを両立するための 工夫 について解説。 大規模MLシステム構築経験者の視点を反映。

大規模LLMサービス運用の技術的工夫

  • モデル圧縮・最適化

    • 量子化や蒸留による モデルサイズ削減
    • 推論専用の最小限ネットワーク 設計
    • 重み共有やパラメータ効率化技術の活用
  • 分散推論・シャーディング

    • モデル並列化 による巨大モデルの分割処理
    • データ並列化 で複数GPU/サーバーに負荷分散
    • シャーディングで 部分的な重みのみロード し、メモリ効率向上
  • カスタムハードウェア

    • NVIDIA H100 など最新GPUの大規模導入
    • TPU やFPGAなど専用アクセラレータの活用
    • 高速ネットワーク(InfiniBand等)で ノード間通信最適化
  • バッチ推論・リクエスト集約

    • 複数ユーザーのリクエストを バッチ化し同時推論
    • GPU占有効率 向上と待ち時間削減
    • 適切なバッチサイズで 遅延とスループットのバランス調整
  • キャッシュとレスポンス最適化

    • 頻出プロンプトや出力のキャッシュ
    • レスポンス生成の 一部再利用 による高速化
  • ロードバランシングとオートスケーリング

    • トラフィック分散 と障害時の自動リカバリ
    • 需要変動に応じた リソース自動調整
  • ソフトウェア・インフラ最適化

    • CUDA/ROCmレベルでのチューニング
    • 推論エンジン(TensorRT, ONNX Runtime等)の 最適化
    • API Gateway やEdgeサーバーでの負荷分散

個人環境と大規模サービスの違い

  • GPU規模とネットワーク

    • 個人環境は VRAMや帯域の制約 が大きい
    • サービス側は 数万GPU規模のクラスタ を運用
  • 推論効率化技術の有無

    • 個人利用は フルモデル推論 が基本
    • サービス側は 圧縮・並列・バッチ など多層的な最適化
  • コストとスケーラビリティ

    • 個人では コスト効率重視 で妥協が必要
    • サービスは 高コストでも最大効率・信頼性重視

実際の運用現場での知見

  • 障害時の自動切替・冗長化

    • サービス停止を防ぐ 多重冗長構成
  • 継続的な最適化と監視

    • パフォーマンス監視 とリアルタイム最適化の自動化
  • 新技術の迅速導入

    • ソフトウェア・ハードウェア両面 での技術刷新サイクルの短縮

これらの工夫により、 ChatGPTのような大規模LLMサービス は、莫大なユーザー数・高負荷・低遅延という要求を満たしながら稼働。 個人環境との差は、 単なるGPU数の違い 以上に、 多層的な最適化と運用ノウハウ の蓄積にある。

Hackerたちの意見

私は毎日Googleでこれらのシステムに関わっているんだけど(これはあくまで私の意見で、雇用主の意見じゃないよ)。だから、問題のあらゆる側面について真剣に考えている賢い人たちがいるってことは言えるけど、それ以上のことはあまり言えないかな。ただ、同僚が書いたこれをシェアできるよ!アクセラレータアーキテクチャや、物事を速くするために考慮されていることについての素晴らしい説明があるよ。https://jax-ml.github.io/scaling-book/ 特に、君の質問は推論に関するもので、これはこの章の焦点だよ。https://jax-ml.github.io/scaling-book/inference/ 編集: もう一つの素晴らしいリソースはunslothのガイドだよ。彼らは様々なモデルに深く入り込んで最適化を見つけるのが本当に上手で、書き方もすごくいいんだ。Gemma 3nのガイドがここにあるし、他にも色々あるよ。https://docs.unsloth.ai/basics/gemma-3n-how-to-run-and-fine-...

Googleには自社のモデルの推論を、NVIDIAカードを借りるよりもずっと利益の出るTPUがあるんじゃないの?OpenAIは、主にMicrosoftとの関係やパートナーシップに依存してGPUを使って推論してるんじゃないかな?リンクありがとう、面白い本だね!

gemma 3nのunslothガイドに「> llama.cppや他の推論エンジンは自動で-を追加する。2つのトークンを追加しないで!」って書いてあるのはどういうこと?モデルをプロンプトする時は無視すべきだって?それを試したくなるのは何でだろう?変だね。

もう一つの素晴らしいリソースは、unslothガイドです。それと、LMSysの人たちもね。https://lmsys.org/blog/ Large Model Systems (LMSYS Corp.)は、オープンソースプロジェクトや研究を育成する501(c)(3)の非営利団体です。私たちのミッションは、大規模なAIモデルを誰でも利用できるようにすること。オープンモデル、データセット、システム、評価ツールを共同開発しています。最先端の機械学習研究を行い、オープンソースソフトウェアを開発し、広くアクセス可能な大規模な言語モデルをトレーニングし、トレーニングと推論を最適化するための分散システムを構築しています。

同じ説明だけど、もう少し神秘的じゃなくね:推論は(ほとんど)ステートレスなんだ。だから、100k台のマシンでメモリの整合性を保つ必要があるトレーニングとは違って、データを大きなマシンに小分けして送るだけでいい。彼らの推論マシンのスペックは知らないけど、私が働いてたところでは、研究用のマシンは全部8GPUのモンスターだった。モデルが(合計の)VRAMに収まれば、仕事はうまくいくよ。スケールするための秘密の材料は、工業的な金額の現金だった。確かにDGXもあったけど(面白い事実、NVIDIAは金メッキのDGXマシンを送ってきた)、密度は高くなくて、すごく高かった。ほとんどの大企業は堅牢なRPCとオーケストレーションを持っていて、メッセージのルーティングが難しいわけじゃなくて、持っているボックスにモデルを収めるのが大変なんだ。(でも、これは私の専門分野じゃないけどね)

だから、私は同時に、彼らが問題のあらゆる側面を本当に考えている賢い人たちだと言えるし、それ以上のことはあまり言えない。「1970年代のメインフレームスタイルのタイムシェアリングをやってる」ってね、これは簡単だった。

問題を解決する必要がないのに、すごく頭のいい人たちがたくさん働いているって、市場の配分の面白い側面だよね。

H100は2万ドルのカードで、80GBのvRAMを持ってるんだ。これを使った2Uラックサーバーを想像してみて、100万ドル分のカードが入ってるんだよ。さらに、これらのものがいっぱい詰まったラック全体や、他のコンポーネント(CPU、RAM、パッシブ冷却や水冷)も考えると、ラック1台あたり100万ドルになるんだ。運用コストやメンテナンスに必要なエンジニアの費用は含まれてないけどね。「安い」と言われるものでも、これらの計算ユニットの規模を理解してる人は少ないと思う。AIバブルが弾けると、良いローカルモデルを現実的に動かせるようになるんじゃないかな。10年後には、これらの100万ドルのサーバーがeBayで3000ドルになるかもしれないし、電気工事士が仮設のサーバールームやガレージに新しい240vコネクタを取り付けることになるかもね。

2Uラックに4つのH100はあまり印象的に聞こえなかったけど、正確だね:>一般的な1Uまたは2Uサーバーは、シャーシの設計に応じて2-4のH100 PCIe GPUを収容できる。>42Uのラックに20台の2Uサーバー(スイッチやPDUのスペースを考慮)を置くと、約40-80のH100 PCIe GPUを収容できる。

AIバブルが弾けなくても、10年後にそのサーバーがeBayに出品されるって予測は当たると思うよ。データセンターはハードウェアをアップグレードして、古いのを第三者に売るだけだから。

これに付け加えると、今の時代の企業レベルでは、「どうやって全ユーザーにサービスを提供するか」っていうよりも、投資家が最終的に投資回収が見込めると信じているかどうかが重要なんだよね。必要なインフラを手に入れるためには、いくらでも払うってこと。ジョブスケジューリングの最適化がなくても、必要なユーザーベースに応じて、必要なだけの倉庫を建てて、ラックを詰め込むだけさ。

10年後って何言ってるの?今ならeBayでDGX-1が1万ドル以下で買えるよ。256GBのvRAM(しかもHBM2だし)、NVLink対応、512GBのRAM、40コアのCPU、8TBのSSD、100GbitのHBA付き。Nvidiaブランドじゃない同等のマシンは約6千ドルだよ。重いし、信じられないくらい騒音がすごいし、1台で16Aの240V回路をほぼ使い切っちゃう。つまり、1時間あたり13,000 BTUの廃熱を出すってこと。

推論に必要な高帯域のリンクでNANDフラッシュを接続するのは実現可能なのかな。これらのNANDチップは内部に何百ものフラッシュダイが積み重なっていて、同じデータラインに接続されているから、同時に話せるのは1つだけでも、1GB/s以上の帯域を達成してるんだ。もし並列に接続できれば、チップごとに数百GBの帯域を持てるかもしれないね。

私の個人的な疑いは、公開されているモデルは思っているよりずっと少ない計算リソースを使っているんじゃないかってこと。現代のMixture of Expertsモデルでは、トップKサンプリングができて、いくつかの専門家だけを評価するから、SOTAモデルでも70-80Bの非MoEモデルと大して計算リソースが変わらないんだよね。

これは、Googleがダークファイバーを安く買って使ったのとは違うね。私の理解では、このハードウェアは長期的に高い故障率を持っていて、特に発生する熱のせいでね。

私が気になるのは、CoreweaveやLambda、その他の企業が、こういうラックのフリートを単にレンタルしていることが何を意味するのか。最終的には大きなプレイヤーに買収されるのか?需要が大幅に減るのか?キャピタルコストをカバーするために十分な販売ができるのか?

10年後にはゴミ捨て場行きだね。

たくさんのトリックがあると思うけど、家で実装できるもので、Cerebrasのパフォーマンスに大きく関わっているのが「推測デコーディング」だね。推測デコーディングは、小さいドラフトモデルを使って、計算とメモリを大幅に削減しながらトークンを生成するんだ。メインモデルは、そのトークンが生成される確率に基づいて受け入れるんだ。実際には、この方法で推論が3倍速くなることもあるよ。構造化された出力に関するもう一つのトリックは「ファストフォワーディング」で、これは唯一受け入れられる出力になることが分かっているトークンをスキップできるんだ。例えば、JSONを生成する時は、{ "": から始める必要があるって分かってるよね。これもJSONで応答する時に約3倍速くなることがあるよ。

gpt-oss-120bは、gpt-oss-20bを使ってLM Studioで推測ドラフトとして使えるけど、速度があまり改善されたかは分からないな。

君は数千ドル持ってるけど、彼らは数百億ドル持ってるんだ。1,000ドル対10,000,000,000ドル。彼らは君より7つ多くゼロがあるけど、それはユーザー数のスケール差のゼロ1つ少ないんだ:1人のユーザー(君)対700,000,000人のユーザー(openai)。彼らは、君がやっていることに対して、スケールで少なくとも1つか2つのゼロ分の効率を引き出すことに成功したんだ。それに、24GBのRAMを搭載したMacBookで、GPT-4がリリースされた時と同じくらいのローカルモデルを動かすこともできるよ。https://artificialanalysis.ai/?models=gpt-oss-20b%2Cgemma-3-...

700万人のユーザーを日や週でシフトさせるだけで、実際に各インタラクションで使う計算時間の数分を考慮すれば、ピーク時に同時に10万人以上のアクティブな推論セッションは見込めないかもしれない。逆に、自己ホストのユーザーは同じことはできないから、アイドル状態の計算を1週間貯めて一気に使うことはできない。そのため、必要なピーク生成レートに到達するためには、もっと高価なローカルハードウェアが必要になるんだ。

最も直接的な答えは、スケールで推論をバッチ処理できるから、複数のクエリを並行して処理する方が、ユーザーごとに1つのGPUをインタラクティブに専用するよりも効率的だってことだと思う。中級レベルのエンジニアリングトリックについてのサーベイが欲しいなら、私たちがFin AIブログに書いたこの投稿が面白いかもしれないよ。(OpenAIなどが持っている独自の技術レベルがまたあるかもしれないけどね):https://fin.ai/research/think-fast-reasoning-at-3ms-a-token/

OpenAIの秘密の一つには、数十億ドルの損失が含まれてるんだ。2024年には約50億ドルの損失が出る見込みだよ。 https://www.cnbc.com/2024/09/27/openai-sees-5-billion-loss-t...

研究開発に関することを全部やめて、既存のモデルだけを提供すれば、損益分岐点には達するだろうね。

700Mの週次ユーザー数は、どれくらいの負荷があるかをあまり示してないと思う。大事なのは、chatGPTのユーザーの大半が、毎日使ってる人でも99.9%はアイドル状態だってこと。1日1時間、週7日アクティブに使ってる人でも、96%はアイドルなんだよ。それに、多くの人があまり負荷のかからないモデルを使ってるしね。週次ユーザー数を強調してるのは、1日1回も使わないユーザーがかなりいるってことを示唆してる。だから、君の質問は、いくつかの簡単だけどまだ難しい問題に関わってくるんだ。- モデルをメモリに収めて、許容できるトークン/秒で動かせる個々のホストを作ること。- ピーク時の合計トークン/秒の需要を処理できるだけのホストを十分に作ること。- すべてのリクエストを効率的にホストにマルチプレクスすること。もちろん、細かいニュアンスはあるけど、正直言って、高レベルでは最後の問題は検索エンジンを運営するのとあまり変わらないように思える。すべての状態はチャットのトランスクリプトにあるから、同じチャットでの連続したインタラクションを同じサーバーで処理する必要はないと思う。負荷分散して、空いてるサーバーに振り分ければいいんじゃないかな。例えば、チャットが「考え中...」って言ってる時に、モデルが動いてるのか、ただ空いてるサーバーを待ってるのかは分からないしね。

簡単に言うと「バッチサイズ」だね。最近のLLMは「Mixture of Experts」と呼ばれるもので、同時に少数の重みだけをアクティブにするんだ。これで高いバッチサイズで動かすのがずっと効率的になる。もし家でGPT4を動かそうとしたら、モデル全体をロードするために十分なVRAMが必要になるから、何台かのH100が必要になるよ(それぞれ約4万ドルくらいする)。でも、個人利用だとそのカードを大幅に使いこなせてないって感じだね。なんか「Appleは何十億人のためにiPhoneを作れるのに、俺は自分のガレージで一つも作れないのはどういうこと?」って言ってるようなもんだ。

使われていない部分をメインメモリにロードして、よく使われる部分をVRAMに入れることってできるのかな。

いいメタファーだね。

基本的に、推論は多くのユーザーにわたってうまく分散されているんだよね。

20,000ドルの専門ノードが1秒間に500トークン(年間15,000トークン)を生産できると仮定しよう。機械の年間コストは5,000ドル。オーバーヘッドも5,000ドル。トークンあたり5人の専門家が必要だから、15,000メガトークンを生産するのに50,000ドルかかる。もし彼らが百万トークンあたり10ドルを請求するなら…うん、厳しいけど可能だね。ユーザーあたり年間100ドルかかるとしたら、百万トークンあたり10ドル(モデルによるけど)で、ユーザーごとに1,000万トークンの予算を組んでることになる。つまり、年間100冊の本を使う感じだね。答えは、ユーザーはAPIのコストほど使わないってことだと思う。実際の問題は、どうしてメガトークンあたり10ドルかかるのかってこと。1ノードあたり500トークンで、年間15,000メガトークンになる。だから、500トークンのノードは1ノードあたり150,000ドルを稼げる。生の専門家5人とルーターを考えると、専門家1人あたり年間20,000ドルくらいかな。もし1人の専門家に1キロワットの電源が必要で、電気代が1キロワットあたり0.1ドルなら、電気代は1,000ドルになる。ハードウェアは4年間使えるから、5,000ドルのコストがかかる。オーバーヘッドを加えたら、コストはおそらく10,000ドルくらいかな。フル稼働で10ドルの収益から5ドルの利益が出る。負荷が不均一だと何も稼げないけど、最適化と良い負荷分散があれば(もし1秒あたりのトークンを倍にできれば、かなりの利益が出るね)。

[遅延]