LLM推論高速化手法が推論結果に 与える影響の分析
Analysis of the effects of LLM inference acceleration methods
W&B Fully Connected 2024
株式会社リクルート Megagon Labs 松田寛
Created on October 6|Last edited on October 10
Comment
About Author
松田 寛 - Chief Research Scientist at Megagon Labs
- 出身 NAIST 自然言語処理学講座 博士前期課程 2000年修了
- 所属 株式会社リクルート Megagon Labs, Tokyo
- 兼務 国立情報学研究所 外来研究員, 国立国語研究所 共同研究員
- 専門
- 日本語LLMの構築と評価 - LLM-jpでW&B様にもご貢献いただいてます
Megagon Labs - リクルートのAI研究機関
The Research Institute of AI Technologies of Recruit Co., Ltd.
- 2016年発足(旧Recruit Institute of Technology)
- カリフォルニア(Mountain View)と東京(サウスタワー)の2拠点で活動
- MEGA-gon: 100万辺多角形 ⇒ 無数の知識がつながり世界と調和する
- 自然言語処理技術(LLM含む) × 大規模データの融合領域から技術展開
- 研究成果は論文やOSSとして公開 ⇒ アカデミアおよび産業界に貢献
- 社内の各事業領域と連携 ⇒ 迅速な技術の実用化
Abstract
- LLMの利用の広まりと共にオープンモデルや独自構築モデルを限られた機材・予算で効率的にサービングする必要性が高まっている
- そうした需要に対してLLMの推論を高速化するライブラリが提供されており、その性能を速度と出力品質の両面から評価した
- NVIDIA A100-80GB および L4-24GB を用いて Hugging Face Transformers をベースラインとして vLLM および NVIDIA/TensorRT-LLM でバッチ推論+量子化の効率的な組み合わせ方を探索した
- スループット面では全般に TensorRT-LLM の性能が vLLM を上回った
- vLLM・TensorRT-LLM ともに SmoothQuant によるINT8量子化したモデルがスループットと出力品質の両面で優れた性能を示した
- Llama 3.1 8B + 4bit量子化の組み合わせでは出力品質の低下傾向が確認された
- 今回の評価実験は主に2Kコンテキストの範囲内で行ったため、より長いコンテキスト長では異なる傾向となる可能性がある
- Prefix Caching は llm-jp-eval のプロンプトのように前方一致度が高いタスクでかなりの速度向上効果が見込まれる
LLM Inference Performance Tuning
Auto-regressive Decoder Model
- Language Modelは前方から順に文脈から最も確率の高い次のトークン(=単語)を1つずつ予測する(Next Token Prediction)

Next Token Predictionの予測確率の例
- Next Token Predictionベースの事前学習は下図でE_iまでの入力からT_i+1を予測する形で定式化される
- Auto-regressive Decoder Modelではモデルが予測した次トークンを���列末に追加して次トークン予測を繰り返し行う。
Batch Inference and GPU Memory
- 前述のAuto-regressive Decoder ModelはそのままではGPUの計算効率が非常に悪い
⇒ 複数の系列を束ねてバッチ化することでGPUメモリ帯域のボトルネックを緩和できる

⇒ バッチ内で系列長が異なることに起因する処理待ちを回避するさらなる工夫が各推論エンジンで実装されている
- GPUメモリはバッチサイズを増やすためにできるだけ多く使いたい
- パラメータ占有容量 = parameter_size * precision_in_bytes
- Llama-3.1-8B, BF16 の場合は 約16GB (さらにマージンが10%程度必要)
- KV Cache占有容量 = batch_size * 2 * max_seq_len * num_layers * hidden_size * precision_in_bytes
- Llama-3.1-8B, BF16, max_seq_len=128K, batch_size=1 の場合は 約2GB
- GPUメモリが大きければ batch_size を大きく取れる ⇒ 計算効率が向上する
- L4-24GB の場合、Llama-3.1-8B では batch_size=3 が限界
- L4 に対して A100 は FLOPs で2.5倍、メモリ帯域で6倍の差があるが、さらにバッチサイズでも差は広がる
- 小容量GPUでバッチサイズを確保するための方策
- max_seq_lenを限界まで減らす
- 量子化を用いてパラメータ占有容量を削減する
- Multi-GPU 環境の場合は Tensor Parallelism (TP) や Pipeline Parallelism (PP) を適用する
Quantization
- 一般にLLMのcheckpointは16bit浮動小数点(FP16 or BF16)で保存・配布されることが多い
- 量子化により8bit・4bitまで精度を落とすことでパラメータのGPUメモリ占有容量を大幅に削減できる
- パラメータのうちEmbedding, Layer Norm, Activationなど精度が要求される部分には量子化を適用しない
- 一般に8bit程度までは推論出力品質への影響は少ないが、4bitでは目に付く劣化が生じる場合が多いと言われている
- 量子化は大きな技術テーマであり時間の都合で詳細は次の資料などを参照いただきたい
Model Parallelism
vLLM・TensorRT-LLMではMulti-GPU環境でモデル並列化手法を用いることができる。
Tensor Parallelism
- LLMの各レイヤの重み行列を行列分解して複数のGPUに分散して割り当てる
- 容量分散に加えてメモリ帯域分散効果もあり生成フェーズの高速化も期待できる
- GPU間通信量が多いためNVLinkを備えていない環境ではスケールしずらい
Pipeline Parallelism
- LLMのレイヤを単位として複数GPUに分散してパラメータを割り当てる
- 前段の処理が終わるまで待ちが生じるためTPより効率で劣る
- 数百B級のモデルを複数ノードで並列化する場合に用いられる
Prefix Caching
LLMに入力されるプロンプトの先頭部分にあるシステムプロンプト・指示内容・Few-shot事例などが繰り返し用いられる場合は、先頭部分の計算結果を保持して使い回す単純なheuristicsによってかなりの処理をスキップできる。
マルチターンの対話では直前の計算結果を再利用することで応答時間を短縮できる。
Speculative Decoding
同じトークナイザを用いる大小2つのモデル(draft modelとtarget mode)を用意し、小規模なdraft modelの生成結果を用いてtarget modelの生成を加速するアプローチ。vLLM・TensorRT-LLMともに実装が公開されている(一部はexperimental)。
Strengths of vLLM
- 活発なオープンコミュニティ ⇒ 幅広いモデルへの対応+新モデルへの迅速な対応
Strengths of TensorRT-LLM
- NVIDIA GPUへの深い最適化+新GPUアーキテクチャへの迅速な対応
- 各種モデルを動作させるためのサンプルコードの充実
About LLM-jp and llm-jp-eval
Experiments
Future Work
Conclusion
Acknowledgement
本レポートに記載の実験は、株式会社リクルート Megagon Labsで調達したGCPインスタンス上で実施しました。
Weights & Biasesの鎌田啓輔氏には、実験ログと本レポート上のグラフ・テーブルの連動化、および、llm-jp-evalのoffline inference機能へのwandb loggingの実装において、多大なサポートをいただきました。
東京大学・宮尾研究室のNamgi Han氏には、llm-jp-evalのoffline inference機能実装において、有益な助言をいただきました。
東京科学大学・横田研RAのお二人には、vLLM・DeepSpeed-MIIの初期評価を担当いただきました。
LLM-jpをはじめ多くの研究者・技術者の皆様には、日本語LLMの構築や推論について数多くの学びの場をご提供いただきました。
この場をお借りして、皆様に感謝申し上げます。
Add a comment