🦀

candle+Rustで「stabilityai/japanese-stablelm-3b-4e1t-instruct」をCPU推論

2023/11/03に公開

はじめに

こんなのがあった。RustでLLMをCPU推論させようねって奴らしい
https://huggingface.co/spaces/lmz/candle-llama2

exampleから推論を試しにやってみる。

環境構築

git clone https://github.com/huggingface/candle
cd candle/candle-examples
cargo run --example phi --release -- --prompt "USER: Hello!\nASSISTANT:" --model puffin-phi-v2 --quantized

以上でphiを推論することに成功し、環境構築完了であることを確認した。

日本語モデルの推論

日本語モデルの推論を行いたい。
丁度stable-lmの3b-4e1tがexampleに存在するのでmodelの変更を行ってみる。

examples\stable-lm\main.rsより抜粋

    #[arg(long, default_value = "lmz/candle-stablelm-3b-4e1t")]
    model_id: String,

上記の部分を以下に変更する。

    #[arg(long, default_value = "stabilityai/japanese-stablelm-3b-4e1t-instruct")]
    model_id: String,

quantizeモデルではないので、quantizedオプションは付けない。
cargo run --example stable-lm-jp --release -- --prompt "### 指示: 今夜の晩御飯のレシピを教えて \n ### 応答:"

おまけ

quantizedを付けない理由は、exampleを流用しているため。exampleは「lmz/candle-stablelm-3b-4e1t」リポジトリに依存した実装になっており、quantizedオプションを付けるとmodel-q4k.ggufが指定される。

None => {
    if args.quantized {
        vec![repo.get("model-q4k.gguf")?]
    } else {
        vec![repo.get("model.safetensors")?]
    }
}

これは日本語モデルの方にはファイルがないのでエラーになる。model.safetensorsはstabilityai/japanese-stablelm-3b-4e1t-instructにもあるので、quantizedを付けないことで一旦回避している。

できなかったこと

quantizedモデルを使いたかったので、mmnga/japanese-stablelm-3b-4e1t-instruct-ggufを別途読み込もうとしたところ、Error: ggml: unsupported magic/version Gguf/3エラーが発生した。多分GGUFの新バージョンに対応してないとか、そういう系な気がする。(あってるかは謎)

Discussion