llama.cpp で多言語LLMの Cohere Command-R 35B を試す

github.com

モデルの概要

  • 重みが公開されたモデルは、35Bパラメータの多言語対応のLLMです。日本語もサポート言語として一応記載されています。
  • MMLUなど主要ベンチマークでの性能評価は公開されておらず「128Kコンテキストに対応するRAG特化モデル」として位置づけられています。

  • Redditなどでの口コミの感想を見ると、英語での汎用チャット性能はGPT3.5~Mixtral 8x7Bくらいのレベル感のようです。いわゆるGPT-ism("As an AI large language model, ..."などのChatGPTっぽい定型表現/スタンス)がなく、新鮮なチャット体験ができると好評です。
  • モデルの商用利用は不可とされていますが(APIで有償利用可)、日本語もサポートされており、一応期待できそうなので簡単に試してみます。

GGUFモデル

  • 通常のGGUFモデルは、llama.cppへのCommand-R実装を手掛けたandrewcanisさんが公開されています。もちろん最新のllama.cppで自ら量子化することも可能です。

huggingface.co

  • 量子化精度を改善するためのImportance Matrix計算を行ったi-quantモデルは、dranger003さんが公開されています(i-quantモデルは、CPU推論やMetal推論だと速度低下が起こるそうなのでご注意ください)。

huggingface.co

日本語の出力例

  • 独特のチャットテンプレートが使われています。以下の例は、i-quantの「ggml-c4ai-command-r-35b-v01-iq4_xs.gguf」の出力例です。

  • 日本語の口語表現でも大きな破綻はなく、中国系の多言語モデルのように中国語が混ざることもありません。ただ「真に受けたりしないでくださいね」のように突っ込みどころのある表現が時々出現します。
  • オープンウェイトの中で日本語性能の高いKarakuri 70BやQwen 72Bとの差は多少ある気がしますが、サイズが半分であることを考えると(特にローカル利用では)貴重です。
  • 4bit量子化版なので、性能が低下している可能性が少なからずあります。また、よりフォーマルなスタイルのチャットでは日本語の精度が改善すると思います。