GithubHelp home page GithubHelp logo

kunalmohan / envisedge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vkkhare/recoedge

0.0 1.0 1.0 70.5 MB

Deploy recommendation engines with Edge Computing

Home Page: https://www.nimbleedge.ai

License: Apache License 2.0

Python 77.44% Shell 1.33% Jupyter Notebook 5.41% Scala 15.82%

envisedge's Introduction


EnvisEdge EnvisEdge
Envision the Edge like never before...

Lisence Activity Discord OpenIssues

Sparkline

EnvisEdge allows users to simulate an edge computing environment to test their ideas and models before putting them in place on the edge. It takes care of all the complex stuff such as diversity across operating systems, computation power and communication mediums, allowing you to focus on the idea rather than the setup.

EnvisEdge allows researchers, developers and data scientists to experiment and test their hypotheses, and produce production-ready code without having direct access to the edge devices. Creating a path for global research and growth in the domains of federated learning and edge computing.

Key features ๐ŸŒŸ

  1. Provides a platform for global or remote teams to run and test their systems/models prior to deployment.
  2. Run, train and test FL algorithms and ML models.
  3. Can setup environment of your choice with any arbitrary hardware constraints such as RAM, CPU and more.
  4. Experience Edge on cloud and your devices.

Repo Structure ๐Ÿข

NimbleEdge/EnvisEdge
โ”œโ”€โ”€ CONTRIBUTING.md                         <-- Please go through the contributing guidelines before starting ๐Ÿค“
โ”œโ”€โ”€ README.md                               <-- You are here ๐Ÿ“Œ
โ”œโ”€โ”€ datasets                                <-- Sample datasets
โ”œโ”€โ”€ docs                                    <-- Tutorials and walkthroughs ๐Ÿง
โ”œโ”€โ”€ experiments                             <-- Recommendation models used by our services
โ””โ”€โ”€ fedrec                                  <-- Whole magic takes place here ๐Ÿ˜œ
     โ”œโ”€โ”€ communication_interfaces              <-- Modules for communication interfaces eg. Kafka
     โ”œโ”€โ”€ data_models                           <-- All data modules that will be used for communication and thier serializers and  deserializers
     โ”œโ”€โ”€ modules                               <-- All the modules related to transformers, embeddings etc.
     โ”œโ”€โ”€ multiprocessing                       <-- Modules to run parallel worker jobs
     โ”œโ”€โ”€ optimization                          <-- Modules realted to torch optimizers and gradient decesnt etc.
     โ”œโ”€โ”€ python_executors                      <-- Contains worker modules eg. trainer and aggregator
     โ”œโ”€โ”€ serialization                         <-- serialization interfaces for data models
     โ”œโ”€โ”€ user_modules                          <-- Envis modules for wrapping toech modules for users.
     โ””โ”€โ”€ utilities                             <-- Helper modules
โ”œโ”€โ”€ fl_strategies                           <-- Federated learning algorithms for our services.
โ”œโ”€โ”€ notebooks                               <-- Jupyter Notebook examples
โ”œโ”€โ”€ scala-core                              <-- Backbone of EnvisEdge
โ”œโ”€โ”€ scripts                                 <-- bash scripts for creating and removing kafka topics.
โ””โ”€โ”€ tests                                   <-- tests

QuickStart

Update the config files of the model (can be found here) you are going to use with logging directory:

log_dir:
  PATH: <path to your logging directory>

Download kafka from Here ๐Ÿ‘ˆ and start the kafka server using the following commands

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

Create kafka topics for the job executor

cd scripts
$ bash add_topics.sh
Enter path to kafka Directory : <Enter the path to the kafka directory>
kafka url: <Enter the URL on which kafka is listening e.g if you are running it on localhost it would be 127.0.0.1>
Creating Topics...

Install the dependencies using virtual environment

mkdir env
cd env
virtualenv envisedge
source envisedge/bin/activate
pip3 install -r requirements.txt

Download the federated dataset

$ bash download.sh -f
Enter global data path : <Enter the path you want your dataset to be saved>
Enter model : <Enter the config file of the model to update with the dataset path>
Downloading femnist dataset...

Run data preprocessing with preprocess_data . Using this dataset, you will prepare a client_id mapping in the dataset that will be sent to Python workers for training the model.

python preprocess_data.py --config configs/regression.yml

To start the multiprocessing executor run the following command:

$ python executor.py --config configs/regression.yml

To see how traning is done run the following command:

$ python tests/integration_tests/integration_test.py --config configs/regression.yml

Demos and Tutorials

You may find all the EnvisEdge related demos and tutorials here.

You may also find the official documentation here.

Start Contributing

  1. Before you begin, please read our CONTRIBUTOR'S GUIDELINES.
  2. Introduce yourself in the #introduction channel on Discord ( Most of the talks and discussions happen here.)
  3. Look for an open issue that interests you such as good first issue, python, scala, documentation and more. Liverage labels feature as shown below Label wise issue search
  4. Star, Fork, and Clone the repo.
  5. Get down to business. Do your work.
  6. Push to your fork.
  7. Send a PullRequest to NimbleEdge/EnvisEdge.

This project follows the all-contributors specification.Contributions of any kind are welcome!!

License

Apache License 2.0

envisedge's People

Contributors

abhiwalia15 avatar aigbine avatar ayush268 avatar burpcat avatar dchidindu5 avatar divyanshugit avatar eshaanagarwal avatar haripriya9647 avatar harshv834 avatar oyetripathi avatar ramesht007 avatar rharish101 avatar satyamroy001 avatar shaistha24 avatar tob-iee avatar viditagarwal7479 avatar vkkhare avatar yash-vardhan-sharma avatar yoohannes avatar

Watchers

 avatar

Forkers

0xxxoc1n

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.