MLC LLM: LLM をコンシューマ ハードウェアに導入する場合の利点、課題、およびソリューション

I.はじめに

生成人工知能 (AI) と大規模言語モデル (LLM) の急速な発展に伴い、LLM ベースのアプリケーションの人気が高まっています。ただし、大規模なモデルには集中的な計算と膨大なリソースが必要となるため、多くの企業にとってモデルをゼロからトレーニングするコストを支払う余裕はありません。現在、ほとんどのメーカーはクラウドベースの LLM サービスを提供しており、使用するにはインターネットに接続する必要があります。LLM を専用ネットワークに展開する必要がある状況では、コスト投入とアプリケーション効果の観点から、クラウド モデル機能の提供が必ずしも最適なソリューションであるとは限りません。

この問題に対処するために、研究者らは、エンドデバイス (スマート ロッカー、オールインワン キオスク、チェックイン端末など) や消費者向けデバイス (ラップトップ、携帯電話) に LLM を直接導入する方法を模索しています。この展開方法には次の利点があります。

  • 応答時間の短縮: オンプレミス展開によりネットワーク遅延が短縮され、ユーザー エクスペリエンスが向上します。

  • プライバシーとデータ セキュリティの向上: ユーザーのデバイス上でコンピューティング タスクを継続し、データ漏洩のリスクを軽減します。

  • オフライン使用機能: ユーザーはクラウド サーバーに常に接続し続ける必要がなく、非ネットワーク環境でも LLM を使用できます。

この目標を達成するには、コンピューティング デバイスと展開環境の多様性に関する次のような課題に対処する必要があります。

  • CPU、GPU、その他のコプロセッサおよびアクセラレータのさまざまなモデルをサポートします。

  • Python やその他の依存関係がすぐに利用できない可能性があるユーザー デバイスのネイティブ環境にデプロイされます。

  • モデル パラメーターの割り当てと圧縮を慎重に計画することで、メモリの制約に対処します。

これらの課題に対処するために、研究者たちは、機械学習プログラミングの抽象化、学習駆動型の検索、コンパイル、最適化されたライブラリ ランタイムを組み合わせた、機械学習コンパイルの分野を研究しています。幸いなことに、機械学習のオープンソース分野において、MLC LLMは消費者向けデバイスに大規模な言語モデルを迅速かつ簡単に展開する方法を解決しています。これにより、AI エコシステムに新たな機会とブレークスルーがもたらされ、人工知能テクノロジーの開発が促進されます。様々な分野への普及と応用を目指しています。しかし、Xiaomi はすでに中国で LLM の革新的なアプリケーション モードの匂いを非常に早くから嗅ぎ取っており、フロントエンド AI アプリケーションをサポートするために消費者デバイス上の特定のシナリオに合わせた微調整トレーニング用に LLM を導入しました。

2023年8月14日(今日)、雷軍氏の年次講演で、雷軍氏はシャオミが大型モデルを完全に採用しており、シャオアイが大型モデルのアップグレードを開始していると述べた。現在、Xiaomi は携帯電話側で大型モデルの実行に成功しており、Lei Jun 氏は、一部のシナリオにおける Xiaomi の大型モデルの携帯電話側への現在の効果は、60 億パラメータを備えた大型モデルの計算能力に匹敵すると述べました。雲の中。

2. MLC LLMとは何ですか?

MLC LLM は、あらゆる言語モデルをさまざまなハードウェア バックエンドやネイティブ アプリケーションにローカルにデプロイできるようにする汎用ソリューションであり、各自のユースケースに合わせてモデルのパフォーマンスをさらに最適化するための効率的なフレームワークを全員に提供します。すべてはサーバーのサポートなしでローカルで実行され、携帯電話やラップトップ上のローカル GPU によって高速化されますサポートされているプラ​​ットフォームは次のとおりです。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=Y2UxMGRmZTBmMDU5ZDMyMTUyODcwMDI0MDFmMDRhNzRfTmpQMXRIWXgzOEFMYk9mN0ZsZWZNU2ZvalRGTFNBNGRfVG9rZW46U0hicmJhSFlyb1ZpbUp 4ZjJvemNGN29jbnNnXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

