| # Instructions for getting the Federated Compute Platform code up and running on your own machine. |
| |
| ## Download and install build dependencies |
| |
| ### Basic tools |
| |
| There are some basic tools and packages you will need on your machine: |
| |
| * Git |
| * A C++ compiler (e.g., Clang or GCC, but see note about GCC below) |
| * Python 3.9 or greater, including the `venv` module |
| |
| For example, on Debian: |
| |
| ``` |
| sudo apt install -y git gcc python3 python3-dev python3-venv |
| ``` |
| |
| > ⚠️ The project maintainers internally test with Clang only, so support for |
| > GCC-based builds is provided only on a best-effort basis and may at times be |
| > broken. |
| > |
| > If using GCC then we recommend using a recent version (e.g., at least as |
| > recent as what Debian stable uses, preferably newer than that). |
| > |
| > If using Clang then please see [Building with Clang](#building-with-clang) for |
| > further Clang-specific instructions. |
| |
| ### Install Bazelisk |
| |
| Bazelisk is used to fetch the correct Bazel binaries necessary to build and run |
| Federated Compute code. |
| |
| Please read https://github.com/bazelbuild/bazelisk#installation. |
| |
| ## Set up your Python environment |
| |
| Setting up a virtual Python environment will ensure that Python dependencies |
| don't conflict or overwrite your existing Python installation. If you have |
| multiple installed versions of Python, replace `python3` in the following |
| instructions with the desired version (e.g., `python3.X`). |
| |
| ``` |
| python3 -m venv venv |
| source venv/bin/activate |
| pip install --upgrade pip |
| ``` |
| |
| Note: To exit the virtual environment, run `deactivate`. |
| |
| ## Clone the Federated Compute repository and install Python requirements |
| |
| ``` |
| git clone https://github.com/google/federated-compute.git |
| cd federated-compute |
| pip install -r requirements.txt |
| ``` |
| |
| ## Build and run the federated program test! |
| |
| > ⚠️ Many Federated Compute targets depend on TensorFlow, which can take several |
| > hours to build for the first time. Consider running builds in `screen` or |
| > `tmux` if you're worried about your terminal closing during this time. |
| > |
| > While not required, Bazel's |
| > [remote build execution](https://bazel.build/remote/rbe) and |
| > [remote caching](https://bazel.build/remote/caching) features can speed up |
| > builds. |
| |
| ``` |
| bazelisk test //fcp/demo:federated_program_test |
| ``` |
| |
| ### Building with Clang |
| |
| Use `--config=clang` to build with clang and libc++. On Debian, this requires |
| installing several additional packages: |
| |
| ``` |
| sudo apt install -y clang lld libc++-dev libc++abi-dev` |
| ``` |