![見出し画像](https://assets.st-note.com/production/uploads/images/135575263/rectangle_large_type_2_f17b07f60f4b8e3a7927c8e495b102f8.png?width=1200)
MLX で RakutenAI-7B を試す
「MLX」で「RakutenAI-7B」を試したので、まとめました。
・mlx 0.9.0
・mlx-lm 0.5.0
・M3 Max (128GB)
1. RakutenAI-7B
「RakutenAI-7B」は、楽天が開発した日本語LLMです。
2. 推論の実行
「MLX」は、Appleが開発した新しい機械学習フレームワークで、「Apple Silicon」(M1/M2/M3など) を最大限に活用するように設計されています。
推論の実行手順は、次のとおりです。
(1) Pythonの仮想環境の準備。
今回は、「Python 3.10」の仮想環境を準備しました。
(2) パッケージのインストール。
pip install mlx-lm
(3) mlx_lm.generateコマンドの実行。
今回は、「Rakuten/RakutenAI-7B-chat」を使用します。--ignore-chat-templateでチャットテンプレート無効化して、プロンプトに直接含めています。
初回はモデルダウンロードするため時間がかかります。モデルはHuggingFaceのキャッシュ (~/.cache/huggingface/hub/) で保持されます。
python -m mlx_lm.generate --model Rakuten/RakutenAI-7B-chat --prompt "USER: まどか☆マギカで一番かわいいのは誰ですか? ASSISTANT: " --max-tokens 1024 --ignore-chat-template
Prompt: USER: まどか☆マギカで一番かわいいのは誰ですか? ASSISTANT:
まどか☆マギカは一番かわいいのは、キャラクターによって意見が分かれるところです。また、作中でかわいいシーンや、キャラクターの設定もかわいいので、一概に誰かわいいとは言い切れないでしょう。
まどか☆マギカには、まどか、ほむら、暁美ほむら、巴マミ、佐倉杏子、キュゥべえなど、かわいいキャラクターがたくさんいます。キャラクターによってかわいい要素が違うので、好きなキャラクターでかわいいと思っても、他の人にとってはかわいくない可能性もあります。
また、まどか☆マギカには、かわいいシーンもたくさんあります。例えば、まどかにとって大切な友情や、魔法少女として戦う姿、キュゥべえとのやり取りなど、かわいいシーンがたくさんあります。
==========
Prompt: 81.707 tokens-per-sec
Generation: 23.256 tokens-per-sec
MLX で RakutenAI-7B をお試し中 pic.twitter.com/44O9ceR1bR
— 布留川英一 / Hidekazu Furukawa (@npaka123) March 30, 2024
【おまけ】 mlx_lm.generate のオプション
「python -m mlx_lm.generate --help」でヘルプを表示できます。
-h, --help : ヘルプ
--model MODEL : ローカルモデルディレクトリ or HuggingFaceリポジトリのパス
--adapter-file ADAPTER_FILE : アダプタのウェイトのパス
--trust-remote-code : trust-remote-codeの有効化
--eos-token EOS_TOKEN : トークナイザーの終了トークン
--prompt PROMPT : プロンプト
--max-tokens MAX_TOKENS, -m MAX_TOKENS : 生成するトークンの最大数
--temp TEMP : ランダムさ(temprature)
--top-p TOP_P : top-p
--seed SEED : 乱数シード
--ignore-chat-template : トークナイザーのチャットテンプレートを使用せずに生のプロンプトを使用
--use-default-chat-template : デフォルトのチャットテンプレートを使用
--colorize T[0] : 確率に基づいて出力を色付け
【おまけ】 mlx_lm.convert のオプション
「mlx_lm.convert」で、HuggingFaceモデルをMLX形式に変換することができます。
python -m mlx_lm.convert --hf-path mistralai/Mistral-7B-Instruct-v0.1 -q
「python -m mlx_lm.convert --help」でヘルプを表示できます。
-h, --help : ヘルプ
--hf-path HF_PATH : HuggingFaceモデルのパス
--mlx-path MLX_PATH : MLXのパス
-q, --quantize : 量子化モデル
--q-group-size Q_GROUP_SIZE : 量子化のグループサイズ
--q-bits Q_BITS : 量子化のウェイトあたりのbit数
--dtype {float16,bfloat16,float32} : パラメータ保持のために入力。-qが指定されている場合は無視
--upload-repo UPLOAD_REPO : モデルをアップロードするHuggingFaceリポジトリ
-d, --dequantize : 量子化されたモデルを逆量子化