阿里云服务器实践

简介: 使用阿里云服务器用联邦学习训练mnist
  1. 代码分析:FedML库中client的工作

client端的大概工作流程为:向server注册,向server请求数据集,加载数据,创建模型,创建ModelTrainer,创建FedAVGTrainer,创建ClientManager,开始训练并与server交互
(1)向server注册
register()::向server post自己的id,通知server该client已上线,并从server获取训练的参数,如训练所使用的数据集、模型、学习率等
(2)向server请求数据集
download_and_unzip():server有预处理好的小数据集,向server请求下载数据,下载完成后解压
(3)加载数据
load_data_by_device():根据自己的id,加载对应的数据集,如client 0加载MNIST_mobile/0,client 1加载MNIST_mobile/1
(4)创建模型
示例中使用了包含一个隐藏层(784, 10)的神经网络
优化器选择了SGD
(5)创建ModelTrainer
ModelTrainer的功能有:
get_model_params():获取模型参数
set_model_params():设置模型参数
train():训练
test():测试
(6)创建FedAVGTrainer
对ModelTrainer的封装,功能有:
update_model():调用ModelTrainer的set_model_params()设置模型参数
update_dataset():根据client id选择训练数据
train():使用ModelTrainer的train()进行训练,并获取模型参数,返回模型参数和训练样本数
test():使用ModelTrainer的test()进行测试
(7)创建ClientManager
ClientManager用于client和server之间的通信,主要功能有:
register_message_receive_handlers():注册处理不同类型信息的函数,如处理初始化信息使用handle_message_init(),处理server发来的模型使用handle_message_receive_model_from_server()
handle_message_init():处理初始化信息,但该函数实际上没有被调用过
handle_message_model_receive_from_server():接收server发送的更新后的模型参数,使用FedAVGTrainer的update_model()进行模型参数的更新,然后开始下一轮训练;所有训练epoch完成后通知server
send_model_to_server():将自己的id、模型的参数和训练样本数发送给server
__train():调用FedAVGTrainer.train()进行训练,获取训练后的模型参数和训练的样本数,再调用send_model_to_server()上传模型参数和训练样本数给server

  1. 实验代码更新

跑实验代码进行模型训练。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
3月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
1月前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
88 3
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
2月前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感

热门文章

最新文章