type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon
本教程将展示如何利用 Hugging Face 使用Flower联合多个客户端的语言模型训练。更具体地说,我们将微调预训练的 Transformer 模型 (distilBERT),以便在 IMDB 评级数据集上进行序列分类。最终目标是检测电影评级是正面还是负面。
这里也提供了一个笔记本,但它不是在多个单独的客户端上运行,而是利用 Flower 的模拟功能(使用
flwr['simulation']
)来模拟 Google Colab 内的联合设置(这也意味着start_server
我们将调用 ,而不是调用start_simulation
,并且一些需要进行其他修改)。依赖关系
要按照本教程进行操作,您需要安装以下软件包:
datasets
、evaluate
、flwr
、torch
和transformers
。这可以使用以下方法完成pip
:pip install datasets evaluate flwr torch transformers
标准拥抱脸部工作流程
处理数据
为了获取 IMDB 数据集,我们将使用 Hugging Face 的
datasets
库。然后我们需要标记数据并创建PyTorch
数据加载器,这一切都在函数中完成load_data
:训练和测试模型
一旦我们找到了创建训练加载器和测试加载器的方法,我们就可以进行训练和测试。
PyTorch
这与任何训练或测试循环非常相似:创建模型本身
要创建模型本身,我们只需使用 Hugging Face 加载预先训练的 distillBERT 模型
示例
联邦学习背后的想法是在多个客户端和服务器之间训练模型,而无需共享任何数据。这是通过让每个客户端在其数据上本地训练模型并将其参数发送回服务器,然后服务器使用预定义的策略将所有客户端的参数聚合在一起来完成的。通过使用Flower框架,这个过程变得非常简单。
如果您想要更完整的概述,请务必查看本指南:
创建 IMDBClient
为了将我们的示例联合到多个客户端,我们首先需要编写 Flower 客户端类(继承自
flwr.client.NumPyClient
)。这非常简单,因为我们的模型是标准PyTorch
模型:该
get_parameters
函数让服务器获取客户端的参数。相反,该set_parameters
函数允许服务器将其参数发送到客户端。最后,该fit
函数为客户端在本地训练模型,该evaluate
函数在本地测试模型并返回相关指标。我们现在可以使用以下方式启动客户端实例:
启动服务器
现在我们有了实例化客户端的方法,我们需要创建服务器来聚合结果。使用 Flower,可以通过首先选择一个策略(在这里,我们使用
FedAvg
,它将全局权重定义为每轮所有客户端权重的平均值)然后使用以下函数来轻松完成此flwr.server.start_server
操作:该
weighted_average
函数提供了一种聚合分布在客户端之间的指标的方法(基本上,这使我们能够显示每轮的平均准确度和损失)。总结
如果您想查看所有内容,您应该查看我们为 Flower 存储库编写的代码示例: https: //github.com/adap/flower/tree/main/examples/quickstart_huggingface。
当然,这是一个非常基本的示例,可以添加或修改很多内容,这只是为了展示我们如何简单地使用 Flower 来联合 Hugging Face 工作流程。
请注意,在这个示例中我们使用了
PyTorch
,但我们可以很好地使用TensorFlow
。作者:
charlesbvll
- 作者:Inevitable AI
- 链接:https://www.Inevitableai.ltd/article/share123
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。