A high-performance MLIR-based runtime optimizer for quantized transformer LLMs, designed for low-latency edge deployment on NVIDIA GPUs.
- Custom MLIR Passes: Transformer-specific optimizations targeting edge devices
- Quantization Pipeline: 75% model size reduction with minimal accuracy loss
- ONNX Rewriting Engine: TensorRT compatibility and optimization
- AWS SageMaker Integration: Auto-scaling deployment endpoints
- Comprehensive Benchmarking: Performance validation suite
- HuggingFace Integration: Seamless model compatibility
- 48% latency reduction on NVIDIA GPUs using TensorRT + ONNX rewriting
- 75% model size reduction through quantization-aware training
- Edge-optimized for low-latency inference
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ HuggingFace │ │ MLIR Passes │ │ TensorRT │
│ Transformers │───▶│ Optimization │───▶│ Runtime │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Quantization │ │ ONNX Model │ │ Edge Device │
│ Pipeline │ │ Rewriting │ │ Deployment │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Python 3.8+
- CUDA 11.0+
- TensorRT 8.0+
- MLIR/LLVM 15.0+
- PyTorch 1.12+
# Clone the repository
git clone <repository-url>
cd llm-runtime-optimizer
# Install dependencies
pip install -r requirements.txt
# Install MLIR dependencies
./scripts/install_mlir.sh
# Build custom MLIR passes
./scripts/build_mlir_passes.shfrom llm_optimizer import LLMOptimizer
from llm_optimizer.quantization import QuantizationPipeline
# Initialize optimizer
optimizer = LLMOptimizer(
model_name="microsoft/DialoGPT-medium",
target_device="cuda",
optimization_level="aggressive"
)
# Load and optimize model
optimized_model = optimizer.optimize()
# Run inference
output = optimized_model.generate("Hello, how are you?")# Initialize quantization pipeline
quantizer = QuantizationPipeline(
model=model,
calibration_data=calibration_data,
target_size_reduction=0.75
)
# Quantize model
quantized_model = quantizer.quantize()from llm_optimizer.mlir import MLIROptimizer
# Create MLIR optimizer
mlir_optimizer = MLIROptimizer()
# Apply custom passes
optimized_mlir = mlir_optimizer.apply_passes(
model_mlir,
passes=["transformer-fusion", "attention-optimization", "memory-layout"]
)llm-runtime-optimizer/
├── src/
│ ├── llm_optimizer/ # Core optimization engine
│ ├── mlir_passes/ # Custom MLIR passes
│ ├── quantization/ # Quantization pipeline
│ ├── onnx_rewriter/ # ONNX model rewriting
│ ├── tensorrt_integration/ # TensorRT runtime
│ └── deployment/ # AWS SageMaker integration
├── tests/ # Comprehensive test suite
├── benchmarks/ # Performance benchmarking
├── examples/ # Usage examples
├── scripts/ # Build and installation scripts
├── docs/ # Documentation
└── configs/ # Configuration files
- Conservative: Minimal optimizations, maximum compatibility
- Balanced: Balanced performance and compatibility
- Aggressive: Maximum performance, may require model-specific tuning
- CUDA: NVIDIA GPU optimization
- CPU: x86/ARM CPU optimization
- Edge: Mobile/embedded device optimization
Run comprehensive performance benchmarks:
# Run all benchmarks
python -m benchmarks.run_all
# Run specific benchmark
python -m benchmarks.latency_benchmark --model gpt2 --batch_size 32
# Generate performance report
python -m benchmarks.generate_reportfrom llm_optimizer.deployment import SageMakerDeployer
deployer = SageMakerDeployer(
model=optimized_model,
instance_type="ml.g4dn.xlarge",
auto_scaling=True
)
endpoint = deployer.deploy()# Start optimization server
python -m llm_optimizer.server --port 8000
# Client usage
curl -X POST http://localhost:8000/optimize \
-H "Content-Type: application/json" \
-d '{"model_name": "gpt2", "optimization_level": "aggressive"}'# Run all tests
pytest tests/
# Run specific test category
pytest tests/test_mlir_passes.py
pytest tests/test_quantization.py
pytest tests/test_tensorrt.py
# Run with coverage
pytest --cov=llm_optimizer tests/| Model | Original Latency | Optimized Latency | Improvement |
|---|---|---|---|
| GPT-2 (117M) | 45ms | 23ms | 48% |
| BERT (110M) | 38ms | 20ms | 47% |
| T5 (220M) | 67ms | 35ms | 48% |
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
- MLIR/LLVM community for the optimization framework
- NVIDIA for TensorRT and CUDA
- HuggingFace for transformer models
- AWS for SageMaker platform