Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

James M. Decker

dblp:198/0881 · DBLP profile ↗
← Back
5ranked-venue papers
0as first author
0since 2021 · last 2019
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3Artificial intelligence and machine learning · 1Databases, data management, data science and information retrieval · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
1 paper
Compilers and program optimization · 70% Programming languages and type systems · 30%
Databases, data mining, and information retrieval
1 paper
Query processing and optimization · 50% Machine learning and data management · 50%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
High-performance computing · 77% Cloud and datacenter computing · 23%
Artificial intelligence
1 paper
Efficient and distributed learning · 100%

Topics — the 7 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Machine learning and data management
data management for machine learning
0.412019
Flare & Lantern: Efficiently Swapping Horses Midstream · Proc. VLDB Endow. 2019
Query processing and optimization
query compilation
0.412019
Flare & Lantern: Efficiently Swapping Horses Midstream · Proc. VLDB Endow. 2019
Compilers and program optimization
automatic differentiation
0.312018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018
Programming languages and type systems › programming paradigms
differentiable programming
0.312018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018
Compilers and program optimization › automatic differentiation
reverse-mode automatic differentiation
0.312018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018
High-performance computing
performance optimization
0.312018
Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data · OSDI 2018
Compilers and program optimization › code generation
native code generation
0.112018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018

Methods — techniques the papers use, named apart from their topics

runtime compilation · 0.8native code generation · 0.8multi-stage programming · 0.3continuation-passing style · 0.3callbacks · 0.3
YearPublicationVenuePosition
2019 Demystifying differentiable programming: shift/reset the penultimate backpropagator
abstract
Deep learning has seen tremendous success over the past decade in computer vision, machine translation, and gameplay. This success rests crucially on gradient-descent optimization and the ability to “learn” parameters of a neural network by backpropagating observed errors. However, neural network architectures are growing increasingly sophisticated and diverse, which motivates an emerging quest for even more general forms of differentiable programming, where arbitrary parameterized computations can be trained by gradient descent. In this paper, we take a fresh look at automatic differentiation (AD) techniques, and especially aim to demystify the reverse-mode form of AD that generalizes backpropagation in neural networks. We uncover a tight connection between reverse-mode AD and delimited continuations, which permits implementing reverse-mode AD purely via operator overloading and without managing any auxiliary data structures. We further show how this formulation of AD can be fruitfully combined with multi-stage programming (staging), leading to an efficient implementation that combines the performance benefits of deep learning frameworks based on explicit reified computation graphs (e.g., TensorFlow) with the expressiveness of pure library approaches (e.g., PyTorch).
Fei Wang 0046, Daniel Zheng, James M. Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf
Proc. ACM Program. Lang.3
2019 Flare & Lantern: Efficiently Swapping Horses Midstream
abstract
Running machine learning (ML) workloads at scale is as much a data management problem as a model engineering problem. Big performance challenges exist when data management systems invoke ML classifiers as user-defined functions (UDFs) or when stand-alone ML frameworks interact with data stores for data loading and pre-processing (ETL). In particular, UDFs can be precompiled or simply a black box for the data management system and the data layout may be completely different from the native layout, thus adding overheads at the boundaries. In this demo, we will show how bottlenecks between existing systems can be eliminated when their engines are designed around runtime compilation and native code generation, which is the case for many state-of-the-art relational engines as well as ML frameworks. We demonstrate an integration of Flare (an accelerator for Spark SQL), and Lantern (an accelerator for TensorFlow and PyTorch) that results in a highly optimized end-to-end compiled data path, switching between SQL and ML processing with negligible overhead.
Grégory M. Essertel, Ruby Y. Tahboub, Fei Wang 0046, James M. Decker, Tiark Rompf
Proc. VLDB Endow.4
2018 Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming
abstract
Training of deep learning models depends on gradient descent and end-to-end differentiation. Under the slogan of differentiable programming, there is an increasing demand for efficient automatic gradient computation for emerging network architectures that incorporate dynamic control flow, especially in NLP. In this paper we propose an implementation of backpropagation using functions with callbacks, where the forward pass is executed as a sequence of function calls, and the backward pass as a corresponding sequence of function returns. A key realization is that this technique of chaining callbacks is well known in the programming languages community as continuation-passing style (CPS). Any program can be converted to this form using standard techniques, and hence, any program can be mechanically converted to compute gradients. Our approach achieves the same flexibility as other reverse-mode automatic differentiation (AD) techniques, but it can be implemented without any auxiliary data structures besides the function call stack, and it can easily be combined with graph construction and native code generation techniques through forms of multi-stage programming, leading to a highly efficient implementation that combines the performance benefits of define-then-run software frameworks such as TensorFlow with the expressiveness of define-by-run frameworks such as PyTorch.
Fei Wang 0046, James M. Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf
NeurIPS2
2018 Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data
Grégory M. Essertel, Ruby Y. Tahboub, James M. Decker, Kevin J. Brown, Kunle Olukotun, Tiark Rompf
OSDI3
2018 Refunctionalization of abstract abstract machines: bridging the gap between abstract abstract machines and abstract definitional interpreters (functional pearl)
abstract
Abstracting abstract machines is a systematic methodology for constructing sound static analyses for higher-order languages, by deriving small-step abstract abstract machines (AAMs) that perform abstract interpretation from abstract machines that perform concrete evaluation. Darais et al. apply the same underlying idea to monadic definitional interpreters, and obtain monadic abstract definitional interpreters (ADIs) that perform abstract interpretation in big-step style using monads. Yet, the relation between small-step abstract abstract machines and big-step abstract definitional interpreters is not well studied. In this paper, we explain their functional correspondence and demonstrate how to systematically transform small-step abstract abstract machines into big-step abstract definitional interpreters. Building on known semantic interderivation techniques from the concrete evaluation setting, the transformations include linearization, lightweight fusion, disentanglement, refunctionalization, and the left inverse of the CPS transform. Linearization expresses nondeterministic choice through first-order data types, after which refunctionalization transforms the first-order data types that represent continuations into higher-order functions. The refunctionalized AAM is an abstract interpreter written in continuation-passing style (CPS) with two layers of continuations, which can be converted back to direct style with delimited control operators. Based on the known correspondence between delimited control and monads, we demonstrate that the explicit use of monads in abstract definitional interpreters is optional. All transformations properly handle the collecting semantics and nondeterminism of abstract interpretation. Remarkably, we reveal how precise call/return matching in control-flow analysis can be obtained by refunctionalizing a small-step abstract abstract machine with proper caching.
Guannan Wei 0001, James M. Decker, Tiark Rompf
Proc. ACM Program. Lang.2