pstan's picture
Update README.md
1a77b7e verified
---
license: mit
pipeline_tag: text-generation
tags:
- ONNX
- DML
- ONNXRuntime
- phi3
- nlp
- conversational
- custom_code
- DirectML
inference: false
language:
- en
---
# Phi-3-small-128k-instruct ONNX
This repository hosts the optimized versions of [microsoft/Phi-3-small-128k-instruct](https://huggingface.co/microsoft/Phi-3-small-128k-instruct) to accelerate inference with DirectML and ONNX Runtime.
The Phi-3-Small-128K-Instruct is a state-of-the-art, lightweight open model developed by Microsoft, featuring 7B parameters.
Key Features:
- Parameter Count: 7B
- Tokenizer: Utilizes the tiktoken tokenizer for improved multilingual tokenization, with a vocabulary size of 100,352 tokens.
- Context Length: Default context length of 128k tokens.
Attention Mechanism:
- Implements grouped-query attention to minimize KV cache footprint, with 4 queries sharing 1 key.
- Uses alternative layers of dense attention and a novel blocksparse attention to further optimize on KV cache savings while maintaining long context retrieval performance.
- Multilingual Capability: Includes an additional 10% of multilingual data to enhance its performance across different languages.
## 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.
- **ONNX model for int4 CPU and Mobile:** ONNX model for CPU and mobile using int4 quantization via RTN. There are two versions uploaded to balance latency vs. accuracy. Acc=1 is targeted at improved accuracy, while Acc=4 is for improved performance. For mobile devices, we recommend using the model with acc-level-4.
## Usage
### Installation and Setup
To use the Phi-3-small-128k-instruct 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-small-128k-instruct-onnx --include="onnx/directml/*" --local-dir .\Phi-3-small-128k-instruct
```
5. **Install necessary Python packages:**
```sh
pip install numpy==1.26.4
pip install onnxruntime-directml
pip install --pre onnxruntime-genai-directml
```
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-small-128k-instruct
```
### Hardware Requirements
**Minimum Configuration:**
- **Windows:** DirectX 12-capable GPU (AMD/Nvidia/Intel)
- **CPU:** x86_64 / ARM64
**Tested Configurations:**
- **GPU:** AMD Ryzen 8000 Series iGPU (DirectML)
- **CPU:** AMD Ryzen CPU
## Hardware Supported
The model has been tested on:
- GPU SKU: RTX 4090 (DirectML)
Minimum Configuration Required:
- Windows: DirectX 12-capable GPU and a minimum of 10GB of combined RAM
### Model Description
- **Developed by:** Microsoft
- **Model type:** ONNX
- **Language(s) (NLP):** Python, C, C++
- **License:** MIT
- **Model Description:** This is a conversion of the Phi-3 Small 128K Instruct model for ONNX Runtime inference.
## Additional Details
- [**Phi-3 Small, Medium, and Vision Blog**](https://aka.ms/phi3_ONNXBuild24)
- [**Phi-3 Model Blog Link**](https://aka.ms/phi3blog-april)
- [**Phi-3 Model Card**]( https://aka.ms/phi3-medium-4k-instruct)
- [**Phi-3 Technical Report**](https://aka.ms/phi3-tech-report)
- [**Phi-3 on Azure AI Studio**](https://aka.ms/phi3-azure-ai)
## License
The model is licensed under the [MIT license](https://huggingface.co/microsoft/Phi-3-vision-128k-instruct/resolve/main/LICENSE).
## Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft’s Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.