Introduction
Cloud-hosted Large Language Models (LLMs) have made AI more accessible than ever, but they aren't the right solution for every application. Some scenarios require low latency, offline capabilities, predictable costs, or stricter control over sensitive data.
Running AI models locally addresses these challenges. With ONNX Runtime, Microsoft Phi models, and .NET 10, developers can build intelligent applications that perform inference directly on local hardware without depending on external AI services.
In this article, you'll learn how to build local AI applications using ONNX models, understand when local inference is the right choice, and follow production-ready implementation practices.
Why Run AI Locally?
Local AI offers several advantages over cloud-based inference.
Benefits include:
Offline operation
Reduced latency
Lower operational costs
Improved privacy
Predictable performance
Full control over model deployment
These advantages make local AI suitable for desktop applications, edge devices, industrial systems, and environments with strict compliance requirements.
What Is ONNX Runtime?
ONNX (Open Neural Network Exchange) is an open standard for representing machine learning models.
ONNX Runtime is Microsoft's high-performance inference engine that supports:
CPU execution
GPU acceleration
Cross-platform deployment
Hardware optimization
Multiple programming languages
Efficient memory usage
It allows .NET applications to execute trained AI models without requiring the original training framework.
What Are Phi Models?
Microsoft's Phi family consists of compact language models designed for efficient inference.
Compared to larger cloud-hosted models, Phi models provide:
Smaller model sizes
Faster inference
Lower hardware requirements
Strong reasoning capabilities for their size
Better suitability for local deployment
They are ideal for applications where privacy, responsiveness, and cost are more important than supporting extremely large contexts.
Typical Architecture
A local AI application typically includes:
| Component | Responsibility |
|---|---|
| ASP.NET Core or Desktop App | User interface or API |
| Business Services | Application logic |
| ONNX Runtime | Executes the AI model |
| Phi Model | Generates responses |
| Local Storage | Stores application data |
| Logging & Monitoring | Diagnostics and telemetry |
Since inference occurs locally, applications remain operational even without internet connectivity.
Loading an ONNX Model
Install the ONNX Runtime package.
dotnet add package Microsoft.ML.OnnxRuntime
Load the model during application startup.
using Microsoft.ML.OnnxRuntime;
using var session =
new InferenceSession("Models/phi.onnx");
Creating the inference session once and reusing it improves performance by avoiding repeated model initialization.
Running Inference
Prepare model inputs and execute inference.
using var results = session.Run(inputs);
var output = results.First();
The output can then be post-processed and presented to the user through your application.
Local AI vs Cloud AI
| Feature | Local AI | Cloud AI |
|---|---|---|
| Internet Required | No | Yes |
| Latency | Very Low | Network Dependent |
| Privacy | High | Depends on Provider |
| Operational Cost | Fixed Hardware | Usage-Based |
| Model Updates | Manual | Managed Service |
| Scalability | Device Limited | Cloud Scale |
Many enterprise solutions combine both approaches, using local inference for routine tasks and cloud models for more complex workloads.
Production Considerations
Dependency Injection
Register ONNX inference services using ASP.NET Core's dependency injection container.
Wrap model execution in a dedicated service to:
Reuse inference sessions
Simplify testing
Centralize model management
Isolate AI logic from business code
Avoid creating a new InferenceSession for every request.
Configuration
Store model configuration in appsettings.json.
{
"AI": {
"ModelPath": "Models/phi.onnx",
"ExecutionProvider": "CPU"
}
}
Keep model paths configurable to simplify updates across development, testing, and production environments.
Logging
Monitor important AI events, including:
Model loading
Inference duration
Prediction failures
Memory usage
Model version
Hardware utilization
Avoid logging user prompts or sensitive application data unless absolutely necessary.
Error Handling
Local inference can fail for several reasons.
Handle scenarios such as:
Missing model files
Corrupted models
Unsupported hardware
Invalid input tensors
Memory limitations
Applications should fail gracefully and provide meaningful diagnostics for troubleshooting.
Security
Although inference is local, security remains essential.
Protect your application by:
Verifying model integrity before deployment.
Restricting access to model files.
Encrypting sensitive application data.
Validating user input.
Keeping ONNX Runtime updated.
Preventing unauthorized model replacement.
Running models locally reduces data exposure but does not eliminate other security concerns.
Performance
Optimize inference performance by:
Reusing inference sessions.
Choosing the appropriate execution provider.
Minimizing unnecessary tensor allocations.
Batching requests where appropriate.
Monitoring CPU and memory usage.
Using optimized ONNX models.
Benchmark different hardware configurations before production deployment to identify the best balance between speed and resource consumption.
Hybrid AI Architectures
Many enterprise applications combine local and cloud AI.
For example:
Local Phi model for quick responses.
Cloud LLM for complex reasoning.
Local document classification.
Cloud-based report generation.
Local inference during offline operation.
A hybrid architecture provides flexibility while controlling cost and latency.
Deployment
Local AI applications can be deployed using:
Windows desktop applications
Linux services
Docker containers
Edge devices
Azure IoT Edge
Ensure model files are packaged correctly and validated during deployment.
Best Practices
Load models once during application startup.
Reuse inference sessions.
Benchmark different execution providers.
Validate model inputs.
Version model files carefully.
Monitor inference latency.
Separate AI logic from business services.
Common Mistakes
Avoid these common pitfalls:
Reloading models for every request.
Deploying unoptimized models.
Ignoring hardware limitations.
Hardcoding model paths.
Skipping performance benchmarking.
Assuming local inference requires no monitoring.
Optimizing the model lifecycle is often as important as optimizing the application itself.
Troubleshooting
| Problem | Solution |
|---|---|
| Model fails to load | Verify the file path, model format, and ONNX Runtime compatibility. |
| Slow inference | Reuse inference sessions, optimize the model, and evaluate hardware acceleration options. |
| High memory usage | Reduce batch size, optimize tensor allocations, and monitor model size. |
| Invalid prediction results | Validate input preprocessing and ensure the model matches expected input formats. |
| Application crashes during inference | Review exception logs, verify model integrity, and monitor available system resources. |
Conclusion
Local AI enables .NET developers to build intelligent applications that are fast, private, and capable of running without cloud connectivity. By combining ONNX Runtime with Microsoft's Phi models, developers can deploy efficient AI solutions across desktop applications, edge devices, and enterprise systems while maintaining full control over their data and infrastructure.
Following production best practices—including dependency injection, secure configuration, efficient model management, comprehensive monitoring, and careful performance optimization—ensures local AI applications remain reliable, maintainable, and ready for real-world deployment.

Jasen FiciPosted Aug 13, 2026, 1:32 PM
Thanks for sharing this — we included it in DotNetNews here: https://dotnetnews.co/archive/the-net-news-daily-issue-518/