As discussed with TVM PMC, we would like to give a summary of the project per month, so people can get a better sense of what is going on in the community.
Feedback and suggestion are welcomed so that we can further improve the report.
Community
In March, TVM joined Apache Software Foundation as an incubating project. (News blog).
We sincerely welcome Apache incubator mentors Markus Weimer (@markusweimer), Sebastian Schelter (@sscdotopen), Byung-Gon Chun (@bgchun), Henry Saputra (@hsaputra), Timothy Chen (@tnachen), Furkan KAMACI (@kamaci). They are members of Apache incubator and will help us go through the incubation process.
The community also welcomes new committers Morita Kazutaka (@kazum) and Yao Wang (@kevinthesun), new reviewers Xingjian Shi (@sxjscience), Wei Chen (@wweic), and Sergei Grechanik (@sgrechanik-h).
This forum grew healthily and got 48k pageviews, 1.7k user visits in the last month.
Features and Improvements
The community made progress on pushing the new differentiable IR Relay by delivering higher order auto-differentiation, pass manager, more language feature, and broader operator/frontend coverage. We also had a hot debate on the virtual machine design (#2810 #2915) and an implementation draft (#2889). Besides, the documentation for frontend users is almost transited from the old IR NNVM to Relay.
The effort on refactoring arithmetic analysis system in TVM compiler (#2588) brings unified and formalized const integer bound analyzer, modular set analyzer and rewrite simplifier.
Other improvements include increasing the robustness of CI/build, better codegen/schedule/NNPACK integration for CPU, more optimization passes, and a bunch bug fixes. Their details are listed below.
Operator Support
- Deformable conv2d (#2908)
- Faster-RCNN Proposal OP (#2725)
- ROI Pool operator (#2811)
- Gluoncv SSD support on CPU (#2353)
- shape, reverse, and sign op (#2749, #2800, #2775)
- tile and repeat op (#2720)
- logical operators (#2743, #2453)
- stack op (#2729)
- NCHWc upsampling (#2806)
- clip and wrap mode support in take (#2858)
- AlterLayout support for intel_graphics conv2d , depthwise conv2d (#2729, #2806)
User Interface and Frontend
- Improvements for tensorflow frontend (#2830, #2757, #2586), includes decompiling tf control flow (#2830)
- Improvements for mxnet frontend (#2844, #2777, #2772, #2706, #2704, #2709, #2739)
- Improvements for keras frontend (#2842, #2854)
- Improvements for DarkNet frontend (#2673)
- Improvements for ONNX frontend (#2843, #2840)
- Better profile result dump in Chrome Tracing format (#2922, #2863)
- Unified error handling in NNVM and Relay frontends (#2828)
- Improve NNVM to Relay conversion (#2734)
Language, Runtime and Hardware Support
- Define more standard global functions in the preclue of relay program, includes foldr1, hd, tl, nth, list update (#2928, #2917, #2771, #2866)
- Refactor text printer to add stream-like API and FunctionType support (#2605, #2882)
- Improvements for NNPACK integratation, includes ci test, winograd (#2846, #2868, #2856, #2721)
- Build a scaffold for structured error handling (#2838). The new mechanism detects and rewrites error messages so that c++ and python stack trace are unified and not redundant. Guideslines and conventions for error handling is also discussed.
- Improvements for OpenCL runtime (#2741, #2737)
Documents, Test, and Build
- Increate the robuteness of CI test (#2841, #2798, #2793, #2788, #2781, #2727, #2710, #2711, #2923)
- Improve conda build (#2742)
- Move NNVM tutorials to Relay (#2783, #2785, #2766, #2693)
- More documentation on operators (#2761)
Perfromance Improvement
- Better intrinsic matching for x86 CPU and ARM CPU, includes variants of vcvtph2ps and vmlal.s16 (#2925, #2748).
- Improve injective schedule for ARM CPU(#2801)
Compiler Improvement
- Higher order reverse mode automatic differentiation that work with control flow (#2496)
- Integer arithmetic analyzers, includes modular set analysis, const integer bound analysis and rewrite simplifier (#2904, #2851, #2768, #2722, #2668, #2860)
- Pass manager for Relay (#2546)
- Improve operator fusion for TupleGetItem in relay (#2914, #2929,
- Compute FLOP of autotvm template for int8 models (#2776)
- Common subexpression elimination pass in Relay (#2639)
- Improve quantization in Relay (#2723)
- Refactor build_func in measure module of autotvm to better support cross compiler (#2927)
People Who Reviewed Pull Requests
Note: The format is name(number of activities) Disclaimer: number of activities do not directly correspond to the community’s view about the significance of contributions
tqchen (153), MarisaKirisame (30), icemelon9 (20), srkreddy1238 (18), jroesch (17), wweic (17), yzhliu (16), Laurawly (16), kazum (12), ajtulloch (12), merrymercy (11), kevinthesun (11), masahi (10), zhiics (9), vinx13 (8), yongwww (8), slyubomirsky (7), hlu1 (7), sgrechanik-h (7), junrushao1994 (7), FrozenGene (7), ZihengJiang (6), nhynes (6), eqy (6), yidawang (6), ashutoshparkhi (6), joshpoll (5), zhreshold (4), lixiaoquan (4), apivovarov (4), abergeron (3), xqdan (3), weberlo (3), Huyuwei (2), ruslo (2), liangfu (2), antinucleon (2), haojin2 (2), KoinFlyp (2), Hzfengsy (2), tmoreau89 (1), were (1), mjs-arm (1), sxjscience (1), grwlf (1), derisavi (1), alexeyr (1), ehsanmok (1), Rasterer (1), reminisce (1), szha (1), gemfield (1), kazimuth (1), jdavies-huawei (1), jhonyguan (1), mnboos (1), zenogantner (1)
People Whose Pull Requests are Updated in the Last Month
Note: The format is name(number of activities, area list)
MarisaKirisame (25, Relay), tqchen (20, Arithmetic Simplification, AutoTVM, CI, Runtime), Laurawly (12, Relay, Metal, TOPI), icemelon9 (10, Relay, TOPI), mjs-arm (10, CI), hlu1 (9, NNPACK, TOPI), apivovarov (9, Docs, TOPI), ajtulloch (8, Codegen, TOPI), vinx13 (7, Relay, TOPI), nhynes (6, Relay, SGX), ruslo (6, iOS), ashutoshparkhi (6, Tensorflow, TOPI), kevinthesun (5, AutoTVM, TOPI), srkreddy1238 (4, Tensorflow, ONNX), kazum (4, OpenCL), eqy (4, AutoTVM), joshpoll (4, Relay), liangfu (4, VTA, Relay), yongwww (4, Tensorflow), masahi (3, Relay), abergeron (3, Relay), lixiaoquan (3, OpenCL), derisavi (3, Arithmetic Simplification), antinucleon (3, AutoTVM, TOPI), haojin2 (3, Relay, Mxnet), ZihengJiang (2, Community), jroesch (2, Relay), slyubomirsky (2, Relay), wweic (2, Relay), zhiics (2, Relay), gemfield (2, ONNX), jhonyguan (2, TOPI), XiaolongMeng (2, TOPI), merrymercy (1, Arithmetic Simplification), yzhliu (1, Java), sgrechanik-h (1, Arithmetic Simplification), imorinaga (1, Docs), FrozenGene (1, TOPI, Relay), makihiro (1, Doc), weberlo (1, Relay), vegaluisjose (1, Docs), szha (1, CI), leeexyz (1, Windows), cbalint13 (1, Tensor Expression), kazimuth (1, Rust), jdavies-huawei (1, Tensor Expression), lhelontra (1, Relay, Keras), KoinFlyp (1, Relay), mnboos (1, Linker), GalAster (1, Relay), Hzfengsy (1, Arithmetic Simplification), yTakatsukasa (1, Tensor Expression), zenogantner (1, Docs), kparzysz (1, Docs)
Bug Fixes
Click me to expand
Fix compute_inline with multiple outputs (#2934)
[TEXPR][PASS] Fix thread all reduce to avoid write after read hazzard (#2937)
[FRONTEND][TENSORFLOW] bug fix for tensorflow official slim models. (#2864)
[FRONTEND][ONNX] Some bug fixes and Shape operator fixed for relay. (#2850)
Turn on USE_SORT by default (#2916)
[DOCKER] Upgrade ci-cpu to latest v0.50 (#2901)
[TESTS] Import script robustness (set -u) (#2896)
[Relay] Fix name of bias in testing.mlp (#2892)
[TESTS] Improve script robustness (#2893)
Add dense schedules to init for cpu (#2855)
[Apps] [howto_deploy] fix cxx-flags order and build directory (#2888)
[Relay] Add TVM_DLL for ANF/GNF conversion #2883
[Relay] Fix Relay ARM CPU depthwise spatial pack schedule alter op layout issue. (#2861)
Fix setting up hints for getaddrinfo (#2872)
Add missing sgx includes (#2878)
Fix error reporting for missing axis (#2835)
Fix an OrderDict initilization bug. (#2862)
Fix Xcode 10 metal compile error (#2836)
tvmrpc: Fix includes (#2825)
Fix init_proj.py: Team ID expected (#2824)
[DOCKER] Fix git clone failure. (#2816)
upgrade java style-check due to CVE-2019-9658 (#2817)
[Relay][Quantization] Fix duplicated simulated quantization (#2803)
[Bugfix] Repeat and tile bug fixed, relay tests added (#2804)
Fix caffe2 relay frontend (#2733)
Fix a bug in nnvm to relay converter. (#2756)
Ensure loop count is a constant before trying to unroll. (#2797)
xcode.py: Decode bytes before output #2833
[WIN] Fix a bug in find_llvm when specify llvm-config (#2758)
[DLPACK] fix flaky ctypes support (#2759)
[Bugfix][Relay][Frontend] Fix bug in mxnet converter for slick_like (#2744)
[DOCS] Fix tutorial (#2724)
[TOPI][Relay] Fix default out_dtype
for conv2d_NCHWc
and Relay (#2702)
[Relay] fix checkwellform (#2705)
fix prelu, now can use on 2d input and add one test (#2875)
[CODEGEN][OPENCL] Fix compile error about ternary expression. (#2821)