您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

贾扬清开源 AI 框架 Caffe

时间:2023-04-27 11:20:48  来源:CSDN  作者:

【编者按】在开源与人工智能的灿烂星河里,贾扬清的名字都格外地耀眼。因为导师 Trevor Darrell 教授的一句“你是想多花时间写一篇大家估计不是很在意的毕业论文,还是写一个将来大家都会用的框架?”,学生贾扬清一头扎进了创 Caffe 的世界。Caffe 成了贾扬清的代表作,而贾扬清的开源与 AI 征途还将走得更远。

采访 | 刘韧,云算科技董事长、《知识英雄》作者、DoNews 创始人

作者 | 李欣欣 刘韧 周扬 责编 | 唐小引

出品 | 《 新程序员 》编辑部

2013 年 6 月,伯克利大学。28 岁的贾扬清(见图 1)正在写 Decaf(Caffe 的前身)。3 个月后,贾扬清博士毕业,此刻,他在和伯克利心理学系的 Thomas Griffith 教授合作,研究一个心理学课题──人类在个人成长过程中是如何形成“类别”概念的。研究中,贾扬清用一个概率框架来表达人的行为,但从图像中提取到的人的行为特征较弱,很难推导出完整的结论。

图 1 伯克利时期的贾扬清

一天,贾扬清看到,一篇获得 2012 年 ILSVRC 比赛第一名的论文“ Advances in neural information processing systems”,提到深度学习 Ale.NET 模型,用 Convolutional Neural Network(卷积神经网络,简称 CNN)技术,击败了其它非神经网络的算法,只用两块 GPU 即可替代此前 google 1 万 CPU 方案。一台机器顶一万台机器,且错误率从 25%降到 15%。这篇论文,一石击水,震惊行业。此前,神经网络一直不被业内人看好。

贾扬清受到启发,思考着将论文里的 CNN 提取特征技术,运用到他手头的心理学项目研究上。于是,贾扬清找到 Alex Krizhevsky(AlexNet 模型的作者之一),问他是否可以分享 AlexNet 的源代码?Alex 这样回复:抱歉,我开了公司,正在创业,因知识产权问题,无法直接给代码,但你在研究过程中,遇到问题时,可随时问我。

恰在此时,贾扬清得到 NVIDIA 的学术捐赠计划,收到了一块 K20 的 GPU(见图 2),对学生来说,“GPU 是很贵的!”于是,正在写毕业论文的贾扬清,动手攒了一台机器,利用空闲时间,复现 AlexNet 框架,用以提取图像中的特征。

图 2 最早做框架的 GPU

此时的贾扬清每日搭乘地铁,去 Google 公司实习。坐在地铁座位上,贾扬清打开电脑,摊在双腿上,见缝插针地继续写框架。作为 GPU 的初学者,万事开头难,但贾扬清沉迷其中,“写代码可能和玩游戏上瘾差不多。”“我花在编程上的时间从 20%、40%、80%……逐渐递增。”在 Google,贾扬清每天都要喝数杯咖啡,“这样不好”,贾扬清把正写着的框架命名为 Decaf,是想警醒自己,戒咖啡。

此时,贾扬清的任务清单里有:⒈博士毕业论文;⒉心理学研究课题;⒊找工作;⒋复现 AlexNet 框架。比起前三项任务,贾扬清把更多的时间花在了最后一项,写论文的时间被严重挤压。他找导师 Trevor Darrell(计算机科学家、伯克利教授)寻求建议,导师只问了一个问题:“你是想多花时间写一篇大家估计不是很在意的毕业论文呢?还是多花时间写一个将来大家都会用的框架?”

导师的话鼓舞了贾扬清,他把论文搁在了一边,一头扎进 Decaf。“导师总能教会我,分清主次。”

贾扬清写好了脚手架,小规模“跑起来”后,他把 Decaf 放到了伯克利的小组里,让同学们试用,大家都觉得“还挺好用的” 。Evan Shelhamer、Jonathan Long、Jeff Donahue、Sergio Guadarrama 和贾扬清一拍即合,决定组成一个“核心小团伙”,在日常科研和工程工作以外,一起开发 Decaf。很快,“小团伙”复现出 AlexNet 模型。

Decaf 需要基于 cuda-convnet 来训练,但是通过 Decaf 验证,深度学习特征能够利用学习范例进行深入实验,大家觉得,干脆二次开发,做成一个完整的深度学习框架,让它成为通用又干净的 AI 框架工具。

