![見出し画像](https://assets.st-note.com/production/uploads/images/126672134/rectangle_large_type_2_0cefecd809cdea5fd3718ac13ef99ac7.png?width=1200)
AppleのMLXがバージョンアップ
MLXがバージョンアップしてv.0.0.7に、それにともないmlx-examplesもさらに幅広く提供されました。
コア
HuggingFace のセーフテンサー形式のロードと保存のサポート
転置量子化 matmul カーネル
mlx.core.linalgmx.linalg.norm(フロベニウス、無限大、p ノルム)を含むサブパッケージ
tensordotそしてrepeat
NNレイヤー
Bilinear、、Identity_InstanceNorm
Dropout2D、Dropout3D
よりカスタマイズ可能Transformer(事前/事後ノルム、ドロップアウト)
その他のアクティベーション: SoftSign、Softmax、HardSwish、LogSoftmax
RoPE位置エンコーディングで設定可能なスケール
損失:hinge、huber、log_cosh
その他特定のケースでの GPU 削減の高速化
スワップを可能にするメモリ割り当ての変更
上の太文字にしてある部分、簡単にhuggingfaceからモデルがダウンロードして、llmを試せるようになったということです。
ということで下記でアップデート。
pip install -U mlx
mlx-examplesの中のllmsセクションに、hf_llmsが追加されました。
Mistral と Llama スタイルの modelが直に簡単にダウンロードできるようになっています。(アップロードもできるみたい)
例として以下が案内されてます。
mistralai/Mistral-7B-v0.1
meta-llama/Llama-2-7b-hf
TinyLlama/TinyLlama-1.1B-intermediate-step-1431k-3T
すでに、git cloneしてたら、git pull したあと、該当directoryに移動して、以下の2つのスクリプトを走らせるだけで文章生成が試せます。
Setup
Install the dependencies:
pip install -r requirements.txt
Run
python generate.py --model <model_path> --prompt "hello"
For example:
python generate.py --model mistralai/Mistral-7B-v0.1 --prompt "hello"
自分は、llamaという名前がついてればいいかなと安易に考えて、最初に、「elyza/ELYZA-japanese-Llama-2-13b-instruct」を試しましたが、これはエラーで失敗。対応していませんでした。
Mistral and Llama のリンクにあるのだといけるようです。
upstage/SOLAR-10.7B-Instruct-v1.0を選んで試しましたら、うまくいきました。
![](https://assets.st-note.com/img/1704416721013-0jfx4kYdaK.png?width=1200)
また量子化もできる、convert.py も置かれています。
この変更に伴ったのか、以前に記事にしたollamaに似た感じのmlxを使った対話プログラムもアップデートしていました。
ツイートで紹介されてます。
Chat with an LLM running in MLX on your laptop thanks to @r_musmeci !
— Awni Hannun (@awnihannun) January 3, 2024
Code: https://t.co/1ntGfkpZnZ
- Specify different personalities
- Supports several models (Mistral, Llama, Phi2, etc) in a simple unified interface https://t.co/5t7xDHuBFm pic.twitter.com/p2SSti5JbD
githubリンクはこちらですね。 下はYoutubeでの紹介動画。
直にサポートされてるモデルがまだ少ないので、日本語での対話は無理ですが、MLXでのローカルLLMの進歩に期待が持てる感じです。
こちらも自分もアップデートして、動かしてはいます。
アップデートに伴って、スクリプト内容がちょっと変わっていたので、前に動かしていたスクリプトを手直ししたらすぐに動きました。
話がもどりますが、huggingfaceから直にダウンロードされるのは、safetensorsのファイル形式のモデルのようです。
Bardくんに質問したら、こんな解説をしてくれました。
初心者向けに説明すると、safetensorsとは、機械学習モデルを安全に保存するためのファイル形式です。
機械学習モデルは、大量のデータを学習して、さまざまなタスクを実行できるようにするソフトウェアです。例えば、画像認識や自然言語処理などのタスクに使用されています。
機械学習モデルは、通常、チェックポイントファイルとして保存されます。チェックポイントファイルには、モデルの学習済みパラメータが保存されています。これらのパラメータは、モデルのパフォーマンスを決定するため、重要です。
しかし、チェックポイントファイルは、悪意のあるコードを実行するリスクがあります。例えば、攻撃者はチェックポイントファイルに悪意のあるコードを埋め込んで、モデルを乗っ取ったり、データを盗んだりすることができます。
safetensorsは、このリスクを軽減するために開発されたファイル形式です。safetensorsでは、チェックポイントファイルに保存されるパラメータは、暗号化されて保護されます。これにより、攻撃者が悪意のあるコードを実行する可能性が低くなります。
具体的には、safetensorsでは、次のセキュリティ対策が施されています。**暗号化:**パラメータは、AES-256で暗号化されます。
**認証:**パラメータは、署名によって認証されます。
**検証:**パラメータは、読み込む前に検証されます。
これらのセキュリティ対策により、safetensorsは、チェックポイントファイルをより安全に保存することができます。
safetensorsは、まだ新しいファイル形式ですが、今後、機械学習モデルの安全な保存に広く使用されるようになると考えられます。
ELYZA-japanese-Llama-2-13bはみてみると、bin形式でしたのでダメだったのでしょう。
あと、gguf形式も直に読み込めるようにそのうちになるのではというツイートもあったので、春の来る4月までにどんどんmlxのフレームワークでの開発がいっきに進むのではと勝手に期待しています。
#AI #AIでやってみた #やってみた #mlx #huggingface #ローカルLLM #LLM
いいなと思ったら応援しよう!
![Lucas](https://assets.st-note.com/production/uploads/images/107879020/profile_1a18442658444d51682a0e9f99ec2cbd.jpeg?width=600&crop=1:1,smart)