Latest News
- SMILE 6.3.0 Released! (Aug 18, 2026)
- SMILE 6.2.5 Released! (Aug 1st, 2026)
- SMILE 6.2.4 Released! (Jul 13, 2026)
- SMILE 6.2.3 Released! (Jun 23, 2026)
- SMILE 6.2.2 Released! (Jun 19, 2026)
- SMILE 6.2.1 Released! (Jun 17, 2026)
- SMILE 6.2.0 Released! (Jun 11, 2026)
- SMILE 6.1.1 Released! (Jun 5, 2026)
- SMILE 6.1.0 Released! (May 4, 2026)
- SMILE 6.0.1 Released! (Apr 27, 2026)
- SMILE 6.0.0 Released! (Apr 18, 2026)
- 10 Best Machine Learning Libraries You Should Know in 2026 (Feb 3, 2026, by AlmaBetter Bytes)
- 3 projects lighting a fire under machine learning (Aug 30, 2017, by InfoWorld)
- 5 Machine Learning Projects You Can No Longer Overlook (Apr 19, 2017, by KDnuggets)
Built-in Algorithms:
- Large Language Models
Language Model, Chat Completion, Message, Llama, Qwen, Inference Engine, Tiktoken, Grouped-Query Attention, RoPE, SwiGLU Feed-Forward, KV Cache
- Deep Learning
Model, Layers, Sequential Block, Linear, Conv2d, Embedding, Batch Norm, RMS Norm, Dropout, Tensor, Device, Optimizer, Loss, Dataset, EfficientNet
- Classification
Decision Trees, AdaBoost, Gradient Boosting, Random Forest, Logistic Regression, Neural Networks, Support Vector Machines, RBF Networks, Maximum Entropy Classifier, Generic Naïve Bayes Classifier, Naïve Bayes Document Classfier, Fisher / Linear / Quadratic / Regularized Discriminant Analysis, Platt Scaling, Isotonic Regression Scaling, One vs. One, One vs. Rest
- Regression
Linear Regression, LASSO, ElasticNet, Ridge Regression, Regression Trees, Gradient Boosting, Random Forest, RBF Networks, Neural Networks, Support Vector Regression, Gaussian Process, Generalized Linear Models, Generalized Additive Models
- Feature Engineering and Selection
Bag of Words, Sparse One Hot Encoding, Standardizer, Robust Standardizer, Maximum Absolute Value Scaler, Winsor Scaler, Normalizer, Genetic Algorithm based Feature Selection, Ensemble Learning based Feature Selection, TreeSHAP, Signal Noise ratio, Sum Squares ratio
- Dimension Reduction
PCA, Kernel PCA, Probabilistic PCA, Generalized Hebbian Algorithm, Random Project, ICA
- Model Validation
Cross Validation, Leave-One-Out Validation, Bootstrap, Confusion Matrix, Hyperparameter Tuning, AUC, LogLoss, CrossEntropy, Accuracy, Error, Fallout, FDR, F-Score, Precision, Recall, Sensitivity, Specificity, Matthews Correlation Coefficient, MSE, RMSE, RSS, R2, Mean Absolute Deviation, Rand Index, Adjusted Rand Index, Mutual Information Score,
- Clustering
Hierarchical Clustering, CLARANS, DBSCAN, DENCLUE, K-Means, X-Means, G-Means, K-Modes, Deterministic Annealing, Sequential Information Bottleneck, Spectral Clustering, Minimum Entropy Clustering
- Vector Quantization
BIRCH, Self-Organizing Maps, Neural Gas, Growing Neural Gas, Neural Map
- Association Rules
- Manifold learning
IsoMap, LLE, Laplacian Eigenmap, t-SNE, UMAP, Classical MDS, Isotonic MDS, Sammon Mapping
- Nearest Neighbor Search
Linear Search, BK-Tree, Cover Tree, KD-Tree, LSH, Multi-Probe LSH, SimHash
- Sequence Learning
- Time Series
- Natural Language Processing
Sentence Splitter, Tokenizer, Bigram Extractor, Phrase Extractor, Keyword Extractor, Porter Stemmer, Lancaster Stemmer, POS Tagging, Relevance Ranking, Word2Vec
- Mathematics
Genetic Algorithms, Graph, Hash Functions, Interpolation, Sort Algorithms, Taxonomy, Wavelet
- Linear Algebra
Dense Matrix, Band Matrix, Sparse Matrix, LU, Cholesky, QR, EVD, SVD, Biconjugate Gradient, BFGS, Computer Algebra System
- Statistics
SMILE is a comprehensive, high-performance machine learning engine for the JVM. From classic algorithms to GPU-accelerated deep learning and LLM inference — all in pure Java, Scala, or Kotlin. Get started in 5 minutes →
Speed
Advanced data structures and algorithms deliver state-of-the-art performance.
Compared to a third-party benchmark, SMILE outperforms R, Python, Spark, H2O, and XGBoost significantly — often by several times while using far less memory. If you can train advanced models on a laptop, why buy a cluster?
Ease of Use
Write applications quickly in Java, Scala, Kotlin, Clojure, or Groovy. Data scientists and engineers can now speak the same language.
SMILE provides hundreds of algorithms behind a clean, consistent API. The Scala and Kotlin bindings add high-level operators and DSL builders. Use it interactively from the SMILE shell or embed it in any JVM application.
var iris = Read.arff("iris.arff");
var model = RandomForest.fit(Formula.lhs("class"), iris);
println(model.metrics());
val iris = read.arff("iris.arff")
val model = randomForest("class" ~, iris)
println(model.metrics)
val iris = read.arff("iris.arff")
val model = randomForest(Formula.lhs("class"), iris)
println(model.metrics())
(let [iris (read-arff
"data/weka/iris.arff")
model (random-forest
(Formula/lhs "class") iris)]
(.metrics model))
var iris = Read.arff("iris.arff")
var model = RandomForest.fit(Formula.lhs("class"), iris)
println model.metrics()
Large Language Models
Run LLM inference natively on the JVM — no Python bridge required.
SMILE ships a complete LLM stack backed by LibTorch: tiktoken BPE tokenizer, grouped-query attention (GQA), rotary positional encoding (RoPE), SwiGLU feed-forward, and KV-cache. An OpenAI-compatible REST server with Server-Sent Events (SSE) streaming is included for production deployment. See Large Language Models.
var llama = Llama.build(
"model/Meta-Llama-3-8B-Instruct",
"model/.../tokenizer.model",
4, 2048, (byte) 0);
int[][] prompts = llama.tokenizer.encode(
"Once upon a time", true, false);
var result = llama.generate(prompts, 200,
0.6, 0.9, false, 42L, null);
var reply = llama.chat(
new Message[]{
Message.system("Be concise."),
Message.user(
"What is RoPE?")
},
128, 0.7, 0.9, false, 0L, null);
System.out.println(reply.content());
Deep Learning & Computer Vision
GPU-accelerated neural networks — build, train, and deploy on LibTorch.
The smile-deep module exposes LibTorch tensors, all standard
layer types (linear, Conv2d, pooling, BN/GN/RMS norm, dropout, embedding),
loss functions, and optimizers (SGD, Adam, AdamW, RMSprop) through a clean
Java API. Pretrained EfficientNet-V2 (S/M/L) models for
ImageNet classification are available with a single method call.
See Deep Learning.
// Pretrained EfficientNet-V2-S
var model = EfficientNet.V2S();
var img = ImageIO.read(
new File("dog.jpg"));
// Auto-preprocesses the image
try (var logits = model.forward(img)) {
var probs = logits.softmax(1);
int cls = probs.argmax(1, false)
.intValue();
}
var mlp = new SequentialBlock(
Layer.relu(784, 256),
Layer.relu(256, 128),
Layer.logSoftmax(128, 10));
var opt = Optimizer.adam(
mlp.asTorch().parameters(), 1e-3);
mlp.train(10, dataset,
Loss.nll(), opt,
new Accuracy(), testDataset);
Comprehensive
The most complete machine learning engine on the JVM.
SMILE covers every aspect of machine learning — LLM, computer vision, deep learning, classification, regression, clustering, association rule mining, manifold learning, nearest-neighbor search, feature engineering, missing-value imputation, time series, NLP, and more. See the sidebar for a full list of algorithms.
Natural Language Processing
From classic text processing to state-of-the-art LLM inference.
SMILE includes classic NLP building blocks — sentence splitter, word tokenizer, Porter/Lancaster stemmers, HMM POS tagger, bigram/phrase extraction, keyword detection, BM25 relevance ranking, and Word2Vec embeddings — alongside the full LLM inference stack. See NLP and LLM.
Mathematics & Statistics
A complete numerical computing environment inside the JVM.
Dense, band, and sparse matrices; LU, Cholesky, QR, EVD, SVD decompositions; BFGS / L-BFGS optimizers; wavelets; interpolation (linear, cubic spline, bilinear, bicubic); probability distributions; hypothesis tests (t-test, chi-squared, ANOVA, KS); and even a Scala-based computer algebra system with symbolic differentiation. See Linear Algebra and Statistics.
var A = Matrix.randn(3, 3);
double[] x = {1.0, 2.0, 3.0};
var lu = A.lu();
lu.solve(x);
lu.inverse().mm(A);
int[] bins1 = {8, 13, 16, 10, 3};
int[] bins2 = {4, 9, 14, 16, 7};
Hypothesis.chisq.test(bins1, bins2);
val x = Var("x")
val y = Var("y")
val e = x**2 + y**3 + x**2 * cot(y**3)
val dx = e.d(x)
println(dx)
Data Visualization
Interactive 2D/3D Swing plots and declarative Vega-Lite charts.
Scatter plot, line plot, bar plot, box plot, heatmap, hexmap, histogram, QQ plot, surface, contour, dendrogram, wireframe, and more. SMILE also supports declarative visualization that compiles to Vega-Lite for browser and Jupyter rendering. See Visualization and Declarative Visualization.