【ローカルLLM】ExLlamaでtext-generation-webuiによるテキスト生成を高速化する

数日前、RedditのローカルLLMスレに以下の投稿が上がっていた。Llamaベースの大規模言語モデルの推論が早くなる「ExLlama」というローダーが、text-generation-webuiでサポートされたとのこと。

text-generation-webuiは、ローカルで大規模言語モデルを実行するためのWebUIのひとつ。

ExLlamaとは

Redditのレスによれば、ローカルLLMは大半の個人ユーザーにとってデカすぎるゆえ、最近は量子化により軽量化したモデルを使うのが一般的になっている。

有名なのは「llama.cpp」の量子化モデル(GGML)で、これはもともとMacbookやスマートフォンでのLLM実行を目指すプロジェクトであって、CPUでも動かすことを念頭において開発されている。

generation-webuiでも「llama.cpp」は使えるが、これとは別に「GPTQ」という量子化モデルもある。text-generation-webuiの場合、GPTQは「GPTQ-for-LLaMA」等のローダーを使ってGPUで実行する。

今回の「ExLlama」は「GPTQ-for-LLaMA」に代わりうる新しいローダーらしく、GPTQのGPU利用効率が大きく改善するとのこと。GPUで実行する場合の「llama.cpp」と比べても速度は上とのコメントあり。

Google Colabで試す

#Text Generation WebUIのインストール
!git clone https://github.com/oobabooga/text-generation-webui
%cd text-generation-webui
!pip install -r requirements.txt

#ExLlamaのインストール
!pip install safetensors sentencepiece ninja
!mkdir /content/text-generation-webui/repositories
%cd repositories
!git clone https://github.com/turboderp/exllama

#モデルのダウンロード
%cd /content/text-generation-webui
!python download-model.py TheBloke/vicuna-13b-v1.3-GPTQ

#WebUIの起動
!python3 server.py --model TheBloke_vicuna-13b-v1.3-GPTQ --chat --share --auto-devices --loader exllama

冒頭リンクのガイドを見よう見まねでColabを書き換え実行。モデルは最近V1.3にアップデートされたVicuna 13Bを試した。

感想

テキスト生成は本当に速くなった。かなり速い。
ただ、実行の仕方に問題があるのか、WebUIの起動は若干遅くなった。

ローカルLLMの軽量化は、素人でも感動できるくらいの速度で進んでいる。7B~13Bクラスの小型モデルでもチャット能力が高いものがいくつかあり、英語翻訳して使う前提ならChatGPT(GPT3.5)に近い感覚で会話できる。

13Bだとちょっと出力が重いかなと思っていたが、フリーのColabでこれだけの速度が出るならスピードの面でもさほど遜色ない。