「bitnet.cpp」で「Llama3-8B-1.58-100B-tokens」試したのでまとめました。
1. bitnet.cpp
「bitnet.cpp」は、Microsoftが開発した1bit LLM用の推論フレームワークです。主な特徴は、次のとおりです。
2. Llama3-8B-1.58-100B-tokens
「Llama3-8B-1.58-100B-tokens」は、「Llama-3-8B-Instruct」をベースに、BitNet 1.58b アーキテクチャでファインチューニングされたモデルです。
3. bitnet.cpp で Llama3-8B-1.58-100B-tokens を試す
ローカルマシン (M3 Maxを使いました) で「bitnet.cpp」で「Llama3-8B-1.58-100B-tokens」を試す手順は、次のとおりです。
(1) Python 仮想環境の準備。
(2) リポジトリのクローンとインストール。
git clone --recursive https:
cd BitNet
pip install -r requirements.txt
(3) セットアップ。
HuggingFaceからモデルをダウンロードし、量子化されたgguf形式に変換してプロジェクトをビルドします。
python setup_env.py --hf-repo HF1BitLLM/Llama3-8B-1.58-100B-tokens -q i2_s
(4) 推論の実行。
python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "What anime is popular in Japan?\nAnswer:" -n 256 -temp 0.1
M3 Maxでの速度は、15.90 tokens per secondでした。
(4) repeat-penaltyを調整して推論。
「run_inference.py」の「--repeat-penalty」を調整しました。
command = [
f'{main_path}',
'-m', args.model,
'-n', str(args.n_predict),
'-t', str(args.threads),
'-p', args.prompt,
'--repeat-penalty','1.1',
'-ngl', '0',
'-c', str(args.ctx_size),
'--temp', str(args.temperature),
"-b", "1"
]
実行コマンドは先程と同じものを使います。
python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "What anime is popular in Japan?\nAnswer:" -n 256 -temp 0.1
【おまけ】 スレッド数
「run_inference.py」に「-t 16」でスレッド数を増やしたところ、高速化しました。
python run_inference.py -m models/Llama3-8B-1.58-100B-tokens/ggml-model-i2_s.gguf -p "What anime is popular in Japan?\nAnswer:" -n 256 -temp 0.1 -t 16
Macの物理コア数と論理コアの調べ方は、次のとおりです。
$ sysctl -n hw.physicalcpu
16
$ sysctl -n hw.logicalcpu
16
関連