murmura

A decentralized/P2P federated learning library

https://github.com/cloudslab/murmura

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.2%) to scientific vocabulary

Keywords

cross-silo-federated-learning decentralized-federated-learning decentralized-learning deep-learning distributed-learning federated-learning federated-learning-framework federated-learning-simulator machine-learning open-source p2p-learning python
Last synced: 6 months ago · JSON representation

Repository

A decentralized/P2P federated learning library

Basic Info
Statistics
  • Stars: 3
  • Watchers: 2
  • Forks: 1
  • Open Issues: 3
  • Releases: 6
Topics
cross-silo-federated-learning decentralized-federated-learning decentralized-learning deep-learning distributed-learning federated-learning federated-learning-framework federated-learning-simulator machine-learning open-source p2p-learning python
Created about 1 year ago · Last pushed 6 months ago
Metadata Files
Readme Funding License Citation

README.md

Murmura

Coverage badge DOI

Murmura is a comprehensive Ray-based framework for federated and decentralized machine learning. Built for researchers and developers, it provides production-ready tools for distributed machine learning with advanced privacy guarantees and flexible network topologies.

What is Murmura?

Murmura is a sophisticated federated learning framework that supports both centralized and fully decentralized learning environments. Built on Ray for distributed computing, it enables researchers to experiment with various network topologies, aggregation strategies, and privacy-preserving techniques across single-node and multi-node clusters.

Key Features

Core Framework

  • Ray-Based Distributed Computing
    Multi-node cluster support with automatic actor lifecycle management and resource optimization

  • Flexible Learning Paradigms
    Both centralized federated learning and fully decentralized peer-to-peer learning

  • Multiple Network Topologies
    Star, ring, complete graph, line, and custom topologies with automatic compatibility validation

  • Intelligent Resource Management
    Automatic eager/lazy dataset loading, CPU/GPU allocation, and placement strategies

Privacy & Security

  • Comprehensive Differential Privacy
    Client-level DP with Opacus integration, RDP privacy accounting, and automatic noise calibration

  • Byzantine-Robust Aggregation
    Trimmed mean and secure aggregation strategies for adversarial environments

  • Privacy Budget Tracking
    Real-time privacy budget monitoring across clients and training rounds

Data & Models

  • Unified Dataset Interface
    Seamless integration with HuggingFace datasets, PyTorch datasets, and custom data

  • Flexible Data Partitioning
    IID and non-IID data distribution with Dirichlet and quantity-based partitioning

  • PyTorch Model Integration
    Easy integration with existing PyTorch models and automatic DP adaptation

Monitoring & Visualization

  • Real-Time Training Visualization
    Network topology visualization, training progress tracking, and metrics export

  • Comprehensive Monitoring
    Actor health checks, resource usage tracking, and event-driven architecture

Quick Start

Installation

```bash

Install with Poetry

poetry install

Or with pip

pip install murmura ```

Basic Usage

```python from murmura.orchestration.learningprocess import FederatedLearningProcess from murmura.orchestration.orchestrationconfig import OrchestrationConfig from murmura.aggregation.aggregation_config import AggregationConfig

Configure federated learning

config = OrchestrationConfig( numclients=10, numrounds=50, topologytype="star", aggregationconfig=AggregationConfig(strategy="fedavg") )

Run federated learning

process = FederatedLearningProcess(config) results = process.run() ```

Examples

Explore complete examples in the murmura/examples/ directory:

  • mnist_example.py - Basic federated learning with MNIST
  • dp_mnist_example.py - Differential privacy-enabled federated learning
  • decentralized_mnist_example.py - Fully decentralized learning without central server
  • skin_lesion_example.py - Medical imaging federated learning

Architecture

Core Components

  • Learning Processes - FederatedLearningProcess and DecentralizedLearningProcess for different learning paradigms
  • Cluster Manager - Ray-based distributed computing with multi-node support
  • Aggregation Strategies - FedAvg, TrimmedMean, GossipAvg with DP variants
  • Network Topologies - Flexible network structures for decentralized learning
  • Privacy Framework - Comprehensive differential privacy with Opacus integration

