💨

ELYZA-japanese-Llama-2-7bをM1 Mac上でRustで動かす

2023/12/31に公開

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/WasmEdge-WASINN-examples

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