前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github项目推荐 | Pytorch TVM 扩展

Github项目推荐 | Pytorch TVM 扩展

作者头像
AI研习社
发布2019-05-14 17:39:35
1.5K0
发布2019-05-14 17:39:35
举报
文章被收录于专栏:AI研习社AI研习社
将TVM集成到PyTorch中。

* TVM:深度学习编译器

Github项目链接:

https://github.com/pytorch/tvm

构建

你需要在这个PR的基础上构建PyTorch:https://github.com/pytorch/pytorch/pull/18588

代码语言:javascript
复制

cd pytorch
git fetch origin pull/18588/head:tvm_dev
git checkout tvm_dev
python setup.py install

然后,你需要单独构建本仓库:

代码语言:javascript
复制
# Make sure the right llvm-config is in your PATH
  python setup.py install

测试

代码语言:javascript
复制
python setup.py test

使用

这个包非常显然地挂钩到 PyTorch 的 JIT 中,因此适用相同的工具(可查看 @torch.jit.script,torch.jit.trace 和 graph_for)。以下是使用示例:

代码语言:javascript
复制

from tvm import relay # This imports all the topi operators
import torch_tvm

torch_tvm.enable()

# The following function will be compiled with TVM
@torch.jit.script
def my_func(a, b, c):
    return a * b + c

如果要禁用JIT挂钩,请使用 torch_tvm.disable() 。

代码布局

  • register.cpp:设置pybind绑定并调用TVM后端的注册。
  • compiler.{h,cpp}:用TVM编译PyTorch JIT图的主要逻辑。
  • operators.{h,cpp}:从JIT IR映射到TVM操作符的位置。

TODO

  • 添加从Python中将不透明op名称的翻译注册到TVM中(如在operator.cpp中完成)的功能。
  • 零拷贝 set_input
  • 纾困机制(调用PyTorch JIT后备)
  • Threadpool 集成
  • 分配器集成
  • 操作符翻译

    卷积

    BatchNorm

    RELU

    AveragePool

    MaxPool

    线性

  • 张量操作

    重塑

    查看

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 构建
  • 测试
  • 使用
  • 代码布局
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档