Supported Aggregation Strategies

| Strategy | Type | Privacy-Enabled | Best For | |----------------|---------------|-----------------|------------------------------| | FedAvg | Centralized | | Standard federated learning | | TrimmedMean| Centralized | | Adversarial environments | | GossipAvg | Decentralized | | Peer-to-peer networks |

Network Topologies

  • Star - Central server with spoke clients (federated learning)
  • Ring - Circular peer-to-peer communication
  • Complete - Full mesh networking (all-to-all)
  • Line - Sequential peer communication
  • Custom - User-defined adjacency matrices

Development

Setup

bash poetry install poetry shell

Testing

```bash

Run all tests

pytest

Run with coverage

pytest --cov=murmura tests/

Run excluding integration tests

pytest -m "not integration" ```

Code Quality

bash ruff check # Linting ruff format # Code formatting mypy murmura/ # Type checking

Future Roadmap

  • Enhanced Privacy Techniques - Homomorphic encryption and secure multi-party computation
  • Advanced Network Simulation - Realistic network conditions and fault injection
  • AI Agent Integration - Autonomous learning agents for dynamic environments
  • Real-world Deployment Tools - Production deployment and monitoring capabilities

Contributing

We'd love your help building Murmura.
Start by checking out the issues or submitting a pull request.

License

Licensed under the GNU GPLv3. See LICENSE for more details.

Contact

For questions or feedback, open an issue or email mrangwala@student.unimelb.edu.au.

Stay Updated

Subscribe to our newsletter to receive updates on Murmura's development and be the first to know about new features and releases. Visit our website for more information.

Owner

  • Name: The Cloud Computing and Distributed Systems (CLOUDS) Laboratory
  • Login: Cloudslab
  • Kind: organization

GitHub Events

Total
  • Create event: 31
  • Release event: 4
  • Issues event: 6
  • Watch event: 2
  • Delete event: 22
  • Issue comment event: 15
  • Push event: 203
  • Pull request event: 36
  • Fork event: 1
Last Year
  • Create event: 31
  • Release event: 4
  • Issues event: 6
  • Watch event: 2
  • Delete event: 22
  • Issue comment event: 15
  • Push event: 203
  • Pull request event: 36
  • Fork event: 1

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
  • py-cov-action/python-coverage-comment-action v3 composite
.github/workflows/coverage.yml actions
  • py-cov-action/python-coverage-comment-action v3 composite
poetry.lock pypi
  • aiohappyeyeballs 2.6.1
  • aiohttp 3.11.16
  • aiosignal 1.3.2
  • annotated-types 0.7.0
  • attrs 25.3.0
  • certifi 2025.1.31
  • charset-normalizer 3.4.1
  • click 8.1.8
  • colorama 0.4.6
  • contourpy 1.3.1
  • coverage 7.8.0
  • cycler 0.12.1
  • datasets 3.5.0
  • dill 0.3.8
  • filelock 3.18.0
  • fonttools 4.57.0
  • frozenlist 1.5.0
  • fsspec 2024.12.0
  • huggingface-hub 0.30.2
  • idna 3.10
  • iniconfig 2.1.0
  • jsonschema 4.23.0
  • jsonschema-specifications 2024.10.1
  • kiwisolver 1.4.8
  • matplotlib 3.10.1
  • msgpack 1.1.0
  • multidict 6.4.2
  • multiprocess 0.70.16
  • mypy 1.15.0
  • mypy-extensions 1.0.0
  • networkx 3.4.2
  • numpy 2.2.4
  • packaging 24.2
  • pandas 2.2.3
  • pandas-stubs 2.2.3.250308
  • pillow 11.1.0
  • pluggy 1.5.0
  • propcache 0.3.1
  • protobuf 6.30.2
  • pyarrow 19.0.1
  • pydantic 2.11.3
  • pydantic-core 2.33.1
  • pyparsing 3.2.3
  • pytest 8.3.5
  • pytest-cov 6.1.1
  • python-dateutil 2.9.0.post0
  • pytz 2025.2
  • pyyaml 6.0.2
  • ray 2.44.1
  • referencing 0.36.2
  • requests 2.32.3
  • rpds-py 0.24.0
  • ruff 0.9.10
  • six 1.17.0
  • tqdm 4.67.1
  • types-pytz 2025.2.0.20250326
  • typing-extensions 4.13.1
  • typing-inspection 0.4.0
  • tzdata 2025.2
  • urllib3 2.3.0
  • xxhash 3.5.0
  • yarl 1.19.0
