|
CPU を使用すれば大規模なモデルも実行でき、そのパフォーマンスは NPU/GPU をも上回ります。 実際、エッジでのモデルの展開を最適化するために、Microsoft Research Asia はT-MACと呼ばれる新しいテクノロジを提案しています。 このテクノロジーはコスト効率を優先し、消費リソースを抑えながらエッジ モデルをより高速に実行できるようにします。 どうやってそれをやったんですか? 低ビット、高言語モデルをCPU上で効率的に展開一般的に、携帯電話、PC、Raspberry Piなどのエッジデバイスで大規模な言語モデルを使用するには、ストレージとコンピューティングの問題を解決する必要があります。 一般的なアプローチはモデル量子化です。これは、モデルのパラメータを 4 ビット、3 ビット、またはそれ以下のビット数に量子化し、モデルに必要なストレージ スペースと計算リソースを削減します。 ただし、これは推論を実行するときに混合精度行列乗算(mpGEMM) が必要になることも意味します。これは、計算に低精度の重みと高精度の活性化ベクトルを使用することを伴います。 ただし、既存のシステムとハードウェアでは、この混合精度の行列乗算がネイティブでサポートされていないため、通常は低精度の重みを高精度に戻す必要があります。このプロセスは、逆量子化と呼ばれます。 しかし、この方法は非効率的であるだけでなく、ビット数をさらに削減してもパフォーマンスの向上は得られません。 これに対応して、新しいテクノロジ T-MAC は、ルックアップ テーブル (LUT) に基づく計算パラダイムを採用し、逆量子化の必要性を排除して、混合精度の行列乗算を直接サポートします。 このように、T-MAC は推論パフォーマンスを向上させるだけでなく、モデルをより統一されスケーラブルにし、リソースが制限されたエッジ デバイスへの展開に特に適したものになります。 さらに、T-MACはNPUやGPUなどの専用ハードウェアアクセラレータに依存せず、 CPUのみでモデルを展開できます。場合によっては、推論速度が専用アクセラレータの速度を上回ることもあります。 T-MAC の主な革新性は、従来の乗算累積 (MAC) 計算パラダイムではなく、ルックアップ テーブル (LUT) ベースの計算パラダイムを使用している点にあります。 T-MAC は、ルックアップ テーブルを使用した低ビット計算を直接サポートするため、他のシステムで必要な逆量子化操作が不要になり、乗算と加算の操作回数が大幅に削減されます。 実験を通じて、T-MAC は優れたパフォーマンスを実証しました。 最新のQualcomm Snapdragon X Eliteチップセットを搭載したSurface AI PCでは、3B BitNet-b1.58モデルの生成速度は毎秒48トークン、2ビット7Bラマモデルの生成速度は毎秒30トークン、4ビット7Bラマモデルの生成速度は毎秒20トークンに達します。 これはNPUのパフォーマンスをも上回ります! llama-2-7B-4bit モデルを展開する場合、NPU は 1 秒あたり 10.4 トークンを生成できますが、CPU は T-MAC の助けを借りて、2 つのコアのみを使用して 1 秒あたり 12.6 トークンを達成でき、1 秒あたり 22 トークンまで急上昇することもできます。 これらはすべて、人間の平均的な読み取り速度をはるかに上回っており、元の llama.cpp フレームワークと比較して4 ~ 5 倍の改善を示しています。 △T-MAC上のBitNet(LUTベース)とllama.cpp(逆量子化ベース)の比較Raspberry Pi 5のようなローエンドデバイスでも、T-MAC は 3B BitNet-b1.58 で1 秒あたり 11 トークンの生成速度を達成できます。 同時に、T-MAC には消費電力に関しても大きな利点があります。 同じ生成速度を実現するために、T-MAC では元の llama.cpp の 1/4 ~ 1/6のコア数しか必要としないため、エネルギー消費を削減しながら、コンピューティング リソースを他のアプリケーションに残すことができます。 注目すべきは、T-MAC の計算パフォーマンスはビット数が減少するにつれて直線的に増加することです。これは、逆量子化に基づく GPU や NPU では観察するのが難しい現象です。 これにより、T-MAC は 2 ビットのシングル コアで 1 秒あたり 10 トークン、4 ビットのコアで 1 秒あたり 28 トークンを達成できるようになり、NPU のパフォーマンスを大幅に上回ります。 新しい計算パラダイムの採用さて、効果については説明したので、次は T-MAC の技術的な詳細について詳しく見ていきましょう。 行列の乗算では乗算は必要ありません。テーブル (LUT) を参照するだけで済みます。低ビットパラメータ(重み)の場合、T-MAC は各ビットを個別にグループ化し(たとえば、4 ビットのグループ)、これらのビットをアクティベーションベクトルで乗算し、すべての可能な部分和を事前に計算してから、LUT を使用して保存します。 その後、T-MAC はシフトと累積演算を採用し、1 から 4 までのスケーラブルなビット幅をサポートしました。 このように、T-MAC は CPU 上の非効率的なFMA (乗算累積) 命令を廃止し、代わりに消費電力が低く効率の高い TBL/PSHUF (ルックアップ テーブル) 命令を使用します。 △ 既存の逆量子化実装パラダイムに基づく混合精度GEMVと、新しいルックアップテーブルパラダイムに基づくT-MACビットベースの計算がデータ型ベースの計算に置き換わります。従来の逆量子化ベースの計算は、実際にはデータ型中心の計算であり、異なるデータ型ごとにカスタマイズが必要です。 W4A16 (重み int4、アクティベーション float16) や W2A8 などのアクティベーションと重みの各ビット幅の組み合わせには、特定の重みレイアウトと計算カーネルが必要です。 たとえば、W3 レイアウトでは、2 ビットと別の 1 ビットを別々にパックし、メモリ アライメントまたは高速デコードのために異なるインターリーブまたはシャッフル メソッドを使用する必要があります。 次に、対応するコンピューティング カーネルは、この特定のレイアウトをハードウェアでサポートされているデータ型に展開して実行する必要があります。 T-MAC は、低ビット行列乗算計算をビットの観点から見ると、1 ビットの最適なデータ構造を設計するだけで、スタッキングによって上位の 2/3/4 ビットに拡張できます。 一方、異なる精度のアクティベーション ベクトル (float16/float32/int8) の場合、テーブル構築プロセスのみを変更すればよく、テーブルを参照するときに異なるデータ構造を考慮する必要がなくなります。 △ 混合精度GEMVのビットベースルックアップテーブル計算一方、従来の逆量子化ベースの手法では、4ビットから3/2/1ビットに縮小しても、必要なメモリ量は減少するものの、計算量は削減されません。実際、逆量子化のオーバーヘッドが減少するどころか増加するため、パフォーマンスが低下する可能性があります。 ただし、T-MAC の計算コストはビット数に応じて直線的に減少するため、低いビット レベルでの高速化が向上し、BitNet、EfficientQAT などがリリースした最新の 2 ビット モデルに非常に効率的な展開ソリューションを提供できます。 たとえば、次の画像はこれを説明しています。 (1)異なるエンドデバイスのシングルコアCPUを使用することで、T-MACは混合精度GEMV演算子をllama.cppと比較して4~1ビットの3~11倍高速化します。 (2)T-MACのGEMM時間はビット数とともに直線的に減少するが、逆量子化に基づくllama.cppではそうすることができない(1ビットllama.cppの演算子性能は2ビット実装から得られる)。 高度に最適化された演算子の実装要約すると、ビットベースのコンピューティングには多くの利点がありますが、CPU に実装するには依然として大きな課題があります。 アクティベーションと重みに基づく継続的なデータ アクセスと比較すると、テーブル アクセスはランダムです。 高速オンチップ メモリ内のテーブルの常駐は、最終的な推論パフォーマンスにとって重要です。ただし、オンチップ メモリは限られており、ルックアップ テーブル (LUT) 方式では、従来の mpGEMV と比較してオンチップ メモリの使用量が増加します。 これは、ルックアップ テーブルには、アクティベーション ベクトルにすべての可能なビット パターンを乗算した結果を格納する必要があるためです。この結果は、アクティベーション自体よりもはるかに多くなります。 △ T-MACとllama.cppのデータフロー計算の違いこの目的のために、Microsoft Research Asia の研究者はテーブルベースの計算データ フローを詳しく調査し、このパラダイムに適した効率的なデータ構造と計算プロセスを設計しました。 1. CPU 上のルックアップ テーブル ベクター命令 (TBL/PSHUF) を利用して、LUT をオンチップ メモリに格納し、ランダム メモリ アクセスのパフォーマンスを向上させます。 2.オンチップメモリに配置された限られた LUT のデータ再利用率を最大化するために、行列軸の計算順序を変更します。 3.テーブル検索用に別の最適なマトリックス分割 (タイリング) 方式が設計され、autotvm と組み合わせて最適な分割パラメータを検索します。 4.重みパラメータのレイアウト最適化: a.連続アクセスを最大化し、キャッシュヒット率を向上させるために重みを並べ替えます。 b.重みはインターリーブされ、デコード効率が向上します。 5. Intel/ARM CPUを対象とした最適化(以下を含む) a.レジスタの再配置によりルックアップテーブルを素早く構築する b.平均計算命令を使用して高速 8 ビット累算を実行します。 研究者は、基本的な実装にさまざまな最適化を段階的に適用し、最終的に最先端の低ビット演算子と比較して大幅な高速化を達成しました。 たとえば、さまざまな最適化を実装した後、T-MAC 4 ビット演算子は最終的に llama.cpp と比較して大幅な高速化を実現します。 T-MACはオープンソース化され、関連論文がarXivで公開されました。ご興味のある方は、ぜひ詳細をご覧ください。 |
モバイルデバイスで大規模モデルを実行すると、4~5倍高速になります。Microsoft Research AsiaがCPUのみを必要とする新しいテクノロジをオープンソース化しました。
関連するおすすめ記事
-
DeepSeek は ChatGPT とのチェス ゲームで欺瞞を用いて勝利しました。ネットユーザーからは「孫子の兵法まで使ったのか!」というコメントが寄せられました。
-
トレーニング不要の DiT アクセラレーション! Meta は、ビデオを 2.6 倍高速に生成する新しい適応型キャッシュ方式を提案します。
-
李菲菲のスタートアップが16億人民元を調達! チームが初めて公式発表:3分の1は中国人で、黄氏(スティーブ・ジョブズの創業者)らが投資している。
-
BaiduがSoraの買収を断念した背景には何があるのでしょうか?同社のマルチモーダル戦略とはどのようなものなのでしょうか?
-
2025 AI ウィンターキャンプ: 実践的な AI 学習が始まります!
-
混乱から一流企業からのインターンシップのオファー獲得まで!