因为 GPU 飞快的速度,贾扬清忖思着把 Decaf 改为 Caffe,伯克利小组的同学们更喜欢 Caffe 的叫法。于是,Decaf 更名为 Caffe。两个月后,Caffe 写完了。贾扬清特意跟导师申请了一笔费用,买来一台冰滴式咖啡机,放在研究室。此后,Evan Shelhamer 经常给大家做咖啡喝,这导致本想戒掉咖啡的贾扬清“最终也没能戒掉咖啡”,大家索性把对外接洽咨询工作的邮箱也改为了 caffe-coldpress。

图 3 贾扬清最早用来开发 Caffe 的电脑主机

贾扬清面临一个难题:该用哪种方式公布 Caffe?是像 Alex Krizhevsky 一样成立创业公司,商业化运作?还是作为程序库,纯粹支持科研?还是开源?贾扬清举棋不定,而其他 Caffe 开发者的意见也各有倾向,莫衷一是。

贾扬清有心开源 Caffe。他想到过去几个月,若是有一个公开的深度学习框架,能获取代码和算法的细节,自己就不必再浪费精力复现。而且,“当学生时,我内心深处就有‘做出一个东西,放到开源上’的愿望”,“我在伯克利所用到的代码,绝大多数都是开源的”,“只有把市场做大,大家才可能都有蛋糕吃”,“开源,并不会抹灭个人的技术能力”,“反正,买咖啡喝,我还是买得起的!夫复何求呢。”

该如何让大家同意呢?“这可比写 Caffe 难多了”。贾扬清决定,挨个找核心开发的同学们谈。有的同学好谈,有的则难辩,贾扬清急了,脱口说出气话“这是我写的框架,所以我应该有决定权!”的时候也有,前后谈了 7 天,最后,所幸同学们都同意 Caffe 开源。

2013 年 12 月,Caffe 放到 Github 上,正式开源。得知消息的 Alex Krizhevsky 也很开心。贾扬清的导师建议把伯克利大学写在 Caffe 的说明上,贾扬清也很乐意,“Caffe 以伯克利大学的名义开源,大家很骄傲,觉得为母校争光了。”

在 Google 实习时,贾扬清拿到了 Google 的正式 Offer,只等毕业后入职。不再想找工作的贾扬清完全放飞,索性毕业论文也不写了,最初研究的心理学课题,也不了了之。

Caffe 开始吸引用户和开发人员,借由 Caffe 光环,贾扬清结识了许多业内人士。两个月后,贾扬清意外收到英伟达公司的邮件,英伟达提出,将为伯克利研究所提供计算的资源,派工程师和贾扬清他们一起做框架优化,提升 Caffe 的应用稳定性。贾扬清同意合作,他看中英伟达在系统侧的优势。接下来的一年,汲取各方的力量的 Caffe,走在加速发展的路上。

Google 工作之余,贾扬清继续和伯克利的同事们一起维护 Caffe。贾扬清开始重新设计 Caffe 的一些结构,使它更模块化,更能适配各种环境下部署。有开源社区经验的 Evan Shelhamer 主导和各方进行合作;Jeff Donahue 帮助 Pinterest 建立了一个深度学习系统;Jonathan Long 给 Caffe 提供了包括 Python/ target=_blank class=infotextkey>Python 接口在内的诸多新特性……在社区建设上,由 GitHub 和 caffe-users 邮件组一起组成了松散、自由的组织,依靠 Caffe 的使用者们自发管理。

做 Caffe,贾扬清经历了从 0~1 的完整项目经验积累,“Caffe 应该算是我第一个 C++ 的项目。”整体上“对我的锻炼很大,从组团开发、到如何推广、如何获取反馈、如何改进流程,我亲历了每个环节。”离开伯克利的第二年 5 月,贾扬清才终于完成了博士毕业论文。

小镇青年上清华

1984 年,贾扬清生在绍兴上虞县。父母都是中学语文老师。1 岁时,贾扬清最爱听故事,妈妈常拿着图画书给他讲故事。3 岁时,贾扬清已识两三百个字,常常捧着一本书,读得入迷。5 岁,父母带他去新华书店,贾扬清挑了《安徒生童话》,妈妈惊讶地问:书里的字,你能看懂吗?贾扬清点了点头。

贾扬清一家人住在校园,安宁平静,生活规律。6 点,父母起床,去守早自习,贾扬清也跟着起来了。小学六年级,贾扬清从父母所在的学校插班到上虞市中心学校,新环境,贾扬清感到好奇之余也有点自卑感,他更加努力学习,想通过成绩来证明自己。中考,贾扬清以上虞区第三名的成绩考进春晖中学。

