smile

GitHub
6.4k 1.1k 简单 3 次阅读 昨天NOASSERTION语言模型其他开发框架数据工具图像
AI 解读 由 AI 自动生成,仅供参考

Smile 是一个基于 Java 的快速、全面的机器学习框架,全称为“统计机器智能与学习引擎”。它提供了从传统机器学习到深度学习的完整算法库,包括分类、回归、聚类、特征选择、关联规则挖掘、流形学习等,并支持大规模语言模型(如 Llama 3.1)的推理与服务部署。此外,它还涵盖了图算法、线性代数、数值计算及符号计算等高级功能。

Smile 主要解决了在 Java 生态中进行高效机器学习开发的痛点,为需要高性能、易集成且功能全面的用户提供了一个一体化的解决方案。它通过优化的数据结构和算法实现了业界领先的性能,并支持 CPU 与 GPU 加速的深度学习。

该框架适合 Java、Scala 或 Kotlin 开发者,尤其是那些需要在企业级应用或生产系统中嵌入机器学习能力的工程师。同时,其丰富的算法和清晰的 API 设计也使其适用于学术研究人员和学生进行算法实验与原型开发。

Smile 的技术亮点包括:完全原生的 Java LLM 实现与高性能推理服务器;自包含的深度学习模块;以及覆盖机器学习全流程的算法集成。它采用双许可证模式,既支持开源社区使用,也提供商业许可选项。

使用场景

某中型金融科技公司的风控团队需要为在线信贷业务构建实时反欺诈模型,每天处理数百万笔交易数据,要求模型在 50ms 内完成推理,且必须部署在现有的 Java 微服务架构中。

没有 smile 时

  • 技术栈割裂:团队被迫使用 Python(scikit-learn/XGBoost)训练模型,再通过 REST API 或 PMML 格式与 Java 后端集成,引入额外的网络延迟和序列化开销,端到端响应时间经常超过 200ms
  • 部署复杂度高:需要维护 Python 服务集群,涉及多语言环境的依赖管理、版本冲突,以及跨团队的协作成本,一次模型上线需要 2-3 天
  • 算法选择受限:Java 生态中缺乏完整的机器学习库,Weka 性能不足,DL4J 偏重深度学习,传统风控常用的梯度提升、随机森林等算法没有成熟原生实现
  • 特征工程低效:缺失值处理、特征选择需要手写代码或引入额外工具,无法在一个框架内完成数据预处理到模型训练的全流程

使用 smile 后

  • 纯 Java 端到端方案:直接在现有 Spring Boot 服务中集成 smile,梯度提升(GBM)和随机森林模型原生运行,推理延迟降至 15-30ms,满足实时风控要求
  • 零额外基础设施:无需新增 Python 服务,模型文件直接嵌入 Java 应用,CI/CD 流程与现有后端完全一致,模型热更新可在分钟级完成
  • 算法全覆盖:smile 提供 XGBoost 级别的梯度提升实现,同时支持逻辑回归、SVM、神经网络等多种基线模型,方便团队快速对比验证 A/B 测试效果
  • 内置数据流水线:利用 smile 的缺失值插补、特征选择和标准化工具,配合 Java Stream API 构建高效的数据预处理管道,开发效率提升 3 倍以上

smile 让 Java 后端团队无需跳出技术舒适区,就能获得 Python 生态级别的机器学习能力,实现高性能、低延迟、易维护的实时智能决策系统。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

支持GPU加速(深度学习功能),未说明具体显卡型号、显存大小或CUDA版本要求

内存

Studio/Shell默认使用4GB内存,大数据处理建议30GB+(通过-J-Xmx配置)

依赖
notes1. 部分算法(流形学习、聚类、高斯过程回归、MLP等)依赖BLAS和LAPACK库;2. Windows需将DLL目录添加到PATH环境变量;3. macOS需处理SIP导致的动态库加载问题,可将libarpack.dylib复制到工作目录;4. 提供Scala和Kotlin API支持;5. 包含交互式桌面应用SMILE Studio,支持REPL环境
python未说明(Java项目,非Python工具)
Java 25(v5.x)/ Java 21(v4.x)/ Java 8(早期版本)
OpenBLAS(部分算法必需)
ARPACK(部分算法必需)
Maven/SBT/Gradle(构建工具)
smile hero image

