对标Pytorch,清华团队推出自研AI框架“计图”
「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分。通过对AI生态专家、创业者、行业KOL的访谈,反映其对于行业的思考、未来趋势的判断、技术的实践,以及成长的经历。
2020年,CSDN将对1000+人物进行系列访谈,勾勒出AI生态最具影响力人物图谱及AI产业全景图。本文为 「AI技术生态论」系列访谈第3期。
作者 | Just
出品 | AI科技大本营(ID:rgznai100)
在机器学习框架领域,Pytorch、TensorFlow已分别成为目前学界和业界使用最广泛的两大实力玩家,而紧随其后的Keras、Caffe/Caffe2、MXNet等框架也因为自身的独特性受到相应开发者的喜爱。
如今,AI开源框架之争再添新入局者。
如你所知,随着深度学习新技术的出现,任务复杂度不断提高,由于架构设计和不断扩充等原因,导致系统复杂,架构优化和移植变得困难,新模型的实际性能还有待提升。
一支清华大学团队决定研发更加灵活高效的深度学习框架。他们于近日宣布开源Jittor(计图),采用元算子融合和动态编译技术,深度优化内存,有效提升了系统的运行性能和通用性,确保实现和优化分离,大幅提升应用开发的灵活性、可拓展性和可移植性。
Github地址:
https://github.com/Jittor/Jittor
Jittor的研发团队是清华大学计算机系的图形学实验室,负责人现为胡事民教授,长期从事可视媒体智能处理的研究。2006年-2015年间,实验室得到两期国家973计划项目的资助,在可视媒体的认知计算、机器学习、几何计算、智能算法等方面开展研究。
2009年起,实验室开展系统软件研究,逐步布局AI平台的研发。期间,实验室奠定了在图形图像应用、机器学习算法和底层系统软件三大优势,2018年,在胡事民教授带领下,以梁盾、杨国烨、杨国炜和周文洋等一批博士生为主力的团队开始搭建Jittor平台。Jittor团队核心开发成员梁盾告诉AI科技大本营(ID:rgznai100),2019年底他们完成了Jittor的基本功能,随后经过内部测试,于3月20日正式对外发布并开源。
作为一个采用元算子表达神经网络计算单元、完全基于动态编译(Just-in-Time)的深度学习框架,Jittor在三大新的设计理念下进行开发:
1.易用且可定制:用户只需要数行代码,就可定义新的算子和模型,在易用的同时,不丧失任何可定制性。
深度学习采用的卷积神经网络是由算子(Operator)组成的一个计算网络,当前深度学习框架有多达2000种算子。Jittor将算子运算进一步分解,形成了更加底层的三类20余种元算子闭包,目前神经网络常用算子均可以使用元算子的组合进行表达。
什么是元算子?梁盾解释,元算子是Jittor的基本算子,主要包括三类:重索引算子(如填补、切分等),是一种一对多的关系;重索引化简算子(如累乘、累加等),是一种多对一的关系;元素级算子(如常见的元素级加减乘除等),是一种多对多的关系。
常见的神经网络算子,如卷积、池化、批归一化等操作可由元算子组合表达。元算子的提出主要是为了适应神经网络算子增长的需求,使得新算子的优化可以分解为元算子的融合和优化,避免单独对新算子优化,确保实现与优化的分离,提升可扩展性。
Jittor通过元算子融合实现深度神经网络模型
2.实现与优化分离:用户可以通过前端接口专注于实现,而实现自动被后端优化。从而提升前端代码的可读性,以及后端优化的鲁棒性和可重用性。
3.所有都是即时的:Jittor的所有代码都是即时编译并且运行,包括Jittor本身。用户可以随时对Jittor的所有代码进行修改,并且动态运行。
面向未来深度学习框架的发展趋势,Jittor利用元算子组合表达的优势,提出统一计算图进行优化,并从底层开始设计了一个全新的动态编译架构。
Jittor团队称,该架构支持多种编译器,确保实现和优化分离,大幅提升了应用开发灵活性、可拓展性和可移植性,与其他主流框架相比,具有多项先进特性。
这些领先的特性背后具体如何体现?
梁盾介绍,基于元算子组合表达神经网络的优势,Jittor提出统一计算图,融合静态计算图和动态计算图,提供高性能的计算:统一管理前向反向计算图,自动支持任意高阶导数的计算;统一调度CPU和GPU内存,支持超大模型的训练;统一同步异步运行接口,使得数据读取、内存拷贝、模型计算可以同时进行;统一管理多次迭代的计算图,实现跨迭代的融合优化。
基于此,Jittor团队在平台实现了ResNet、VGG、SSD、DeepLab、LSGAN等多个网络模型,根据他们提供的数据,与Pytorch相比,Jittor的推理和训练速度达到10%-50%的性能提升。
梁盾表示,Jittor在性能上的提升,主要得益于Jittor提出的元算子融合和统一计算图,优化计算,节省计算资源,提升访存效率。同时,Jittor设计的全新编译架构将元算子动态编译成高性能的C++/CUDA代码,并进一步通过与LLVM兼容的优化编译遍(complier pass),生成对计算设备友好的可执行代码。
无论是提到先进特性还是性能提升,从Jittor核心开发团队的官方口径,他们无疑要对标的是业内最主流的深度学习框架Pytorch。
Jittor开源消息发布后,开发者们在社交媒体平台上对其满是赞誉,不过要与Pytorch竞争,显然还有很长的路要走。
“中国作为人工智能产业发展和应用的最大市场,我们应该在人工智能生态的全产业链上占有一席之地。”
从国家科技战略层面,梁盾对AI科技大本营称,我国目前深度学习研究和应用主要依赖于国外平台,的确面临着卡脖子的风险,所以一些国内的IT企业也推出了自己的平台,希望Jittor和国内同行一起努力,为中国人工智能产业发展贡献一份力量。
最后,你怎么看Jittor?AI科技大本营将邀请业务专家做进一步解读,也欢迎在留言区发表你的观点。
【end】
CSDN全新人物专栏重磅上线
PS:今日福利
同样作为“百万人学AI”的重要组成部分,2020 AIProCon 开发者万人大会将于6月26日通过线上直播形式,让开发者们一站式学习了解当下 AI 的前沿技术研究、核心技术与应用以及企业案例的实践经验,同时还可以在线参加精彩多样的开发者沙龙与编程项目。参与前瞻系列活动、在线直播互动,不仅可以与上万名开发者们一起交流,还有机会赢取直播专属好礼,与技术大咖连麦。
评论区留言入选,可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。
相关文章:

