Goto

Collaborating Authors

 Automatic Programming


SymForce: Symbolic Computation and Code Generation for Robotics

arXiv.org Artificial Intelligence

We present SymForce, a library for fast symbolic computation, code generation, and nonlinear optimization for robotics applications like computer vision, motion planning, and controls. SymForce combines the development speed and flexibility of symbolic math with the performance of autogenerated, highly optimized code in C++ or any target runtime language. SymForce provides geometry and camera types, Lie group operations, and branchless singularity handling for creating and analyzing complex symbolic expressions in Python, built on top of SymPy. Generated functions can be integrated as factors into our tangent-space nonlinear optimizer, which is highly optimized for real-time production use. We introduce novel methods to automatically compute tangent-space Jacobians, eliminating the need for bug-prone handwritten derivatives. This workflow enables faster runtime code, faster development time, and fewer lines of handwritten code versus the state-of-the-art. Our experiments demonstrate that our approach can yield order of magnitude speedups on computational tasks core to robotics. Code is available at https://github.com/symforce-org/symforce.


Beyond Codex: A Code Generation Model That You Can Train

#artificialintelligence

With the recent release of the OpenAI Codex model, code generation is becoming a hot topic in the NLP world, and is it not just hype. If you watch one of the Codex demos, you will see how these models will shape the future of software programming. However, from a researcher's perspective, working with a Codex model might be unreachable if the needs go beyond trying it via the API since the pre-trained models are not publicly available. Technically, you can replicate Codex using the published paper, but you will need a large GPU cluster that only a few have access to or can afford. This limitation will, in my opinion, slows down research.


Hasura, GraphQL, and Auto Code Generation With Angular

#artificialintelligence

In my current long-term project, I faced the problem of quickly setting up a GraphQL Gateway to communicate efficiently with databases and the backend. After some research, I came across Hasura, a gateway service, which is capable of automatically generating an all-inclusive GraphQL Schema for your SQL Databases and other supported endpoints. And not only that, but it also features many other convenient additions, like authorization, webhooks, events, and even CI/CD integrations to migrate changes to the database to a production environment. Better see for yourself, as they have an amazing website as well. If you are familiar with setting up a GraphQL Server with Apollo, you may know, that this takes quite a bit of work.


Cogram - AI-powered code generation for data scientists

#artificialintelligence

Create beautiful plots with Cogram and customise them in natural language. You describe the design, Cogram does the implementation.


Lyra: A Benchmark for Turducken-Style Code Generation

arXiv.org Artificial Intelligence

Code generation is crucial to reduce manual software development efforts. Recently, neural techniques have been used to generate source code automatically. While promising, these approaches are evaluated on tasks for generating code in single programming languages. However, in actual development, one programming language is often embedded in another. For example, SQL statements are often embedded as strings in base programming languages such as Python and Java, and JavaScript programs are often embedded in sever-side programming languages, such as PHP, Java, and Python. We call this a turducken-style programming. In this paper, we define a new code generation task: given a natural language comment, this task aims to generate a program in a base language with an embedded language. To our knowledge, this is the first turducken-style code generation task. For this task, we present Lyra: a dataset in Python with embedded SQL. This dataset contains 2,000 carefully annotated database manipulation programs from real usage projects. Each program is paired with both a Chinese comment and an English comment. In our experiment, we adopted Transformer, a state-of-the-art technique, as the baseline. In the best setting, Transformer achieves 0.5% and 1.5% AST exact matching accuracy using Chinese and English comments, respectively. Therefore, we believe that Lyra provides a new challenge for code generation.


Generate a Python notebook for pipeline models using AutoAI

#artificialintelligence

In this code pattern, learn how to use AutoAI to automatically generate a Jupyter Notebook that contains Python code of a machine learning model. Then, explore, modify, and retrain the model pipeline using Python before deploying the model in IBM Watson Machine Learning using Watson Machine Learning APIs. AutoAI is a graphical tool available within IBM Watson Studio that analyzes your data set, generates several model pipelines, and ranks them based on the metric chosen for the problem. This code pattern shows extended features of AutoAI. More basic AutoAI exploration for the same data set is covered in the Generate machine learning model pipelines to choose the best model for your problem tutorial.


Improving Tree-Structured Decoder Training for Code Generation via Mutual Learning

arXiv.org Artificial Intelligence

Code generation aims to automatically generate a piece of code given an input natural language utterance. Currently, among dominant models, it is treated as a sequence-to-tree task, where a decoder outputs a sequence of actions corresponding to the pre-order traversal of an Abstract Syntax Tree. However, such a decoder only exploits the preorder traversal based preceding actions, which are insufficient to ensure correct action predictions. In this paper, we first throughly analyze the context modeling difference between neural code generation models with different traversals based decodings (preorder traversal vs breadth-first traversal), and then propose to introduce a mutual learning framework to jointly train these models. Under this framework, we continuously enhance both two models via mutual distillation, which involves synchronous executions of two one-to-one knowledge transfers at each training step. More specifically, we alternately choose one model as the student and the other as its teacher, and require the student to fit the training data and the action prediction distributions of its teacher. By doing so, both models can fully absorb the knowledge from each other and thus could be improved simultaneously. Experimental results and in-depth analysis on several benchmark datasets demonstrate the effectiveness of our approach. We release our code at https://github.com/DeepLearnXMU/CGML.


Automated Code Generation Tools Can Solve Problems

#artificialintelligence

Over the years I've gotten to work with a lot of different programming languages. I grew up on Basic and 6502 machine code. I learned Pascal in middle school and C in high school. I learned Perl, Scheme, Cobol, and Fortran in college. I've written books on x86 assembly language, JavaScript, and PHP.


Formal Fields: A Framework to Automate Code Generation Across Domains

arXiv.org Artificial Intelligence

Code generation, defined as automatically writing a piece of code to solve a given problem for which an evaluation function exists, is a classic hard AI problem. Its general form, writing code using a general language used by human programmers from scratch is thought to be impractical. Adding constraints to the code grammar, implementing domain specific concepts as primitives and providing examples for the algorithm to learn, makes it practical. Formal fields is a framework to do code generation across domains using the same algorithms and language structure. Its ultimate goal is not just solving different narrow problems, but providing necessary abstractions to integrate many working solutions as a single lifelong reasoning system. It provides a common grammar to define: a domain language, a problem and its evaluation. The framework learns from examples of code snippets about the structure of the domain language and searches completely new code snippets to solve unseen problems in the same field. Formal fields abstract the search algorithm away from the problem. The search algorithm is taken from existing reinforcement learning algorithms. In our implementation it is an apropos Monte-Carlo Tree Search (MCTS). We have implemented formal fields as a fully documented open source project applied to the Abstract Reasoning Challenge (ARC). The implementation found code snippets solving twenty two previously unsolved ARC problems.


The Launch of GitLab 13.1: Automated DevOps Management & QC Filters

#artificialintelligence

The world's most powerful web-based DevOps lifecycle tool GitLab has released GitLab 13.1 to track coding quality and to stay compliant with the dynamic needs of the DevOps world. GitLab 13.1 is now officially available with extended Alert Management and Automated Coding Reporting features. Those who follow GitLab closely would agree that its acquisition of Gemnasium in 2018 has helped further fortify the security and compliance in open source. The smartest enhancement in GitLab 13.1 is Alert Management; to maintain a record of all application maintenance and to address critical issues in real-time. Simplified Alert Management, Alert Assignments and Slack integration enhance DevOps productivity with faster collaboration and just-in-time principles.