- Εισαγωγή
- Τι είναι το Microsoft Olive;
- Εγκατάσταση
- Οδηγός Γρήγορης Εκκίνησης
- Παράδειγμα: Μετατροπή Qwen3 σε ONNX INT4
- Προχωρημένη Χρήση
- Αποθετήριο Συνταγών Olive
- Καλές Πρακτικές
- Αντιμετώπιση Προβλημάτων
- Πρόσθετοι Πόροι
Το Microsoft Olive είναι ένα ισχυρό και εύχρηστο εργαλείο βελτιστοποίησης μοντέλων που λαμβάνει υπόψη το υλικό, διευκολύνοντας τη διαδικασία βελτιστοποίησης μοντέλων μηχανικής μάθησης για ανάπτυξη σε διαφορετικές πλατφόρμες υλικού. Είτε στοχεύετε CPUs, GPUs ή εξειδικευμένους επιταχυντές AI, το Olive σας βοηθά να επιτύχετε βέλτιστη απόδοση διατηρώντας την ακρίβεια του μοντέλου.
Το Olive είναι ένα εύχρηστο εργαλείο βελτιστοποίησης μοντέλων που λαμβάνει υπόψη το υλικό και συνδυάζει κορυφαίες τεχνικές στη συμπίεση, βελτιστοποίηση και μεταγλώττιση μοντέλων. Λειτουργεί με το ONNX Runtime ως λύση βελτιστοποίησης από άκρο σε άκρο για την εκτέλεση.
- Βελτιστοποίηση με βάση το υλικό: Επιλέγει αυτόματα τις καλύτερες τεχνικές βελτιστοποίησης για το υλικό στόχο σας
- 40+ Ενσωματωμένα Στοιχεία Βελτιστοποίησης: Καλύπτει συμπίεση μοντέλων, ποσοτικοποίηση, βελτιστοποίηση γραφημάτων και άλλα
- Εύχρηστη Διεπαφή CLI: Απλές εντολές για κοινές εργασίες βελτιστοποίησης
- Υποστήριξη Πολλαπλών Πλαισίων: Συνεργάζεται με PyTorch, μοντέλα Hugging Face και ONNX
- Υποστήριξη Δημοφιλών Μοντέλων: Το Olive μπορεί να βελτιστοποιήσει αυτόματα δημοφιλείς αρχιτεκτονικές μοντέλων όπως Llama, Phi, Qwen, Gemma κ.λπ.
- Μειωμένος Χρόνος Ανάπτυξης: Δεν χρειάζεται να πειραματιστείτε χειροκίνητα με διαφορετικές τεχνικές βελτιστοποίησης
- Αυξήσεις Απόδοσης: Σημαντικές βελτιώσεις ταχύτητας (έως και 6 φορές σε ορισμένες περιπτώσεις)
- Ανάπτυξη σε Πολλαπλές Πλατφόρμες: Τα βελτιστοποιημένα μοντέλα λειτουργούν σε διαφορετικό υλικό και λειτουργικά συστήματα
- Διατήρηση Ακρίβειας: Οι βελτιστοποιήσεις διατηρούν την ποιότητα του μοντέλου ενώ βελτιώνουν την απόδοση
- Python 3.8 ή νεότερη έκδοση
- Διαχειριστής πακέτων pip
- Εικονικό περιβάλλον (συνιστάται)
Δημιουργήστε και ενεργοποιήστε ένα εικονικό περιβάλλον:
# Create virtual environment
python -m venv olive-env
# Activate virtual environment
# On Windows:
olive-env\Scripts\activate
# On macOS/Linux:
source olive-env/bin/activateΕγκαταστήστε το Olive με δυνατότητες αυτόματης βελτιστοποίησης:
pip install olive-ai[auto-opt]
pip install transformers onnxruntime-genaiΤο Olive προσφέρει διάφορες προαιρετικές εξαρτήσεις για πρόσθετες δυνατότητες:
# For Azure ML integration
pip install olive-ai[azureml]
# For DirectML (Windows GPU acceleration)
pip install olive-ai[directml]
# For CPU optimization
pip install olive-ai[cpu]
# For all features
pip install olive-ai[all]olive --helpΕάν η εγκατάσταση είναι επιτυχής, θα πρέπει να δείτε το μήνυμα βοήθειας του Olive CLI.
Ας βελτιστοποιήσουμε ένα μικρό γλωσσικό μοντέλο χρησιμοποιώντας τη δυνατότητα αυτόματης βελτιστοποίησης του Olive:
olive auto-opt \
--model_name_or_path HuggingFaceTB/SmolLM2-135M-Instruct \
--output_path models/smolm2-optimized \
--device cpu \
--provider CPUExecutionProvider \
--use_ort_genai \
--precision int4 \
--log_level 1Η διαδικασία βελτιστοποίησης περιλαμβάνει: λήψη του μοντέλου από την τοπική προσωρινή μνήμη, καταγραφή του ONNX Graph και αποθήκευση των βαρών σε ένα αρχείο δεδομένων ONNX, βελτιστοποίηση του ONNX Graph και ποσοτικοποίηση του μοντέλου σε int4 χρησιμοποιώντας τη μέθοδο RTN.
--model_name_or_path: Αναγνωριστικό μοντέλου Hugging Face ή τοπική διαδρομή--output_path: Κατάλογος όπου θα αποθηκευτεί το βελτιστοποιημένο μοντέλο--device: Στόχος συσκευής (cpu, gpu)--provider: Πάροχος εκτέλεσης (CPUExecutionProvider, CUDAExecutionProvider, DmlExecutionProvider)--use_ort_genai: Χρήση του ONNX Runtime Generate AI για εκτέλεση--precision: Ακρίβεια ποσοτικοποίησης (int4, int8, fp16)--log_level: Επίπεδο λεπτομέρειας καταγραφής (0=ελάχιστο, 1=λεπτομερές)
Βάσει του παραδείγματος που παρέχεται από το Hugging Face στο lokinfey/Qwen3-8B-ONNX-INT4-CPU, δείτε πώς να βελτιστοποιήσετε ένα μοντέλο Qwen3:
Για να ελαχιστοποιήσετε τον χρόνο λήψης, αποθηκεύστε μόνο τα απαραίτητα αρχεία:
huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct *.json *.safetensors *.txtolive auto-opt \
--model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--output_path models/qwen3-onnx-int4 \
--device cpu \
--provider CPUExecutionProvider \
--use_ort_genai \
--precision int4 \
--log_level 1Δημιουργήστε ένα απλό σενάριο Python για να δοκιμάσετε το βελτιστοποιημένο μοντέλο σας:
import onnxruntime_genai as og
# Load the optimized model
model = og.Model('models/qwen3-onnx-int4')
tokenizer = og.Tokenizer(model)
# Create a chat template
chat_template = '<|im_start|>user\n{input}<|im_end|>\n<|im_start|>assistant\n'
# Generate text
prompt = "What is machine learning?"
input_tokens = tokenizer.encode(chat_template.format(input=prompt))
params = og.GeneratorParams(model)
params.set_search_options(max_length=200)
params.input_ids = input_tokens
generator = og.Generator(model, params)
print("Generated response:")
while not generator.is_done():
generator.compute_logits()
generator.generate_next_token()
new_token = generator.get_next_tokens()[0]
print(tokenizer.decode([new_token]), end='', flush=True)
print()Μετά τη βελτιστοποίηση, ο κατάλογος εξόδου σας θα περιέχει:
models/qwen3-onnx-int4/
├── model.onnx # Optimized ONNX model
├── model.onnx.data # Model weights
├── genai_config.json # Generation configuration
├── tokenizer.json # Tokenizer files
├── tokenizer_config.json
└── special_tokens_map.json
Για πιο σύνθετες ροές εργασίας βελτιστοποίησης, μπορείτε να χρησιμοποιήσετε αρχεία ρυθμίσεων JSON:
{
"input_model": {
"type": "PyTorchModel",
"config": {
"hf_config": {
"model_name": "Qwen/Qwen2.5-0.5B-Instruct",
"task": "text-generation"
}
}
},
"systems": {
"local_system": {
"type": "LocalSystem",
"config": {
"accelerators": [
{
"device": "cpu",
"execution_providers": ["CPUExecutionProvider"]
}
]
}
}
},
"evaluators": {
"common_evaluator": {
"metrics": [
{
"name": "latency",
"type": "latency",
"sub_types": [{"name": "avg"}]
}
]
}
},
"passes": {
"conversion": {
"type": "ModelBuilder",
"config": {
"precision": "int4"
}
},
"optimization": {
"type": "OrtTransformersOptimization",
"config": {
"model_type": "gpt2"
}
}
},
"engine": {
"search_strategy": {
"execution_order": "joint",
"search_algorithm": "tpe"
},
"evaluator": "common_evaluator",
"host": "local_system",
"target": "local_system",
"cache_dir": "cache",
"output_dir": "models/optimized"
}
}Εκτέλεση με ρυθμίσεις:
olive run --config config.jsonΓια βελτιστοποίηση CUDA GPU:
olive auto-opt \
--model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--output_path models/qwen3-gpu-int4 \
--device gpu \
--provider CUDAExecutionProvider \
--use_ort_genai \
--precision int4 \
--log_level 1Για DirectML (Windows):
olive auto-opt \
--model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--output_path models/qwen3-directml-int4 \
--device gpu \
--provider DmlExecutionProvider \
--use_ort_genai \
--precision int4 \
--log_level 1Το Olive υποστηρίζει επίσης fine-tuning μοντέλων:
olive finetune \
--model_name_or_path meta-llama/Llama-3.2-1B-Instruct \
--data_name microsoft/dolly-15k \
--text_template "### Question: {instruction}\n### Answer: {response}" \
--max_steps 100 \
--output_path models/llama-finetuned- Ξεκινήστε με μικρότερα μοντέλα για δοκιμές (π.χ., 0.5B-7B παραμέτρους)
- Βεβαιωθείτε ότι η αρχιτεκτονική του μοντέλου σας υποστηρίζεται από το Olive
- Ταιριάξτε τον στόχο βελτιστοποίησης με το υλικό ανάπτυξης σας
- Χρησιμοποιήστε βελτιστοποίηση GPU αν διαθέτετε υλικό συμβατό με CUDA
- Εξετάστε το DirectML για μηχανήματα Windows με ενσωματωμένα γραφικά
- INT4: Μέγιστη συμπίεση, μικρή απώλεια ακρίβειας
- INT8: Καλή ισορροπία μεγέθους και ακρίβειας
- FP16: Ελάχιστη απώλεια ακρίβειας, μέτρια μείωση μεγέθους
- Πάντα να δοκιμάζετε τα βελτιστοποιημένα μοντέλα με τις συγκεκριμένες περιπτώσεις χρήσης σας
- Συγκρίνετε μετρικές απόδοσης (καθυστέρηση, ρυθμός μετάδοσης, ακρίβεια)
- Χρησιμοποιήστε αντιπροσωπευτικά δεδομένα εισόδου για αξιολόγηση
- Ξεκινήστε με αυτόματη βελτιστοποίηση για γρήγορα αποτελέσματα
- Χρησιμοποιήστε αρχεία ρυθμίσεων για λεπτομερή έλεγχο
- Πειραματιστείτε με διαφορετικά περάσματα βελτιστοποίησης
# If you encounter dependency conflicts:
pip install --upgrade pip
pip install olive-ai[auto-opt] --force-reinstall# Verify CUDA installation:
nvidia-smi
# Install correct ONNX Runtime GPU package:
pip install onnxruntime-gpu- Χρησιμοποιήστε μικρότερα μεγέθη παρτίδας κατά τη βελτιστοποίηση
- Δοκιμάστε ποσοτικοποίηση με υψηλότερη ακρίβεια πρώτα (int8 αντί για int4)
- Βεβαιωθείτε ότι υπάρχει αρκετός χώρος στο δίσκο για προσωρινή αποθήκευση μοντέλων
- Επαληθεύστε τη διαδρομή του μοντέλου και τα δικαιώματα πρόσβασης
- Ελέγξτε αν το μοντέλο απαιτεί
trust_remote_code=True - Βεβαιωθείτε ότι έχουν ληφθεί όλα τα απαραίτητα αρχεία μοντέλου
- Τεκμηρίωση: microsoft.github.io/Olive
- Θέματα GitHub: github.com/microsoft/Olive/issues
- Παραδείγματα: microsoft.github.io/Olive/examples.html
Το microsoft/olive-recipes αποθετήριο συμπληρώνει το κύριο εργαλείο Olive παρέχοντας μια ολοκληρωμένη συλλογή έτοιμων προς χρήση συνταγών βελτιστοποίησης για δημοφιλή μοντέλα AI. Αυτό το αποθετήριο λειτουργεί ως πρακτική αναφορά τόσο για τη βελτιστοποίηση δημόσιων μοντέλων όσο και για τη δημιουργία ροών εργασίας βελτιστοποίησης για ιδιόκτητα μοντέλα.
- 100+ Προκατασκευασμένες Συνταγές: Έτοιμες ρυθμίσεις βελτιστοποίησης για δημοφιλή μοντέλα
- Υποστήριξη Πολλαπλών Αρχιτεκτονικών: Καλύπτει μοντέλα μετασχηματιστών, μοντέλα όρασης και πολυτροπικές αρχιτεκτονικές
- Βελτιστοποιήσεις με βάση το υλικό: Συνταγές προσαρμοσμένες για CPU, GPU και εξειδικευμένους επιταχυντές
- Δημοφιλείς Οικογένειες Μοντέλων: Περιλαμβάνει Phi, Llama, Qwen, Gemma, Mistral και πολλά άλλα
Το αποθετήριο περιλαμβάνει συνταγές βελτιστοποίησης για:
- Microsoft Phi: Phi-3-mini, Phi-3.5-mini, Phi-4-mini, Phi-4-reasoning
- Meta Llama: Llama-2-7b, Llama-3.1-8B, Llama-3.2-1B/3B
- Alibaba Qwen: Qwen1.5-7B, Qwen2-7B, Qwen2.5 σειρά (0.5B έως 14B)
- Google Gemma: Διάφορες διαμορφώσεις Gemma
- Mistral AI: Σειρά Mistral-7B
- DeepSeek: Μοντέλα σειράς R1-Distill
- Stable Diffusion: v1.4, XL-base-1.0
- CLIP Models: Διάφορες διαμορφώσεις CLIP-ViT
- ResNet: Βελτιστοποιήσεις ResNet-50
- Vision Transformers: ViT-base-patch16-224
- Whisper: OpenAI Whisper-large-v3
- BERT: Βασικές και πολυγλωσσικές παραλλαγές
- Sentence Transformers: all-MiniLM-L6-v2
# Clone the recipes repository
git clone https://github.com/microsoft/olive-recipes.git
cd olive-recipes
# Navigate to a specific model recipe
cd microsoft-Phi-4-mini-instruct
# Run the optimization
olive run --config olive_config.json# Copy a recipe configuration for your model
cp olive-recipes/microsoft-Phi-3-mini-4k-instruct/olive_config.json ./my_config.json
# Modify the configuration for your needs
# Update model paths, optimization parameters, etc.
# Run with your custom configuration
olive run --config my_config.jsonΚάθε κατάλογος συνταγής περιέχει συνήθως:
model-name/
├── olive_config.json # Main optimization configuration
├── requirements.txt # Python dependencies
├── README.md # Model-specific instructions
├── user_script.py # Custom preprocessing/evaluation scripts
└── sample_data/ # Sample input data for testing
Ας χρησιμοποιήσουμε τη συνταγή Phi-4-mini ως παράδειγμα:
# Clone the repository
git clone https://github.com/microsoft/olive-recipes.git
cd olive-recipes/microsoft-Phi-4-mini-instruct
# Install dependencies
pip install -r requirements.txt
# Run the optimization
olive run --config olive_config.jsonΤο αρχείο ρυθμίσεων περιλαμβάνει συνήθως:
{
"input_model": {
"type": "PyTorchModel",
"config": {
"hf_config": {
"model_name": "microsoft/Phi-4-mini-instruct",
"task": "text-generation",
"trust_remote_code": true
}
}
},
"systems": {
"local_system": {
"type": "LocalSystem",
"config": {
"accelerators": [
{
"device": "cpu",
"execution_providers": ["CPUExecutionProvider"]
}
]
}
}
},
"passes": {
"convert": {
"type": "ModelBuilder",
"config": {
"precision": "int4"
}
}
}
}Για να αλλάξετε το υλικό στόχο, ενημερώστε την ενότητα systems:
{
"systems": {
"gpu_system": {
"type": "LocalSystem",
"config": {
"accelerators": [
{
"device": "gpu",
"execution_providers": ["CUDAExecutionProvider"]
}
]
}
}
}
}Τροποποιήστε την ενότητα passes για διαφορετικά επίπεδα βελτιστοποίησης:
{
"passes": {
"convert": {
"type": "ModelBuilder",
"config": {
"precision": "int8", // Change from int4 to int8
"use_ort_genai": true,
"use_dynamo_exporter": true
}
},
"optimize": {
"type": "OrtTransformersOptimization",
"config": {
"optimization_level": "all"
}
}
}
}- Ξεκινήστε με Παρόμοιο Μοντέλο: Βρείτε μια συνταγή για μοντέλο με παρόμοια αρχιτεκτονική
- Ενημερώστε τη Ρύθμιση Μοντέλου: Αλλάξτε το όνομα/διαδρομή του μοντέλου στη ρύθμιση
- Ρυθμίστε Παραμέτρους: Τροποποιήστε τις παραμέτρους βελτιστοποίησης όπως απαιτείται
- Δοκιμή και Επικύρωση: Εκτελέστε τη βελτιστοποίηση και επικυρώστε τα αποτελέσματα
- Συνεισφέρετε Πίσω: Σκεφτείτε να συνεισφέρετε τη συνταγή σας στο αποθετήριο
- Δοκιμασμένες ρυθμίσεις βελτιστοποίησης για συγκεκριμένα μοντέλα
- Αποφεύγεται η δοκιμή και το λάθος στην εύρεση βέλτιστων παραμέτρων
- Προ-βελτιστοποιημένες για διαφορετικούς παρόχους εκτέλεσης
- Έτοιμες ρυθμίσεις για στόχους CPU, GPU και NPU
- Υποστηρίζει τα πιο δημοφιλή μοντέλα ανοιχτού κώδικα
- Τακτικές ενημερώσεις με νέες κυκλοφορίες μοντέλων
- Συνεργατική ανάπτυξη με την κοινότητα AI
- Κοινή γνώση και καλές πρακτικές
Εάν έχετε βελτιστοποιήσει ένα μοντέλο που δεν καλύπτεται στο αποθετήριο:
- Fork το Αποθετήριο: Δημιουργήστε το δικό σας fork του olive-recipes
- **Δημιουργία Καταλόγου Συντα
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.