見出し画像

【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
  • システムプロンプトを日本語に書き換えてチャットしてみます。

<|im_start|>system あなたは優秀なAIアシスタントです。<|im_end|>

> こんにちは、日本語を話せますか?
はい、こんにちは!日本語を話すことができます。どうお手伝いできますか?<|im_end|>

> あなたはどのようなAIですか?
私は、自然言語処理と学習に基づく多機能なAIです。テキストを理解し、質問に答えることができます。また、文章を生成したり、翻訳したりすることができます。よろしくお願いします!

> 大阪でおすすめの観光スポットを教えてください。
大阪には様々な観光スポットがありますが、推荐されるものをいくつかご紹介します。首先に、大阪城公園はその歴史や美しい景観から人気があります。また、新世界地区では地元の人々が食べ歩きをするので、當地の文化を体験することができます。さらに、道顿堀には多くのレストランやカフェがあり、美味しい食事が楽しめます。他にも天保山海洋館や環球シネマズ大阪など、たくさんの観光スポットがありますので、お好みで選んでみてください! 

  • たしかに10Bクラス+4bit量子化にしては日本語がよさそうな印象です。もうちょい試してみたい感じがします。

  • 中国系モデルあるあるですが日本語に簡体字や中国語語彙が混じります。素人のファインチューンでどの程度改善できるかは不明。

  • なお最大の72BのChatモデルはすでに4bit量子化のGGUFがアップされています。