🍷

japanese-stablelm-instruct-beta-70bをllama.cppで試す

2023/11/05に公開

はじめに

Stability AI が提供する Llama-2-70B の日本語転移学習モデルを試してみました。

以下の量子化されたモデルを Llama.cpp で動します。

https://huggingface.co/TheBloke/japanese-stablelm-instruct-beta-70B-GGUF

私の PC のスペック[1]

  • i7 13700K
  • 3090 24GB
  • DDR5 128GB

事前準備

モデルのダウンロードと llama.cpp のビルドを行う。

モデルのダウンロード

以下のコマンドでモデルをダウンロードする。

git lfs install
git clone git@hf.co:TheBloke/japanese-stablelm-instruct-beta-70B-GGUF

全部で 972G でした。ダウンロードには 12 時間ぐらいかかりました。

llama.cpp のビルド

クローン

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

ビルド

mkdir build-cublas
cd build-cublas/
cmake .. -DLLAMA_CUBLAS=ON
cmake --build . --config Release

実行

以下のコマンドで実行する。

./build-cublas/bin/server -m ./models/japanese-stablelm-instruct-beta-70B-GGUF/japanese-stablelm-instruct-beta-70b.Q4_K_M.gguf -b 512 -ngl 45 -t 8

Q4_K_M を使った。私の GPU では 45/83 を GPU に乗せることができた。8 スレッドで実行した。

結果

質問は以前に Xwin-LM-70B と Llama-2-70B を比較した記事と同じものを利用した。

質問 1

「素因数分解について説明してください。」

User: 素因数分解について説明してください。

Llama: 素因数分解は、与えられた数をその数で割り切れる素数の積として表すことである。例えば、12 = 2 x 2 x 3。

非常にシンプルな答えが返ってきた。

質問 2

「コンピューターの基本的な構成要素は何ですか?」

User: コンピューターの基本的な構成要素は何ですか?

Llama: コンピュータの基本的な構成要素は、マザーボード、プロセッサ(CPU)、メモリ(RAM)、ストレージデバイス(ハードディスクまたは SSD)です。

これも非常にシンプル。

質問 3

「素因数分解する Python コードを書いて」

User: 素因数分解する Python コードを書いて

Llama: 素因数分解は、与えられた整数をその要因に分けることです。Python 3.10 以降のコードが次のようになります:
python
def factorize(n):
f = set()
範囲の p の場合(2、int(n 0.5 + 1)):
n%p == 0 の場合:
f.add(p)
範囲の i の場合(1, int(n / p 0.5 + 1)):
f.add(p * i)
F を返します
`
これは、2 から平方根に等しい最大整数までの各プライム番号を試して、n がその素因数であるかどうかを確認するレクマ法を使用します。

疑似コードみたいなのが返ってきた。

おわりに

Stability AI が提供する Llama-2-70B の日本語転移学習モデルを試してみました。ベータ版ということなので現時点だと Xwin-LM-70B の方が性能はいいのかなという印象です。ただ、日本語向けに転移学習している 70B のモデルは珍しいので今後に期待したいです。新しいバージョンが出たら試して記事にします。あと、GGUF ではなく GPTQ や AWQ といった別の量子化手法を使ったり、システムプロンプトを改善すればもっと良い結果が得られるのかもしれません。

脚注
  1. https://zenn.dev/derbuihan/articles/928ae5f279afbc ↩︎

Discussion