|
--- |
|
license: mit |
|
pipeline_tag: text-generation |
|
tags: |
|
- ONNX |
|
- DML |
|
- ONNXRuntime |
|
- phi3 |
|
- nlp |
|
- conversational |
|
- custom_code |
|
inference: false |
|
language: |
|
- en |
|
--- |
|
# EmbeddedLLM/Phi-3-mini-4k-instruct-062024 ONNX |
|
|
|
## Model Summary |
|
|
|
This model is an ONNX-optimized version of [microsoft/Phi-3-mini-4k-instruct (June 2024)](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct), designed to provide accelerated inference on a variety of hardware using ONNX Runtime(CPU and DirectML). |
|
DirectML is a high-performance, hardware-accelerated DirectX 12 library for machine learning, providing GPU acceleration for a wide range of supported hardware and drivers, including AMD, Intel, NVIDIA, and Qualcomm GPUs. |
|
|
|
## ONNX Models |
|
|
|
Here are some of the optimized configurations we have added: |
|
- **ONNX model for int4 DirectML:** ONNX model for AMD, Intel, and NVIDIA GPUs on Windows, quantized to int4 using AWQ. |
|
|
|
## Usage |
|
|
|
### Installation and Setup |
|
|
|
To use the EmbeddedLLM/Phi-3-mini-4k-instruct-062024 ONNX model on Windows with DirectML, follow these steps: |
|
|
|
1. **Create and activate a Conda environment:** |
|
```sh |
|
conda create -n onnx python=3.10 |
|
conda activate onnx |
|
``` |
|
|
|
2. **Install Git LFS:** |
|
```sh |
|
winget install -e --id GitHub.GitLFS |
|
``` |
|
|
|
3. **Install Hugging Face CLI:** |
|
```sh |
|
pip install huggingface-hub[cli] |
|
``` |
|
|
|
4. **Download the model:** |
|
```sh |
|
huggingface-cli download EmbeddedLLM/Phi-3-mini-4k-instruct-062024-onnx --include="onnx/directml/Phi-3-mini-4k-instruct-062024-int4/*" --local-dir .\Phi-3-mini-4k-instruct-062024-int4 |
|
``` |
|
|
|
5. **Install necessary Python packages:** |
|
```sh |
|
pip install numpy==1.26.4 |
|
pip install onnxruntime-directml |
|
pip install --pre onnxruntime-genai-directml==0.3.0 |
|
``` |
|
|
|
6. **Install Visual Studio 2015 runtime:** |
|
```sh |
|
conda install conda-forge::vs2015_runtime |
|
``` |
|
|
|
7. **Download the example script:** |
|
```sh |
|
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py" -OutFile "phi3-qa.py" |
|
``` |
|
|
|
8. **Run the example script:** |
|
```sh |
|
python phi3-qa.py -m .\Phi-3-mini-4k-instruct-062024-int4 |
|
``` |
|
|
|
### Hardware Requirements |
|
|
|
**Minimum Configuration:** |
|
- **Windows:** DirectX 12-capable GPU (AMD/Nvidia) |
|
- **CPU:** x86_64 / ARM64 |
|
**Tested Configurations:** |
|
- **GPU:** AMD Ryzen 8000 Series iGPU (DirectML) |
|
- **CPU:** AMD Ryzen CPU |
|
|
|
## Model Description |
|
- **Developed by:** Microsoft |
|
- **Model type:** ONNX |
|
- **Language(s) (NLP):** Python, C, C++ |
|
- **License:** Apache License Version 2.0 |
|
- **Model Description:** This model is a conversion of the Phi-3-mini-4k-instruct-062024 for ONNX Runtime inference, optimized for DirectML. |
|
|
|
## Performance Metrics |
|
|
|
<!-- These are the evaluation metrics being used, ideally with a description of why. --> |
|
### DirectML |
|
We measured the performance of DirectML on AMD Ryzen 9 7940HS /w Radeon 78 |
|
|
|
| Prompt Length | Generation Length | Average Throughput (tps) | |
|
|---------------------------|-------------------|-----------------------------| |
|
| 128 | 128 | 53.46686 | |
|
| 128 | 256 | 53.11233 | |
|
| 128 | 512 | 57.45816 | |
|
| 128 | 1024 | 33.44713 | |
|
| 256 | 128 | 76.50182 | |
|
| 256 | 256 | 66.68873 | |
|
| 256 | 512 | 70.83862 | |
|
| 256 | 1024 | 34.64715 | |
|
| 512 | 128 | 85.10079 | |
|
| 512 | 256 | 68.64049 | |
|
| 512 | 512 | - | |
|
| 512 | 1024 | - | |
|
| 1024 | 128 | - | |
|
| 1024 | 256 | - | |
|
| 1024 | 512 | - | |
|
| 1024 | 1024 | - | |