- 約1.8兆パラメータと120層で構成された超大規模言語モデルで、GPT-3比で10倍以上の規模
- 16個のexpertを持つ**Mixture of Experts(MoE)**構造で、各forward passごとに2個のexpertだけを活性化してコストを削減
- 約13兆トークンで学習され、テキスト2 epoch、コード4 epochを適用
- ビジョンエンコーダを別に持つマルチモーダル構造で、テキスト事前学習後に約2兆トークンを追加ファインチューニング
- 約25,000台のA100で90〜100日間学習し、推定学習コストは約6,300万ドル
パラメータ数とモデル規模
- GPT-4はGPT-3の10倍以上の大きさで、合計約1.8兆パラメータを120層にわたって保有すると推定される
- 各forward pass(トークン1個生成)では約280Bパラメータと約560 TFLOPsのみを使用
- 純粋なdenseモデルであれば約1.8兆パラメータと約3,700 TFLOPが必要だったはずで、それとの対比
- attention用の共有パラメータは約55B水準
Mixture of Experts(MoE)構造
- OpenAIはMoEモデルの活用によってコストを妥当な水準に維持
- モデル内で16個のexpertを使用し、各expertはMLP基準で約111Bパラメータ
- 各forward passごとに2個のexpertへルーティング
-
MoEルーティング
- 学術界ではトークンごとのexpert選択のための高度なルーティングアルゴリズムが多く議論されているが、現在のGPT-4のルーティングはかなり単純だとされる
-
Expert数選択のトレードオフ
- MoEではすべての部分が各トークン生成に使われるわけではないため、推論処理が非常に難しい
- 一部領域がアイドル状態のまま残り、ユーザー提供時の利用率が低下
- 研究上は64〜128個のexpertが16個より低いlossを達成するが、これは純粋に研究レベルの話
- expert数が多いと多様なタスクで汎化が難しくなり、収束もさらに難しくなる
- こうした理由からOpenAIは保守的に16個のexpertを選択
データセット
- GPT-4は約13兆トークンで学習されており、これはユニークトークン数ではなく、epochの繰り返しをトークンとして合算した数値
- テキストデータ2 epoch、コードデータ4 epochを適用
- ScaleAIおよび社内で確保した数百万行のinstructionファインチューニングデータを含む
-
データセットの混合構成
- 13兆トークンのうち、CommonCrawlとRefinedWebがそれぞれ5兆トークン
- epochの重複を除くと、出所不明の「秘密データ」が残る
- twitter、reddit、youtube由来の一部があるという噂も存在
- 推定ソースとしてLibGen(400万冊超の書籍)、Sci-Hub(8,000万本超の論文)、GitHub全体などが挙げられる
- 欠けているデータは手作業で収集した大学教材データセットだという見方もある
- txt変換後にself-instructでinstruction形式へ加工しやすい
- これにより、専攻と無関係にGPT-4が「賢い」という印象を形成
- GPT-4に記憶された書籍の一部を強制的に抽出して学習データを把握しようとする論文も存在
- 一部の書籍については非常によく知っており、学習されたことが確実で、Project Euler問題の固有idまで記憶
GPT-4 32Kコンテキスト
- 事前学習段階では**8kコンテキスト長(seqlen)**を使用
- 32k seqlen版は、事前学習後に8kモデルをファインチューニングした成果物
バッチサイズ
- クラスター上で数日にわたり段階的にバッチサイズを拡大し、最終的に6,000万バッチサイズを使用
- すべてのexpertがすべてのトークンを見るわけではないため、expertあたりでは約750万トークン水準
- 実際のバッチサイズはこの数値をseq lenで割って算出する必要がある
並列化戦略
- すべてのA100 GPUにまたがる並列化のため、8-wayテンソル並列化を使用(NVLinkの限界)
- その先では15-wayパイプライン並列化を適用
- ZeRO Stage 1を使った可能性や、block-level FSDPを使った可能性がある
-
FSDPを使わない理由
- 確保したハードウェアインフラの一部が旧世代である可能性
- ローカルな計算クラスターでは、運用停止を避けるため複数の「段階」に分けてインフラを更新するのが一般的
学習コスト
- GPT-4の学習FLOPSは約2.15e25で、約25,000台のA100で90〜100日間、MFUは約32〜36%
- 非常に低い利用率は、チェックポイント再開を引き起こした過度な障害回数に起因
- A100を1時間あたり約$1と仮定すると、この学習だけで約6,300万ドルかかったと推定
- 現在基準では約8,192台のH100で約55日、H100を1時間あたり$2とすると約2,150万ドルで事前学習が可能
GPT-4の推論コスト
- GPT-4は175BパラメータのDavinciと比べて3倍のコスト
- より大きなクラスターが必要で、利用率も大幅に低いため
- コスト推定: 128台のA100でGPT-4 8k seqlenを推論する場合、1kトークンあたり$0.0049セント、128台のH100基準では$0.0021セント
Multi-Query Attention(MQA)
- OpenAIも他社と同様にMQAを使用
- headが1個だけで済むため、KVキャッシュのメモリ容量を大幅に削減
- それでも32k seqlenのGPT-4は40GB A100では動作せず、8kでは最大バッチサイズが制限される
Continuous Batching
- OpenAIは可変バッチサイズとcontinuous batchingの両方を実装
- 一定水準の最大遅延時間の許容と、推論コスト最適化を同時に達成
ビジョン・マルチモーダル
- テキストエンコーダと分離された別個のビジョンエンコーダをcross-attentionで接続した、Flamingoに類似したアーキテクチャ
- 1.8兆パラメータの上に追加パラメータを付加
- テキスト専用の事前学習後、約2兆トークンで追加ファインチューニング
- ビジョンモデルは当初から学習しようとしたが成熟度が不足していたため、リスク低減のためテキストから開始
- ビジョン機能の主な目的は、Webページを読み、画像・動画内容を書き起こす自律エージェントの実装
- 学習データには、レンダリングされたLaTeX/テキスト結合データ、Webページのスクリーンショット、YouTube動画フレームのサンプリング、およびWhisperベースの書き起こしが含まれる
Speculative Decoding
- GPT-4推論でspeculative decodingが使われている可能性がある(100%確実ではない)
- より小さく高速なモデルで複数トークンを先にデコードし、その後大きなoracleモデルへ単一バッチで投入
- 小さいモデルの予測が当たれば、大きなモデルが同意して複数トークンを1バッチでデコード
- 大きなモデルが拒否した場合、残りのバッチは破棄して大きなモデルで継続
- 最近のGPT-4品質低下陰謀論は、oracleモデルがspeculative decodingモデルの低確率シーケンスを受け入れているためである可能性
推論アーキテクチャ
- 推論は128 GPUクラスターで動作し、複数のデータセンターに多数のクラスターが存在
- 8-wayテンソル並列化および16-wayパイプライン並列化で実行
- 8 GPUノードあたり約130Bパラメータを保有
- モデルは120層のため15ノードに分散配置
- 埋め込みも計算する最初のノードは、層数がさらに少ない可能性がある
- この数値からすると、chinchilla最適値に従うなら2倍のトークンで学習していたはずで、これは高品質データ確保の難しさを示唆する
1件のコメント
Hacker Newsの意見
以前にもここ https://news.ycombinator.com/item?id=36671588 とここ https://news.ycombinator.com/item?id=36674905 に投稿されていた
元の出典は https://www.semianalysis.com/p/gpt-4-architecture-infrastruc... で、Twitter側の投稿は実際のブログ記事をほぼ言い換えたもののようだ。なのでツイートは削除されたように見える
Mixture of Experts(MoE) を使っているというのは新しくて非常に興味深く、それをどう動かしているのかもっと知りたい。実装のバリエーションが、人々が観測した出力品質の揺らぎを説明できるかもしれない。ここで言及されている ビジョンモデル についても、数か月前のデモがいくつかある以外はまだ知られていることが少なく、公開を待っているところだ
人工知能の文脈で「MoE」は通常「Mixture of Experts」を意味し、問題を下位問題に分け、それぞれの下位問題を特化した「専門家」(モデル)に解かせ、その出力を結合する機械学習手法だという
GPT-4がMoEを使うというのが新情報だったなら、その主張にある程度の信憑性を与えることになるのかもしれない
これは大規模言語モデルが汎用人工知能とはまったく異なることを示している。電卓をつなぐのはその場しのぎにすぎず、有用なその場しのぎではあっても、科学ができるようになるわけではないと思う
この投稿は少なくとも今は無料で見られる
これが本当なら、訓練には 21ヨタフロップス が使われたことになる。最後に yotta- という接頭辞をどこで見たのがいつだったか思い出せない
そして GPT-4 の訓練コストは1年前の3分の1の水準になった。大規模言語モデル訓練の価格が下がる速度は本当に驚異的で、オープンソースには良い知らせだ。Google のメモが moat はないと言っていたのは正しかった
米の卸値が kg あたり 0.001ドルだとしても、私が100万ドルを持っていてあなたが1000ドルを持っているなら、私は依然としてあなたの1000倍の米を買える
さらに多くの用途では、より賢いほうがより良い。数セントでより正確な答えを買えるなら、その数セントは常に払う価値がある。より多くのハードウェアとより多くのデータで、より大きくより良いモデルを訓練できる限り、それが moat だ
技術には感嘆しているが、今回はそれが将来どんな意味を持つのか想像しにくく、怖さを感じる。おそらくこれがオープンウェブを殺し、関連法が通ってオープンウェブを葬ることになるのだと思う
「新しい GPT-4 の品質が低下したという陰謀論は、オラクルモデルが推測デコーディングモデルのより低い確率のシーケンスを受け入れたことが原因かもしれない」という話は、結局のところ 推測が当たっていた可能性 を認めて具体的なメカニズムまで示しながら、問題を提起した人たちを侮辱し続け、ガスライティングしているようなものだ
証明されていないので理論であり、人々が OpenAI が自分たちのサービスを意図的に劣化させたと考えているので陰謀論なのだ
この人は自分が何を言っているのか分かっていないようだ。Twitter にこういう たわごと をずっと投稿している。だいたいコピペして味付けを少し足した程度だ
たとえば MoE はそうだとしても、1110億パラメータの専門家 16個 というのは筋が通らない。GPT-3 ですら 1750億パラメータだったし、今後ベースモデルの規模を縮小するとも思えない。もっとありそうな数字は、モデルあたり約2200億パラメータで専門家モデル8個であり、全体の推論コストは同じだ
13兆トークン の訓練データという数字も、空中から持ってきたように見える
Google は大規模言語モデルの拡張のために Mixture of Experts を研究してきた。2022年に発表した GLaM モデルは 1.7兆パラメータと64個の専門家を持つ
https://icml.cc/media/icml-2022/Slides/17378.pdf
「Sam Altman は GPT-4 が 2200億パラメータ で、16方向の混合モデルに8セットの重みを使っていることを話さないだろう」と George Hotz が最近の Lex Fridman とのインタビューで語っていた
Lex の反応を見ると、彼もこれが事実だと知っているように見えた
これは根拠が薄い。GPT-4が正確にどう動作しているかを知っているのはOpenAI社員だけで、他の人は推測するしかない
ただし秘密のソースと堀はデータにある。OpenAIが競技プログラミング参加者に金を払って、計算量のような情報を含むコードを書かせ、コメントを付けさせたという噂を聞いたことがある
TwitterがAPIアクセスに法外な料金を課し、スクレイピング防止策を取っているのに、Thread Readerのようなプレミアムな無料サービスがいまだにどうやって運営されているのか不思議だった
読み取り権限のある最安のAPIプランは月100ドルで1万ツイートを読む程度なので、こういうページはオンデマンドでせいぜい500ページほどしか作れない
const puppeteer = require('puppeteer');みたいな話になるのだろうこの記事は、「すべての数字を知っている」と言わんばかりの確信に比べて妙な部分がある
「今日では事前学習はH100約8192台で約55日、H100が1時間2ドル換算で2150万ドルで可能だ」とあるが、なぜシステム規模と学習時間の両方を任意の数字で調整しているのか分からない
またMoEは、各トークン生成ごとにモデルの全ての部分が使われるわけではないため推論で扱いにくく、一部は遊び一部は使われるのでユーザー向けサービス時の利用率に悪影響を与えると言っているが、何の利用率なのか不明だ。メモリか? 推論利用率がそんなに心配なら、単に非MoEモデルを立てればいいのではないかとも思う
MQAについても、「そのためヘッドは1つだけでよく、KVキャッシュのメモリ容量を大幅に減らせる」としていたが、近いが間違っている。KeyとValueのヘッドは1つでよいが、Queryヘッド数はそのままだ
私の推測では、ある程度知識のある人が2020年のスケーリング論文の式を使って、数学的には正しい架空のシステムを作ったのだと思う。私も似たような文章をもっともらしくでっち上げることはできるだろうが、自分のレベルを超えているので、似てはいても確実に間違うはずだ。だからこの感触はかなり怪しい
MQAの要点は、この共有によってKVキャッシュが一般的な場合よりヘッド数分だけ小さくなることだ。複数のQueryヘッドがあってもキャッシュサイズには影響せず、メモリ容量と帯域幅の両方でMHAデコーディングの制約要因はキャッシュである