All Projects → dcgym → iroko

dcgym / iroko

Licence: Apache-2.0 license
A platform to test reinforcement learning policies in the datacenter setting.

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
go
31211 projects - #10 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to iroko

Deep-Reinforcement-Learning-With-Python
Master classic RL, deep RL, distributional RL, inverse RL, and more using OpenAI Gym and TensorFlow with extensive Math
Stars: ✭ 222 (+303.64%)
Mutual labels:  openai-gym
captcp
A open source program for TCP analysis of PCAP files
Stars: ✭ 110 (+100%)
Mutual labels:  tcp
SierraChartZorroPlugin
A Zorro broker API plugin for Sierra Chart, written in Win32 C++.
Stars: ✭ 22 (-60%)
Mutual labels:  tcp
ddp-gym
Differential Dynamic Programming controller operating in OpenAI Gym environment.
Stars: ✭ 70 (+27.27%)
Mutual labels:  openai-gym
robo-gym-robot-servers
Repository containing Robot Servers ROS packages
Stars: ✭ 25 (-54.55%)
Mutual labels:  openai-gym
missive
Fast, lightweight library for encoding and decoding JSON messages over streams.
Stars: ✭ 16 (-70.91%)
Mutual labels:  tcp
ntu-dsi-dcn
The official open source ns-3 simulation framework for datacenter network architectures
Stars: ✭ 20 (-63.64%)
Mutual labels:  datacenter
okhoxi-serac
冰塔协议-传输层协议
Stars: ✭ 33 (-40%)
Mutual labels:  tcp
gym-mtsim
A general-purpose, flexible, and easy-to-use simulator alongside an OpenAI Gym trading environment for MetaTrader 5 trading platform (Approved by OpenAI Gym)
Stars: ✭ 196 (+256.36%)
Mutual labels:  openai-gym
gym-R
An R package providing access to the OpenAI Gym API
Stars: ✭ 21 (-61.82%)
Mutual labels:  openai-gym
gym-rs
OpenAI's Gym written in pure Rust for blazingly fast performance
Stars: ✭ 34 (-38.18%)
Mutual labels:  openai-gym
mario
Super Mario Reinforcement Learning from Demonstration
Stars: ✭ 25 (-54.55%)
Mutual labels:  openai-gym
deep rl acrobot
TensorFlow A2C to solve Acrobot, with synchronized parallel environments
Stars: ✭ 32 (-41.82%)
Mutual labels:  openai-gym
deep-rl-docker
Docker image with OpenAI Gym, Baselines, MuJoCo and Roboschool, utilizing TensorFlow and JupyterLab.
Stars: ✭ 44 (-20%)
Mutual labels:  openai-gym
netxduo
Azure RTOS NetX Duo is an advanced, industrial-grade TCP/IP network stack designed specifically for deeply embedded real-time and IoT applications
Stars: ✭ 151 (+174.55%)
Mutual labels:  tcp
RLGC
An open-source platform for applying Reinforcement Learning for Grid Control (RLGC)
Stars: ✭ 85 (+54.55%)
Mutual labels:  openai-gym
itop-datacenter-view
Extension for iTop: Easily manage & visualize your racks, enclosures and datacenter devices.
Stars: ✭ 24 (-56.36%)
Mutual labels:  datacenter
MQTTnet
MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.
Stars: ✭ 3,309 (+5916.36%)
Mutual labels:  tcp
go-eventserver
A socket server which reads events from an event source and forwards them to the user clients when appropriate
Stars: ✭ 18 (-67.27%)
Mutual labels:  tcp
Packet Sender Mobile
iOS and Android version of Packet Sender
Stars: ✭ 58 (+5.45%)
Mutual labels:  tcp

Iroko: The Data Center RL Gym

DISCLAIMER: This project is still very early stage research. It is not stable, well tested, and changes quickly. If you want to use this project, be warned.

Iroko is an open source project that is focused on providing openAI compliant gyms. The aim is to develop machine learning algorithms that address data center problems and to fairly evaluate solutions again traditional techniques.

A concrete description is available in our Arxiv paper. A more elaborate version is presented in this master's thesis. There is also a published workshop paper on the topic:

Iroko: A Framework to Prototype Reinforcement Learning for Data Center Traffic Control. Fabian Ruffy, Michael Przystupa, Ivan Beschastnikh. Workshop on ML for Systems at NIPS 2018.

Requirements

The data center emulator makes heavy uses of Linux tooling and its networking features. It operates most reliably on a recent Linux kernel (4.15+) and is written in Python 3.6+. The supported platform is Ubuntu (at least 16.04 is required). Using the emulator requires full sudo access.

Package Dependencies

  • GCC or Clang and the build-essentials are required.
  • git for version control
  • libnl-route-3-dev to compile the traffic managers
  • ifstat and tcpdump to monitor traffic
  • python3 and python3-setuptools to build Python packages and run the emulator

Python Dependencies

The generator supports only Python3. pip3 can be used to install the packages.

  • numpy for matrix operations
  • gym to install openAI gym
  • seaborn, pandas and matplotlib to generate plots
  • gevent for lightweight threading

Mininet Dependencies

The datacenter networks are emulated using Mininet. At minimum Mininet requires the installation of

  • openvswitch-switch, cgroup-bin, help2man

Ray Dependencies

The emulator uses Ray to implement and evaluate reinforcement learning algorithms. Ray's dependencies include:

  • Pip: tensorflow, setproctitle, psutil, opencv-python, lz4
  • Apt: libsm6, libxext6, libxrender-dev

Goben Dependencies

The emulator generates and measures traffic using Goben. While an amd64 binary is already provided in the repository, the generator submodule can also be compiled using Go 1.11. The contrib/ folder contains a script to install Goben locally.

Installation

A convenient, self-contained way to install the emulator is to run the ./install.sh. It will install most dependencies locally via Poetry.

Run

To test the emulator you can run sudo -E python3 run_basic.py. This is the most basic usage example of the Iroko environment.

run_ray.py contains examples on how to use Ray with this project.

benchmark.py is a test suite, which runs multiple tests in sequence and produces a comparison plot at the end of all runs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].