快速开始

统计机器智能与学习引擎 SMILE

Maven Central

目标

SMILE(Statistical Machine Intelligence & Learning Engine,统计机器智能与学习引擎)是一个快速且全面的 Java 机器学习框架。SMILE v5.x 需要 Java 25,v4.x 需要 Java 21,所有早期版本需要 Java 8。SMILE 还提供 Scala 和 Kotlin 的 API,并遵循相应的语言范式。凭借先进的数据结构和算法,SMILE 能够提供最先进的性能。 SMILE 涵盖机器学习的各个方面,包括深度学习(Deep Learning)、大语言模型(Large Language Models, LLM)、分类(Classification)、回归(Regression)、聚类(Clustering)、关联规则挖掘(Association Rule Mining)、特征选择与提取(Feature Selection and Extraction)、流形学习(Manifold Learning)、多维缩放(Multidimensional Scaling)、遗传算法(Genetic Algorithms)、缺失值插补(Missing Value Imputation)、高效最近邻搜索(Nearest Neighbor Search)等。此外,SMILE 还提供图论、线性代数、数值分析、插值、符号运算的计算机代数系统(Computer Algebra System)以及数据可视化的高级算法。

特性

SMILE 实现了以下主要机器学习算法:

  • 大语言模型(LLM): Llama 3.1 的原生 Java 实现、tiktoken 分词器、具有 OpenAI 兼容 API 和基于 SSE 的聊天流式传输的高性能 LLM 推理服务器、功能完整的前端界面。

  • 深度学习(Deep Learning): 支持 CPU 和 GPU 的深度学习。用于图像分类的 EfficientNet 模型。

  • 分类(Classification): 支持向量机(Support Vector Machines, SVM)、决策树(Decision Trees)、AdaBoost、梯度提升(Gradient Boosting)、随机森林(Random Forest)、逻辑回归(Logistic Regression)、神经网络(Neural Networks)、径向基函数网络(RBF Networks)、最大熵分类器(Maximum Entropy Classifier)、K 近邻(KNN)、朴素贝叶斯(Naïve Bayesian)、Fisher/线性/二次/正则化判别分析(Fisher/Linear/Quadratic/Regularized Discriminant Analysis)。

  • 回归(Regression): 支持向量回归(Support Vector Regression, SVR)、高斯过程(Gaussian Process)、回归树(Regression Trees)、梯度提升(Gradient Boosting)、随机森林(Random Forest)、径向基函数网络(RBF Networks)、普通最小二乘法(OLS)、LASSO、弹性网络(ElasticNet)、岭回归(Ridge Regression)。

  • 特征选择(Feature Selection): 基于遗传算法的特征选择、基于集成学习的特征选择、TreeSHAP、信噪比(Signal Noise ratio)、平方和比(Sum Squares ratio)。

  • 聚类(Clustering): BIRCH、CLARANS、DBSCAN、DENCLUE、确定性退火(Deterministic Annealing)、K-Means、X-Means、G-Means、神经气(Neural Gas)、生长神经气(Growing Neural Gas)、层次聚类(Hierarchical Clustering)、序列信息瓶颈(Sequential Information Bottleneck)、自组织映射(Self-Organizing Maps, SOM)、谱聚类(Spectral Clustering)、最小熵聚类(Minimum Entropy Clustering)。

  • 关联规则与频繁项集挖掘(Association Rule & Frequent Itemset Mining): FP-growth 挖掘算法。

  • 流形学习(Manifold Learning): 等距映射(IsoMap)、局部线性嵌入(LLE)、拉普拉斯特征映射(Laplacian Eigenmap)、t-SNE、UMAP、主成分分析(PCA)、核主成分分析(Kernel PCA)、概率主成分分析(Probabilistic PCA)、广义 Hebbian 算法(GHA)、随机投影(Random Projection)、独立成分分析(ICA)。

  • 多维缩放(Multi-Dimensional Scaling): 经典多维缩放(Classical MDS)、等距多维缩放(Isotonic MDS)、Sammon 映射(Sammon Mapping)。

  • 最近邻搜索(Nearest Neighbor Search): BK-Tree、覆盖树(Cover Tree)、KD-Tree、SimHash、局部敏感哈希(LSH)。

  • 序列学习(Sequence Learning): 隐马尔可夫模型(Hidden Markov Model, HMM)、条件随机场(Conditional Random Field, CRF)。

  • 自然语言处理(Natural Language Processing): 句子分割与分词(Sentence Splitter and Tokenizer)、二元语法统计测试(Bigram Statistical Test)、短语提取器(Phrase Extractor)、关键词提取器(Keyword Extractor)、词干提取器(Stemmer)、词性标注(POS Tagging)、相关性排序(Relevance Ranking)

