MetisFL - The First Open Federated Learning Framework implemented in C++ and Python3.
Due to some library inconsistencies that appeared across operating systems (e.g., Centos vs MacOS) we concluded that we should build a docker image and run the entire project within a container. The Dockerfile(s) contain all required steps.
System prerequisites:
To compile and run the project through docker, navigate to the parent directory of the project and then:
Run chmod +x ./configure.sh && ./configure.sh
to configure metis fl project.
Note: we run the above command before building the docker image because to configure all project dependencies.
Build docker image for the entire project.
docker build -t projectmetis_ubuntu_22_04 -f DockerfileUbuntu .
docker build -t projectmetis_dev -f DockerfileDev .
docker build -t projectmetis_rockylinux_8 -f DockerfileRockyLinux .
Approximate size for any of the following images (using docker): ~9GB (without CUDA), ~12GB (with CUDA)Build docker CUDA image (only applicable to Ubuntu and RockyLinux images).
cd docker_images/cuda/ubuntu/11.7 && docker build -t projectmetis_ubuntu_22_04_cuda -f Dockerfile .
cd docker_images/cuda/rockylinux/11.3 && docker build -t projectmetis_rockylinux_8_cuda -f Dockerfile .
nvidia-docker run --rm --gpus all projectmetis_ubuntu_22_04_cuda nvidia-smi
brew install googletest
)brew install protobuf
)If project files are not identifiable then you need to sync Bazel. To do so:
https://trello.com/b/bYLUYqGK/metis-v01