MLX で Elyza-7Bのgguf を試す
「MLX」で「Elyza-7B」のgguf を試したので、まとめました。
1. MLX
「MLX」は、Appleが開発した新しい機械学習フレームワークで、特に「Apple Silicon」を最大限に活用するように設計されています。
2. MLXのgguf実行
「MLX」のgguf実行の手順は、次のとおりです。
(1) Pythonの仮想環境の準備。
今回は、「Python 3.10」を使用しました。
(2) パッケージのインストール。
$ git clone https://github.com/ml-explore/mlx-examples
$ cd mlx-examples/llms/gguf_llm
$ pip install -r requirements.txt
$ pip install huggingface_hub
(3) ソースコードの編集。
そのままでは動かなかったので一部コード修正します。
・mlx-examples/llms/gguf_llm/models.py 228行目
メタデータ「llama.rope.freq_base」がなくエラーだったので、値を直接指定しました。
"rope_theta": metadata["llama.rope.freq_base"],
↓
"rope_theta": 10000,
・mlx-examples/llms/gguf_llm/generate.py 35行目
1文字複数トークンの日本語文字で文字化けしていたので、文字途中の場合は出力しないようにしました。
print(s[skip:], end="", flush=True)
skip = len(s)
↓
if '\ufffd' not in s[skip:]:
print(s[skip:], end="", flush=True)
skip = len(s)
(4) 推論の実行。
$ python generate.py \
--repo TheBloke/Swallow-70B-instruct-GGUF \
--gguf swallow-70b-instruct.Q4_0.gguf \
--max-tokens 256 \
--prompt "[INST] まどか☆マギカでは誰が一番かわいい? [/INST]"