量子化により、機械学習モデルはより少ないメモリと計算能力で応答し、コストを削減できます。しかし、AIの推論の精度が下がる可能性があります。
この記事を読み終えると、以下のことができるようになります。
記事のリンクをコピーする
量子化は、機械学習や人工知能(AI)モデルの実行負荷を軽減するための技術です。AIの推論に必要なメモリの削減を目的としています。量子化は、大規模な言語モデル(LLM)で特に有効です。
一般に、量子化とは、デジタル信号を非常に正確な形式から、より少ないスペースに変換するプロセスであり、その結果、精度が若干低下します。目標は、信号を小さくして処理を高速化することです。機械学習やAIにおいて、量子化は、モデルをより高速に実行できるようにすること、より少ない計算能力、またはその両方を実現することを目的としています。これにより、ユーザーは最終的に、理想的には精度を最小限に抑えることなく、より安価なハードウェアでAIモデルを実行できるようになります。
AIによる推論がどのようにメモリを消費しないかを視覚化するには、ある幅のチューブ、例えば数インチのチューブを想像し、誰かがそのチューブにたくさんのビー玉を転がす必要があると考えてみてください。大きなビー玉を転がす場合、パイプ内の一つの地点を一度に通過できるのは2つないし3つだけです。小さなビー玉を転がすのであれば、一度に多くのビー玉を通すことができます。したがって、小さなビー玉を使用することで、より多くのビー玉がより速くパイプを通過することができます。
量子化によって、大きなビー玉が小さなビー玉に変換されます。推論の計算に必要な情報はメモリの空間を占めることが少なくなるため、より多くの情報がより迅速に通過できるようになり、AIの計算がより効率化されます。
AIの一種である機械学習に使用されるモデルは、極めて複雑なものです。膨大な量のメモリと計算能力を使用するからです。実際、AIの人気が高まるにつれて、電力不足が起こっています。高度な機械学習モデルを実行するサーバーは、膨大な電力を必要としています。場合によっては、一般に公開されている電力系統だけですべての供給が不可能になる場合もあります。これは、炭素排出量の増加から廃止された核エネルギー源の再稼働に至るまで、さまざまな創造的な解決策につながりました。
量子化の目的は、AIモデル自身が使用する電力を削減するために、反対側からの計算負荷を軽減することです。AIモデルを実行している開発者や組織にとって、これはAIの費用対効果を大幅に高めるのに役立ちます。古い発電所を再稼働する余裕は誰もが持っているわけではないからです。
量子化が精度に影響する理由を理解する助けとして、まず、誰かに道を尋ねることを想像してみてください。その人物は、順番待ちの道路のリスト、各通りの名前、および各通りの前後の通りの名前を提供することができます。このような一連の指示は、非常に正確ですが、覚えにくい場合があります。逆に、「2番目の左、4番目の右、1番目の左」のように言えます。この方法は、正確性には欠けますが、はるかに覚えやすいです。
AIでは、データポイントで使用されるビット数を減らすことで、量子化を機能させます。ビットが失われるということは、ある程度の精度が失われる可能性があることを意味します。その結果、出力でより多くのエラーが発生する可能性があります(通りの名前がない上記の例で「4人目の左」を誤認識する可能性があるのと同様です)。しかし、量子化にはさまざまな種類があり、その中には他よりも精度の高いものがあります。
実際には、量子化されたAIモデルで「十分である」というユースケースを企業やユーザーは持っています。多くの場合、高度に正確な結果を必要としません。例えば、正確なデータポイントを必要とせずに、全体的なセンチメントやエンゲージメントに焦点を当てて、ソーシャルメディアのトレンドや言及を追跡することが挙げられます。
学習後の量子化(PTQ)は、学習済み既存モデルに量子化を適用することです。PTQは、学習済みモデルに比較的迅速に適用できます。これは、モデルが訓練される前に行われる量子化を意識した学習(QAT)とは対照的で、かなりの計算能力を必要とします。PTQは、浮動小数点を固定小数点に変換することによって機能します。
浮動小数点表現は、機械学習およびディープラーニングで一般的に使用される、数を表現するための非常に正確な方法です。浮動小数点表現を介して格納された数値は、16または32のいずれかの一定のビット数を占めます(使用する浮動小数点表現のタイプによります)。
多くの種類の量子化では、これが8ビットに減少します。その結果、量子化された数は、メモリ内の半分または4分の1の量を占めることになります。 もちろん、ビット数が少なければ、量子化された値は浮動小数点数ほど正確ではありません。これは、小数点以下の桁数が少ない数(例えば3.14)が、小数点以下の桁数が多い数(例えば3.141592654)より正確でないのと同様です。
学習後の量子化(AWQ)は、効率向上と正確性のバランスを取ることを目的とした手法です。AWQは、モデル内の最も重要な重みを変更から保護します。(重みとは、データセット内の項目間の関係を測定する値のことです。)先ほどの指示の例をもう一度考えてみましょう。「左へ2つ、右4つ、左へ」ではなく、「2つ目左、12通りの右、最初は左」と指示する存在を想像してみてください。これには、より正確な情報が含まれていますが、それでも比較的短い(そして覚えやすい)道順の一覧です。AWQも同様に機能し、モデルの一部の整数を変更せずに他の整数を変更します。
Cloudflare Workers AIは、浮動小数点の量子化とAWQの両方を組み込んだ大規模言語モデル(LLM)をいくつかサポートしています。これにより、メモリを軽量化し、精度を維持しながら計算能力を削減することができます。詳しくは、Cloudflare Workers AIドキュメントをご覧ください。