初二,流行学计算机,尽管学校有机房,贾扬清父母还是花 7000 多元,给他买了台奔腾Ⅱ。贾扬清凭感觉在机器上捣鼓,试装各种软件、玩扫雷游戏……有一次,贾扬清去同学家玩,看到同学用鼠标在计算机屏幕上的图形界面上点来点去,并向他演示自己在学编程,贾扬清觉得好玩。回家后,他摸索着用 BASIC 写出一个小程序──在方框里输入一个年份数字,屏幕上显示出年份所对应的生肖。

计算机让贾扬清觉得“可以创造出一个新东西。”“很开心。”但贾扬清听父母话,为高考的目标,仍把精力放在学习上。初中,语文老师教同学们写文学评论,贾扬清把《论<西厢记>里诗歌的描写和艺术》当选题,老师很诧异,跟贾扬清的妈妈说:让孩子看《西厢记》是否太早了?妈妈则说“看吧,没关系。”父母教语文,贾扬清家里文学类书多,他常随意从父母的书架上抽出一本书,翻看。拿下一本钱钟书的《谈艺录》,翻了翻,当然“看不懂,又放了回去。”贾扬清看《西方文学史》《荷马史诗》,感觉“外面的世界和我生活的小城是不一样的。”贾扬清看《十四行诗》发现,西方的诗歌讲究韵脚,类似中国古代诗歌平仄。“居然可以相互印证,很有意思……”贾扬清一直对文学感兴趣,但他选了理科。“比起文科,理科可以靠自己的努力,走得更远一点。”又或许,受当时人人都说“学好数理化,走遍天下都不怕”的大环境影响。

高中,贾扬清拿到了全国物理和化学竞赛两个一等奖,英语也获得了综合能力二等奖。数学不突出,父母给他买了“洪恩在线”光盘,大量刷题。“不会做的题,也会买一整本练习题来做,直到熟悉运用为止。”贾扬清数学成绩逐渐好起来,获得了全国数学联赛二等奖。

2002 年,高考,物理试卷的最后一题,贾扬清失误了,痛失 27 分!结果,考了 686 分。贾扬清心之所向是清华计算机系,在跟清华招生办老师讨论后,稳妥起见,第一志愿上,填写了“清华大学自动化系”。当贾扬清打开通知书,看到封面写着“清华是你一生的骄傲”这句话时,很开心。

开启人工智能研究

清华图书馆早上 8 点开门,7 点多,贾扬清已和几位要好的同学站在门前排队等待自习。班里 27 个同学,贾扬清成绩很快又排到了前几名。本科四年,除了学习,贾扬清的生活还是学习。课余,贾扬清把微积分当作研究课题,做《吉米多维奇数学分析习题集》。

清华信息学院由自动化系、计算机系和电子系组成,三个系所学基础科目相同,计算机系偏理论和软件。“自动化系本质上就干两件事——烧锅炉和开电梯。烧锅炉,要让温度迅速升高,到达一定高温后,要让温度维持稳定,这就是控制理论要解决的问题。开电梯也同理。”

一人独讲 5 篇国际论文

2008 年 7 月,芝加哥,计算机国际学术会议。天气炎热,穿短袖的贾扬清,被会议厅巨冷的空调吹得瑟瑟发抖。贾扬清心里也忐忑不安,他要反复上台,用英文讲 5 篇国际论文,其中 4 篇都是他陌生的领域,而台下都是来自世界各地的专业人士。

实验室 5 位同学论文入围,但只有贾扬清拿到了美国签证。无奈之下,贾扬清只好“依葫芦画瓢”代讲。导师鼓励他:“你放心,讲得烂,别人都不会记得,你没那么重要。放心讲就行了。”“搞砸了,人家记不住你;搞好了,人家会说,这个人还不错哦!” 学术会议上,欧美同行乐于主动展示自己的风气,对贾扬清冲击很大。国内实验室,大家普遍闷头做自己的科研,欧美人则非常希望自己的科研让更多人看见,他们主动找人攀谈,在讲台旁边支起易拉宝,努力宣传自己的项目。他们讲起自己正做的事,便眉飞色舞,眼里放光,浑身洋溢着自豪感。贾扬清被深深感染。“我学会了跟别人沟通自己做科研背后的想法。当时,我们普遍欠缺这种能力。”

Google 实习

伯克利研讨会上,一位大厂同行主动找到贾扬清说:“我们很喜欢 Caffe。代码里,居然有单元测试!很多时候,搞科研的人写出来的代码真是没法看啊,但你们写的还不错!”这得益于贾扬清在 Google 实习,学写代码时养成了好习惯。