echo使用说明,参数详解
简介 echo [OPTION]... [STRING]... 描述 -n 末尾不加换行 -e 开启输出字串中对反斜杠的转译 -E 禁用反斜杠转译 只有开启-e参数的时候,下面的命令才能起作用: \0NNN 输出NNN(一个八进制数)在ASCII码表中对应的字符, …
ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020
作者 | VincentLee来源 | 晓飞的算法工程笔记论文地址:https://arxiv.org/abs/1912.02424代码地址:https://github.com/sfzhang15/ATSS在仔细比对了anchor-based和anchor-free目标检测方法后,结合实验结果,论文认为两者的性能差异…

GCC编译选项--创建与使用库
系统函数库使用 linux系统函数库位于/usr/lib和/lib目录下 #include <math.h> #cc test.c -lm -o test 动态库创建 1).编译时指定-fPIC 通知gcc产生可以重定位的与位置无关的目标代码 2).链接时指定-shared 使gcc编译器生成动态链接库 动态库使用 通过设置环境…

不错的×××实验
(virtual private network 虚拟专网),利用公用网络,按照相同的策略和规则,建立内部私有连接。 广泛的讲,***体系结构分为:站点到站点的***和远程访问*** 站点到站点的***:在这种情况下,同一个机…
达观数据于敬:个性化推荐系统实践
达观数据于敬:个性化推荐系统实践 在DT(data technology)时代,网上购物、观看视频、聆听音乐、阅读新闻等各个领域无不充斥着各种推荐,个性化推荐已经完全融入人们的日常生活当中。个性化推荐根据用户的历史行为数据进行深层兴趣点挖掘&#…

