Tvm: TVM 0.5 Release Note

Created on 17 Jan 2019  路  18Comments  路  Source: apache/tvm

The release is managed by the TVM PMC, moderators for this release are @ZihengJiang and @yzhliu

The community welcomes new reviewers @nishi-t @were @siju-samuel @jroesch @xqdan @zhiics @grwlf @ajtulloch @vinx13 @junrushao1994 @FrozenGene @liangfu , new committers @srkreddy1238 @eqy @masahi @nhynes @phisiart @merrymercy @Laurawly @adityaatluri @Huyuwei

Change List

New Features

  • Fully featured 8-bit network support

    • 8bit quantizer

    • Arbitrary bits quantization algorithm

    • Intel cpu support

  • NVidia GPU 8-bit kernel

    • int8 gemm recipe

    • int8 conv2d

    • Autotvm integration

  • Automated tuning and scheduling

    • AutoTVM optimizations for mobile GPUs

    • AutoTVM optimizations for CUDA

    • AutoTVM optimizations for x86

  • Initial release of the differentiable programming IR, Relay

    • Generic & informative Relay error reporting #2408

    • Relay IR text format support #1781

    • Support control flows

    • A Normal Form Canonicalization #2251

    • Type system support

    • End to end compilation



      • Frontend support: Caffe2 #2507 , CoreML #2476 , Keras #2376 , MXNet #2163 , ONNX, TFLite #2365


      • Operator coverage #1799 #2051



    • FoldScaleAxis #2020

    • SimplifyInference #2033

    • CombineParallelConv2D #2089

    • InstrumentBoundCheckers pass #2079

    • Bind & FoldConstant #2100

    • Alter Op Layout #2150

    • General OpFusion #2090

  • CodeGen

    • Gcc / g++ compatible C code generator for TVM #2161

    • Device type annotation for heterogeneous compilation #2361

    • Cache packed func ptr, lift alloca #2070

    • Generalize compute to tensor region #1476

  • Runtime

    • Relay interpreter and compiler #1954

    • Heterogeneous runtime #1695

    • Language bindings: Golang runtime #1470 , Rust runtime #1597

    • Add min_repeat_ms to time_evaluator #2200

    • Bundled interpreter demonstration #2297

    • Enable PlanMemory in the graph runtime #2120

  • Language Binding

    • Rust frontend #2292

  • VTA

    • Improved RPC for VTA #2043

  • Hybrid python programming model
  • TOP

    • Initial support for sparse tensor computation

    • Improve ARM CPU depthwise convolution performance #2345

    • Port winograd ops to relay #2356

  • Tutorials and docs

    • Relay language docs #2232

    • Tutorials on how to use SGX backend

    • How to write a pass in python

    • General lowering flow of TVM

    • How to do tensorize

    • TFLite frontend tutorial #2508

    • Keras seq2seq model for translation tutorial #1815

    • Committer guide and tips #2468

    • Code review guideline on API designs #2459

Bug-fixes

  • Fix bug of ignoring user-defined shape in Tensorflow frontend. #2444
  • Prevent generating 0-dim tensors in Tensorflow frontend. #2326
  • Fix the bug of incorrect inferred layout when registered alter_layout function returns None. #2101
  • Fix the return type of read character from a buffer. #2255
  • Fix subgraph loading from JSON. #1980
  • Fix incorrect value index in hybrid script. #2268
  • Fix out-of-bound access when buffer.access_ptr contains non-zero extent. #1939
  • Add checker for vectorizing over reduce-axis. #1795
  • Bug fix for fusing injective operation and conv2d. #1603 #1608 #1760 #1622
  • Fix bilinear mode in topi::nn::upsampling. #1708
  • Fix the bug with which the Else statement disappears after inject virtual thread pass. #2039
  • Preventing negation of an undefined Expr in some cases. #1816
  • Fix CUDA path lookup when multiple CUDA versions are installed. #1788
  • Fix bugs for SSD sorting and multbox detection. #1578
  • Fix incorrect elem_offset calculation in Buffer. #1762
  • Fix rewrite_unsafe_select pass so that LLVM CodeGen generates br instruction only when the type is i1. #2381
  • Fix incorrect intermediate results in debug mode. #2520
  • Fix for SSD full GPU support and SSD tutorial update. #2510
  • Fix LLVM CodeGen br instruction accept not-i1 type issue. #2381
  • Fixed constant folding for mod operation in CanonicalSimplify. #2487
  • Fix missing reduction init predicates. #2249
  • Fix for quantize. #2573
  • fix storage_rewrite bug when input is big. #2580

Contributors

Code reviewers

  • @tqchen
  • @liangfu quantization, relay, topi, frontend
  • @zhiics relay, runtime, frontend
  • @nhynes quantization, rust
  • @Huyuwei frontend
  • @yzhliu relay, frontend, perf
  • @xqdan hybrid script, tvm/lang
  • @ZihengJiang relay
  • @vinx13 relay/pass, topi
  • @masahi relay/pass, frontend, doc, topi
  • @grwlf frontend, topi, relay, quantization
  • @tmoreau89 vta, relay, backend, runtime
  • @kazum frontend
  • @nishi-t frontend, topi
  • @PariksheetPinjari909 frontend
  • @jroesch relay, frontend, doc
  • @srkreddy1238 relay/op, frontend
  • @siju-samuel relay/op, frontend
  • @junrushao1994 relay
  • @icemelon9 relay, perf, tvm/lang, codegen
  • @ajtulloch relay, frontend
  • @alex-weaver relay
  • @kevinthesun hybrid script, topi, relay
  • @Laurawly topi
  • @were hybrid script, topi
  • @FrozenGene frontend, topi, relay/pass
  • @eqy relay, topi, runtime, rust
  • @zhreshold frontend, relay/op
  • @merrymercy relay/op, topi, runtime, frontend
  • @derisavi-huawei symbolic integers

