モデル概要
モデル特徴
モデル能力
使用事例
🚀 Phi-3.5-Mini-Instruct ONNXモデル
このリポジトリは、Phi-3.5-mini-instruct の最適化バージョンをホストしており、ONNX Runtimeを使用した推論を高速化します。
最適化されたPhi-3.5 Miniモデルは、ONNX 形式で公開されており、ONNX Runtime を使用して、サーバープラットフォーム、Windows、Linux、Macのデスクトップ、およびモバイルCPUを含むさまざまなデバイスのCPUとGPUで実行できます。それぞれのターゲットに最適な精度で動作します。
Phi-3.5を簡単に始めるには、新しく導入されたONNX Runtime Generate() APIを使用できます。実行方法の説明は こちら を参照してください。
🚀 クイックスタート
Phi-3.5モデルをさまざまなデバイスやプラットフォームのさまざまな実行プロバイダーバックエンドで実行できるように、生成AI推論のいくつかの側面をラップする新しいAPIを導入しました。このAPIにより、LLMをアプリに簡単にドラッグアンドドロップできます。これらのモデルの初期バージョンをONNX Runtimeで実行するには、こちら の手順に従ってください。
例
python model-qa.py -m /*{YourModelPath}*/Phi-3.5-mini-instruct-onnx/cpu_and_mobile/cpu-int4-awq-block-128-acc-level-4 -k 40 -p 0.95 -t 0.8 -r 1.0
*入力:* <|user|>Tell me a joke<|end|><|assistant|>
*出力:* Why don't scientists trust atoms?
Because they make up everything!
このジョークは "make up" の二重の意味を利用しています。科学的には、原子は物質の基本的な構成要素であり、文字通りすべてを構成しています。しかし、日常会話では、"to make up" は作り上げる、嘘をつくという意味になります。これがユーモアのポイントです。
✨ 主な機能
ONNXモデル
以下は、追加された最適化構成の一部です。
- INT4 CPU用ONNXモデル:AWQを介したint4量子化を使用するCPU用のONNXモデル。
- INT4 GPU用ONNXモデル:AWQを介したint4量子化を使用するGPU用のONNXモデル。
📚 ドキュメント
モデルの概要
Phi-3.5 miniは、軽量で最先端のオープンモデルです。Phi-3に使用されたデータセット - 合成データと公開されているウェブサイトからフィルタリングされたデータ - を基に構築されており、非常に高品質で推論に富んだデータに焦点を当てています。このモデルはPhi-3モデルファミリーに属し、128Kトークンのコンテキスト長をサポートしています。モデルは厳格な強化プロセスを経ており、教師あり微調整、近位方策最適化、および直接的な嗜好最適化を組み合わせて、正確な命令遵守と堅牢なセキュリティ対策を確保しています。
想定される用途
Phi 3.5 miniモデルは、複数の言語での商用および研究用途を想定しています。このモデルは、以下のような汎用AIシステムやアプリケーションに使用できます。
- メモリ/コンピュートが制約された環境
- レイテンシーが制限されたシナリオ
- 強力な推論能力(特にコード、数学、論理)
使用事例の考慮事項
Phi 3.5モデルは、すべての下流の目的に対して特別に設計または評価されているわけではありません。開発者は、ユースケースを選択する際に言語モデルの一般的な制限を考慮し、特定の下流のユースケースで使用する前に、精度、安全性、および公平性を評価し、緩和策を講じる必要があります。特に高リスクのシナリオでは注意が必要です。開発者は、適用される法律や規制(プライバシー、貿易コンプライアンス法など)を認識し、遵守する必要があります。
リリースノート
これは、命令微調整されたPhi-3 Mini ONNXモデルの更新版です。ほとんどのユースケースがこのリリースから恩恵を受けると考えていますが、ユーザーには独自のAIアプリケーションをテストすることをお勧めします。Phi-3モデルファミリーの熱心な採用に感謝し、引き続きコミュニティからのすべてのフィードバックを歓迎します。
サポートされるハードウェア
ONNXモデルは以下のハードウェアでテストされています。
- GPU SKU: RTX 4090 (DirectML)
- GPU SKU: 1 A100 80GB GPU, SKU: Standard_ND96amsr_A100_v4 (CUDA)
- CPU SKU: Standard D16s v6 (16 vcpus, 64 GiBメモリ)
- AMD CPU: Internal_D64as_v5
必要な最小構成:
- Windows: DirectX 12対応GPUと最低4GBの総RAM
- CUDA: コンピュートキャパビリティ >= 7.0のNVIDIA GPU
モデルの説明
属性 | 詳情 |
---|---|
開発元 | Microsoft |
モデルタイプ | ONNX |
言語 (NLP) | Python, C, C++ |
ライセンス | MIT |
モデルの説明 | これは、ONNX Runtime推論用に変換されたPhi-3.5 Mini-Instructモデルです。 |
パフォーマンス指標
Phi-3.5 Mini-Instructは、すべてのバッチサイズとプロンプト長の組み合わせにおいて、ONNX Runtimeでの方がPyTorchよりも良好なパフォーマンスを発揮します。
以下の表は、1 A100 80GB GPU(SKU: Standard_ND96amsr_A100_v4)で測定された、CUDA上のFP16およびINT4精度における最初の256トークンの平均スループット(tps)を示しています。GPU用のONNX Runtimeモデルは、A100 GPU上でPyTorch Compileよりも最大21倍、llama.cppよりも最大8倍高速です。
バッチサイズ, シーケンス長 | ONNX RT INT4 | PyTorch Eager INT4 | PyTorch Compile INT4 | Llama.cpp INT4 | INT4 スピードアップ ORT/PyTorch Eager | INT4 スピードアップ ORT/PyTorch Compile | INT4 スピードアップ ORT/Llama.cpp |
---|---|---|---|---|---|---|---|
1, 16 | 238.97 | 17.75 | 11.36 | 183.17 | 13.46 | 21.04 | 1.30 |
1, 64 | 233.74 | 17.74 | 11.32 | 182.77 | 13.17 | 20.65 | 1.28 |
1, 256 | 208.52 | 17.82 | 11.34 | 182.15 | 11.70 | 18.38 | 1.14 |
1, 1024 | 174.19 | 17.85 | 11.36 | 166.39 | 9.76 | 15.34 | 1.05 |
1, 2048 | 146.10 | 17.96 | 11.35 | 153.50 | 8.14 | 12.87 | 0.95 |
1, 3840 | 112.68 | 17.91 | 11.34 | 141.53 | 6.29 | 9.94 | 0.80 |
4, 16 | 286.73 | 60.90 | 40.89 | 180.82 | 4.71 | 7.01 | 1.59 |
4, 64 | 282.87 | 60.88 | 41.03 | 177.69 | 4.65 | 6.89 | 1.59 |
4, 256 | 268.30 | 60.85 | 40.90 | 166.34 | 4.41 | 6.56 | 1.61 |
4, 1024 | 223.30 | 60.86 | 40.90 | 133.39 | 3.67 | 5.46 | 1.67 |
4, 2048 | 187.62 | 60.80 | 40.93 | 106.03 | 3.09 | 4.58 | 1.77 |
4, 3840 | 145.59 | 55.96 | 40.88 | 78.12 | 2.60 | 3.56 | 1.86 |
8, 16 | 541.04 | 121.92 | 81.96 | 171.90 | 4.44 | 6.60 | 3.15 |
8, 64 | 532.68 | 121.87 | 81.98 | 166.33 | 4.37 | 6.50 | 3.20 |
8, 256 | 480.00 | 122.06 | 81.80 | 148.07 | 3.93 | 5.87 | 3.24 |
8, 1024 | 360.60 | 122.48 | 81.59 | 103.58 | 2.94 | 4.42 | 3.48 |
8, 2048 | 274.16 | 105.92 | 81.71 | 74.01 | 2.59 | 3.36 | 3.70 |
8, 3840 | 192.50 | 79.74 | 81.50 | 49.23 | 2.41 | 2.36 | 3.91 |
16, 16 | 1007.69 | 244.16 | 163.09 | 156.99 | 4.13 | 6.18 | 6.42 |
16, 64 | 966.42 | 244.89 | 163.26 | 148.23 | 3.95 | 5.92 | 6.52 |
16, 256 | 827.37 | 244.84 | 163.23 | 121.85 | 3.38 | 5.07 | 6.79 |
16, 1024 | 536.73 | 209.13 | 169.30 | 71.57 | 2.57 | 3.17 | 7.50 |
16, 2048 | 375.31 | 153.95 | 158.77 | 45.97 | 2.44 | 2.36 | 8.16 |
16, 3840 | 243.66 | OOM | OOM | 28.33 | 8.60 |
バッチサイズ, シーケンス長 | ONNX RT FP16 | PyTorch Eager FP16 | PyTorch Compile FP16 | Llama.cpp | FP16 スピードアップ ORT/PyTorch Eager | FP16 スピードアップ ORT/PyTorch Compile | FP16 スピードアップ ORT/Llama.cpp |
---|---|---|---|---|---|---|---|
1, 16 | 137.30 | 26.02 | 26.83 | 125.86 | 5.28 | 5.12 | 1.09 |
1, 64 | 135.79 | 26.01 | 26.48 | 125.75 | 5.22 | 5.13 | 1.08 |
1, 256 | 127.92 | 26.17 | 26.61 | 125.24 | 4.89 | 4.81 | 1.02 |
1, 1024 | 114.08 | 26.11 | 26.63 | 117.97 | 4.37 | 4.28 | 0.97 |
1, 2048 | 101.68 | 17.77 | 21.05 | 111.08 | 5.72 | 4.83 | 0.92 |
1, 3840 | 84.94 | 25.17 | 26.77 | 104.88 | 3.37 | 3.17 | 0.81 |
4, 16 | 529.07 | 99.47 | 100.22 | 124.63 | 5.32 | 5.28 | 4.25 |
4, 64 | 513.85 | 99.47 | 100.54 | 123.20 | 5.17 | 5.11 | 4.17 |
4, 256 | 466.56 | 99.21 | 100.22 | 117.61 | 4.70 | 4.66 | 3.97 |
4, 1024 | 352.06 | 99.56 | 100.50 | 100.42 | 3.54 | 3.50 | 3.51 |
4, 2048 | 271.02 | 70.12 | 73.66 | 83.95 | 3.86 | 3.68 | 3.23 |
4, 3840 | 191.36 | 74.35 | 79.68 | 65.51 | 2.57 | 2.40 | 2.92 |
8, 16 | 936.46 | 198.99 | 212.40 | 120.24 | 4.71 | 4.41 | 7.79 |
8, 64 | 926.83 | 200.28 | 213.97 | 117.77 | 4.63 | 4.33 | 7.87 |
8, 256 | 783.95 | 200.66 | 214.88 | 108.33 | 3.91 | 3.65 | 7.24 |
8, 1024 | 511.96 | 183.10 | 201.01 | 82.52 | 2.80 | 2.55 | 6.20 |
8, 2048 | 352.86 | 96.99 | 122.10 | 62.41 | 3.64 | 2.89 | 5.65 |
8, 3840 | 228.97 | 96.81 | 101.60 | 43.89 | 2.37 | 2.25 | 5.22 |
16, 16 | 1675.72 | 396.52 | 422.13 | 112.78 | 4.23 | 3.97 | 14.86 |
16, 64 | 1591.61 | 395.66 | 422.47 | 108.36 | 4.02 | 3.77 | 14.69 |
16, 256 | 1249.94 | 399.30 | 429.10 | 93.68 | 3.13 | 2.91 | 13.34 |
16, 1024 | 685.63 | 270.99 | 292.24 | 60.66 | 2.53 | 2.35 | 11.30 |
16, 2048 | 441.15 | 121.17 | 162.93 | 41.30 | 3.64 | 2.71 | 10.68 |
16, 3840 | 270.38 | OOM | OOM | 26.50 | 0.00 | 0.00 | 10.20 |
以下の表は、Standard D16s v6(16 vcpus, 64 GiBメモリ)で測定された、CPU上のINT4精度における最初の256トークンの平均スループット(tps)を示しています。
バッチサイズ, シーケンス長 | ORT INT4 AWQ | Llama.cpp INT4 | INT4 AWQ スピードアップ Llama.cpp |
---|---|---|---|
1, 16 | 41.99 | 26.72 | 1.57 |
1, 64 | 41.81 | 26.67 | 1.57 |
1, 256 | 41.26 | 26.30 | 1.57 |
1, 1024 | 37.15 | 24.02 | 1.55 |
1, 2048 | 32.68 | 21.82 | 1.50 |
パッケージバージョン
Pipパッケージ名 | バージョン |
---|---|
torch | 2.4.1 |
triton | 3.0.0 |
onnxruntime-gpu | 1.20.1 |
onnxruntime-genai | 0.5.2 |
onnxruntime-genai-cuda | 0.5.2 |
onnxruntime-genai-directml | 0.5.2 |
transformers | 4.44.2 |
llama.cpp | bdf314f38a2c90e18285f7d7067e8d736a14000a |
付録
Activation Aware Quantization (AWQ) は、精度を維持するために最も重要な上位1%の顕著な重みを識別し、残りの99%の重みを量子化することで機能します。これにより、他の多くの量子化手法と比較して、量子化による精度の損失が少なくなります。AWQの詳細については、こちら を参照してください。
モデルカードの問い合わせ先
parinitarahi
貢献者
Sunghoon Choi, Yufeng Li, Kunal Vaishnavi, Akshay Sonawane, Rui Ren, Parinita Rahi
📄 ライセンス
このモデルはMITライセンスの下でライセンスされています。
商標
このプロジェクトには、プロジェクト、製品、またはサービスの商標やロゴが含まれている場合があります。Microsoftの商標やロゴの許可された使用は、Microsoftの商標とブランドガイドラインに従う必要があります。このプロジェクトの修正版でMicrosoftの商標やロゴを使用する場合は、混乱を招いたり、Microsoftの後援を暗示したりしてはなりません。第三者の商標やロゴの使用は、それらの第三者のポリシーに従う必要があります。



