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は、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.json の local_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ブラウザで大規模言語モデルを効果的に実行する方法について見てきました。 この過程を通じて、様々なモデルを実験し、自分のモデルを直接実行することができるようになるでしょう。