Code contributions

  • @tqchen tvm
  • @vinx13 relay/pass, topi
  • @siju-samuel topi, relay/op
  • @merrymercy autotvm, topi, relay/pass
  • @srkreddy1238 relay/op, frontend/tf
  • @MarisaKirisame relay
  • @slyubomirsky relay, docs
  • @jroesch relay
  • @nhynes rust
  • @wweic docs, relay/pass
  • @yzhliu perf, frontend
  • @zhiics relay/pass, relay/op, runtime
  • @were hybrid script
  • @icemelon9 perf, relay/pass, relay/op
  • @joshpoll relay, docs
  • @sgrechanik-h codegen
  • @kazum frontend/keras, topi
  • @masahi relay/op, docs
  • @FrozenGene perf, frontend/tf
  • @liangdzou docs
  • @junrushao1994 relay/op
  • @eqy autotvm, runtime
  • @apivovarov docs
  • @ajtulloch runtime, nnpack
  • @kevinthesun relay/op, perf
  • @ZihengJiang relay/pass, quantization
  • @hlu1 nnpack, frontend/caffe2
  • @lixiaoquan nnvm
  • @imorinaga frontend/mxnet
  • @liangfu topi, docs
  • @xqdan codegen
  • @PariksheetPinjari909 frontend/darknet
  • @alexeyr frontend/tensorflow
  • @Rasterer topi
  • @yangchen-MS codegen
  • @anijain2305 relay/op
  • @grwlf topi
  • @Huyuwei topi, frontend/keras
  • @denis0x0D runtime/trace, relay/pass
  • @Mutinifni codegen
  • @derisavi relay/pass
  • @tmoreau89 vta
  • @Laurawly topi, perf
  • @zhreshold frontend, topi
  • @kun-zh codegen
  • @reminisce relay/op
  • @ehsanmok rust
  • @cnuernber perf
  • @cowanmeg topi, codegen
  • @yuruofeifei topi
roadmap

Most helpful comment

@yzhliu the rust frontend is _almost_ ready. It'll probably take a few days of concerted effort to get it ready to merge, but I think it'll make it in time.

All 18 comments

Thanks to everyone who have pushed to last release cycle in the past months. We would like to propose the release of v0.5 on Jan 28th.

We encourage everyone in the community to put their weights to review and vote the release. @dmlc/tvm-team

Please reply this thread on

  • Things that we missed in the release note
  • Bugfixes that need to be included in this release

We have brought the initial support for sparse tensor computation in TOPI (see #1289), though it would be migrated to use hybrid script instead of IR builder in the future.

Hoping to make the rust frontend ready for this release.

We have new frontend TFLite support (see #2365 ).

Pending PR for this release:

Required: #2507 #2476
Good to have: #2508 #2493 #2510 #2292

@ehsanmok as we're approaching the due, do we have chance to get the rust frontend in?

BugFix:
[LLVM CodeGen] Solve LLVM CodeGen br instruction accept not-i1 type issue #2381 . It could solve conv2d+ PRelu crash issue on ARM CPU. We have met two threads report this issue on the forum: https://discuss.tvm.ai/t/compile-failure-after-successfull-auto-tune/1561 and https://discuss.tvm.ai/t/debug-failed-to-export-library-with-llvm-on-arm-cpu-when-using-prelu/1006/4

@yzhliu it should be ready if the last issue with CI build resolves quickly and there's no other requested changes which seems there's none.
cc: @nhynes

@yzhliu the rust frontend is _almost_ ready. It'll probably take a few days of concerted effort to get it ready to merge, but I think it'll make it in time.

@ZihengJiang Bug fix for SSD full GPU support and SSD tutorial update #2510 could be added to the list.

Thanks to everyone who have pushed to last release cycle in the past months. We would like to propose the release of v0.5 on Jan 28th.

We encourage everyone in the community to put their weights to review and vote the release. @dmlc/tvm-team

Please reply this thread on

  • Things that we missed in the release note
  • Bugfixes that need to be included in this release

@Laurawly @FrozenGene added. Given the current status of the rust frontend, I will add it to the 0.5 release announcement. @nhynes @ehsanmok

@ZihengJiang The link of TFLite is refered to CoreML, correct link should be #2365

@FrozenGene Thanks, my bad. Fixed.

2477 Can you also add this PR?

@ZihengJiang @yzhliu would you mind keeping us updated about the release? we've long passed the voting deadline but it's still open!

Hey @ehsanmok , sorry about this. We are working on the release https://github.com/dmlc/tvm/pull/2604. One thing is that it would be better to have several bug-fix PRs in the 0.5 release like #2495 #2573 #2580 , which will lead to dismatch with the voted commit number. We are discussing whether we should have another round of vote. @tqchen @yzhliu

I would suggest to start another voting thread and keep that open for two days

0.6 roadmap is available at https://github.com/dmlc/tvm/issues/2623

Was this page helpful?
0 / 5 - 0 ratings