GithubHelp home page GithubHelp logo

wellingtonlobato / flexe Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 1.0 4.52 MB

Flexe - The open source federated learning for vehicular network simulation framework.

License: GNU General Public License v2.0

Makefile 14.93% C++ 83.15% C 1.93%
machine-learning open-source omnetpp simulation-framework vehicular-networks federated-learning federated-learning-framework

flexe's Introduction

Flexe

Flexe is a new framework for simulation of Federated Learning (FL) in Connected and Autonomous Vehicle (CAVs). Its adaptable design allows for the implementation of a variety of FL schemes, including horizontal, vertical, and Federated Transfer Learning. Flexe and PyFlexe are free to download and use, built for customization, and allows for the realistic simulation of wireless networking and vehicle dynamics. The project was partitioned into two, one of which is responsible for vehicle-to-vehicle communication (Flexe) and the other for the construction and training of models (PyFlexe).

Getting Started

We developed FLEXE to make it possible to implement and develop vehicular FL applications within the context of CAVs. It further simplifies the process of modeling specific Machine Learning (ML) and FL applications into environments suitable for CAVs. Specifically, we developed Flexe on top of the Veins network simulator to simulate the dynamics of communication between vehicles.

Prerequisites

PyFlexe requires the following software to be installed

  • OMNeT++
  • conan
  • grpc
  • TensorFlow
  • PyTorch

OMNeT++ (6 >=) installation

Please do follow the instructions from the official OMNeT documentation

Conan installation (1.58.0 >=)

Please do follow the instructions from the official conan documentation

pip install conan==1.58.0

GRPC installation (== 1.38.1)

Please do follow the instructions from the official GRPC documentation

Installing

In order to install the necessary packages to run Flexe, just run the following command in the root directory.

conan install . --build missing -s compiler.version=10 -s compiler.libcxx=libstdc++11

Import the project into your OMNeT++ IDE workspace by clicking File > Import > General: Existing Projects into Workspace and selecting the directory you unpacked the Flexe module to.

Flexe is an extension to the well known and widely used Veins simulation framework. See the Veins website http://veins.car2x.org/ for a tutorial, documentation, and publications.

Project structure - main components

├── simulations
│   ├── multi_model
│   └── simple_example
└── src
    ├── flexe
    │   ├── application
    │   ├── cache
    │   ├── messages
    │   └── proto
    ├── Makefile
    └── makefrag

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning.

Authors

Citation

PyFlexe and Flexe can reproduce results in the following papers:

@INPROCEEDINGS{Lobato2022,
  author={Lobato, Wellington and Costa, Joahannes B. D. Da and Souza, Allan M. de and Rosário, Denis and Sommer, Christoph and Villas, Leandro A.},
  booktitle={2022 IEEE 96th Vehicular Technology Conference (VTC2022-Fall)}, 
  title={FLEXE: Investigating Federated Learning in Connected Autonomous Vehicle Simulations}, 
  year={2022},
  pages={1-5},
  doi={10.1109/VTC2022-Fall57202.2022.10012905}
}

Updates

Flexe Version 3.0.0 is released. Now with new messages and functions. Support asynchronous and multi-model federated learning.

License

This project is licensed under the GPL-2.0 license - see the COPYING.md file for details

flexe's People

Contributors

wellingtonlobato avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

twinte

flexe's Issues

How to build FLEXE project?

Dear Mr lobato:
After reading your paper:FLEXE: Investigating Federated Learning in Connected Autonomous Vehicle Simulations, I want to import your FLEXE project in my omnetpp. But I don't know how to do it. Would you please provide some importing steps in detail?
I will appreciate it if I can receive your reply!

Question about Veins version compatibility

Thanks for building this tool and making this available!

I am trying to run the demo example in omnetpp, running into veins errors. I am using the latest master/main branches of veins and flexe. The error message is:

flexe/application/MLApp.cc:150:48: error: no member named 'getVehicleId' in 'veins::TraCICommandInterface::Vehicle' std::string sendID = traciVehicle->getVehicleId() + ";" + std::to_string(self); ~~~~~~~~~~~~ ^ flexe/application/MLApp.cc:152:18: error: no member named 'setSpeed' in 'veins::DemoSafetyMessage' bsm->setSpeed(traciVehicle->getSpeed());

It makes me think that the version of veins I am using is not appropriate. I ran Veins demo scenario and can confirm that it is working. I don't know what I am missing here. Appreciate your help!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.