LLMを本当に速く動かすためのライブラリ──AITERとMoRI
ROCmスタックのパフォーマンスを底上げする2つのライブラリがある。Jung氏はハンズオンに先立ち、このライブラリについて丁寧な解説を行った。
まずは「AITER(AI Tensor Engine for ROCm)」。LLMの内部はトランスフォーマーブロックと呼ばれる計算の積み重ねで動いているが、そのうちAttentionと呼ばれる部分は計算リソースを大量に消費し、素朴なPyTorchの演算子ではGPUの性能を十分に引き出せない。AITERはこの部分を高度に最適化した専用カーネル群だ。プロンプト処理を行う「Prefill」フェーズと、1トークンずつ生成する「Decode」フェーズとでは処理の特性がまったく異なるため、それぞれに特化したカーネルを用意している。DeepSeekのような最近のモデルが採用しているMLA(Multi-head Latent Attention)やMoE(Mixture of Experts)アーキテクチャにも対応済みで、vLLMとSGLangはすでにAITERに依存する形で動作している。開発者はVLLM_ROCM_USE_AITERという環境変数をオンにするだけで、その恩恵を受けられる。
もう一つが「MoRI(Modular RDMA Interface)」だ。大規模なLLMを複数のGPU・複数のサーバーにまたがって動かす「P/D分離(Prefill/Decode分離)」アーキテクチャでは、サーバー間でKVキャッシュのデータを高速にやり取りする必要がある。MoRIはその通信を担うライブラリで、NVIDIAのNCCLやNIXLに相当する役割を果たす。AITERと同様、完全オープンソースとして提供されている。
AMD GPUクラスターでマルチエージェントを動かす
午後はいよいよハンズオンだ。参加者はJupyterノートブックを通じて、TensorWaveが提供するMI355Xを16基搭載したクラスター(8基×2台)に接続し、vLLM上でLLMを動かす実習を行った。vLLMとは、LLMの推論・サービングに特化したオープンソースフレームワークで、OpenAI互換のエンドポイントを数行のコードで立ち上げられる。商用AIパイプラインのバックエンドとして広く使われている。
ハンズオンで実際に作ったのは、2つのAIエージェントを組み合わせたマルチエージェントシステムだ。役割の異なるモデルを組み合わせることで、単一モデルでは難しいタスクをこなせるようになる。1つは司令塔となるOrchestratorエージェント(Qwenモデル)、もう1つは食品・医療の専門家として振る舞うConsultantエージェント(マルチモーダルモデル)だ。
「キットカットの原材料は?」という質問を投げると、OrchestratorがMCP(Model Context Protocol)経由でウェブ検索ツールや食品成分データベース(Kaggle: OpenNutrition)にアクセスし、30Bモデル単体では得られない詳細な回答を生成する。さらに、バーコードの画像を読み込ませるとビジョンモデルが数値を抽出してAPIを叩き、成分の健康リスクまで分析するデモも披露された。ワークショップで使用したコードはGitHubで公開されている。
