什么是Federated Learning(联邦学习) federated learning是一种训练数据去中心化的机器学习解决方案,最早于2016年由谷歌公司提出,目的在于通过对保存在大量终端的分布式数据开展训练学习一个高质量中心化的机器学习模型 federated learning的优点 保护用户的隐私,服务器不获取用户的数据 分布式的数据架构,减轻数据集中存储的压力 federated learning的局限性 需要用户对齐或特征对齐才能共同训练模型 Federated (TFF)框架 微众银行的federated learning开源框架FATE [Referent] [1] Federated Learning: Collaborative https://ai.googleblog.com/2017/04/federated-learning-collaborative.html. [2] Federated Learning. https ://federated.withgoogle.com. [3] Federated Learning: Strategies for Improving Communication Efficiency
也许很多人从未听说过联邦学习是联邦学习?甚至从词义本身也无法得知是何种领域的技术。今天我将为大家介绍一下这种近几年由人工智能与区块链技术结合并衍生出的一种全新概念,联邦学习。关于联邦学习的定义,可以理解为是在保证数据隐私安全及合法合规的基础上,利用各个节点掌握的数据实现共同建模,提升AI模型的效果。联邦学习最早在 2016 年由谷歌提出,原本用于解决安卓手机终端用户在本地更新模型的问题。目前广泛用于人工智能研究方向。
下面主要介绍下FEDERATED 引擎 官方文档 https://dev.mysql.com/doc/refman/8.0/en/federated-storage-engine.html # 开启 Federated 存储引擎 vim /etc/my.cnf 在 [mysqld]段内加下面的这行 federated # 重启mysql数据库 systemctl restart mysqld 存储FEDERATED引擎支持 SELECT、 INSERT、 UPDATE、 DELETE、 TRUNCATE TABLE。 -- 需要注意的是,这个FEDERATED的表的字段数不能超过原表,字段名称也不能和原表出现差异,否则查询这个FEDERATED表会报错。 表在创建后,就不支持修改,如果要改动的话,需要删掉再重建FEDERATED表 因为FEDERATED表在创建后,就不支持修改,如果要改动的话,需要删掉再重建FEDERATED表 drop table f_tb1
Federated 引擎架构: 当客户端发出引用 FEDERATED 表的 SQL 语句时,本地服务器(执行 SQL 语句的地方)和远程服务器(实际存储数据的地方)之间的信息流如下: 存储引擎将遍历 FEDERATED DROP TABLE 针对 FEDERATED 表发出的任何语句仅删除本地表,而不删除远程表。 FEDERATED 表不适用于查询缓存。 FEDERATED 表不支持用户定义的分区。 4. 引擎设置 在配置文件制定开启 Federated 存储引擎 配置文件中添加 federated 引擎就可以,两个实例都要添加 vim /etc/my.cnf [mysqld] federated 查看 Federated 是否开启 [ FEDERATED 中 Support 状态 NO 表明引擎未开启] mysql> show engines; +--------------------+----- | YES 说明已经开启了FEDERATED 引擎 6.
本篇文章介绍FEDERATED引擎的开启和使用。 1.开启FEDERATED引擎 若需要创建FEDERATED引擎表,则目标端实例要开启FEDERATED引擎。 从MySQL5.5开始FEDERATED引擎默认安装 只是没有启用,进入命令行输入 show engines ; FEDERATED行状态为NO。 表 如果要在同一服务器上创建多个FEDERATED表,或者想简化创建FEDERATED表的过程,则可以使用该CREATE SERVER语句定义服务器连接参数,这样多个表可以使用同一个server。 '); 之后创建FEDERATED表可采用如下格式: CREATE TABLE (......) 目标端建议用CREATE SERVER方式创建FEDERATED表。 FEDERATED表不宜太多,迁移时要特别注意。 目标端应该只做查询使用,禁止在目标端更改FEDERATED表。
等待安装结束后,验证一下是否安装成功: python -c "import tensorflow_federated as tff; print(tff.federated_computation(lambda ( tff.federated_map(local_eval, [tff.federated_broadcast(model), data])) print(str(federated_eval.type_signature (model, learning_rate, data): return tff.federated_mean( tff.federated_map(local_train, [ tff.federated_broadcast(model), tff.federated_broadcast(learning_rate), # 算个loss输出一下 loss = federated_eval(model, federated_train_data) print('round {}, loss
有许多联邦学习库可供选择,从在 GitHub 上拥有超过 1700 颗星的更主流的 Tensorflow Federated 到流行且注重隐私的 PySyft,再到面向研究的 FedJAX。
Federated Learning (FL) API:该层提供了一组高级接口,允许开发人员将包含的联邦训练和评估实现应用到他们现有的TensorFlow模型中。 2. Federated Core (FC) API:该系统的核心是一组较低级别的接口,用于通过在强类型函数式编程环境中将TensorFlow与分布式通信运算符相结合来简洁地表达联邦算法。 不过没办法,自己造轮子的效果不是很好,PyTorch也没有对联邦学习进行封装,那就只有学习TensorFlow以及Tensorflow Federated了。 I. TensorFlow Federated 1. numpy是利用numpy手写联邦学习得到的预测表现(50轮通信),TFF是利用Tensorflow Federated进行联邦学习(20轮通信)后得到的预测表现。
分布式跨库查询时,可以尝试使用federated引擎,来创建远程表的映射,方便查询。 1.开启引擎 查询数据库是否支持 SHOW ENGINES; 有,说明支持,但是没有开启,开启一下: 配置文件添加:federated,如下: [mysqld] federated # # Remove varchar(255) DEFAULT NULL, `stock` int(11) DEFAULT NULL COMMENT '库存', PRIMARY KEY (`id`) ) ENGINE=FEDERATED CONNECTION='mysql://root:1xxx@1xx.xx.xx.xx:3306/java4all/product_stock'; 这里需要注意,数据库引擎的选择,要明确指定引擎ENGINE=FEDERATED
它有一个很霸气的名字——Federated Learning,联盟学习! 低功耗(less power consumption) 保障用户隐私(ensuring privacy) Federated learning 不需要在云端存储用户数据。 因此,Federated Learning 不会影响手机的日常使用。 模型应用 目前,谷歌已经在谷歌输入法 Gboard 上测试该模型。 Federated Learning 会对本地的这些数据进行处理训练, 以用来改进 Gboard 检索推荐模型。 未来,谷歌会不断拓展 Federated Learning 的功能,并希望能根据手机输入习惯改进语言模型;以及根据图片浏览数据改进图片排列等。
这意味着在 Federated Learning 的方式下,把数据保存在云端,不再是搞大规模机器学习的必要前提。 而在 Federated Learning 的情况下,数据以非常不平均的方式分布在数百万的移动设备上。 为解决这些带宽、延迟问题,谷歌开发出一套名为 Federated Averaging 的算法。 所以在智能手机的日常使用中,Federated Learning 并不会影响性能。 谷歌强调, Federated Learning 不会在用户体验上做任何妥协。 因此,谷歌表示会继续探索基于云计算的 ML,但同时“下定决心”不断拓展 Federated Learning 的功能。
Summary The paper argue that the efficiency and data privacy of Federated Learning are non-orthogonal Comments The paper mainly focus on privacy and efficiency in a federated learning system and design a
因此只能使用 pstack 工具对 MySQL 打堆栈来进行分析,堆栈日志如下: [lipengbo0418-5.png] 通过分析堆栈日志发现,问题出现在进行查询时会使用 Federated 存储引擎表对远程实例进行查询 查看数据库使用 Federated 存储引擎的表,发现有两张表使用了 Federated 存储引擎: [lipengbo0418-6.png] [lipengbo0418-7.png] 通过在实例服务器上 Feferated 服务端的实例IP和端口发现是不通的: [lipengbo0418-8.png] 所以推测问题原因为:监控线程在查询 information_schema.tables 表时,当需要获取 Federated 接下来设计实验验证我们的想法: 启用 Federated 存储引擎 [lipengbo0418-9.png] 创建一张 Federated 存储引擎的表,连接的 server 不存在 [lipengbo0418
这意味着在 Federated Learning 的方式下,把数据保存在云端,不再是搞大规模机器学习的必要前提。 Federated Learning 会对设备历史数据进行处理,然后对 Gboard 检索推荐模型提出改进。 而在 Federated Learning 的情况下,数据以非常不平均的方式分布在数百万的移动设备上。 为解决这些带宽、延迟问题,谷歌开发出一套名为 Federated Averaging 的算法。 所以在智能手机的日常使用中,Federated Learning 并不会影响性能。 谷歌强调, Federated Learning 不会在用户体验上做任何妥协。
因此只能使用 pstack 工具对 MySQL 打堆栈来进行分析,堆栈日志如下: 通过分析堆栈日志发现,问题出现在进行查询时会使用 Federated 存储引擎表对远程实例进行查询。 查看数据库使用 Federated 存储引擎的表,发现有两张表使用了 Federated 存储引擎: 通过在实例服务器上 Telnet Feferated 服务端的实例IP和端口发现是不通的: 所以推测问题原因为 :监控线程在查询 information_schema.tables 表时,当需要获取 Federated 存储引擎表的信息时需要连接远端 Server ,而由于网络或其他原因无法连接时,就会导致本地监控线程处于 接下来设计实验验证我们的想法: 启用 Federated 存储引擎 创建一张 Federated 存储引擎的表,连接的 server 不存在 查询 information_schema.tables 本文关键字:#故障处理# #Federated存储引擎#
这意味着在 Federated Learning 的方式下,把数据保存在云端,不再是搞大规模机器学习的必要前提。 而在 Federated Learning 的情况下,数据以非常不平均的方式分布在数百万的移动设备上。 为解决这些带宽、延迟问题,谷歌开发出一套名为 Federated Averaging 的算法。 所以在智能手机的日常使用中,Federated Learning 并不会影响性能。 谷歌强调, Federated Learning 不会在用户体验上做任何妥协。 因此,谷歌表示会继续探索基于云计算的 ML,但同时“下定决心”不断拓展 Federated Learning 的功能。
本篇文章介绍FEDERATED引擎的开启和使用。 1.开启FEDERATED引擎 若需要创建FEDERATED引擎表,则目标端实例要开启FEDERATED引擎。 从MySQL5.5开始FEDERATED引擎默认安装 只是没有启用,进入命令行输入 show engines; FEDERATED行状态为NO。 ,然后重启数据库,FEDERATED引擎就开启了。 表 如果要在同一服务器上创建多个FEDERATED表,或者想简化创建FEDERATED表的过程,则可以使用该CREATE SERVER语句定义服务器连接参数,这样多个表可以使用同一个server。 目标端建议用CREATE SERVER方式创建FEDERATED表。 FEDERATED表不宜太多,迁移时要特别注意。 目标端应该只做查询使用,禁止在目标端更改FEDERATED表。
本文简要描述了FEDERATED存储引擎,以及演示了基于FEDERATED存储引擎跨实例访问的示例。 1、FEDERATED存储引擎的描述 FEDERATED存储引擎允许在不使用复制或集群技术的情况下实现远程访问数据库 创建基于FEDERATED存储引擎表的时候,服务器在数据库目录仅创建一个表定义文件 FEDERATED存储引擎 源码安装MySQL时使用DWITH_FEDERATED_STORAGE_ENGINE来配置 rpm安装方式缺省情况下已安装,只需要启用该功能即可 3、准备远程服务器环境 引擎的表federated_engine root@localhost[test]> CREATE TABLE `federated_engine` ( -> `engine` varchar --查询表federated_engine root@localhost[test]> select * from federated_engine limit 2; +------------+-
近日,Google 开源了一款名为 TensorFlow Federated (TFF)的框架,可用于去中心化(decentralized)数据的机器学习及运算实验。 @tff.federated_computation(READINGS_TYPE) def get_average_temperature(sensor_readings): return tff.federated_average (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 最后附上 TF Dev Summit’19 上,TensorFlow Federated (TFF)的发布会现场视频: 参考链接:https://medium.com/tensorflow/introducing-tensorflow-federated-a4147aa20041
Reagan 发自 Yingke 量子位 报道 | 公众号 QbitAI 没错,正是Federated Learning,联邦学习。 于是2017年,谷歌提出了完全基于移动设备数据来训练机器学习模型的方法:Federated Learning。 GitHub: https://github.com/tensorflow/federated/blob/v0.7.0/docs/tutorials/federated_learning_for_image_classification.ipynb FL API链接: https://www.tensorflow.org/federated/federated_learning FC API: https://www.tensorflow.org /federated/federated_core 教程: https://www.tensorflow.org/federated/tutorials/federated_learning_for_image_classification