はじめに
厳しい1on1って、アオのハコの聖地巡礼だったんだね... nikkieです。
今回は、サーベイ論文のごくごく一部を読んでのメモ書きです。
目次
- はじめに
- 目次
- 論文「Efficient Large Language Models: A Survey」
- Text-Generation-Inference (TGI)
- TGIと関連する技術
- 終わりに
論文「Efficient Large Language Models: A Survey」
Efficient Large Language Modelsについてのサーベイ論文です。
v4を確認しました。
Abstractでは、LLMは注目すべき能力を示しているが、その能力には相当のリソースを要求しており、LLMの効率という難題に取り組む技術開発の必要性が述べられています。
In this survey, we provide a systematic and comprehensive review of efficient LLMs research. (Abstractより)
Figure 3 に Efficient LLMs Methods の Taxonomy(分類)があります。
- Model-Centric(論文の2章)
- Data-Centric(論文の3章)
- Frameworks(論文の4章)
なお、リポジトリもあります
Text-Generation-Inference (TGI)
Figure 3のFrameworkの中で偶然目が止まった「TGI」。
過去にTGIのGuidance機能を取り上げました。
知っているサービングツールが挙がったことで、その部分だけでも読んでみました。
サーベイ論文では、TGIはInferenceのみサポートすると示されています(Table 2。フレームワークが Training / Fine-Tuning / Inference のどこをカバーするかを示す表です)
TGI supports a large variety of LLMs, and offers a wide range of features like tensor parallelism, continuous batching (Yu et al., 2022), efficient attention mechanisms like FlashAttention (Dao et al., 2022) and PagedAttention (Kwon et al., 2023), and quantization (BitsAndBytes (Dettmers, 2023), GPTQ (Frantar et al., 2023)) support. (p.35)
ここに登場するリンク(論文やGitHub)を確認します
TGIと関連する技術
テンソル並列(tensor parallelism)
『大規模言語モデル入門Ⅱ』第14章で完全に理解しました
モデルの各層を複数の GPU 間で分割する分散並列 学習手法 (PDF p.184)
continuous batching
これは初めて聞きました。
In this paper, we propose iteration-level scheduling, a new scheduling mechanism that schedules execution at the granularity of iteration (instead of request) where the scheduler invokes the execution engine to run only a single iteration of the model on the batch. (ORCA論文のAbstractより)
LLMのAPIがリクエストをバッチにまとめて文章の続きを生成するとき、既存では1つのリクエストへの文生成が終わってもバッチがすべて完了するのを待たないとレスポンスを返せませんでした。
この論文で提案するORCAでは、iterationレベルのスケジューリングを提案(論文中のFigure 3や4も一緒に見ています)。
このiterationというのが、どうやらプールにあるリクエストそれぞれの次のトークンをまとめて予測することみたいです。
Figure 4のメモ
TGIの実装は論文の5のImplementationと重なる要素があるように思われました(gRPCなど)
効率的なアテンション機構
FlashAttention
実装面でハマった記事
PagedAttentionはvLLMの実装が出てきました。
このサーベイによると、PagedAttentionはTGIでも使えるようですね(宿題事項)
量子化(quantization)
BitsAndBytesは過去に取り上げたことがあります。
GPTQは初めて知りました。
In this paper, we address this challenge, and propose GPTQ, a new one-shot weight quantization method based on approximate second-order information, that is both highly-accurate and highly-efficient. (GPTQ論文のAbstractより)
実装はこちら(GPTQの理解は宿題です)
終わりに
論文「Efficient Large Language Models: A Survey」のうち、Text-Generation-Inferenceの箇所だけ読みました。
TGIはLLMの推論で使った経験がありますが、どんな機能があるかは知り尽くしていません。
論文の記載から色々できるんだなと改めて知りました。
ここで知ったキーワードを元にTGIのドキュメントを見るのも理解を深めるのによいかもしれません。
他にもvLLMなど載っていたので、どんなツールか掴むうえでこのサーベイ論文を読んでみてもよいかもと思っています