许可证

SMILE 采用双重许可模式,旨在满足商业分销商(如 OEM、ISV 和 VAR)以及开源项目的开发和分发需求。详情请参见 LICENSE。如需获取商业许可证,请联系 smile.sales@outlook.com

问题/讨论

安装

您可以通过 Maven 中央仓库使用这些库,将以下内容添加到项目的 pom.xml 文件中。

    <dependency>
      <groupId>com.github.haifengl</groupId>
      <artifactId>smile-core</artifactId>
      <version>5.2.3</version>
    </dependency>

对于深度学习和自然语言处理,请分别使用 artifactId smile-deepsmile-nlp

对于 Scala API,请将以下内容添加到您的 sbt 脚本中。

    libraryDependencies += "com.github.haifengl" %% "smile-scala" % "5.2.3"

对于 Kotlin API,将以下内容添加到 Gradle 构建脚本的 dependencies 部分。

    implementation("com.github.haifengl:smile-kotlin:5.2.3")

某些算法依赖于 BLAS 和 LAPACK(例如流形学习、某些聚类算法、高斯过程回归、多层感知器(MLP)等)。要在 SMILE v5.x 中使用这些算法,您应该安装 OpenBLAS 和 ARPACK 以进行优化的矩阵计算。对于 Windows,您可以从发布包的 bin 目录中找到预构建的 DLL 文件。请确保将此目录添加到 PATH 环境变量中。

要在 Linux(例如 Ubuntu)上安装,请运行

sudo apt update
sudo apt install libopenblas-dev libarpack2

在 Mac 上,我们使用 macOS 提供的 Accelerate 框架中的 BLAS 库。但您应该通过运行以下命令安装 ARPACK

brew install arpack

然而,macOS 系统完整性保护(SIP)会清除动态链接器(DYLD)环境变量(如 DYLD_LIBRARY_PATH),从而显著影响 JVM 处理动态库加载的方式。一个简单的解决方法是将 /opt/homebrew/lib/libarpack.dylib 复制到您的工作目录,以便 JVM 能够成功加载它。

对于 SMILE v4.x,可以使用以下依赖项将 OpenBLAS 和 ARPACK 库添加到您的项目中。

    libraryDependencies ++= Seq(
      "org.bytedeco" % "javacpp"   % "1.5.11"        classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
      "org.bytedeco" % "openblas"  % "0.3.28-1.5.11" classifier "macosx-arm64" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64",
      "org.bytedeco" % "arpack-ng" % "3.9.1-1.5.11"  classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64"
    )

在此示例中,我们包含所有支持的 64 位平台,并过滤掉 32 位平台。用户应仅包含所需平台以节省空间。

Studio

SMILE Studio 是一款交互式桌面应用程序,可帮助您更高效地使用 SMILE 构建和服务模型。与 Jupyter Notebooks 类似,SMILE Studio 是一个 REPL(Read-Evaluate-Print-Loop,读取-求值-输出-循环),包含一个有序的输入/输出单元格列表。

releases 页面 下载预打包的 SMILE。 解压包后,在终端中进入 SMILE 的 bin 目录,输入

    ./smile

即可进入 SMILE Studio。如果您在没有图形界面的无头(headless)环境中工作,可以运行 ./smile shell 进入 SMILE Shell for Java,它会预导入所有主要的 SMILE 包。如果您更喜欢 Scala,请输入 ./smile scala 进入 SMILE Shell for Scala。

