💨
ELYZA-japanese-Llama-2-7bをM1 Mac上でRustで動かす
ELYZA-japanese-Llama-2-7bをM1 Macで動かすまでのメモになります。
WasmEdge , Wasi-NN pluginは下記参考にインストールします。
https://wasmedge.org/docs/develop/rust/wasinn/llm_inference/
Python実行環境はこちらを利用
GGUF形式に変換したい場合、llama.cppを利用します。git clone、makeしておきます
https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
必要なモジュールをインストール
pip install -r requirements.txt
Huggingfaceからモデルをダウンロードしてきます
from huggingface_hub import snapshot_download
if __name__ == '__main__':
model_id="elyza/ELYZA-japanese-Llama-2-7b-instruct"
snapshot_download(
repo_id=model_id,
local_dir="models/ELYZA-japanese-Llama-2-7b-instruct",
local_dir_use_symlinks=False,
revision="main"
)
次に、モデルをGGUF形式に変換を行います。
以下のコマンドで.binをf16(float 16)でGGUFに変換されます。
python3 convert.py ./models/ELYZA-japanese-Llama-2-7b-instruct
f16(float 16)を、Q5_K_Mに変換します。
./quantize \
models/ELYZA-japanese-Llama-2-7b-instruct/ggml-model-f16.gguf \
models/ELYZA-japanese-Llama-2-7b-instruct/ggml-model-q5_k_m.gguf \
Q5_K_M
下記リポジトリで公開されているwasmedge-ggml-belle-chatはメンテされていないので、llama-utilsのllama-chat.wasmを利用します。
https://github.com/second-state/llama-utils.git
cd llama-utils/chat/
メモリ8GのPCでは--ctx-size --batch-sizeを指定しないと動かないことがあります。(WasmEdgeのDiscordチャンネルでおしえてもらいました。)
wasmedge --dir .:. --nn-preload default:GGML:CPU:../../llama.cpp/models/ELYZA-japanese-Llama-2-7b-instruct/ggml-model-q5_k_m.gguf llama-chat.wasm --ctx-size 512 --batch-size 512
下記のように返答してくれれば成功です。
Discussion