Brax is a differentiable physics engine that simulates environments made up of rigid bodies, joints, and actuators

Overview

BRAX

Brax is a differentiable physics engine that simulates environments made up of rigid bodies, joints, and actuators. It's also a suite of learning algorithms to train agents to operate in these environments (PPO, SAC, evolutionary strategy, and direct trajectory optimization are implemented).

Brax is written in JAX and is designed for use on acceleration hardware. It is both efficient for single-core training, and scalable to massively parallel simulation, without the need for pesky datacenters.

Some policies trained via Brax. Brax simulates these environments at millions of physics steps per second on TPU.

Colab Notebooks

Explore Brax easily and quickly through a series of colab notebooks:

  • Brax Basics introduces the Brax API, and shows how to simulate basic physics primitives.
  • Brax Training introduces Brax environments and training algorithms, and lets you train your own policies directly within the colab.

Using Brax locally

To install Brax from source, clone this repo, cd to it, and then:

python3 -m venv env
source env/bin/activate
pip install --upgrade pip
pip install -e .

To train a model:

learn

Training on NVidia GPU is supported, but you must first install CUDA, CuDNN, and JAX with GPU support.

Citing Brax

If you would like to reference Brax in a publication, please use:

@software{brax2021github,
  author = {C. Daniel Freeman and Erik Frey and Anton Raichuk and Sertan Girgin and Igor Mordatch and Olivier Bachem},
  title = {Brax - A Differentiable Physics Engine for Large Scale Rigid Body Simulation},
  url = {http://github.com/google/brax},
  version = {0.1.0},
  year = {2021},
}
Comments
  • Question about JS development

    Question about JS development

    This is probably a really silly question, but I have no experience whatsoever with JS and anything web related.

    Im trying to add a torus primitive to the set of colliders. I made a simple mostly empty env to try it out in, and im using the HTML render functionality showcased in other notebook examples to try and debug my progress. Ive added colliders, changed the protobuf definition and compiled it, etc. Not much of a clue what im doing yet, but all parts of the brax repo that mention spheres now have a torus equivalent. The plane I added in my env shows up nicely; but my torus does not show up. Could be many reasons of course, but ive found at least one. Deleting createPlane in system.js in my repo, also does not stop my plane render code from working.

    Further digging reveals that that html.py has a line import {Viewer} from 'https://cdn.jsdelivr.net/gh/google/[email protected]/js/viewer.js';

    Unless im missing something, thats not referring to viewer.js inside my repo; so it makes sense im not seeing changes made there reflected in my notebook.

    Now im not sure if this is just some WIP development code that got merged, or if im missing something fundamental about the zen-of-webdev here; but if you were me and looking to make a change that would allow me to do local development on this JS, and also would stand a chance of getting merged, what would you do? Do I need to locally host my viewer.js and link the HTML to that? But then how would I merge a non-broken PR if its supposed to refer to this CDN of a past brax release?

    In general, is there something im missing about doing local development? Is debugging using the 3JS viz in a notebook the way to go?

    opened by EelcoHoogendoorn 15
  • Add Brax to conda

    Add Brax to conda

    As a number of machine learning projects use conda and it is better for conda is all dependencies are also on conda

    Could Brax to added to conda-forge?

    opened by pseudo-rnd-thoughts 14
  • Bug: capsule/sphere-plane collision working unreliably

    Bug: capsule/sphere-plane collision working unreliably

    I'm trying to simulate a pool billiards tabletop that I've modeled with a plane as floor and 4 planes surrounding it, facing inward. If I now spawn a ball and bounce it off the walls, sometimes the collisions work well:

    (left is top-down view, right is side view)

    brax-collision-right1

    ...but sometimes it doesn't work and the ball gets stuck in the wall:

    brax-collision-weird3

    brax-collision-weird4

    I've made a Colab to reproduce the issue: https://colab.research.google.com/drive/1flnseQcjarIYM4G_rECTEAaps-kXPoey?usp=sharing

    If anybody has any pointers, that'd be greatly appreciated.

    Best, Flo

    bug 
    opened by fgolemo 14
  • Enable per-collider friction specification

    Enable per-collider friction specification

    • Add optional float field "friction" to colliders; If unspecified, the global friction coefficient is applied
    • Re-compile protobuf file (config_pb2.py)
    • Introduce Collider dataclass to pass into _collide() and _collide_pair()
    • Replace references to config.friction with per-body friction (Collider.friction)

    Fixes #55

    Please note:

    1. I did some primitive tests within physics_test.py but observed that the simulation is currently unstable with friction due to lateral friction, no matter how large I set the number of substeps. Hence I ended up rolling back, in case someone else can advise. I'd appreciate any help writing tests for these changes in near future.

    2. I am preserving the plane-body (and mesh-body?) collision behaviour in _collide(), i.e. only the body's coefficient matters and not the plane's. However, a plane's collision coefficient is pretty important for rolling and sliding motions. I'm not a simulation expert yet, but I'd love to see how e.g. Bullet or MuJoCo implements lateral friction.

    cla: yes 
    opened by namheegordonkim 12
  • Support for drag force to implement gym swimmer environment

    Support for drag force to implement gym swimmer environment

    I was trying to get drag force into my simulation in order to get the swimmer environment running (and possibly simple underwater simulations!) because ther rest of the swimmer env is just simple to port over to brax.

    The drag force can be described as follows:

    $F_d = - 1/2 \rho ||v||^2 A C_d unit_vector(v)$

    where:

    • \rho is the density of the fluid
    • ||v||^2 is the magnitude of velocity squared
    • A is the surface area in the direction of the velocity
    • C_d is the Coeficient of drag, (friction of interaction)

    \rho and C_d as well as the 1/2 could easily be merged into one constant as they initially play a minor role of determining the properties of the interaction.

    This can in principle added easily to the location in code where the forces are applied to the different bodies. I got stuck with two problems:

    • Where is the best location in the code to add this formula or how do you want to add it? I think you guys know a lot better than I do @cdfreeman-google
    • Whereas the velocity of each body is certainly available, the surface area in the direction of velocity is certainly not (right?). I am pretty sure as I could not think of a part of brax that would require it. I think I will have to implemet for each collider shape a function that projects the collider onto a plane whose normal looks in the direction of the velocity. I am happy if there is an easier way to do this in brax.
    enhancement 
    opened by benelot 11
  • Performance nitpick

    Performance nitpick

    https://github.com/google/brax/blob/8e58feb923ce86b7b8c7036a05429793bbc3fa65/brax/physics/math.py#L278

    Little nitpick but

    S = jnp.array([1., -1., -1., -1.])
    def inv_quat(q):
    	return q * S
    

    Benchmarks as 10% faster on my laptop cpu at least; and I suspect the same would be more true of architectures more aggressively tuned for vectorization. Dont have any experience with TPUs and their compilers, but this formulation would also make it easier for a GPU compiler to get to the GPU-optimal compiled code I imagine.

    opened by EelcoHoogendoorn 10
  • External Torque

    External Torque

    For discussion: Beginning to implement external torque inputs. API might make sense to change, though, and is currently incomplete.

    The idea is that the frozen field on the Thruster could indicate whether to freeze either force or torque axes, allowing anywhere from 0/1 to 6 DOF for a Thruster.

    Currently this ignores the frozen field and provides all possible DOF. In addition, it might be worth adding a different strength field for torque versus force. However, I'm not going crazy in case a preferred approach is an entirely separate class for external torques than forces.

    This builds on #94 and addresses #61

    cla: yes 
    opened by peabody124 9
  • Multi-Agent Environments

    Multi-Agent Environments

    Hello,

    Are you planning to create any multi-agent environment such as crowd simulation?

    Is there also possibility to have a non-uniform terrain, walls etc in each environment?

    so that each agent can be initialized in a random location for varying its experience.

    (without that, I don't see a major advantage of parallel simulation capability of engine)

    Sincerely, Kamer

    question 
    opened by kayuksel 9
  • Support of height maps and collision between box corner and height map

    Support of height maps and collision between box corner and height map

    Hello maintainers of Brax,

    I really like your repo and would like to add support for height maps in order to train locomotion policies in uneven terrain.

    This PR implements both :

    • The visualization of height maps with the THREE interface.
    • The collision handling between height maps and box corners.

    I hope this might be useful to you and wish the best for your project.

    cla: yes 
    opened by o-Oscar 9
  • 'jaxlib.xla_extension' has no attribute 'CpuDevice'

    'jaxlib.xla_extension' has no attribute 'CpuDevice'

    Thanks for your great work. I just finish the installation and the verison of the libs are:

    brax              0.0.12 
    jax                0.3.7
    jaxlib             0.3.7+cuda11.cudnn805
    

    However, when I run the "learn" from the README, the log shows:

    Traceback (most recent call last):
      File "/home/yangwang/brax-0.0.12/env/bin/learn", line 7, in <module>
        exec(compile(f.read(), __file__, 'exec'))
      File "/home/yangwang/brax-0.0.12/bin/learn", line 4, in <module>
        from brax.training import learner
      File "/home/yangwang/brax-0.0.12/brax/training/learner.py", line 26, in <module>
        from brax.training import apg
      File "/home/yangwang/brax-0.0.12/brax/training/apg.py", line 32, in <module>
        import optax
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/optax/__init__.py", line 17, in <module>
        from optax import experimental
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/optax/experimental/__init__.py", line 20, in <module>
        from optax._src.experimental.complex_valued import split_real_and_imaginary
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/optax/_src/experimental/complex_valued.py", line 32, in <module>
        import chex
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/chex/__init__.py", line 17, in <module>
        from chex._src.asserts import assert_axis_dimension
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/chex/_src/asserts.py", line 26, in <module>
        from chex._src import asserts_internal as _ai
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/chex/_src/asserts_internal.py", line 32, in <module>
        from chex._src import pytypes
      File "/home/yangwang/brax-0.0.12/env/lib/python3.9/site-packages/chex/_src/pytypes.py", line 40, in <module>
        CpuDevice = jax.lib.xla_extension.CpuDevice
    AttributeError: module 'jaxlib.xla_extension' has no attribute 'CpuDevice'
    

    I do not have a clue about this problem and I already use the latest version of both brax and jax (with GPU option).

    Hope you can give me some suggestion.

    opened by jzhzhang 8
  • Add Acrobot Environment, Remove Redudant Inverted Double Pendulum Observations

    Add Acrobot Environment, Remove Redudant Inverted Double Pendulum Observations

    Hello,

    I've been experimenting with some swing-up pendulum environments, I thought Brax might find some of them useful / interesting.

    I am proposing adding an Acrobot environment to Brax. The one I am submitting here is a bit different and more difficult than the one in I.E. gym, since the action state in continuous, and to "solve" the environment an agent must both swing up and balance the system. I like this environment because it is deceptively difficult for most model free RL with it (see for example this paper I wrote a couple of years ago).

    I've got my own twist on APG that works well for this acrobot, but haven't yet been able to get good performance on it from any of the brax algorithms (including APG). I would be very interested to hear if anyone gets the brax RL working well with the environment!

    In this PR I also remove some redundant / useless observations from the double inverted pendulum.

    Let me know what you all think!

    Edit: Also, here is a basic smoke test training set up in collab.

    opened by sgillen 8
  • Added loading mass and joint limits in URDF model importer.

    Added loading mass and joint limits in URDF model importer.

    I have added mass property in URDF and upper/lower revolute joint to Brax model importer.

    Test updated accordingly.

    I have not added the properties for inertia since the internal model config differs from the official one, being the official one a 3x3 matrix.

    Inertia property in Body is as a Vector3, I guess changing it to a matrix 3x3 can break other parts of the engine, if this change should be made I would gladly take it.

    https://github.com/google/brax/blob/7eaa16b4bf446b117b538dbe9c9401f97cf4afa2/brax/physics/config.proto#L24-L35


    How would the other limit properties fit in the engine computations? I tried to look for effort and velocity.

    I saw limit_strength but without being sure of the units it used I didn't want to break anything.

    For the case of velocity I did not find any similar parameter in the back end, are joints speed limited?
    Regarding joint types "universal" and "spherical" it was not clear to me how are they written in URDF, they are not official. I saw similar ones in Gazebo, SDF and MuJoCo. Due to this I left them as they were.

    opened by ManuCorrea 0
  • JaxToTorchWrapper error with jax 0.4.1

    JaxToTorchWrapper error with jax 0.4.1

    Hello, I am trying to run some experiments using pytorch with the JaxToTorchWrapper. I'm running the default Training in Brax with PyTorch on GPUs on a local jupyter instance, but there are errors.

    image

    The error occurs when I use jax==0.4.1 and goes away when I use a lower version. It seems like it has to do with the new jax.Array type introduced in 0.4.1.

    Environment:

    • Python 3.10.7
    • Cuda 11.8
    • jax[cuda]
    • brax==0.0.16

    Thanks!

    opened by jypark0 0
  • `mujoco_convert.py` does not use the default values of MJCF

    `mujoco_convert.py` does not use the default values of MJCF

    I tried running mujoco_convert.py on a sample MJCF file provided on the dm_control repository (this one, but others have similar issues). I get errors such as "unsupported geom type : None", because the type attribute of the elements is not always defined in the MJCF, since it relies on the defaults defined by MuJoCo in their XML reference. For instance, the documentation seems to indicate that the default value for the attribute "type" is "sphere".

    I asked over at dm_control to know whether the parse_xml function worked as intended or if they planned on adding the default values to it, and they said it was the expected behaviour. So I think brax should take those into account after the parse_xml function. What do you think ?

    opened by Theo-Cheynel 2
  • TracedConfig does not influence rendering

    TracedConfig does not influence rendering

    I was trying to extend the domain randomization examples to include changing collider shapes using the code below. However, the renderer doesn't pick up the changes. Specifically this occurs because the mesh information comes from json_format.MessageToDict which does not pick up any of the changes in TracedConfig.

    I don't know enough about the calls json_format.MessageToDict is making into the internal structures to know what to override, but if anyone knew and wanted to point me in that direction, I would be happy to make a PR.

    def scale_bodies(config, body_scale_dict: dict):
      """Constructs tree and in_axes objects for a joint socket randomizer.
      Adds an offset to any joints that match a key appearing in joint_key.  If
      no joint_key, then does nothing.
      Args:
        env: Environment to randomize over
        body_scale_dict
      Returns:
        Tuple of a pytree containing the randomized values packed into a tree
        structure parseable by the TracedConfig class
      """
    
      custom_tree = {'bodies': []}
    
      for b in config.bodies:
    
        def scale_body(b, x):
          colliders = []
          for c in b.colliders:
            collider = {
              'position': {
                'x': c.position.x * x,
                'y': c.position.y * x,
                'z': c.position.z * x
              },
              'capsule': {
                'length': c.capsule.length * x,
                'radius': c.capsule.radius * x
              }
            }
    
            colliders.append(collider)
          return {'colliders': colliders}
    
        if any([key in b.name for key in body_scale_dict.keys()]):
          custom_tree['bodies'].append(scale_body(b, body_scale_dict[b.name]))
    
        else:
          custom_tree['bodies'].append(scale_body(b, 1.0))
    
      return custom_tree
    
    opened by peabody124 1
  • Agents: Short-Horizon Actor Critic

    Agents: Short-Horizon Actor Critic

    This is an implementation of https://arxiv.org/pdf/2204.07137.pdf

    Not sure if there is interest merging this into the main branch. This might be an algorithm worth supporting as it leverages the differentiable simulator to outperform PPO according to the paper.

    Note that many of the environments don't actually have rewards that are differentiable w.r.t. the actions, in which case this algorithm performs poorly. For example, the fast environment used for testing APG and SHAC isn't. I added a fast_differentiable env and also made APG use this by default, after which the performance is much better.

    Still could do with tuning for environments and replicating the performance benefits seen in the original manuscript.

    Addressed #247

    opened by peabody124 2
  • feat(composer): agent specific observations

    feat(composer): agent specific observations

    Hey 👋

    I am working in my fork on supporting agent specific observations in the composer sub-package. Additionally I need this feature to support observation masking that is dependent on the current state of the environment.

    Best approach I can see:

    1. Each agent component already accepts observers a) Similar to how reward_fns is done b) This could support dynamic masking
    2. Introduce two methods to flatten and unflatten the observation array so that each agent can be given it's specific observation.
    3. Pass this sort of information inside the edge parameter to Composer: a) Could be part of its responsibility"automatically create necessary edge information among 2+ components" b) But maybe edge information is only meant to care about pairs of components

    Let me know if this sounds cool with you guys, but otherwise I am going to make a start on this feature 😀

    opened by cemlyn007 4
