博客 / 詳情

返回

隱語SML0.1.0版本發佈!SPU開源機器學習Python算法庫

打開鏈接點亮社區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 的深度協同
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.