在docker中安装联邦学习fedml框架
这里主要介绍docker容器跨物理机的分布式fedml的安装方法
fedml的官方安装教程:http://doc.fedml.ai/#/installation-distributed-computing
由于官方的安装教程不是基于docker的,由于某些原因,本人需要在docker环境中安装fedml
几个关键的步骤是:
- 在你的多个物理节点中启动多个docker容器,作为部署fedml的节点。docker容器可以预留出几个端口,用来起jupyter服务之类的。参考:
docker run --gpus all -itd --privileged --name=fedml_x -p 1000-1010:1000-1010 ufoym/deepo /bin/bash
这里推荐用镜像ufoym/deepo,这个镜像已经把gpu环境以及torch和tf安装好了。
- 要让这多个docker容器组成集群,这样容器之间才可以相互发送数据,如果你的容器全是在同一台物理机上,那么就没必要组成集群了,直接把它们当成物理机按照官方文档部署就可以了。这里有个注意的点,笔者之前对docker不熟悉,一开始把容器的ip设置为宿主机的ip,然后通过修改ssh的端口号做无密码登录,但是这样会在mpirun那里碰到问题,mpirun命令会随机占用一个容器中可用的端口号,而且没法设置,也就没法做容器和宿主的端口映射,这里浪费了很多时间,其实同节点的docke