概要
llama.cppのRuby bindingsであるllama_cpp.rbでもLlama2が使えた。
インストール
llama_cpp.rbのインストールは、通常のnative extensionsなgemと同様である。
$ gem install llama_cpp
もしmacOSを利用しているなら、metalオプションをつけると少し速くなる。
$ gem install llama_cpp -- --with-metal
Llama2のダウンロード
Llama2対応については、本家llama.cppのIssueでも話題になっていて、有志によりllama.cppで読み込めるggmlモデル化および量子化されたものがある。これをダウロードして利用した。
Add llama 2 model · Issue #2262 · ggerganov/llama.cpp · GitHub
$ wget https://huggingface.co/TheBloke/Llama-2-7B-GGML/resolve/main/llama-2-7b.ggmlv3.q4_0.bin
使用方法
Llama2の量子化モデルを読み込むことができ、テキスト生成も問題なく動いた。
require 'llama_cpp' params = LLaMACpp::ContextParams.new model = LLaMACpp::Model.new(model_path: 'llama-2-7b.ggmlv3.q4_0.bin', params: params) context = LLaMACpp::Context.new(model: model) puts LLaMACpp.generate(context, 'Hello, World.')
Llama2は日本語もイケるようなので、チャットを日本語で試してみる。
$ wget https://raw.githubusercontent.com/yoshoku/llama_cpp.rb/main/examples/chat.rb $ wget https://raw.githubusercontent.com/yoshoku/llama_cpp.rb/main/examples/prompt_jp.txt $ ruby chat.rb --model llama-2-7b.ggmlv3.q4_0.bin --file prompt_jp.txt
日本語で回答してくれた。本当に日本の家電最大メーカーが三菱かどうかは知らない。
おわりに
GPT-3.5に匹敵するとされるLlama2の登場で、ローカルでの大規模言語モデル(Large Language Model, LLM)の利用の幅が広がりましたね。