name: UnitTests for Distributed Mode on: pull_request: types: [opened, synchronize, edited] jobs: run: if: false == contains(github.event.pull_request.title, 'WIP') runs-on: ${{ matrix.os }} timeout-minutes: 20 strategy: matrix: os: [ubuntu-latest] python-version: ['3.9'] torch-version: ['1.10.1'] torchvision-version: ['0.11.2'] torchaudio-version: ['0.10.1'] env: OS: ${{ matrix.os }} PYTHON: '3.9' steps: - uses: actions/checkout@master - name: Setup Python ${{ matrix.python-version }} uses: actions/setup-python@master with: python-version: ${{ matrix.python-version }} - name: Install PyTorch ${{ matrix.torch-version }}+cpu run: | pip install numpy typing-extensions dataclasses pip install torch==${{ matrix.torch-version}}+cpu torchvision==${{matrix.torchvision-version}}+cpu torchaudio==${{matrix.torchaudio-version}}+cpu -f https://download.pytorch.org/whl/torch_stable.html - name: Install FS run: | pip install -e .[test] - name: Test Distributed (LR on toy with a unified files) run: | python scripts/distributed_scripts/gen_data.py python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_server_no_data.yaml distribute.grpc_compression gzip & sleep 2 python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_client_1.yaml distribute.grpc_compression gzip & sleep 2 python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_client_2.yaml distribute.grpc_compression gzip & sleep 2 python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_client_3.yaml distribute.grpc_compression gzip [ $? -eq 1 ] && exit 1 || echo "Passed" - name: Test Distributed (LR on toy with multiple files) run: | python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_server.yaml data.file_path 'toy_data/server_data' distribute.data_idx -1 & sleep 2 python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_client_1.yaml data.file_path 'toy_data/client_1_data' distribute.data_idx -1 & sleep 2 python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_client_2.yaml data.file_path 'toy_data/client_2_data' distribute.data_idx -1 & sleep 2 python federatedscope/main.py --cfg scripts/distributed_scripts/distributed_configs/distributed_client_3.yaml data.file_path 'toy_data/client_3_data' distribute.data_idx -1