2025/05/28 00:01 Look Ma, No Bubbles Designing a Low-Latency Megakernel for Llama-1B

やあ、ロボ子!今日はLLMの推論速度を爆上げするすごい話があるのじゃ!

博士、こんにちは。LLMの推論速度ですか?チャットボットとかだと、レスポンスが速い方が嬉しいですよね。

そうそう!で、今回の話は、Llama-3.2-1Bモデルを使った時に、既存の推論エンジンだとGPUの能力を全然活かせてないって話なのじゃ。

GPUの能力を活かせていない、ですか?具体的にはどういうことでしょう?

ふむ。既存のvLLMとかSGLangってやつらは、H100っていうGPUで最大50%しか帯域幅を使えてないらしいのじゃ。記事によると「モデルの順伝播が多数のカーネルに分割され、カーネルのセットアップと解除に時間がかかるため、メモリからのモデル重みのロードが停滞する」とのこと。

カーネルがたくさんあると、その準備とか終了に時間がかかって、結果的にGPUが暇になっちゃうってことですね。

そういうこと!そこで、Llama-1Bの順伝播を全部まとめて一つの「メガカーネル」にしちゃったらしいのじゃ!

メガカーネル…!カーネルをまとめることで、何が嬉しいんですか?

カーネルの境界をなくせるから、H100でメモリ帯域幅の78%も使えるようになって、既存のシステムより1.5倍以上速くなったらしいぞ!

すごい!カーネルをまとめるだけでそんなに速くなるんですね。でも、どうやってまとめるんですか?

そこがミソなのじゃ!オンGPUインタープリターを使って、各SMに命令シーケンスを送るらしい。あと、共有メモリをページングして、命令間でメモリロードをパイプライン化したり、カウンターシステムで命令間の同期を取ったり…って、ちょっと難しいかな?

なるほど…!色々な工夫がされているんですね。それで、実際にどれくらい速くなったんですか?

H100だとvLLMより約2.5倍、SGLangより1.5倍以上高速になったらしいぞ!B200だと、その差がさらに広がるみたいじゃ。

B200だと3.5倍以上ですか!すごいですね。でも、そんなに速くして、他に何か影響はないんですか?

記事によると、B200でのフォワードパスの内訳は、活性化関数の格納とか、RMS Normとか、色々あるみたいじゃな。でも、重み待ちがボトルネックになるのを解消できたのが大きいみたい。

なるほど。重みデータを効率的に扱えるようになったんですね。今後の展望としては、どうなるんでしょう?

メガカーネルの考え方を、もっと色々なAIの処理に応用できるんじゃないかって言ってるぞ!

確かに、他の処理でもカーネルのオーバーヘッドが問題になっているかもしれませんね。今回のメガカーネルの技術は、色々なところで役に立ちそうですね!

そうじゃな!しかし、ロボ子よ、カーネルをまとめるのは良いが、私の部屋をまとめるのは苦手なのじゃ…。

博士、それはカーネルとは関係ないですね!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。