打開鏈接點亮社區Star,照亮技術的前進之路。每一個點贊,都是社區技術大佬前進的動力
Github 地址: https://github.com/secretflow/sml
我們很高興地宣佈,隱語 SML 0.1.0 版本正式發佈!
SML 庫目前支持約數十種核心算法,涵蓋了機器學習的主要領域,如監督學習(線性模型、支持向量機等)、無監督學習(KMeans聚類算法,PCA等降維算法)、數據預處理(標準化、特徵選擇等)、模型評估(各種分類、迴歸指標)。
版本鏈接:https://pypi.org/project/sf-sml/#history
什麼是 SML?
SML 是一個基於 Python 的機器學習模塊,它利用 JAX 實現算法,並藉助 SPU (SecretFlow Processing Unit) 的能力進行安全的訓練和推理。
專注於隱私保護機器學習場景,致力於構建一個安全版本的 scikit-learn。
為什麼需要一個“隱私版 scikit-learn”?
scikit-learn 是事實上的傳統機器學習標準庫,但它有一個前提假設:
- 數據集中在一處
- 運行在 NumPy / SciPy 的中心化計算環境中
- 不考慮多方協作與數據隱私
而在真實世界中,越來越多場景是:
- 數據分散在多方
- 原始數據不能共享
- 合規要求高(金融、醫療、政企等)
直接將 scikit-learn 的實現“翻譯”為 MPC 版本,會遇到一些問題:
- 浮點數在 MPC 下精度和性能不可控
- 大量 CPU 友好算子 並不適合安全計算
- 簡單移植會導致效率極低,無法落地
SML 的願景是建立一個通用的隱私保護機器學習 (PPML) 庫,旨在成為安全版本的 scikit-learn
支持的算法
在首個開源版本中,SML 已支持 數十種核心算法,覆蓋傳統機器學習的主要領域:
監督學習
- 線性模型(Logistic / Ridge / GLM 等)
- 支持向量機(SVC)
- KNN
- Gaussian Naive Bayes
- 決策樹(基於 GTree 的 MPC 實現)
- 集成模型:Random Forest、AdaBoost
無監督學習與降維
- KMeans 聚類
- PCA(多種實現方式:power iteration、Jacobi、RSVD)
- NMF
- T-SNE
- ISOMAP、Spectral Embedding 等流形學習方法
數據預處理
- 標準化 / 歸一化(MinMax、Standard、Robust 等)
- OneHotEncoder、KBinsDiscretizer
- QuantileTransformer
- LabelBinarizer 等
模型評估指標
- 分類指標:accuracy、precision、recall、f1、roc_auc 等
- 迴歸指標:MSE、R²、explained variance
- GLM 專用評估指標(Poisson / Gamma / Tweedie)
所有算法均圍繞 MPC 場景下的安全性、精度與性能進行實現與權衡。
從 SPU 子模塊到獨立 Python 庫
SML 最初是 SPU 庫的一部分,隨着算法數量增加和使用場景清晰,我們決定將其獨立拆分為一個單獨的 Python 包:
- 更清晰的定位:隱私保護機器學習算法庫
- 更友好的使用方式:Python 原生 API
- 更利於社區共建與持續演進
快速開始
你可以通過 PyPI 快速體驗 SML:
pip install sf-sml
從源代碼安裝
git clone https://github.com/secretflow/sml.git
cd sml
pip install -e .
安裝完成後,您可以運行任何測試,例如:
# run single unit test
pytest tests/cluster/kmeans_test.py # run kmeans simulation
# run all unit tests
pytest tests
# run single emulation test
python emulations/run_emulations.py --module emulations.cluster.kmeans_emul # run kmeans emulation
# run all emulations
python emulations/run_emulations.py
# list all available emulations
python emulations/run_emulations.py --list-only
加入社區,一起共建生態
SML 是 SecretFlow 開源生態的重要組成部分。
我們期待與你一起探索 隱私計算時代的機器學習新範式:
- 貢獻算法與實現
- 優化性能與數值穩定性
- 參與設計討論與 Issue 反饋
- 分享真實應用場景
未來我們將持續推進:
- 算法覆蓋與穩定性增強
- API 設計持續對齊 scikit-learn 使用習慣
- 更完善的文檔、示例與最佳實踐
- 與 SecretFlow / SPU / SCQL 的深度協同