2019 年 3 月 6 日 — 作者:Alex Ingerman (产品经理) 和 Krzys Ostrowski (研究科学家)
据估计,全球有 30 亿部智能手机,以及 70 亿台联网设备。这些手机和设备不断生成新的数据。传统的分析和机器学习需要将这些数据集中收集,然后才能对其进行处理以产生洞察力、ML 模型,并最终产生更好的产品。这种集中式方法可能存在问题,尤其是在数据敏感或集中成本过高的情况下。如果我们能够直接在数据生成设备上运行数据分析和机器学习,同时仍然能够将学习到的内容聚合在一起,是不是更好?
TensorFlow Federated 使开发人员能够表达和模拟联邦学习系统。如下图所示,每部手机都在本地训练模型 (A)。它们的更新被聚合 (B) 以形成一个改进的共享模型 (C)。 |
# Load simulation data.
source, _ = tff.simulation.datasets.emnist.load_data()
def client_data(n):
dataset = source.create_tf_dataset_for_client(source.client_ids[n])
return mnist.keras_dataset_from_emnist(dataset).repeat(10).batch(20)
# Wrap a Keras model for use with TFF.
def model_fn():
return tff.learning.from_compiled_keras_model(
mnist.create_simple_keras_model(), sample_batch)
# Simulate a few rounds of training with the selected client devices.
trainer = tff.learning.build_federated_averaging_process(model_fn)
state = trainer.initialize()
for _ in range(5):
state, metrics = trainer.next(state, train_data)
print (metrics.loss)
您可以在 联邦 MNIST 分类教程 中看到其余部分。tf.float32
) 以及数据所在的位置(在分布式客户端上)。READINGS_TYPE = tff.FederatedType(tf.float32, tff.CLIENTS)
然后指定该类型的联邦平均函数。@tff.federated_computation(READINGS_TYPE)
def get_average_temperature(sensor_readings):
return tff.federated_average(sensor_readings)
在定义联邦计算后,TFF 会以一种可以在分散环境中运行的形式来表示它。TFF 的初始版本包含一个本地机器运行时,它模拟计算在持有数据的客户端集合中执行,每个客户端计算其本地贡献,而中央协调器会聚合所有贡献。但是,从开发人员的角度来看,联邦计算可以看作一个普通的函数,它恰好具有位于不同位置(分别在单个客户端和协调服务上)的输入和输出。get_average_temperature 联邦计算表达式的说明。 |
@tff.federated_computation(
tff.FederatedType(DATASET_TYPE, tff.CLIENTS),
tff.FederatedType(MODEL_TYPE, tff.SERVER, all_equal=True),
tff.FederatedType(tf.float32, tff.SERVER, all_equal=True))
def federated_train(client_data, server_model, learning_rate):
return tff.federated_average(
tff.federated_map(local_train, [
client_data,
tff.federated_broadcast(server_model),
tff.federated_broadcast(learning_rate)]))
借助 TensorFlow Federated,我们正朝着使该技术更广泛地被人们接受迈出一小步,并邀请社区参与在开放、灵活的平台之上开发联邦学习研究。您可以通过完成 教程,只需点击几下鼠标,就能在您的浏览器中试用 TFF。有许多参与方式:您可以对模型上的现有 FL 算法进行实验,将新的联邦数据集和模型贡献给 TFF 存储库,添加新的 FL 算法的实现,或使用新功能扩展现有算法。
2019 年 3 月 6 日 — 作者:Alex Ingerman (产品经理) 和 Krzys Ostrowski (研究科学家)
据估计,全球有 30 亿部智能手机,以及 70 亿台联网设备。这些手机和设备不断生成新的数据。传统的分析和机器学习需要将这些数据集中收集,然后才能对其进行处理以产生洞察力、ML 模型,并最终产生更好的产品。这种集中式方法可能存在问题,尤其是在数据敏感或集中成本过高的情况下。如果我们能够直接在数据生成设备上运行数据分析和机器学习,同时仍然能够将学习到的内容聚合在一起,是不是更好?