MLC LLM は、反復可能で体系的でカスタマイズ可能なワークフローを提供し、開発者や AI システム研究者が生産性を重視した Python ファーストのアプローチでモデルと最適化を実装できるようにします。このアプローチにより、新しいモデル、アイデア、新しいコンパイラ パスを迅速に実験し、その後、目的のターゲットにローカルにデプロイすることが可能になります。さらに、TVM バックエンドを拡張してモデルのコンパイルをより透過的かつ効率的にすることで、LLM アクセラレーションを継続的に拡張しています。

MLC-LLM プロジェクトは、モデル定義、モデル コンパイル、およびランタイムという 3 つの異なるサブモジュールで構成されます。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=ZTJhYjQ4NDFhMmRjNDhkYTM5MGU5MzMwZTdjNzBiZjRfZm5hakkwSUZ4OW1vSjBMWEpQdHhGOXJFRTdNajJBRWdfVG9rZW46TW1idGJ6SEJ ub3RUaTB4UmhTV2MxaVYybk5oXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

➀ Python でのモデル定義。MLC は、Llama (Llama2、Vicuna、OpenLlama、Wizard など)、GPT-NeoX (RedPajama、Dolly など)、RNN (RWKV など)、GPT-J などのさまざまな定義済みアーキテクチャを提供します。モデル開発者は、コード生成やランタイムに触れることなく、純粋な Python のみを使用してモデルを定義できます。

➁ Python でモデルをコンパイルします。モデルはTVM Unity コンパイラーによってコンパイルされ、コンパイル構成は純粋な Python です。MLC LLM は、Python ベースのモデルを量子化してモデル ライブラリにエクスポートし、モデルの重みを量子化します。量子化および最適化アルゴリズムを純粋な Python で開発して、特定の使用例に合わせて LLM を圧縮および高速化できます。

➂ プラットフォームネイティブランタイム。MLCChat のバリアントは、コマンド ライン用C++、Web 用 Ja​​vascript 、iOS 用 Swift 、 Android 用Ja ​​vaの各プラットフォームで利用でき、JSON チャット構成経由で構成できます。アプリケーション開発者は、プラットフォームのネイティブ ランタイムに精通しているだけで、MLC でコンパイルされた LLM をプロジェクトに統合できます。

公式は、さまざまなプラットフォーム向けに事前構築された MLC チャット アプリケーション展開パッケージを提供しており、次のプラットフォームで事前構築されたモデルを試すことができます。

  • iPhone

  • アンドロイド

  • Windows Linux Mac

  • ウェブブラウザ

2.1、iPhone

MLC-Chat アプリは App Store から入手できます。iOS デバイス (iPhone/iPad) にインストールして使用してみてください。Vicuna-7B の実行には 4GB のメモリが必要で、RedPajama-3B の実行には 2.2GB のメモリが必要です。iOS やその他の実行中のアプリケーションを考慮すると、アプリケーションを実行するには 6GB (Vicuna-7B の場合) または 4GB (RedPajama-3B の場合) の iPhone が必要です。このアプリは、iPhone 14 Pro Max、iPhone 14 Pro、iPhone 12 Pro でのみテストされています。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=MGFjNDAwZmYyYmFlNjQ5M2ZiYTA4NTk3MzdjYzVjZTVfclZIWmpjN0lsTWtpZDFKTWVLbHRtWldoRGkyb2xwZzhfVG9rZW46S2RqUmJ IOHVhb0RFOEh4WW1GWWMwWVJablo1XzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

注: iOS アプリでのテキスト生成速度が不安定になることがあります。最初はゆっくりと動作し、その後通常の速度に戻る場合があります。

2.2、アンドロイド

MLC Chat Android アプリは無料でダウンロードできます。下のボタンをクリックして試してみてください。

https://github.com/mlc-ai/binary-mlc-llm-libs/raw/main/mlc-chat.apk

アプリをインストールした後は、インターネットに接続していなくてもモデルとチャットできます。

メモリ要件はモデルによって異なります。Vicuna-7B モデルには少なくとも 6GB の RAM を搭載した Android デバイスが必要ですが、RedPajama-3B モデルは少なくとも 4GB の RAM を搭載した Android デバイスで実行できます。

2.3、W​​indows Linux Mac

ターミナル内のボットとチャットするための CLI (コマンド ライン インターフェイス) アプリケーションを提供します。CLI アプリケーションをインストールする前に、いくつかの依存関係をインストールする必要があります。

  1. アプリケーションの管理には Conda を使用するため、conda のバージョンがインストールされている必要があります。MinicondaまたはMiniforgeをインストールできます

  2. Windows および Linux では、チャットボット アプリケーションは Vulkan プラットフォームを介して GPU 上で実行されます。Windows および Linux ユーザーの場合は、最新のVulkan ドライバーをインストールしてください。NVIDIA GPU ユーザーの場合、CUDA ドライバーの性能が劣る可能性があるため、必ず Vulkan ドライバーをインストールしてください。

すべての依存関係がインストールされたら、次の手順に従って CLI アプリケーションをインストールします。

# 创建一个新的conda环境,安装CLI应用程序,并激活该环境。
conda create -n mlc-chat-venv -c mlc-ai -c conda-forge mlc-chat-cli-nightly
conda activate mlc-chat-venv

# 如果你还没有安装Git和Git-LFS,请先安装它们。# 它们用于从HuggingFace下载模型权重。
conda install git git-lfs
git lfs install

# 创建一个目录,从HuggingFace下载模型权重,并从GitHub下载二进制库文件。
mkdir -p dist/prebuilt
git clone https://github.com/mlc-ai/binary-mlc-llm-libs.git dist/prebuilt/lib

# 下载Llama-2-7B、Llama-2-13B或Llama-2-70B cd dist/prebuilt的预构建权重
git clone https://huggingface.co/mlc-ai/mlc-chat-Llama-2-7b-chat-hf-q4f16_1

# 或者下载13B模型# git clone https://huggingface.co/mlc-ai/mlc-chat-Llama-2-13b-chat-hf-q4f16_1# 或者下载70B模型(至少需要50GB VRAM的Apple Silicon Mac才能运行)# git clone https://huggingface.co/mlc-ai/mlc-chat-Llama-2-70b-chat-hf-q4f16_1  cd ../..
mlc_chat_cli --local-id Llama-2-7b-chat-hf-q4f16_1

# 或者下载13B模型 mlc_chat_cli --local-id Llama-2-13b-chat-hf-q4f16_1 或者下载70B模型(至少需要50GB VRAM的Apple Silicon Mac才能运行) mlc_chat_cli --local-id Llama-2-70b-chat-hf-q4f16_1 你还可以尝试更多的模型,例如:# 下载RedPajama-3B的预构建权重 cd dist/prebuilt
git clone https://huggingface.co/mlc-ai/mlc-chat-RedPajama-INCITE-Chat-3B-v1-q4f16_1
cd ../..
mlc_chat_cli --local-id RedPajama-INCITE-Chat-3B-v1-q4f16_1

注: Windows または Linux を使用している場合。最新の Vulkan ドライバーがインストールされていることを確認してください。GPU ドライバーと SDK チュートリアルの指示に従って環境を準備します。

2.4、Webブラウザ

WebGPU の進歩により、LLM を完全に Web ブラウザ環境で実行できるようになりました。WebLLM では、Web バージョンの MLC LLM を試すことができます。

WebLLM では、最初の実行時にモデルの重みがフェッチされてローカル キャッシュに保存されると、インターネット接続なしでモデルとの対話を開始できます。

WebLLM を実行するには、WebGPU 互換ブラウザとローカル GPU が必要です。最新の Google Chrome をダウンロードし、WebGPU レポートを使用して、ブラウザ上の WebGPU の機能を確認できます。

3. 消費者向けデバイスにおける LLM の潜在的な機会

LLM を消費者向けデバイスに適用する機会は数多くあります。以下に、将来の方向性の可能性をいくつか示します (おそらくすべてではありません)。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=YjE5ZTlhMWQyM2FjOTAzNDhiYzNiMjAwM2EzYTBhYjdfZTFtVm1nQklmbDdtUHRiVk9HbnEwRGtyQW4yc0IwcDZfVG9rZW46VkN xdmJPMWo3b1E5TDN4S3dTMmNGZDBYbjFnXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

3.1.パーソナライゼーション

インテリジェントな言語モデルは多くのことを知っていますが、私たちのお気に入りの曲や文体を必ずしも知っているわけではありません。考えられる将来には、個人的な AI コンパニオンを持つことを楽しむ人もいるかもしれません。これらのモデルは最もスマートではないかもしれませんが、私たち自身を理解しており、日々の生産性を向上させるために使用できます。また、サーバー上でより強力なモデルを操作して、より強力なエクスペリエンスを作成することもできます。これらは、オープンで強力なモデルに基づいて構築されるアダプターとしても機能します。ただし、そのようなパーソナライズされた AI を作成するには、個人データをモデルにフィードし、理想的には私たち自身の消費者向けデバイス上でモデルを実行する必要があります。

3.2.専門化とアプリケーションの統合

言語モデルは多くのことを実現できますが、ドメインによっては、わずかに簡略化されたバージョンが必要な場合もあります。将来的には、ゲームはこれらのモデルのバリエーションを利用して、各プレイヤーに独自のエクスペリエンスを生成する可能性があります。ゲーム ダイアログの特殊化は、LLM の統合によって既存のアプリケーションが恩恵を受ける例です。特殊なモデルをコンソール上で直接実行すると、多くの興味深い機会が生まれる可能性があります。

3.3.オフラインサポートとクライアント/サーバー混合の使用例

私たちは常にインターネットに接続しているわけではありません。飛行中やインターネットアクセスが困難な場所に行くときに私たちを助けてくれる、それほど強力ではないがスマートな AI アシスタントがあればなお良いでしょう。もう 1 つのシナリオは、さまざまな AI コンポーネントを連携させて、コンピューティング タスクの一部をローカルにオフロードし、クラウドで実行されているモデルと連携することです。または、環境に基づいて 2 つのコンピューティング タスクを自動的に切り替えるサービスを使用します。

3.4.分散化

最後に、分散化は将来の興味深い方向性です。各消費者デバイスはデータセンターほどのコンピューティング能力を備えていないかもしれませんが、相互に接続すると、多くの強力な機能を実行できます。分散型 AI の分野には興味深いダイナミクスがたくさんあり、適切なツールでサポートされればそれらが何を可能にするかを見るのは興味深いでしょう。

4. LLM をコンシューマ ハードウェアに導入する際の課題

私たちが議論するアイデアは、将来起こり得る可能性です。それらについて話すよりも、これらの可能性のいくつかをどのように実現できるかを尋ねる方が興味深いです。具体的には、次の目標を達成するためにオープンソース コミュニティにどのように貢献できるかです。

サーバー環境や消費者向けデバイスなど、あらゆる場所でネイティブに AI モデルを開発、最適化、展開できるようにします。

ハードウェア アクセラレーションの重要な要素から始めましょう。大規模なモデルには、高い計算能力とメモリ要件が必要になります。ハードウェア アクセラレーションを活用することは、一部の大規模モデルをコンシューマ デバイスに提供するために重要です。良いニュースは、コンシューマ デバイスでゲームをプレイできるのであれば、必要なハードウェア、つまり対象となる AI ワークロードを加速する GPU がすでにある可能性が高いということです。さらに、機械学習ワークロードを高速化するための専用ハードウェアのサポートも増えています。もちろん、ここには多くの課題もあります。

4.1.ハードウェアおよびソフトウェアスタックの多様性

消費者向けデバイスは非常に多様です。たとえば、多くのデスクトップ デバイスにはNvidia、AMD、または Intel GPUが搭載されており、それぞれに独自のソフトウェア スタックが搭載されています。スチームデッキなどのゲーム機にはAPUが搭載されています。AMD、Intel、Apple のさまざまな統合 GPU を搭載したラップトップも入手できます。モバイル空間は多くの多様性ももたらします。もちろん、Web アプリケーションについて言えば、Web にも GPU アクセラレーションが必要です。CUDA、Rocm、Metal、OpenCL、SYCL、Direct3D、Vulkan/SPIRV、WebGPU などのさまざまなプラットフォームでこれらのハードウェアのサブセットをプログラムするさまざまな方法もあります。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=OTA5ODIzM2M1NGZmMmFkYzRlMWY3ODM2ZDdiMDc4NGFfbkEwMTZZdzRHZXJEVWF6WWE4YWtpczNnTmdyQkRVR0ZfVG9rZW46UW5QM2I3 NWhjb2lOVnd4SnhIbGNWRnZibnZmXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

4.2.継続的な機械学習システムの開発要件

オープンソースの機械学習コミュニティの発展のスピードは驚くべきもので、モデルの新しいバリアントが常にトレーニングされています。また、機械学習システム研究の分野では、モデルの最適化とソリューションに組み込む必要があるシステムサポートの改善を組み合わせた新しいアプローチによる革新が継続していると考えられます。それは完璧なソリューションを構築することだけではなく、機械学習およびシステム コミュニティからの最新のイノベーションをサポートするためにシステムを継続的に改善することも重要です。

5. 機械学習コンパイルとは何ですか

機械学習コンパイル (MLC) は、機械学習の実行を開発形式から展開形式に変換および最適化するプロセスです。

開発フォームとは、機械学習モデルを開発するときに使用する一連の要素を指します。典型的な開発形式には、PyTorch、TensorFlow、JAX などの一般的なフレームワークで記述されたモデルとそれに関連する重みの記述が含まれます。

デプロイメントフォームとは、機械学習アプリケーションを実行するために必要な要素のセットを指します。通常、機械学習モデルの各ステップをサポートするために生成されたコードのセット、メモリなどのリソースを管理するルーチン、Android アプリケーション用の Java API などのアプリケーション開発環境へのインターフェイスが含まれます。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=OTIyZDBhNGIxZWE3YTcwNmY2ZDczZjE0YTFkZmNhNzNfdmJmb3ZzUE5pOXNOSzFQa212MnVjU0V1RUxKV1ZMSk5fVG9rZW46SzZU dGJMMnNCb0lhYVN4N3JuaGNvenV0blhWXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

「コンパイル」という用語を使用するのは、そのプロセスが従来のコンパイラーの動作と非常に似ているためです。コンパイラーはアプリケーションを開発形式にして、それをデプロイ可能なライブラリーにコンパイルします。ただし、機械学習のコンパイルは依然として多くの点で従来のコンパイルとは異なります。

まず、このプロセスには必ずしもコード生成が含まれるわけではありません。たとえば、デプロイされたフォームは事前定義されたライブラリ関数のセットである可能性がありますが、機械学習のコンパイルは単に開発されたフォームをこれらのライブラリへの呼び出しに変換するだけです。課題と解決策もまったく異なります。このため、機械学習のコンパイルを従来のコンパイルとは独立した別のトピックとして検討する価値があります。それにもかかわらず、機械学習のコンパイルに役立つ従来のコンパイル概念もいくつか見つかります。

機械学習のコンパイル プロセスには通常、次のようないくつかの目標があります。

統合と依存関係は最小限に抑えられます。多くの場合、デプロイメント プロセスには統合が含まれます。つまり、アプリケーションのデプロイメントに必要な要素をまとめます。たとえば、Android カメラ アプリで花を分類できるようにしたい場合、花の分類モデルを実行するために必要なコードをアセンブルする必要がありますが、モデルに関係のない他の部分は必ずしもアセンブルする必要はありません (たとえば、 NLP アプリの埋め込みテーブル検索コードを含める必要はありません)。全体のサイズを削減し、アプリケーションをデプロイできる環境の数を増やすには、必要な依存関係を組み立てて最小限に抑える機能が重要です。

ハードウェア ネイティブ アクセラレーションを活用します。各デプロイメント環境には独自のネイティブ アクセラレーション テクノロジのセットがあり、その多くは ML 用に特別に開発されました。機械学習コンパイル プロセスの目標の 1 つは、ハードウェアのネイティブ アクセラレーションを利用することです。これを行うには、ネイティブ アクセラレーション ライブラリを呼び出すデプロイメント フォームを構築するか、TensorCore などのネイティブ命令を利用するコードを生成します。

全体的な最適化。同じモデルを実行する同等の方法が多数あります。MLC の共通のテーマは、さまざまな形式の最適化を通じてメモリ使用量を最小限に抑えたり、実行効率を向上させたりする方法でモデルの実行を変換することです。

これらの目標には厳密な境界線はありません。たとえば、統合やハードウェア アクセラレーションも一般的な最適化とみなすことができます。特定のアプリケーション シナリオに応じて、ソース モデルと運用環境の特定のペアに関心がある場合もあれば、複数にデプロイして最もコスト効率の高いバリアントを選択することに関心がある場合もあります。

重要なのは、MLC は必ずしも単一の安定したソリューションを表すわけではありません。実際、MLC の実践の多くには、ハードウェアとモデル セットの数が増加するにつれて、さまざまな背景を持つ開発者とのコラボレーションが含まれます。ハードウェア開発者は最新のハードウェアのネイティブ アクセラレーションのサポートを必要とし、機械学習エンジニアはさらなる最適化を目指し、科学者は新しいモデルを導入します。

6. 機械学習コンパイルがどのように役立つか

Machine Learning Compilation (MLC) は、このギャップを埋めることを目的とした新しいアプローチです。さまざまなハードウェア アクセラレーションを実現するために、プラットフォームごとに GPU シェーダーを手動で最適化して作成することに直接依存するのではなく、このアプローチではエンジニアリング リソースが非常に高価になる可能性があります。機械学習モデルをプログラムとして考えると、複数のステップを経てターゲット プラットフォームで目的の形式に変換できます。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=MTgzMzBkYzdmNGQ3YTNlYTIxMzY1YWM3MmVmZTllNmRfUHVjeTJUN3Z1SDhOTXpHam9QY3VZZlNCcEoxd0pHeW1fVG9rZW46Wm5SSGJ VT2x5b2trNkp4SUJOUGN5UGRqbkJoXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

上の図は、典型的な機械学習のコンパイル プロセスの例を示しています。モデルの全体的な実行ロジックは、IRModule と呼ばれるコンテナーにキャプチャされます。このコンテナーには、LLM 推論でのエンコードやシングル ステップ デコードなど、さまざまな種類の計算を表す関数のコレクションが含まれています。

次に、次の手順に従って、プログラムで IRModule を変換できます。

  • 場合によっては、特定の演算子 (アテンション メカニズムなど) をライブラリまたはコード ジェネレーターのより高速な実装に置き換えることができます。

  • 他の場合には、メモリ消費を削減するために、異なる層間でのメモリ共有を慎重に計画する必要があります。

  • パフォーマンスを最大化するには、グローバル ハードウェア メモリへの往復コストが発生しないように演算子を融合することも重要です。

  • 最後に、Metal、CUDA、ROCm、Vulkan などのターゲット プラットフォーム用のカーネル コードを自動的に変換して生成できる技術があります。

MLC アプローチの主な利点は、通常、IRModule を 1 回ビルドするだけで対象のパイプラインを取得するだけで済むことです (たとえば、同じソリューションで Web 用の WGSL とローカル デバイス用の SPIRV を生成します)。さらに、大規模なモデルをメモリ バジェットに適合させるために、実行中のメモリ使用量を体系的に計画するなど、特定の変換をグローバルに実行する機会も提供されます。MLC は排他的なアプローチではないことに注意してください。むしろ、カーネル パフォーマンスの最適化などの他のエンジニアリング アプローチを拡張および補完する方法論として機能します。これを行うには、たとえば、アクセラレーション ライブラリが利用可能な場合はそれを活用し、コード生成を使用してモデルの他の部分をカバーするなど、アプローチを組み合わせることができます。

MLC アプローチやその他の補完的なアプローチを使用して機械学習システム ソリューションを開発すると、生産性が大幅に向上します。可能な場合はパイプラインの自動化された部分を活用し、ボトルネックの一部のカスタマイズに重点を置くことができます。最近、機械学習コンパイルの分野で、 PyTorch 2.0 OpenXLA/MLIRApache TVM Unityなど、多くの刺激的なオープンソース開発が行われていますMLC は方法論として、日常の多くのユースケースを解決するのに役立ちます。

7. 言語モデルにおける機械学習コンパイルの適用

MLC-LLM は、機械学習コンパイル アプローチを採用し、LLM をさまざまな消費者向けデバイスに導入する一般的なソリューションです。同じソリューションがモバイルとサーバーのユースケースにも適用されます。

https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=MTRhNTFiMTNlYzZiNjVlNzZjZTg1YjIwZWEyNjIzM2FfRHdNV09pa3B0eWwzTmZPaUc3UncwckZHUGxBQnBPYUxfVG9rZW46TDF4Tm J0cW16b0M2SlB4RHJRTmNjS3N0bmtkXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

最終的にモデルを高速化して広く利用できるようにするために、このソリューションは LLM モデルを Vulkan API および Metal にマッピングし、Windows、Linux、macOS などのほとんどのコンシューマ プラットフォームをカバーします。これらのプラットフォームで CLI デモを試すことができます。この方法の魅力は、AMD GPU や Steam Deck などのデバイスでの実行に役立つことです。

同じソリューションを適用して、iOS などのモバイル デバイスをサポートすることもできます。Test Flight ページをチェックして、モバイル アプリを試すことができます。サポートをさらに拡張して、他のモバイル デバイスをサポートすることもできます。ここで iPhone デモを試す手順を確認してください。https://sundun-rdcenter.feishu.cn/space/api/box/stream/download/asynccode/?code=ZjRmOGU1NjNjOTg3OGNlMWI4NjU3MjU4OWZkZDJhOWVfSlY0Wnl0Ym9VanVJU3dnWTdyUnpGTUFjSUIwcGtMNGNfVG9rZW46S0pzS mJTbW8wb1c3SjF4NWFySWNIRTE4bnhoXzE2OTIyNTMzMzQ6MTY5MjI1NjkzNF9WNA

最後に、WebGPUを使用すると、これらの言語モデルを Web ブラウザーに直接読み込むことができます。WebLLM は、機械学習コンパイルを活用してこれらのモデルをブラウザーに提供する関連プロジェクトです。指定されたリンクから試してみることもできます。AI の進歩には他のエキサイティングなモデルも含まれており、機械学習のコンパイルも役立ちます。Web Stable Diffusion は、ブラウザを介して消費者環境で拡散モデルを実行する例です。

MLC-LLM は、変更可能な Python パイプラインとしても構築されており、より多くの人が独自のモデルやハードウェア ユースケースのパフォーマンスを効率的に開発および最適化できるようになります。

8. まとめと展望

この記事では主に、より広範なアプリケーションのために大規模言語モデル (LLM) をコンシューマ ハードウェアに展開する方法について説明します。まず、応答時間の短縮、プライバシーとデータ セキュリティの向上、オフライン使用機能など、エンド デバイスとコンシューマ デバイスに LLM を展開する利点を分析します。次に、さまざまなモデルのコンピューティング デバイスのサポート、ネイティブ環境への展開、メモリ制約への対処など、この目標を達成するための課題について説明します。

これらの課題に対処するために、著者らは、次の戦略を通じて消費者向けハードウェアで LLM を高速化する新しい展開アプローチを提案します。

  • モデル圧縮: 知識の蒸留とモデルの枝刈り技術を使用して、モデルのサイズを削減し、コンピューティングとメモリの要件を削減します。

  • ハードウェア アクセラレーション: さまざまなハードウェア プラットフォームに合わせてモデルを最適化し、コンピューティング効率を向上させます。

  • ローカル展開: 軽量のフレームワークとライブラリを使用して、展開プロセスを簡素化し、ユーザー デバイスへの侵入を軽減します。

携帯電話やラップトップで LLM を実行するアプリケーションなど、いくつかの成功事例も紹介されています。これらの事例は、モデル圧縮、ハードウェア アクセラレーション、ローカル展開などの戦略を通じて、LLM が消費者向けハードウェア上で正常に実行され、リアルタイムで安全で便利なインテリジェント サービスをユーザーに提供できることを示しています。

要約すると、このペーパーでは、消費者向けハードウェアに LLM を導入する場合の利点、課題、およびソリューションの詳細な分析を提供します。この研究の方向性により、LLM の適用範囲がさらに広がり、より多くのユーザーが AI テクノロジーの恩恵を受けることができるようになると期待されています。

九、参考資料

  • MLC-LLM GitHub

    • https://github.com/mlc-ai/mlc-llm

  • WebLLM

    • https://webllm.mlc.ai/

  • WebLLM チャットデモ

    • https://webllm.mlc.ai/#chat-demo

  • WebGPUレポート

    • https://webgpureport.org/

  • ボルケーノドライバー

    • https://developer.nvidia.com/vulkan-driver

  • GPU ドライバーと SDK

    • https://mlc.ai/mlc-llm/docs/install/gpu.html

  • Apache TVM

    • https://tvm.apache.org/

  • MLC チャット Android

    • https://github.com/mlc-ai/binary-mlc-llm-libs/raw/main/mlc-chat.apk

おすすめ

転載: blog.csdn.net/FrenzyTechAI/article/details/132340135