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
Repository
A decentralized/P2P federated learning library
Basic Info
- Host: GitHub
- Owner: Cloudslab
- License: gpl-3.0
- Language: Python
- Default Branch: main
- Homepage: https://murmura-landing-page.vercel.app
- Size: 231 MB
Statistics
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 3
- Releases: 6
Topics
Metadata Files
README.md
Murmura
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 optimizationFlexible Learning Paradigms
Both centralized federated learning and fully decentralized peer-to-peer learningMultiple Network Topologies
Star, ring, complete graph, line, and custom topologies with automatic compatibility validationIntelligent 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 calibrationByzantine-Robust Aggregation
Trimmed mean and secure aggregation strategies for adversarial environmentsPrivacy 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 dataFlexible Data Partitioning
IID and non-IID data distribution with Dirichlet and quantity-based partitioningPyTorch 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 exportComprehensive 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 MNISTdp_mnist_example.py- Differential privacy-enabled federated learningdecentralized_mnist_example.py- Fully decentralized learning without central serverskin_lesion_example.py- Medical imaging federated learning
Architecture
Core Components
- Learning Processes -
FederatedLearningProcessandDecentralizedLearningProcessfor 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
- Website: http://www.cloudbus.org/
- Repositories: 23
- Profile: https://github.com/Cloudslab
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
- actions/checkout v4 composite
- actions/setup-python v5 composite
- actions/upload-artifact v4 composite
- py-cov-action/python-coverage-comment-action v3 composite
- py-cov-action/python-coverage-comment-action v3 composite
- 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
- 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)
- actions/cache v4 composite
- actions/checkout v4 composite
- actions/setup-node v4 composite
- pnpm/action-setup v3 composite
- @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
- 165 dependencies