pyproject.toml pypi
  • mypy ^1.14.1 develop
  • pytest ^8.3.4 develop
  • pytest-cov ^6.0.0 develop
  • ruff ^0.9.3 develop
  • datasets (>=3.2.0,<4.0.0)
  • matplotlib (>=3.10.0,<4.0.0)
  • networkx (>=3.4.2,<4.0.0)
  • numpy (>=2.2.2,<3.0.0)
  • pandas (>=2.2.3,<3.0.0)
  • pandas-stubs (>=2.2.3.241126,<3.0.0.0)
  • pydantic (>=2.10.6,<3.0.0)
  • ray (>=2.41.0,<3.0.0)
.github/workflows/landing-page-deploy.yml actions
  • actions/cache v4 composite
  • actions/checkout v4 composite
  • actions/setup-node v4 composite
  • pnpm/action-setup v3 composite
landing page/murmura-landing/package.json npm
  • @types/node ^22 development
  • @types/react ^19 development
  • @types/react-dom ^19 development
  • eslint ^9 development
  • eslint-config-next 15.3.0 development
  • postcss ^8 development
  • tailwindcss ^3.4.17 development
  • typescript ^5 development
  • @hookform/resolvers ^3.9.1
  • @radix-ui/react-accordion ^1.2.2
  • @radix-ui/react-alert-dialog ^1.1.4
  • @radix-ui/react-aspect-ratio ^1.1.1
  • @radix-ui/react-avatar ^1.1.2
  • @radix-ui/react-checkbox ^1.1.3
  • @radix-ui/react-collapsible ^1.1.2
  • @radix-ui/react-context-menu ^2.2.4
  • @radix-ui/react-dialog ^1.1.4
  • @radix-ui/react-dropdown-menu ^2.1.4
  • @radix-ui/react-hover-card ^1.1.4
  • @radix-ui/react-label ^2.1.1
  • @radix-ui/react-menubar ^1.1.4
  • @radix-ui/react-navigation-menu ^1.2.3
  • @radix-ui/react-popover ^1.1.4
  • @radix-ui/react-progress ^1.1.1
  • @radix-ui/react-radio-group ^1.2.2
  • @radix-ui/react-scroll-area ^1.2.2
  • @radix-ui/react-select ^2.1.4
  • @radix-ui/react-separator ^1.1.1
  • @radix-ui/react-slider ^1.2.2
  • @radix-ui/react-slot ^1.2.0
  • @radix-ui/react-switch ^1.1.2
  • @radix-ui/react-tabs ^1.1.2
  • @radix-ui/react-toast ^1.2.4
  • @radix-ui/react-toggle ^1.1.1
  • @radix-ui/react-toggle-group ^1.1.1
  • @radix-ui/react-tooltip ^1.1.6
  • autoprefixer ^10.4.20
  • class-variance-authority ^0.7.1
  • clsx ^2.1.1
  • cmdk 1.0.4
  • date-fns 4.1.0
  • embla-carousel-react 8.5.1
  • input-otp 1.4.1
  • lucide-react ^0.454.0
  • next 15.2.4
  • next-themes ^0.4.4
  • react ^19
  • react-day-picker 8.10.1
  • react-dom ^19
  • react-hook-form ^7.54.1
  • react-resizable-panels ^2.1.7
  • recharts 2.15.0
  • resend ^4.3.0
  • sonner ^1.7.1
  • tailwind-merge ^2.5.5
  • tailwindcss-animate ^1.0.7
  • vaul ^0.9.6
  • zod ^3.24.1
landing page/murmura-landing/pnpm-lock.yaml npm
  • 165 dependencies