名古屋出身ソフトウェアエンジニアのブログ

LLaMA 2 日本語モデルを CPU 実行する

公開:
更新:

Elyza LLaMA 2 Japanese

M2 MacBook Pro にて、Llama.cpp を使い量子化済みの LLaMA 2 派生モデルを実行することに成功したので手順をメモします。 Llama.cpp は言語モデルをネイティブコードによって CPU 実行するためのプログラムであり、Apple Silicon 最適化を謳っていることもあってか、かなり高速に動かせました。

使用している OSS がまだ開発段階で、今後仕様がかなり変わることになるとは思いますが、CPU だけで動作させられるようになれば製品への組み込みが非常にしやすくなると思います。

前回記事と同様に ELYZA Japanese LLaMA 2 モデルを動かします。 Llama.cpp で実行するために自前で GGUF に変換しなければならないかと思いましたが、変換済みモデルを公開してくれている方がいたので、そちらを使いました。

mmnga/ELYZA-japanese-Llama-2-7b-instruct-gguf · Hugging Face
ELYZAさんが公開しているELYZA-japanese-Llama-2-7b-instructのggufフォーマット変換版です。

Xcode Command Line Tools は導入済みであるとします。

今回の環境

  • MacBook Pro 14" (2023)
  • Apple M2 Pro
  • 16GB RAM
  • macOS Ventura

ビルド

Llama.cpp をビルドします。

Mac でのビルドは超カンタンです1make するだけです。

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

モデルのダウンロード

GGUF 変換済みモデルをダウンロードします。

今回は q5_K_M を選択しました。 Llama.cpp によって配置場所が決められているわけではないので、ダウンロード後は適当なところに配置します。

実行

実行バイナリは main です。

-m オプションでモデルパスを指定して実行します。

./main -m ../ELYZA-japanese-Llama-2-7b-instruct-q5_K_M.gguf \
   --temp 0 -n 1024 \
   -p '[INST] <<SYS>>あなたは、役立つアシスタントです。<</SYS>>セーラームーンの主人公は誰ですか?[/INST]'

--temp オプションは温度、-n オプションは出力長制限の設定です。

[INST] <<SYS>>あなたは、役立つアシスタントです。<</SYS>>セーラームーンの主人公は誰ですか?[/INST]  承知しました。セーラームーンの主人公は、月野うさぎ (つきのうさぎ) です。 [end of text]

実際の生成速度は以下の画像の通りで、MacBook で動かしているとは思えないぐらい速く生成できます。

承知しました。セーラームーンの主人公は、月野うさぎ (つきのうさぎ) です。

次にやりたいこと

CLI だとプロンプトを色々試すのが面倒なので、WEB フロント付きでのデプロイをやりたいと思います。

2023-10-20: 続きです: ELYZA Japanese LLaMA 2 (CPU) を Chatbot UI から遊ぶ


  1. Windows 版も試していますが、ビルドは出来てもプログラムの出力が文字化けしたりと安定しませんでした。 ↩︎