Repository navigation
Basalt 3.4.0 — 四平台原生内核、eager autograd、经典估计器
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 导出与导入推理往返
- 持久化 —
.bslv2 容器,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 四平台矩阵 + 汇总打包,全部通过