每年的 5 月下旬到 8 月,伯克利放暑假,学生们为培养工业实践经验,多数都会去大厂实习。2011 年,夏天,贾扬清在 NEC 实验室实习,第⼀次接触到稀疏编码(Sparse Coding),贾扬清做了⼀个⾃动学习每个特征的感知域算法,在 CIFAR 数据集上获得了当时最好的准确率。

置身 Google,贾扬清感受到,几万名工程师分布式协同工作的极致高效。Google 的工程实践流程体系健全,写代码的过程用规范固定下来:要求写程序时,要把单元测试方式写到旁边,方便他人修改后测试;要求用标准的格式写文档。短时间内,贾扬清写代码的能力,被迅速提升。“这一方面,得益于我从众多开源软件中学习;另一方面,我觉得好奇心是衡量学习的普世标准。看到好的代码,自己动手试一试,多写几次,不断改进。”“每个人都有好奇心,就像儿童敢吃任何东西,是因为儿童没有吃的经验,尝试吃新东西的边际收益大,世界真美味的欢乐大于偶尔吃到泥巴的苦。”“上了年纪,可借鉴的经验数据越来越多,就需要用哲学代替经济学,用信仰强行将自己置于探索行动中,而非总是科学理性地在经验中深度学习,选优。”

在 Google 实习,贾扬清“一边学东西,一边改善生活”。Google 食堂饭菜丰盛,有款名为“十磅”的甜点小蛋糕,寓意在 Google 待上一年,体重会涨 10 斤!贾扬清用 Google 的实习工资,换了一辆新车。在 Google 养成的良好工作习惯留痕在 Caffe 的代码里。

2013 年,贾扬清从伯克利毕业,获计算机博士学位。

从 TensorFlow 到 PyTorch

贾扬清到西班牙开会,患重感冒,深夜去药店买药,不懂西班牙语,打开 Google 翻译的照相机翻译,顺着货架一排排扫描过去,居然找到了布洛芬。

2013 年,贾扬清入职 Google Brain(2023 年 4 月,Google Brain 与 DeepMind 合并为 Google DeepMind),两年后,贾扬清成为 TensorFlow 的创始团队一员。“TensorFlow 第⼀代框架的作者大多还在 Google,二代框架做得深入又完备。被 Google 的产品广泛采用。”TensorFlow 被 Google 公司开源,一度成为 GitHub 上 Star 数超高的项目。在 Google,贾扬清找到了个人的”比较“优势。“我先从 AI 的科研开始,和科学家们有共同语言;做工程,工程师们觉得我写代码不错。”“我能够让两边沟通协作。”

图 3 扎克伯格亲自官宣艺术家风格转换的功能

就在贾扬清做 Caffe2 的同时,纽约的 Facebook 人工智能研究院主导的 PyTorch 获得成功。2018 年,在贾扬清的主导下,Caffe2 的后端、PyTorch 的前端、ONNX 的标准合成⼀个完整的框架,命名为 PyTorch1.0。“如果说 TensorFlow 像一个庞大又复杂的联合收割机, PyTorch则更像是一辆灵活又便捷的单车。”

问答实录

刘韧:机器翻译靠什么突破?

贾扬清:以往,机器翻译依赖建立语法规则实现,但两种语言间的句法差异巨大,很难用手写的方式,穷尽定义语法规则。现在,用神经网络,再借助互联网收集数据,训练神经网络,逐步优化、提升其精准度。

刘韧:规则方式和神经网络方式,不同在哪?

贾扬清:程序员写规则,就会陷入到无尽的规则中,进入规则沼泽,例外之外还有例外,是一个无穷尽的问题。用神经网络,用模糊的方式模糊地解决问题,再通过数据训练逐步提高预测准确率。

刘韧:深度学习和强化深度学习有什么不同?

贾扬清:强化深度学习意思是,如何把将来获得的收益或惩罚回归到现在。

刘韧:人工智能会在哪个方向上和人争工作?

贾扬清:简单重复的人类劳动被替换是个好事,人解放出来的时间,可以想更多的可能性。达芬奇有幅非常著名的画叫《岩间圣母》(Virgin of the Rocks),圣母的主体是达芬奇画的,背景的花草石头是达芬奇的助手画的,达芬奇也需要助手。今天很多画家,他画主体,再找助手把背景填上去。他也可以让 AI 来填背景。就像达·芬奇的助手一样,AI 能提升画家的效率。

刘韧:中美的技术差距体现在哪方面?

贾扬清:好奇心。我们最优秀的人才在追求执行力,解决具体问题。欧美人更喜欢搞新东西。不得不承认,美国人已经解决温饱很长时间,因此他们玩得更多,玩得多,总能玩出一些新东西。我们在很多方面要追,这事急不来。

关于《 开源英雄 》