默认情况下,Studio/Shell 最多使用 4GB 内存。如果您需要更多内存来处理大数据,请使用选项 -J-Xmx-XX:MaxRAMPercentage。例如,

    ./smile -J-Xmx30G

您也可以修改配置文件 conf/smile.ini 来设置内存和其他 JVM(Java Virtual Machine,Java 虚拟机)参数。

Model Serialization(模型序列化)##

大多数模型支持 Java Serializable 接口(所有分类器都支持 Serializable 接口),因此您可以序列化模型并将其部署到生产环境中进行推理(inference)。您还可以在其他系统(如 Spark)中使用序列化后的模型。

Visualization(可视化)##

一图胜千言。在机器学习中,我们通常处理高维数据,这无法直接在显示器上绘制。但各种统计图表对于我们理解大量数据点的特征具有巨大价值。SMILE 提供了数据可视化工具,如绘图(plots)和地图(maps),帮助研究人员更轻松、更快速地理解信息。要使用 smile-plot,请在依赖项中添加以下内容

    <dependency>
      <groupId>com.github.haifengl</groupId>
      <artifactId>smile-plot</artifactId>
      <version>5.2.3</version>
    </dependency>

在基于 Swing 的系统中,用户可以利用 smile.plot.swing 包创建各种图表,如散点图(scatter plot)、折线图(line plot)、阶梯图(staircase plot)、条形图(bar plot)、箱线图(box plot)、直方图(histogram)、3D 直方图、树状图(dendrogram)、热图(heatmap)、六边形图(hexmap)、QQ 图(QQ plot)、等高线图(contour plot)、曲面图(surface)和线框图(wireframe)。

该库还支持声明式(declarative)方法的数据可视化。通过 smile.plot.vega 包,我们可以创建一个规范(specification),将可视化描述为从数据到图形标记(如点或条)属性的映射。该规范基于 Vega-Lite。在 Web 浏览器中,Vega-Lite 编译器会自动生成可视化组件,包括坐标轴、图例和比例尺。然后,它根据一组精心设计的规则确定这些组件的属性。

Contributing(贡献)##

请阅读 contributing.md 了解如何构建和测试 SMILE。

Maintainers(维护者)##

  • Haifeng Li (@haifengl)
  • Karl Li (@kklioss)

图库

SPLOM

散点图矩阵(Scatterplot Matrix)

Scatter

散点图(Scatter Plot)

Heart

折线图(Line Plot)

Surface

曲面图(Surface Plot)

Scatter

柱状图(Bar Plot)

Box Plot

箱线图(Box Plot)

Histogram

直方图热力图(Histogram Heatmap)

Rolling

滚动平均(Rolling Average)

Map

地理地图(Geo Map)

UMAP

UMAP(均匀流形近似与投影)

Text

文本图(Text Plot)

Contour

带等高线的热力图(Heatmap with Contour)

Hexmap

六边形地图(Hexmap)

IsoMap

IsoMap(等距映射)

LLE

LLE(局部线性嵌入)

Kernel PCA

核主成分分析(Kernel PCA)

Neural Network

神经网络(Neural Network)

SVM

支持向量机(SVM)

Hierarchical Clustering

层次聚类(Hierarchical Clustering)

SOM

自组织映射(SOM)

DBSCAN

DBSCAN(基于密度的空间聚类算法)

Neural Gas

神经气(Neural Gas)

Wavelet

小波(Wavelet)

Mixture

指数族混合模型(Exponential Family Mixture)

Teapot

茶壶线框图(Teapot Wireframe)

Interpolation

网格插值(Grid Interpolation)

版本历史

v5.2.32026/03/29
v5.2.22026/03/23
v5.2.12026/03/08
v5.2.02026/02/08
v5.1.02026/01/08
v5.0.22025/12/28
v5.0.12025/12/08
v5.0.02025/10/22
v4.4.22025/09/20
v4.4.12025/09/07
v4.4.02025/06/19
v4.3.02025/03/04
v4.2.02025/02/01
v4.1.02025/01/12
v4.0.02024/11/25
v3.1.12024/05/22
v3.1.02024/04/02
v3.0.32024/03/09
v3.0.22023/06/14
v3.0.12023/03/03

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架