xaynet
Rust编写的隐私保护联邦学习框架,通过加密聚合实现跨设备分布式AI训练,数据不出本地设备
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Rust编写的隐私保护联邦学习框架,通过加密聚合实现跨设备分布式AI训练,数据不出本地设备
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:医院A的癌症数据、医院B的罕见病数据、银行C的欺诈检测记录——这些数据每一条都价值连城,但没有任何一家机构愿意把它们上传到云端服务器。传统的机器学习要求"数据集中",但数据集中就意味着隐私暴露。隐私法规越来越严,数据孤岛越演越烈,AI 的进步反而被数据壁垒卡住了脖子。
这就是 XayNet 诞生的背景——它是一个完全用 Rust 编写的联邦学习框架,核心理念是**"把代码送到数据那里,而不是把数据送到代码那里"**。模型在每台设备本地训练,只有经过密码学加密的模型更新才会上传到中央服务器进行聚合。从外表看,中央服务器看到的是一个又一个"噪声",实际上这些噪声承载着成千上万设备上的集体智慧。

XayNet 项目 Banner —— XayNet 由德国公司 Xayn(前身 innoWake)开发,致力于为机器学习构建隐私合规层。
XayNet 的开发公司 Xayn 起源于德国 AI 研究,初衷非常明确——解决 GDPR 和 CCPA 等隐私法规下的 AI 训练难题。2019 年开始开源,核心贡献者来自欧洲 academia 和 industry 的分布式系统、密码学专家团队。他们选择 Rust 并非炫技,而是有明确的工程考量:联邦学习协调器需要处理百万量级的并发连接,Rust 的内存安全保证和零成本抽象能确保在极端负载下不出现内存泄漏或段错误——这对生产级 AI 系统至关重要。
联邦学习本身并不是新概念,Google 的 Gboard 和 Apple 的键盘预测早已在生产环境中使用。但 XayNet 的差异化在于面向跨设备(cross-device)场景——不是几十台服务器之间的协作,而是数百万台手机、浏览器、汽车 ECU 的去中心化协同。协调器需要编排如此大规模的低功耗设备,传统的 Python 框架根本扛不住。
XayNet 采用模块化 Rust workspace,包含 5 个核心 crate:
1. xaynet-core(核心加密层)
所有密码学逻辑集中在这里。核心是 Secure Aggregation 协议(基于 crypto++ 和 sodiumoxide 库),具体使用加性秘密共享(Additive Secret Sharing)+ 差分隐私噪声注入。每个参与者的模型更新在本地被分割成 N 份随机数,服务器只聚合总和,无法反推任意一个参与者的贡献。代码中大量使用 sodiumoxide::crypto::secretbox 进行对称加密,rand::rngs::ChaCha20Rng 确保随机数生成器的可复现性。
2. xaynet-server(协调器服务)
这是整个框架的"大脑",是一个基于 Tokio 异步运行时的高性能 HTTP 服务。依赖 Redis 作为消息队列和状态存储,InfluxDB 用于实时监控聚合指标。HTTP 层使用原生 http crate 而非 Axum 或 Actix,这样做是为了保持最小依赖。协调器负责三件事:
3. xaynet-sdk(客户端 SDK)
Rust 封装的客户端库,通过 HTTP 与协调器通信,支持 reqwest 异步 HTTP 客户端。SDK 处理模型下载、本地训练回调(用户注册一个训练函数)、加密上传的全流程。使用 async-trait 定义异步接口,最大程度解耦网络层和训练逻辑。
4. xaynet-mobile(移动端绑定)
通过 FFI 暴露给 Dart/Flutter 使用的桥接层。这是项目的野望所在——让移动端 App 几行代码就能接入联邦学习。例如一个 Flutter 天气应用可以在后台用本地天气数据训练一个本地预测模型,同时不影响用户隐私。
5. xaynet(全量入口 crate)
通过 Cargo features 选择性启用上述模块:mobile/sdk/server,最终二进制可以编译为独立的服务端协调器或嵌入到 App 中的客户端库。
| 层级 | 技术选型 | 说明 |
|---|---|---|
| 语言 | Rust 1.51+ | 内存安全,零成本抽象,适合高性能网络服务 |
| 异步运行时 | Tokio | 多线程事件驱动,支撑百万并发连接 |
| 加密库 | sodiumoxide (libsodium) | curve25519 曲线,chacha20-poly1305 AEAD |
| 序列化 | bincode + serde | 二进制序列化,体积小速度快 |
| 消息队列 | Redis | pub/sub 广播全局模型更新 |
| 监控 | InfluxDB | 时序数据存储,追踪每个训练轮的参与率 |
| HTTP | 原生 http crate | 轻量无框架依赖 |
隐私保护数学原理:假设有 N 个参与者,第 i 个参与者的本地梯度为 ( g_i )。协议要求每个参与者将梯度拆分为 N 份随机数:( g_i = \sum_{j=1}^{N} r_{ij} ),然后将 ( r_{ij} ) 发给第 j 个参与者。服务器收集所有 ( \sum_{i} r_{ij} ),最终得到 ( \sum_i g_i = \sum_j (\sum_i r_{ij}) ),原始梯度永远不离开设备。这是加性秘密共享的核心——服务器只能看到聚合结果,无法推断个体。
服务端部署(有 Docker 经验者约 15-30 分钟):
# 克隆仓库
git clone https://github.com/xaynetwork/xaynet.git
cd xaynet
# 启动协调器(依赖 Redis + InfluxDB)
docker-compose -f docker/docker-compose.yml up -d
# 或手动编译
cd rust/xaynet-server
cargo build --release
./target/release/xaynet-server --config ../configs/docker-dev.toml
客户端接入(Rust 项目依赖):
[dependencies]
xaynet-sdk = { version = "0.1", features = ["reqwest-client"] }
注意事项:
无 Web UI:这是一个纯命令行/API 框架,不提供图形界面。所有交互通过 HTTP API 或 SDK 调用完成。
XayNet 在 2022 年后进入低维护状态,最后一次提交停留在 2022 年。停更原因可能是 Xayn 公司将技术商业化,开源版本不再活跃。主要局限:
与同领域的 Flower(Python + 任意 ML 框架)、PySyft(PyTorch 生态)相比,XayNet 的 Rust-first 策略在性能上有优势,但失去了 Python 数据科学家的用户基础。
尽管 XayNet 主仓库不再活跃,但它代表了一个重要的技术方向——隐私保护 AI(Privacy-Preserving AI)。2023 年后,随着欧盟 AI Act 的推进和数据本地化要求的强化,联邦学习从学术概念走向工程必需。Google 在 Android 中内置的 Federated Learning Computing,苹果在 iOS 设备上的 on-device Learning,NVIDIA 的 NVFLARE——这些大厂动作印证了 XayNet 2019 年的判断是正确的。
Rust 在 AI infrastructure 中的角色也在变化:Oxide Computer 用 Rust 重写了数据中心网络栈,AWS Firecracker 用 Rust 实现了 microVM。XayNet 用 Rust 编写联邦学习协调器的思路,如今看起来是超前的。随着 WASM 生态成熟,Rust编译到 WASM 后直接跑在浏览器里,配合 WebAssemblythreads,跨设备联邦学习的前端门槛将大幅降低。
XayNet 的价值更多在于架构示范——它展示了如何用 Rust 构建一个生产级的隐私计算平台,Workspace 分 crate 策略、Tokio 异步编程模型、sodiumoxide 加密集成,这些工程实践在后续隐私计算项目中可直接复用。
Star 趋势:2021 年达到峰值后趋于稳定,当前 202 star,属于细分领域小众但有技术深度的项目。