C语言Free时报错HEAP CORRUPTION DETECTED
char *k1; k1 (char *) malloc(4*sizeof(char)); v1 (char *) malloc(4*sizeof(char)); strcpy(k1,"abcd"); free(k1); 在linux下不会报错,但是在VC环境会报错:HEAP CORRUPTION DETECTED 出现这个错误的原因一般都是操作new申请的内存溢…

DivCSS网页布局中CSS无效的十个常见原因
在学习DivCSS网页布局的知识,可是W3C validation有时难以操作,但用它你可以查看由版面设计引起的差错。验证程序抛出大量差错和警告,说明你的XHTML尚未完善,可能无法在不同浏览器上保持一致功能。下面十个细微的失效问题难住了大批…
如何创建计算机视觉场景训练数据
作者 | 刘明宽 数据科学部门负责人,澳鹏(Appen)美国 曾任eBay首席研究科学家(数据科学总监)对于一些精度要求不太高,或者不太复杂的计算机视觉应用场景,利用一些现有的开源数据集如ImageNet/Coc…

express中的bin/www文件详解
2019独角兽企业重金招聘Python工程师标准>>> #!/usr/bin/env node 表明是node执行文件,在做repl工具时候的会用的 "#!"是标识符/usr/bin是环境变量的绝对路径/env 如果是直接#!/usr/bin node ,则执行这个文件的时候,会从/usr/bin中找node命令,如果没有,则…
深度分析typedef--定义自己的数据类型
最近在看redis源码的时候看到Ae.h的时候看到如下源码: /* Types and data structures */ typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask); typedef int aeTimeProc(struct aeEventLoop *eventLoop, long long id, void *client…
Go对Python产生的冲击
作者 | yuliao来源 | 懒编程(ID: hackpython)Go 的流行让以 Python 为主流语言的开发者(比如我)产生了一定的危机感。上一次有这种危机感还是做 Android 开发的时候,当时用 Java 做 Android 开发,Google 强…

更新ADT到Android L的方法
android ADT无法更新到20? 哈哈,有办法,windows 进入host 写入例如以下所有,是的所有。然后在到sdk manager中方可更新 #Google Services START #Googleapis↓ 61.19.1.54 mt0.googleapis.com 61.19.1.54 mt1.googleapis.com 61…

php.ini安全配置详细解释
PHP本身再老版本有一些问题,比如在 php4.3.10和php5.0.3以前有一些比较严重的bug,所以推荐使用新版。另外,目前闹的轰轰烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保证 安全,PHP代码编写是一方面&am…
5 亿微博数据疑泄露,Python 爬虫如何避免踩天坑?
作者 | 马超来源 | CSDN(ID:CSDNnews)3月19日,默安科技CTO魏兴国发微博称,微博数据泄露了不少用户的手机号,当中涉及不少微博认证的明星和企业家。亦有网友在他的微博评论区表示:“有超过5.38亿…
GDB使用总结
经典编译参数: # cc -g -o xx xx.c 或者 # cc xx.c -g -o xx 如果调试不是进程总的程序 可以直接 #gdb 程序名即可 # i 打印行号 #break 行号 #r 重新开始调试 利用set args 命令就可以修改发送给程序的参数,而使用show args 命令…

Spring概述
Spring 是什么Spring是一个开源的轻量级Java SE(Java 标准版本号)/Java EE(Java 企业版本号)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中…
Nginx模块开发
最简单的Nginx模块开发,虽然简单,但是是最重要的第一步。 主要是看:http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html 1.准备模块文件 在nginx-1.4.2安装目录新建一个自己的模块的目录 # mkdir myModule 再新…
程序猿惯用口头禅与内心真实 OS,快来看看你中招没?
作者 | 他二哥来源 | 腾讯技术工程滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS滑动查看真实内心 OS【end】◆精彩推荐◆推荐阅读百万人学AI:CSDN…

每日学习笔记(1)
1,python2.4不支持下面这种异常处理语法 try: except: finally: 只有2.5以上才行,为此只能改成下述写法,damn fuck python 2.4... try: try: except: finally: 2,python实现单例模式的一种方法: class MyCl…

linux svn使用方法
1 安装 svn sudo apt-get install subversion 2 查看svn版本号 svn version 3 下载源代码 下面以举例 svn co svn://192.168.5.88/ erppurchase -username hming -password hming /var/www/test 4更新代码 cd /var/www/test/ svn up 当前目录下所有的文件都更新 svn up -r 200…
64% 的企业未实现智能化,5成公司算法工程师团队规模小于 10人,AI 工程师的机遇在哪里?...
整理 | 夕颜责编 | 唐小引出品 | CSDN(ID:CSDNnews)当前,人工智能技术已应用于各行各业,落地成为大家关注的核心问题。在经历了 2019 年的行业低谷期之后,无论是行业巨头还是新兴独角兽,都开始审视 AI 能够…
指针的本质--u_char*指针在Nginx源码中的应用及原因
GNU下的void *p相当于char *p 也就是移动一个字节。 下面的代码是Nginx中内存池的结构体代码,其中last和end是表示内存地址的。 last是u_char*指针类型也就是unsigned char typedef struct {u_char *last;u_char *end;ngx_pool_t …

原来这就是乡下人
来源:http://user.qzone.qq.com/313998514/blog/1215427152#!app2&viaQZ.HashRefresh&poscatalog_private 今天早晨一早就去做家教了, 原因是我的学生要去香港去学习七天, 明天就要走了, 所以为了赶时间, 今天的课就提到早晨来上. 这些都很正常, 早晨6:17我…

如何查看Apache的连接数和当前连接数
查看Apache的连接数和当前的连接数以及IP访问次数,下面有个不错的示例,大家可以参考下,希望对大家解决问题有所帮助查看了连接数和当前的连接数 复制代码 代码如下:netstat -ant | grep $ip:80 | wc -l netstat -ant | grep $ip:80 | grep ES…
linux环境insight安装与使用
去官网下载:ftp://sourceware.org/pub/insight/releases 安装步骤 # wget ftp://sourceware.org/pub/insight/releases/insight-6.8-1a.tar.bz2 # tar xvf insight-6.8-1a.tar.bz2 # cd ./ # ./configure --prefix/usr/local/insight # make 注意第一次make…

磁盘加密软件TrueCrypt知识大全(二)之创建文件型加密卷
磁盘加密软件TrueCrypt知识大全(二)之创建文件型加密卷 1、在“TrueCrypt”窗口中选择“创建加密卷(C)”按钮,在向导中选择“创建文件型加密卷”,然后一直下一步。 2、在TrueCrypt加密卷创建向导中单击“选…
你的企业在什么情况下需要人工智能?快来看看你需要具备哪些条件与能力吧!...
作者 | Anzhela Sychyk译者 | 风车云马 责编 | 徐威龙出品 | AI科技大本营(ID:rgznai100)如今有关人工智能的炒作多得令人眼花缭乱。各个行业都极力采用这种技术,以获得相对于其他企业的竞争优势——降低运营成本,并改善客户体验。…

struts2学习笔记--线程安全问题小结
在说struts2的线程安全之前,先说一下,什么是线程安全?这是一个网友讲的, 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的&#x…
函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connection_handler_pt)(int c); //仿redis风格 typedef void redisCommandProc(int c); typedef struct { int a; //结构内定义函数指针变量pshow voi…
人生苦短,不光要用Python,还要在VSCode里用
作者 | imbennyguo出品 | CSDN博客在程序员圈子里,Visual Studio Code(以下简称VSCode)可以说是目前最火的代码编辑器之一了。它是微软出品的一款可扩展的轻量级开源编辑器,并且支持全平台系统。这些特性使得VSCode颇受欢迎&#…