Payments and branches
Authorization is already on a short clock. Score transactions in sub-millisecond latency with local TreeSHAP explanations on the server that holds the record, before cardholder data ever leaves the network.
Start
Quick Start SMILE Studio Tutorial Data Processing Data Import and Export Data Visualization Declarative VisualizationSupervised
Classification Regression Deep Learning Time Series Sequence Labeling Natural Language Processing Feature Engineering Model Validation Hyperparameter Optimization Unified Training InterfaceUnsupervised
Clustering Vector Quantization Anomaly Detection Association Rule Mining Multi-Dimensional Scaling Manifold LearningGenAI
Large Language Models Computer Vision ONNX ONNX GenAI SMILE ServeMath
Linear Algebra Statistics Interpolation Wavelet Compressed Sensing Graph Data StructureSMILE is a comprehensive AI engine for the JVM. Handle everything from machine learning modeling and on-device training to ONNX graphs and local LLM inference inside your Java application—on the branch server, payment terminal, vehicle gateway, or air-gapped node.
Who it is for
Authorization is already on a short clock. Score transactions in sub-millisecond latency with local TreeSHAP explanations on the server that holds the record, before cardholder data ever leaves the network.
Driver and vehicle signals are scored—and models are retrained—directly in the cab. A summary comes back when the link is up; the raw sensor stream never rides the cellular bill.
The node keeps working with the network unplugged. A 0.2 GB native container is small enough to audit, boots in 0.4 seconds, and never fetches a weight or library from outside.
Why SMILE excels at the edge
.sml decision trees, random forests, k-means, regressors), direct internal routing to .onnx models, and native local SLMs/LLMs with tokenizers, GQA, RoPE, and radix KV-caching.
.sml and .onnx models hot-swap atomically from disk or drain gracefully without restarting the process, backed by Kubernetes-ready health probes and unified Prometheus telemetry.
Measured runtime profile
SMILE Serve ships four pre-built Docker flavors (ghcr.io/haifengl/smile-serve). Every flavor serves SMILE (.sml) and ONNX (.onnx) models, the web UI, health probes, and Prometheus metrics. Numbers below were measured on x86-64 with three baseline models loaded (Random Forest, LDA, and an ONNX model), plus a fourth chat LLM where noted.
| Image Flavor | Runtime & Target | Image Size | Startup Latency | Memory Consumption | Capabilities |
|---|---|---|---|---|---|
latest-micro |
GraalVM native executable, CPU (x86-64-v3) |
0.2 GB (~205 MB) | 0.4 s | ~80 MiB idle | SMILE (.sml) & ONNX inference, TreeSHAP & KernelSHAP, Web UI inference pages, health & metrics. No chat or database. Built for constrained edge gateways, sidecars, and scale-to-zero fleets. |
latest-native |
GraalVM native executable, CPU (x86-64-v3) |
0.4 GB (~375 MB) | 0.5 s (no chat) 8 s (with Phi-4-mini) |
~115 MiB idle (~5× less than JVM) 3 GiB (with Phi-4-mini 4.6 GB) |
Full CPU feature set: SMILE & ONNX inference + CPU LLM chat (ONNX Runtime GenAI packages), user accounts, and embedded H2 conversation history. |
latest |
JVM (OpenJDK 25), any x86-64 CPU |
0.6 GB | ~3 s (no chat) 11 s (with Phi-4-mini) |
~600 MiB idle 3.5 GiB (with Phi-4-mini 4.6 GB) |
Full CPU feature set on a JIT-compiled JVM. Runs on any x86-64 CPU (including pre-AVX2 hardware) with standard JVM diagnostics and tooling. |
latest-gpu |
JVM + NVIDIA CUDA 13.2 | 16 GB | ~3 s (no chat) ~25 s (Qwen3.8-27B BF16, TP=4) |
~34 GiB per GPU (~136 GiB across 4 GPUs, Qwen3.8-27B BF16) | LibTorch/CUDA LLM engine (Llama, Qwen) with CUDA graphs, FlashInfer, MTP speculative decoding (up to 2.8× single-request speedup, 906 tok/s batched), tensor parallelism, ONNX GenAI, and S3 blob storage. |
Architecture comparison
Depending on what your edge workload does, you can run SMILE standalone or pair its native ONNX routing with classical ML and local SLMs in a single process:
| Feature / Goal | ONNX Runtime / LiteRT | SMILE Engine |
|---|---|---|
| Primary Use Case | Deploying heavy deep learning models (YOLO, ResNet, BERT) trained elsewhere. | End-to-end edge data science: feature engineering, classical ML, analytics, ONNX routing, and local LLMs. |
| On-Device Training | Incredibly difficult; optimized almost exclusively for static inference. | Supported natively. Actively train algorithms (Random Forests, Gradient Boosting, K-Means, DBSCAN) directly on edge data. |
| Dependencies & Footprint | Typically deployed inside a bloated Python environment alongside bulky platform-specific native binaries—resulting in multi-GB footprints, high memory overhead, and poor real-time predictability on edge hardware. | Pure Java by default (or a self-contained GraalVM native binary) with deterministic latency; native extensions (OpenBLAS, ORT, LibTorch) are completely optional. |
| Explainability | External post-processing required; no built-in feature attribution. | Built-in TreeSHAP & KernelSHAP computed in-process per inference request or SSE stream, with interactive Waterfall, Force, and Decision plots in the Web UI. |
| Serving & Operations | C++/Python library; requires custom wrapper for REST, UI, or metrics. | Turnkey Quarkus server (0.2 GB micro native image, 0.4 s boot, ~80 MiB idle RAM) with OpenAI-compatible API, React UI, and Prometheus metrics. |
A 30-day pilot
The operating system, the firmware, and the disk stay with what you already have. HALO is the inference runtime on top. We package the models you already have, put the runtime next to the traffic, and measure a live score, a local explanation, a model swap, and a run with the network unplugged. Tell us where the nodes sit and what you score today.
No matches.