parinitarahi's picture
Update README.md
a5a6d80 verified
|
raw
history blame
4.38 kB
metadata
tags:
  - ONNX
  - ONNX Runtime
  - code
  - nlp
  - phi4
  - phi4 mini
license: mit
language:
  - multilingual

microsoft/Phi-4-mini-instruct-onnx

Introduction

This repository hosts the optimized versions of Phi4 mini models to accelerate inference with ONNX Runtime. Optimized models are published here in ONNX format to run with ONNX Runtime on CPU and GPU across devices, including server platforms, Windows, Linux and Mac desktops, and mobile CPUs, with the precision best suited to each of these targets. Here are some of the optimized configurations we have added:

  1. ONNX model for int4 CPU and Mobile: ONNX model for CPU and mobile using int4 quantization via RTN.
  2. ONNX model for int4 CUDA and DML GPU devices using int4 quantization via RTN.

Model Run

You can see how to run examples with ORT GenAI here

For CPU:

# Download the model directly using the Hugging Face CLI
huggingface-cli download microsoft/Phi-4-mini-instruct-onnx/ --include Phi-4-mini-instruct-onnx/cpu_and_mobile/* --local-dir .

# Install the CPU package of ONNX Runtime GenAI
pip install onnxruntime-genai

# Please adjust the model directory (-m) accordingly
curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
python phi3-qa.py -m cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4 -e cpu

For CUDA:

# Download the model directly using the Hugging Face CLI
huggingface-cli download onnxruntime/Phi-4-mini-instruct-onnx --include Phi-4-mini-instruct-onnx/gpu/* --local-dir .

# Install the CUDA package of ONNX Runtime GenAI
pip install onnxruntime-genai-cuda

# Please adjust the model directory (-m) accordingly 
curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
python phi3-qa.py -m gpu/gpu-int4-rtn-block-32 -e cuda

For DirectML:

# Download the model directly using the Hugging Face CLI
huggingface-cli download onnxruntime/Phi-4-mini-instruct-onnx --include Phi-4-mini-instruct-onnx/gpu/* --local-dir .

# Install the CUDA package of ONNX Runtime GenAI
pip install onnxruntime-genai-cuda

# Please adjust the model directory (-m) accordingly 
curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
python phi3-qa.py -m gpu/gpu-int4-rtn-block-32 -e dml

Model Description

  • Developed by: Microsoft
  • Model type: ONNX
  • License: MIT
  • Model Description: This is a conversion of Phi4 mini model for ONNX Runtime inference.

Disclaimer: Model is only an optimization of the base model, any risk associated with the model is the responsibility of the user of the model. Please verify and test for your scenarios. There may be a slight difference in output from the base model with the optimizations applied.

Base Model

Phi-4-Mini is a lightweight open model built upon synthetic data and filtered publicly available websites - with a focus on high-quality, reasoning dense data. The model belongs to the Phi-4 model family and supports 128K token context length. The model underwent an enhancement process, incorporating both supervised fine-tuning and direct preference optimization to support precise instruction adherence and robust safety measures. See details at https://huggingface.co/microsoft/Phi-4-mini-instruct/blob/main/README.md

Performance Comparison

Hardware ONNX PyTorch speedup
A100 GPU fp16 = 136.359 tokens/sec int4-awq = 233.036 tokens/sec fp16: 34.200 tokens/sec fp32: 37.899 tokens/sec 4X (fp16), 6X(int4-rwq)
RTX 4090 GPU int4: 260.045 tokens/sec fp16: 97.463 tokens/se fp32: 19.320 tokens/sec fp16: 43.957 tokens/sec 5x(fp16)
Intel Xeon Platinum 8272CL CPU int4: 16.89 tokens/sec fp32: 1.636 tokens/sec 10x
Intel Xeon Platinum 8573B CPU int4: 23.978 tokens/sec fp32: 4.479 tokens/sec 5.35X
AMD EPYC 7763v CPU int4: 19.884 tokens/sec fp32: 1.599 tokens/sec 12.4x
Intel Core Ultra 7 165H Laptop CPU int4: 4.863 tokens/sec fp32: 1.699 tokens/sec 2.8x
Intel i7 processor int4: 3.474 tokens/sec fp32: 1.800 tokens/sec fp32: 0.702 tokens/sec 4.85x