GithubHelp home page GithubHelp logo

zhziszz / intent Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 2.0 31.23 MB

[UIST'2022] Source code for INTENT, an interactive program synthesizer for TensorFlow.

License: MIT License

HTML 0.21% CSS 0.35% JavaScript 10.72% Python 83.88% Shell 0.11% Jupyter Notebook 4.73%

intent's Introduction

INTENT: INteractive TENsor Transformation Synthesis

INTENT is a novel interactive program synthesizer for TensorFlow. It enables end users to interactively decompose a complex tensor transformation task to simpler ones to be solved by a synthesizer. This codebase contains the official implementation of the tool from our paper:

INTENT: Interactive Tensor Transformation Synthesis
Zhanhui Zhou*, Man To Tang*, Qiping Pan*, Shangyin Tan, Xinyu Wang, Tianyi Zhang
Symposium on User Interface Software and Technology (UIST) 2022

This implementation is based on TF-Coder, which is a program synthesis tool that runs a combinatorial search to find TensorFlow expressions. The tensorflow-coder package is modified to support extra features for decomposition and visualization.

Interface

image info

Abstract

There is a growing interest in adopting Deep Learning (DL) given its superior performance in many domains. However, modern DL frameworks such as TensorFlow often come with a steep learning curve. In this work, we propose INTENT, an interactive system that infers user intent and generates corresponding TensorFlow code on behalf of users. INTENT helps users understand and validate the semantics of generated code by rendering individual tensor transformation steps with intermediate results and element-wise data provenance. Users can further guide INTENT by marking certain TensorFlow operators as desired or undesired, or directly manipulating the generated code. A within-subjects user study with 18 participants shows that users can finish programming tasks in TensorFlow more successfully with only half the time, compared with a variant of INTENT that has no interaction or visualization support.

Installation

Package manager

Miniconda (optional) Miniconda is a light-weight open source package management system for python.

Checkout https://docs.conda.io/en/latest/miniconda.html for installation instructions.

# create an env for int and keep it activated during development
$ conda create --name intent python=3.9
$ conda activate intent

Yarn (required) Yarn is a package management system for js.

Checkout https://classic.yarnpkg.com/lang/en/docs/install/#debian-stable for installation instructions.

Project dependency

tensorflow-coder

$ pip install -e ./tensorflow-coder

server

$ pip install -e ./server

client

$ cd client
$ yarn

Launch INTENT

$ cd client
$ yarn build
$ cd ..
$ cd server
$ sh bin/INTENT_run.sh

Then go to http://localhost:8000 in your browser (chrome recommended).

Credits

The project was developed under the supervision of Prof. Tianyi Zhang at Purdue and Prof. Xinyu Wang at UMich. Special thanks to Yitao Huang and Lyubing Qiang for their contributions to the first version of INTENT.

Citation

If you found our paper/code useful in your research, please consider citing:

@inproceedings{zhou2022intent,
 author = {Zhou, Zhanhui and Tang, Man To and Pan, Qiping and Tan, Shangyin and Wang, Xinyu and Zhang, Tianyi},
 title = {INTENT: Interactive Tensor Transformation Synthesis},
 booktitle = {Proceedings of the 35nd Annual ACM Symposium on User Interface Software and Technology},
 year = {2022},
} 

intent's People

Contributors

zhziszz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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.