ローカルLLM推論を10倍速く実行する(244 TOK/s) PyTorch II
「ローカルLLM推論を10倍速く実行するためのPyTorch II(244 TOK/s)」
走る方法はたくさんありますが、ここでは簡単な概要をご紹介します
要点:
Pytorchチームは、下に最適化を構築することによって純粋に最適化する方法を考案しました
- Torch.compile:PyTorchモデルのコンパイラ
- GPU量子化:低精度演算でモデルを高速化
- 推論の高速化:小さな「下書き」モデルを使用して大きな「目標」モデルの出力を予測することでLLMを高速化
- テンソル並列処理:複数のデバイスでモデルを実行して高速化する
Pytorchはこれらすべてをわずか1000行のコードで実現しました。
以下にパフォーマンスの比較を示します。
さあ、1つずつ詳しく見ていきましょう!
バニラ(25トークン/秒)
これはLLaMA-7bのパフォーマンスです。
新しいコンパイラと巧妙な割り当てを使用した最初の3倍の向上(76トークン/秒)
LLaMA-7Bを使用することで、PytorchはCPUによって制約されるパフォーマンスの問題を分析しました。つまり、オーバーヘッドを効率化するための第一のターゲットです。
それに登場するのがコンパイラです。より大きな領域を事前コンパイルされた状態にコンパイルすることで、操作ごとのCPU呼び出しの数が減少します。これにより、下記のようにこのラッパーはギャップなく動作するようになります。
使用方法は、次のコードを使用するだけです
torch.compile(decode_one_token, mode="reduce-overhead", fullgraph=True)
内部で何が起こっているのでしょうか?
まず第一に、トークンが生成されるほど、kvキャッシュが成長し、キャッシュが成長するたびに再割り当てとコピー(高コストな計算)が必要になります。最大サイズを許容するためにPytorchは大きなキャッシュを導入しました。
次に、プリフィルフェーズ中に分離してコンパイルするために2つのストラテジーが必要です。プロンプト全体が動的に処理され、上記のコードのようにトークンがデコードされます。これらの2つのストラテジーを並列して使用することで、さらなる最適化が可能となります。これらの2つのストラテジーだけでも、推論のパフォーマンスを4倍に向上させることができます。
さらに34%の向上を得るには…
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles