home
🤖

極めてプライベートな私だけのLLM、作れるのか?[第2弾- WebGPU Build & Run]

Author
金德顯 キム ドクヒョン / Head of Development
Caregory
Hands-on
Tags
LLM
compilation
WebGPU
Published
2024/01/31
Category
5 more properties
LLM Compile Process Overview
前回の記事「【極めてプライベートな自分だけのLLM、価値があるのか?[第1回 - ファインチューニング](https://blog.sionic.ai/Finetuning_Llama)では、大規模モデル構築の難しさと破壊的な忘却現象などの代替として登場したRetriever Augmented Generation(RAG)方法を見てみました。 RAGはLLMの強力なテキスト生成能力をベースにして、モデルにユーザーのクエリに合った文書のスニペットを適切に取り込んでプロンプトを通じて応答する方式です。ユーザーがパーソナライズされたLLMを構築し、特定の目的に合わせて調整する方法は、様々な所で有用に使用することができます。
今回はMLC-LLMパッケージを活用したWebGPU Build & Runガイドを共有します。これにより、大規模言語モデル(LLM)がWebGPUを活用して、ビルド&実行する過程を通じて、自分のデータで大規模言語モデルを構築、実行することができるようになります。

前提条件

LLMビルドのための要件

python3: 普遍的によく使われるConda環境で、python言語を使用して進行します。
conda: Pythonパッケージの衝突を防ぐために環境分離の時に必要です。
Git LFS: weight fileなど大容量ファイルをpullingするために必要です。
TVM Compiler: オープンソースディープラーニングコンパイラ

WebAssembly ビルドのための要件

Emscripten: LLVMを使う言語(C/C++)をWebAssemblyでコンパイルできるようにするツールチェーン。

ビルド

環境設定 → mlc-llmパッケージのインストール → WebGPU LLMのコンパイル

環境設定

LLMをスムーズにコンパイルして実行するためには次のパッケージが必要です。環境設定はパッケージのインストールと開発環境を設定する過程です。

python3, Git LFS

公式インストールガイドに従ってインストールを行います。

conda

TVM コンパイラ

Emscripten

mlc-llm パッケージのインストール

# clone the repository git clone https://github.com/mlc-ai/mlc-llm.git --recursive # enter to root directory of the repo cd mlc-llm # install mlc-llm pip install .
Bash
복사
Command: pip install .

WebGPU LLMコンパイル

Conda環境のアクティベーション、Emscripten環境変数の設定、prep_emcc_depsスクリプトの実行をした後、コンパイルを実行します。
cd mlc-llm # tvm 실행환경 activate conda activate tvm # Set Enviroment variables source EMSDK_PATH/emsdk_env.sh export TVM_HOME=./3rdparty/tvm # This file prepares all the necessary dependencies for the web build. ./scripts/prep_emcc_deps.sh # Compile! python3 -m mlc_llm.build --hf-path togethercomputer/RedPajama-INCITE-Chat-3B-v1 --target webgpu --quantization q4f16_1
Bash
복사
Command: python3 -m mlc_llm.build --hf-path togethercomputer/RedPajama-INCITE-Chat-3B-v1 --target webgpu --quantization q4f16_1
-hf-path: コンパイル対象の repository の経路を入力します。
quantization: 量子化値を設定します。
コンパイル後、下記のように /dist/MODEL_ID/.wasm ファイルを確認することができます。

Run

WebGPU LLM Loader

WebGPU LLMローダは、MLCの tvm ウェブモジュールをベースにした web-llm ライブラリを使用しています。
WebGPUでビルドされた大規模言語モデルをWebブラウザで実行することができるという利点があります。
Vercelに配布された次のリンクからアクセスできます。
webgpu-llm-loader
sionic-ai
コンパイルされたWebGPU LLMは、WebGPU LLM Loaderを通じて実行させることができます。
WebGPU LLM LoaderはMLCでtvmのwebモジュールをwrappingしたweb-llmライブラリを使用して、WebGPUでビルドされたLLMを実行できるように作られたローダーです。
Loaderですぐに実行できるLLMリスト:各モデルはそれぞれ異なるVRAM(ビデオRAM)が必要です。
ラマ2 7B チャット (Required 8GB of VRAM)
ラマ2 13B チャット (Required VRAM of 16GB)
ラマ2 70B チャット (Required VRAM of 64GB)
また、直接コンパイルしたWebGPU LLMファイル(.wasm)も実行することができます。
Model Local Id: mlc-chat-config.jsonlocal_id
Model URL: huggingfaceにアップロードしたモデルのURL。
WASM File: WebGPUのために構築された .wasm ファイル。

Troubleshooting

ModuleNotFoundError: No module named ‘tvm’

RuntimeError: Please set TVM_HOME for webgpu build following scripts/prep_emcc_deps.sh

emcc: command not found

_pickle.UnpicklingError: invalid load key, ‘v’.

WebGPU LLM Loader"を通じて、Webブラウザで大規模言語モデルを効果的に実行する方法について見てきました。 この過程を通じて、様々なモデルを実験し、自分のモデルを直接実行することができるようになるでしょう。