In November 2019 researchers from MIT’s Computer Science and Artificial Intelligence Laboratory and the UC Berkeley introduced Taichi, a new data-oriented programming language embedded in C++14 and designed for efficiently authoring, accessing, and maintenance of high-performance sparse data structures. In December the same researchers teamed up with Adobe Research to propose DiffTaichi, a new differentiable programming language based on Taichi and specially tailored for building high-performance differentiable physical simulators.
The DiffTaichi automatic differentiation system is designed to accommodate key language features required in physical simulation but often missing in existing differentiable programming tools — such as megakernels, imperative parallel programming and flexible indexing. The researchers say a differentiable elastic object simulator written in DiffTaichi is 4.2× shorter than a hand-engineered CUDA version, yet runs just as fast; and is a whopping 188× faster than a TensorFlow implementation.
DiffTaichi enables researchers to quickly implement and automatically differentiate on 10 open-sourced physical simulators, applying various effects on either simple or complex scenes, including those containing multiple objects.
The differentiable water renderer for example comprises a differentiable water simulation, differentiable water rendering and a (differentiable) convolutional neural network. Researchers illustrated their system’s effectiveness through adversarial optimization: the water renderer fooled the VGG-16 network into misidentifying photos of squirrels as goldfish.
The researchers hope DiffTaichi’s impressive performance will encourage machine learning and robotics researchers to apply the new programming language in future studies on differentiable physical simulation.
The paper DiffTaichi: Differentiable Programming for Physical Simulation is on arXiv. The project code is available on GitHub.
Author: Yuqing Li | Editor: Michael Sarazen
0 comments on “Introducing ‘DiffTaichi’ – A Differentiable Programming Language Tailored for Physical Simulation”