《开源英雄》是由 CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛发起,中国著名 IT 记者、DoNews 创始人刘韧领衔,CSDN、《新程序员》联合出品的专访栏目。通过开源开放的 CSDN 写作班,深入访谈全球顶尖开源人物,为广大开发者传递更多、更高质量的信息,透过他们的人生及成长寻找共鸣、共舞开源世界。

自栏目推出至今,我们专访了 Vue 作者尤雨溪、LVS 创始人章文嵩、linux 内核守护者吴峰光、中国 Linux 第一人宫敏、小米开源奠基者崔宝秋、Caffe 作者贾扬清,如果你有想让我们报道的开源人物,欢迎在 GitCode 上提交 Issues 或 PR。

地址:https://gitcode.net/programmer_editor/Open-Source-Heroes



Tags:AI 框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
贾扬清开源 AI 框架 Caffe
【编者按】在开源与人工智能的灿烂星河里,贾扬清的名字都格外地耀眼。因为导师 Trevor Darrell 教授的一句“你是想多花时间写一篇大家估计不是很在意的毕业论文,还是写一个将...【详细内容】
2023-04-27  Search: AI 框架  点击:(287)  评论:(0)  加入收藏
▌简易百科推荐
Web Components实践:如何搭建一个框架无关的AI组件库
一、让人又爱又恨的Web ComponentsWeb Components是一种用于构建可重用的Web元素的技术。它允许开发者创建自定义的HTML元素,这些元素可以在不同的Web应用程序中重复使用,并且...【详细内容】
2024-04-03  京东云开发者    Tags:Web Components   点击:(8)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  InfoQ    Tags:Kubernetes   点击:(12)  评论:(0)  加入收藏
Spring Security:保障应用安全的利器
SpringSecurity作为一个功能强大的安全框架,为Java应用程序提供了全面的安全保障,包括认证、授权、防护和集成等方面。本文将介绍SpringSecurity在这些方面的特性和优势,以及它...【详细内容】
2024-02-27  风舞凋零叶    Tags:Spring Security   点击:(54)  评论:(0)  加入收藏
五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等
一、什么是跨平台桌面应用开发框架跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的桌面应用程序。传统上...【详细内容】
2024-02-26  贝格前端工场    Tags:框架   点击:(47)  评论:(0)  加入收藏
Spring Security权限控制框架使用指南
在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。本文将用 waynboot-mall 项目举例...【详细内容】
2024-02-19  程序员wayn  微信公众号  Tags:Spring   点击:(39)  评论:(0)  加入收藏
开发者的Kubernetes懒人指南
你可以将本文作为开发者快速了解 Kubernetes 的指南。从基础知识到更高级的主题,如 Helm Chart,以及所有这些如何影响你作为开发者。译自Kubernetes for Lazy Developers。作...【详细内容】
2024-02-01  云云众生s  微信公众号  Tags:Kubernetes   点击:(50)  评论:(0)  加入收藏
链世界:一种简单而有效的人类行为Agent模型强化学习框架
强化学习是一种机器学习的方法,它通过让智能体(Agent)与环境交互,从而学习如何选择最优的行动来最大化累积的奖励。强化学习在许多领域都有广泛的应用,例如游戏、机器人、自动驾...【详细内容】
2024-01-30  大噬元兽  微信公众号  Tags:框架   点击:(68)  评论:(0)  加入收藏
Spring实现Kafka重试Topic,真的太香了
概述Kafka的强大功能之一是每个分区都有一个Consumer的偏移值。该偏移值是消费者将读取的下一条消息的值。可以自动或手动增加该值。如果我们由于错误而无法处理消息并想重...【详细内容】
2024-01-26  HELLO程序员  微信公众号  Tags:Spring   点击:(86)  评论:(0)  加入收藏
SpringBoot如何实现缓存预热?
缓存预热是指在 Spring Boot 项目启动时,预先将数据加载到缓存系统(如 Redis)中的一种机制。那么问题来了,在 Spring Boot 项目启动之后,在什么时候?在哪里可以将数据加载到缓存系...【详细内容】
2024-01-19   Java中文社群  微信公众号  Tags:SpringBoot   点击:(86)  评论:(0)  加入收藏
花 15 分钟把 Express.js 搞明白,全栈没有那么难
Express 是老牌的 Node.js 框架,以简单和轻量著称,几行代码就可以启动一个 HTTP 服务器。市面上主流的 Node.js 框架,如 Egg.js、Nest.js 等都与 Express 息息相关。Express 框...【详细内容】
2024-01-16  程序员成功  微信公众号  Tags:Express.js   点击:(88)  评论:(0)  加入收藏
站内最新
站内热门
站内头条