見出し画像

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_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 : 量子化されたモデルを逆量子化



この記事が気に入ったらサポートをしてみませんか?