Git Product home page Git Product logo

d2c's Introduction

D2C: Data-Driven Control Library

Documentation Status MIT

D2C(Data-driven Control Library) is a library for data-driven decision-making & control based on state-of-the-art offline reinforcement learning (RL), offline imitation learning (IL), and offline planning algorithms. It is a platform for solving various decision-making & control problems in real-world scenarios. D2C is designed to offer fast and convenient algorithm performance development and testing, as well as providing easy-to-use toolchains to accelerate the real-world deployment of SOTA data-driven decision-making methods.

The current supported offline RL/IL algorithms include (more to come):

Features:

  • D2C includes a large collection of offline RL and IL algorithms: model-free and model-based offline RL/IL algorithms, as well as planning methods.

  • D2C is highly modular and extensible. You can easily build custom algorithms and conduct experiments with it.

  • D2C automates the development process in real-world control applications. It simplifies the steps of problem definition/mathematical formulation, policy training, policy evaluation and model deployment.

Documentation

The tutorials and API documentation are hosted on air-d2c.readthedocs.io.

The example scripts are under example/ folder and test/ folder.

Installation

D2C interface can be installed as follows:

git clone https://github.com/AIR-DI/D2C.git
cd d2c
pip install -e .

Usage

Here is an example of TD3+BC. The full script can be found at example/benchmark/demo_td3_bc.py.

First, a configuration file model_config.json5 which contains all the hyper-parameters of the RL algorithms should be placed in example/benchmark/config. Please check this file for detail about the hyper-parameters.

Then, the offline data for the algorithm should be placed in example/benchmark/data. Here, we use the mujoco dataset from D4RL(Download link) and placed the data files in example/benchmark/data/d4rl/mujoco/.

Import some relevant packages:

import torch
from d2c.trainers import Trainer
from d2c.models import make_agent
from d2c.envs import benchmark_env, LeaEnv
from d2c.data import Data
from d2c.evaluators import bm_eval
from example.benchmark.config import make_config

Set the hyper-parameters and generate the config. Most of the hyper-parameters have been set up well in the configuration file. You can also modify the hyper-parameters like this:

command_args = {
        'model.model_name': 'td3_bc',
        'train.data_loader_name': None,
        'train.device': device,
        'train.seed': 0,
        'train.total_train_steps': 1000000,
        'train.batch_size': 256,
        'train.agent_ckpt_name': '0810'
    }
config = make_config(command_args)

The keys in the dict command_args are the names of the hyper-parameters in the configuration file model_config.json5.

Make the dataset:

bm_data = Data(config)
s_norm = dict(zip(['obs_shift', 'obs_scale'], bm_data.state_shift_scale))
data = bm_data.data

Make environments:

# The env of the benchmark to be used for policy evaluation.
env = benchmark_env(config=config, **s_norm)
# Contains dynamics model to be trained.
lea_env = LeaEnv(config)

Setup the agent and the evaluator:

agent = make_agent(config=config, env=lea_env, data=data)
evaluator = bm_eval(agent=agent, env=env, config=config)

Let's train it:

trainer = Trainer(agent=agent, train_data=data, config=config, env=lea_env, evaluator=evaluator)
trainer.train()

You can also run it in command line. Please refer to the file example/benchmark/run.sh for details.

Support

Channel Link
Issues GitHub Issues
E-mail [email protected]

Contributing

D2C is under development. More new RL algorithms are going to be added and we will keep improving D2C. We always welcome contributions to help make D2C better with us together.

Citation:

To cite this repository:

@misc{d2c,
  author = {Xiangyu Zhu and Jianxiong Li and Wenjia Zhang and Haoyi Niu and Yinan Zheng and Haoran Xu and Xianyuan Zhan},
  title = {{D2C}: Data-driven Control Library},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/AIR-DI/D2C}},
}

Acknowledgment

D2C is supported by AIR-DREAM Lab, which is a research group at Institute for AI Industry Research (AIR), Tsinghua University.

d2c's People

Contributors

facebear-ljx avatar huxiao09 avatar t6-thu avatar zackxiangyu avatar zhengyinan-air avatar

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.