【llama.cpp】Qwen-14BをGGUF量子化して日本語で試す
2023/12/05:llama.cppが「Qwen」に対応したので試しました。
「Qwen」は中国Alibabaグループが手掛ける大規模言語モデルシリーズで、テキストモデルは1.8B/7B/14B/72Bがあります。
英/中メインの多言語モデルで、日本語性能も同サイズのLlama-2/Mistralに比べれば高いっぽいです。
QwenをGGMLで量子化・推論するための「qwen.cpp」が以前からあり、これが今回llama.cpp本家にマージされたとのこと。
今回はGoogle Colabで「Qwen-14B-Chat」の量子化・推論を試しました。
量子化にはGPU不要です。が、推論はGPUモード(make LLAMA_CUBLAS=1)でないと遅いです。
# llama.cppのダウンロード
!git clone https://github.com/ggerganov/llama.cpp
%cd llama.cpp
!make
# 依存関係のインストール
!python3 -m pip install -r requirements.txt
!pip install tiktoken
# モデルのダウンロード
!git lfs clone https://huggingface.co/Qwen/Qwen-14B-Chat/
# モデルをFP16へ変換
!python convert-hf-to-gguf.py --outfile qwen14b-chat-f16.gguf --outtype f16 Qwen-14B-Chat
# FP16を4bit量子化(q4_0)
!./quantize qwen14b-chat-f16.gguf qwen14b-chat-q4_0.gguf q4_0
# 4bitモデルで推論(チャット)
!./main -m qwen14b-chat-q4_0.gguf -n 512 --color -i -cml -f prompts/chat-with-qwen.txt
システムプロンプトを日本語に書き換えてチャットしてみます。
たしかに10Bクラス+4bit量子化にしては日本語がよさそうな印象です。もうちょい試してみたい感じがします。
中国系モデルあるあるですが日本語に簡体字や中国語語彙が混じります。素人のファインチューンでどの程度改善できるかは不明。
なお最大の72BのChatモデルはすでに4bit量子化のGGUFがアップされています。