Skip to content

Basalt 3.4.0 — 四平台原生内核、eager autograd、经典估计器

Choose a tag to compare

@9178nekomc 9178nekomc released this 25 Oct 11:49
· 16 commits to main since this release

Basalt 3.4.0

JVM 上的机器学习运行时:Java 调度,Rust 计算。eager 张量、自动求导、原生 CNN/Transformer 算子,以及经典统计学习估计器。

  • 坐标 — io.github.9178nekomc:basalt:3.4.0
  • 在线文档 — https://9178nekomc.github.io/basalt/
  • 运行要求 — Java 21,启动加 --add-modules jdk.incubator.vector
  • 规模 — 226 个公开类型 / 1463 个公开成员,全部附逐参数说明(1423 条参数条目)

安装

<dependency>
    <groupId>io.github.9178nekomc</groupId>
    <artifactId>basalt</artifactId>
    <version>3.4.0</version>
</dependency>

需要单文件时用 basalt-3.4.0-all.jar,四个平台的原生库已经打在里面。

本版要点

改名:JSL → Basalt

旧代号 JSL / Java Scikit-Learn 描述的是模仿对象,不是它自己,也无法作为公开坐标(io.github.jsl 不属于任何人)。这一版整体迁移:

项 旧 新
Java 包 jsl.* basalt.*
入口类 JSL Basalt
异常 JSLRuntimeException 等 BasaltRuntimeException 等
JNI 符号 Java_jsl_* Java_basalt_*
原生库 jsl_native basalt_native
容器魔数 JSLM / JSLK BSLT / BSLK
文件后缀 .jsl / .jsld .bsl / .bsld

不向后兼容,但旧坐标从未发布过,因此不构成真正的破坏性变更。

四平台交叉编译(CI 全绿)

原生内核在 CI 上对四个目标实际编译并跑通全部测试,不是只在本机验证:

平台 目标三元组
Linux x86_64 x86_64-unknown-linux-gnu
Linux aarch64 aarch64-unknown-linux-gnu
macOS aarch64 aarch64-apple-darwin
Windows x86_64 x86_64-pc-windows-msvc

CI 抓出两个只在 ARM 上暴露的真实缺陷:classic.rs 与 fastmath.rs 的 AVX2 路径缺少架构门控,导致 aarch64 上整个 crate 编译失败。已修复,标量回退路径在非 x86 上生效。

Intel Mac(macos-13)未包含在本版产物中:其 runner 池正在退役,排队 45 分钟未启动。Intel Mac 用户可用 ./native-build.sh 自行构建,或退回纯 Java 路径。

工程底座

  • 双重内存安全 — NativeContext、NativeTensorHandle、HistogramSessionHandle 同时实现 AutoCloseable 与 Cleaner
  • 64 位代数句柄 (generation << 32) | slot_index,杜绝悬垂指针与 ABA 复用崩溃
  • 128 字节指令队列,CommandQueueBuilder 全同步保护;原生层严禁跨线程复用 JNIEnv
  • 原生库自动加载,加载失败时经典模型自动回退纯 Java

能力面

  • eager 张量 / autograd — 动态形状、Module 组合、Kahn 拓扑排序反向、DAG 计算图、梯度累积、Checkpoint 续训
  • 原生算子 — Conv2d(grouped / dilated / depthwise-separable)、MaxPool2d、BatchNorm2d、GroupNorm、多头注意力与 causal mask
  • 经典机器学习 — 线性/逻辑回归、KNN、SVM、决策树、随机森林、直方图梯度提升、KMeans、GMM、层次聚类、PCA、IsolationForest、KernelDensity、朴素贝叶斯
  • 特征工程 — SelectKBest、RFE、PolynomialFeatures、KBinsDiscretizer、GridSearchCV / RandomizedSearchCV
  • 可解释性 — Tree/Permutation 特征重要度、LinearSHAP、TreeSHAP、LIME
  • 可观测性 — JFR 事件 + Prometheus/JSON 指标导出
  • 互操作 — ONNX 导出与导入推理往返
  • 持久化 — .bsl v2 容器,24 字节头 + CRC32C,零拷贝 ModelReader

产物

文件 说明
basalt-3.4.0.jar 标准 jar,含四个平台原生库
basalt-3.4.0-all.jar Fat jar,无外部依赖
basalt-3.4.0-sources.jar 源码
basalt-docs-3.4.0.zip 离线文档,解压双击 index.html

验证

  • ./verify.sh — Rust 单测、javac -Xlint:all 零告警、6 套 legacy 测试、Phase 1–3、JUnit 5、6 个编译期拒绝用例
  • 文档 15 页 / 226 类型 / 1463 成员,全部有说明
  • GitHub Actions 四平台矩阵 + 汇总打包,全部通过