Releases(v0.1.0)
  • v0.1.0(Dec 21, 2022)

    Brax v0.1.0 Release Notes

    This minor release adds a preview of a major overhaul to Brax's API and functionality. This overhaul (found in the v2/ folder) will eventually become Brax's first stable (1.0) release.

    The new features of Brax v2 include:

    • Generalized physics backend.
    • Continued support for the Spring physics backends. PBD will soon follow.
    • Direct support for Mujoco XML format, and URDF by association.
    • Fully traceable System object.
    • Env API that better supports custom physics backends.
    • Open sourced visualizer server.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.16(Dec 15, 2022)

    Brax v0.0.16 Release Notes

    This release adds a new module: brax.experimental.tracing that allows for domain randomization during training. This release also adds support for placing replay buffers on device using pjit which allows for more configurable parallelism across many devices. Finally this release includes a number of small bug fixes.

    This will be the final release before we release a preview of a significant API change, so users may want to pin to this version if API stability is important.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.15(Sep 9, 2022)

    Brax v0.0.14 Release Notes

    This release includes a refactor of the training code to make it more modular and hackable, with each algorithm now as a separate submodule under brax.training.agents.

    This release also updates references to the deprecated jax.tree* functions to their new home in jax.tree_util, fixes a few bugs in physics/collision code, and adds an initial implementation of box-box collisions.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.14(Sep 9, 2022)

    Brax v0.0.14 Release Notes

    This release includes a refactor of the training code to make it more modular and hackable, with each algorithm now as a separate submodule under brax.training.agents.

    This release also updates references to the deprecated jax.tree* functions to their new home in jax.tree_util, fixes a few bugs in physics/collision code, and adds an initial implementation of box-box collisions.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.13(May 4, 2022)

    Brax v0.0.13 Release Notes

    This release fixes a few bugs in the collision handling in PBD, and adds support for specifying collider visibility, color, and contact participation.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.12(Mar 16, 2022)

  • v0.0.11(Mar 16, 2022)

    Brax Version 0.0.11 Release Notes

    This version introduces a significant overhaul to the physics algorithms. We now support position based dynamics for resolving joint and collision constraints. See this paper for details about PBD.

    The most noticeable difference to prior versions of Brax is that joints are now modeled as infinitely stiff, whereas before they were stiff damped spring systems. This new physics is now default, and all environments use PBD-based joints and collisions by default.

    If you would like to preserve the behavior used in previous versions of brax, you can either:

    1. Version pin to 0.0.10 – the version right before this upgrade. While you will not get the latest and greatest improvements to Brax, you will have unambiguously consistent behavior.

    2. Add dynamics_mode: "legacy_spring" to your brax configuration file. This causes brax to navigate the old codepath.

    3. Supply legacy_spring=True, as a kwarg to env creation (without `s). This causes Brax to load the older config for all the environments currently defined in Brax (see the logic in the init functions of each env for details).

    Thank you for using Brax, and feel free to open an Issue if you have any questions!

    Source code(tar.gz)
    Source code(zip)
  • v0.0.10(Dec 13, 2021)

  • v0.0.9(Dec 10, 2021)

  • v0.0.8(Nov 29, 2021)

  • v0.0.7(Nov 8, 2021)

  • v0.0.6(Oct 4, 2021)

  • v0.0.5(Sep 10, 2021)

  • v0.0.4(Aug 17, 2021)

Owner
Google
Google ❤️ Open Source
Google
GAN-based Matrix Factorization for Recommender Systems

GAN-based Matrix Factorization for Recommender Systems This repository contains the datasets' splits, the source code of the experiments and their res

Ervin Dervishaj 9 Nov 06, 2022
Yggdrasil - A simplistic bot designed to streamline your server experience

Ygggdrasil A simplistic bot designed to streamline your server experience. Desig

Sntx_ 1 Dec 14, 2022
Turning pixels into virtual points for multimodal 3D object detection.

Multimodal Virtual Point 3D Detection Turning pixels into virtual points for multimodal 3D object detection. Multimodal Virtual Point 3D Detection, Ti

Tianwei Yin 204 Jan 08, 2023
FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection

FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection This repository contains an implementation of FCAF3D, a 3D object detection method introdu

SamsungLabs 153 Dec 29, 2022
ManipNet: Neural Manipulation Synthesis with a Hand-Object Spatial Representation - SIGGRAPH 2021

ManipNet: Neural Manipulation Synthesis with a Hand-Object Spatial Representation - SIGGRAPH 2021 Dataset Code Demos Authors: He Zhang, Yuting Ye, Tak

HE ZHANG 194 Dec 06, 2022
Python implementation of cover trees, near-drop-in replacement for scipy.spatial.kdtree

This is a Python implementation of cover trees, a data structure for finding nearest neighbors in a general metric space (e.g., a 3D box with periodic

Patrick Varilly 28 Nov 25, 2022
A Python package for generating concise, high-quality summaries of a probability distribution

GoodPoints A Python package for generating concise, high-quality summaries of a probability distribution GoodPoints is a collection of tools for compr

Microsoft 28 Oct 10, 2022
The official implementation of A Unified Game-Theoretic Interpretation of Adversarial Robustness.

This repository is the official implementation of A Unified Game-Theoretic Interpretation of Adversarial Robustness. Requirements pip install -r requi

Jie Ren 17 Dec 12, 2022
学习 python3 以来写的一些垃圾玩具……

和东哥做兄弟 Author: chiupam 版权 未经本人同意,仓库内所有资源文件,禁止任何公众号、自媒体、开发者进行任何形式的转载、发布、搬运。 声明 这不是一个开源项目,只是把 GitHub 当作一个代码的存储空间,本项目不接受任何开源要求。 仅用于学习研究,禁止用于商业用途,不能保证其合法性

Chiupam 67 Mar 26, 2022
TOOD: Task-aligned One-stage Object Detection, ICCV2021 Oral

One-stage object detection is commonly implemented by optimizing two sub-tasks: object classification and localization, using heads with two parallel branches, which might lead to a certain level of

264 Jan 09, 2023
A Comprehensive Empirical Study of Vision-Language Pre-trained Model for Supervised Cross-Modal Retrieval

CLIP4CMR A Comprehensive Empirical Study of Vision-Language Pre-trained Model for Supervised Cross-Modal Retrieval The original data and pre-calculate

24 Dec 26, 2022
An implementation of the Contrast Predictive Coding (CPC) method to train audio features in an unsupervised fashion.

CPC_audio This code implements the Contrast Predictive Coding algorithm on audio data, as described in the paper Unsupervised Pretraining Transfers we

Meta Research 283 Dec 30, 2022
An implementation of an abstract algebra for music tones (pitches).

nbdev template Use this template to more easily create your nbdev project. If you are using an older version of this template, and want to upgrade to

Open Music Kit 0 Oct 10, 2022
Multi-Agent Reinforcement Learning for Active Voltage Control on Power Distribution Networks (MAPDN)

Multi-Agent Reinforcement Learning for Active Voltage Control on Power Distribution Networks (MAPDN) This is the implementation of the paper Multi-Age

Future Power Networks 83 Jan 06, 2023
RNN Predict Street Commercial Vitality

RNN-for-Predicting-Street-Vitality Code and dataset for Predicting the Vitality of Stores along the Street based on Business Type Sequence via Recurre

Zidong LIU 1 Dec 15, 2021
Official PyTorch implementation of "RMGN: A Regional Mask Guided Network for Parser-free Virtual Try-on" (IJCAI-ECAI 2022)

RMGN-VITON RMGN: A Regional Mask Guided Network for Parser-free Virtual Try-on In IJCAI-ECAI 2022(short oral). [Paper] [Supplementary Material] Abstra

27 Dec 01, 2022
Deep Q-Learning Network in pytorch (not actively maintained)

pytoch-dqn This project is pytorch implementation of Human-level control through deep reinforcement learning and I also plan to implement the followin

Hung-Tu Chen 342 Jan 01, 2023
MMGeneration is a powerful toolkit for generative models, based on PyTorch and MMCV.

Documentation: https://mmgeneration.readthedocs.io/ Introduction English | 简体中文 MMGeneration is a powerful toolkit for generative models, especially f

OpenMMLab 1.3k Dec 29, 2022
ShinRL: A Library for Evaluating RL Algorithms from Theoretical and Practical Perspectives

Status: Under development (expect bug fixes and huge updates) ShinRL: A Library for Evaluating RL Algorithms from Theoretical and Practical Perspectiv

37 Dec 28, 2022
Concept drift monitoring for HA model servers.

{Fast, Correct, Simple} - pick three Easily compare training and production ML data & model distributions Goals Boxkite is an instrumentation library

98 Dec 15, 2022