OpenI 启智社区

启智社区,确实给力

当前位置:首页 > 启智讲堂 > 开发者大会 >

崔宝秋《小米开源战略与实践》

演讲者:崔宝秋,小米集团副总裁、集团技术委员会主席

演讲速记(根据现场演讲整理,未经演讲者确认)

    尊敬的各位嘉宾、各位同学,大家下午好。非常高兴接受这次邀请,也非常荣幸能够跟大家分享一下。我看了一下,这个大会我是第一次参加,也是第一次鹏城实验室组织的大会,里面很多话题都跟开源相关。当刘明老师跟我讲让我来讲小米的开源,我毫不犹豫,再忙也要过来。
    今天分享的题目是“小米的开源战略与实践”。我首先想讲一下,我特别高兴,因为我一方面是小米的技术委员会主席,一方面我也是最早制定小米开源战略、发起小米开源委员会的负责人。我个人从1995年去美国读书就马上变成了自由软件的爱好者,到信仰者,到后面开源软件的推动者、项目制定管理者,到小米的开源战略,关于开源算起来差不多二十四五年时间,特别热爱。今天分享的不仅是小米的开源战略与实践,更多是我认为业界应该怎么优化开源、怎么打开源这一仗。今天由于中美关系和各个企业之间的竞争让开源有了国界,开源有了企业界,公司之间有了界限,我觉得都不应该。
    首先我想讲小米的开源战略,就要讲什么是开源、什么是开源文化、什么开源的理念和精神思想、为什么要拥抱开源。在生活中,无论是个人爱好者还是企业使用者,拥抱开源的过程中会有哪些坑、会犯哪些初级错误,讲一下为什么制定小米的开源战略。
    首先,开源是一个理念、一个运动,“开源”这个词是1998年出现的,最早叫自由软件。我一直说自己是自由软件的爱好者和信仰者,不得不比较什么叫自由软件、什么叫开源软件。
    这是我几年前大概总结的内容(见PPT)。当1998年“开源”这个词出现的时候我不情愿,为什么要出现这个词呢?我对图片中右边的人有不太好的印象,因为他对中国有一些偏见,1998年我对“开源”这个词非常反感,认为自由软件才是未来。不得不讲,开源软件促进了自由软件的发展,让各个企业、工业界更好地深度拥抱开源,从一个侧面推动了自由软件或者开源软件的蓬勃发展。但是,等一下我还会讲到,今天自由软件的精神也是需要我们重新考虑的,因为突然间开源有了国界。我等一下会呼吁在AIoT时代要做更加开放的开源。我想讲,我们要让开源软件更加自由。
    大家可以简单看一下自由软件和开源软件,这个人把自由软件上升到政治、哲学和道德层面,鼓励自由。不管是个人爱好者还是开发者,自由软件精神非常重要。
    今天讲开源软件几个重要的里程碑,这是我自己认为比较重要的几个节点,等一下会讲AI开源的几个节点,很粗的列几个关键事件,用此来证明开源运动、开源软件的发展非常快。
    自由软件,我认为一个标志事件是1983年发起GNU这个项目,是开源版本的Unix,后面Linux1991年才出现,我看到这个代码的时候,90%或者80%几以上都来自GNU。这个人1985年成立了自由软件基金会,这都是早年我特别喜欢的。1998年2月份他创造了一个新词叫Open Source。这是过去几年的里程碑事件。
    Linux操作系统的内核,从计算机操作系统开始,到后面随着谷歌搜索引擎的开始,才出现云计算,用上万台、几十万台服务器做大量信息存储、计算、搜索,到后面的数据科学、数据科学家、数据驱动、数据挖掘、数据智能,这一条线下来,都离不开自由软件和开源软件。几年前在小米就采用了自由软件或者开源软件,现在小米用的软件更多了。
    2016年因为AlphaGo事件,我们进入到新的AI的春天,很多人包括我在内也在想AI时代会不会有更多人来开源他们的软件、开源他们的系统,开源会不会遇到一些挑战?但是很快,我的担心、业界很多人的担心都变得没有意义了,因为AI的巨头都在纷纷地开源,包括谷歌在内。谷歌开源一些AI的算法、框架,背后是那些巨头想通过开源快速占领AI领域的领头羊地位。
    这是一些例子,不管是系统框架还是模型、数据,国外的巨头都在深度拥抱开源。从早期操作系统到后面的云计算、大数据,再到今天的AI,开源软件无处不在。
    这是我两年前画的一个图(见PPT),国外的Torch是2002年开始,2007年到2015年Tensorflow的出现,包括2016年、2017年的开源软件,现在还更多了。AI领域现在再继续深度拥抱开源。
    今年小米进入了手机加上AIoT新的时代,在公司内外,我们也在讲,AIoT也离不开开源软件。小米的AIoT是跨云边端的一体的AI能力系统,从云到边缘计算、到端上的AI推理,我们都需要开源软件。如果说早期在C(Cloud)到B(Bigdata)到AI,在AIoT我们继续要更加深度地拥抱开源。
    我想讲的第一部分,开源力量势不可当。
    1995年我到美国接触到了linux等等,对我个人来讲,读这些开源代码是一种享受,我认为开源代码是人类的财富。今天开源代码应该成为全球人类的财富,而且应该是无国界的。
    从一个企业的角度,我们为什么要拥抱开源?这是过去几年我总结的,今天我觉得还不会过时。第一,站在巨人的肩膀上,已经有很多人写了大量优质的软件,大家没有必要再去重造文字。开源软件不管是在C、B还是A的时代都非常成熟,有很多已经成为事实的标准,比如Hadoop、tensorflow。利用开源软件有助于打造良好的公司文化,真正做技术的公司,大家都喜欢开源,这些代码很漂亮,无数眼光在不断优化和迭代这些开源软件,提升大家互相学习和技术水平的一个文化,好处是大家的代码水平和技术水平会提高。大家使用一些比较有名的、已经成为事实标准的开源软件,会让你的企业一下发现大量人才,比如Hadoop,你用自己的一套东西在市面上找不到人才,拥抱开源软件,让更多喜欢和热爱开源的人才加入你们。
    第二,开源的精神。拥抱开源是小米的工程文化,开放与共享是小米的价值观,这也是两个关键词。今天上午的演讲中,大家可能听过无数遍的开放和共享,这是开源精神的两个非常重要的关键词。
    2000年左右,我看到Linux兴起,到2012年我回到中国跟很多CTO交流,我发现不是很多人对开源真正了解,而且几乎所有公司几乎都在犯一些错误,这是我总结的几个大家常犯的错误,包括一些国外的巨头也在犯,因为巨头中也有人的认识是不一样的,这些错误是每家公司或者很多团队一次一次会重复犯的一些错误。第一个比较常见的是“拿来主义”,很早以前中国采纳Linux的时候,中国有红旗Linux等等,大家都在拿来,没有反馈和回馈社区,那时候大家不真正懂开源,不懂自由软件。
    这些年好了一些,到了云计算和大数据时代,大家开始懂了开源,但是缺乏共享。有一种是大家不知道共享,我为什么要共享呢?不理解。有的人是知道应该共享,有一定的共享精神,但是因为各种原因而不愿意,这是我的宝贝、这是我公司的财富,我不愿意拿出去。有些人懂得共享,也愿意共享,但是懒得共享。我花了一个星期、两个月写了一些软件,我还要再花一些时间再写测试用例、写文档,给别人证明我的代码是好的、是有用和通用的,太麻烦了。
    小米在hbs(音)的贡献是我们两个星期搞定,我们提升了性能的5倍,这个速度很多社区的人不相信,我们花了几个月接近半年时间证明我们社区中的老大讲的提升5倍数据是真实的,这个努力远超过写软件改进的时间,所以很多人懂得共享、愿意共享,但是懒得共享。如果有的企业懂得共享、愿意共享、愿意花时间共享,但是社区有可能不接受他的共享,这认识你呢?你算老几呢?你的代码到底有什么用呢?没有可信度,这就是我们缺乏的一些东西。
    第三,很多企业不够真正开放。有的人为了开源而开源,说我开源了多少个项目数字,开源之后再也没有维护国,没有社区、没有互动、没有迭代,只是开源了一个项目,然后再来一个,开源的东西可能也没有多大价值。有的公司不愿意长期投入,不愿意在开源上花功夫投入人力,不愿意回馈社区。
    还有一些团队不愿意打造社区,不知道怎么打造社区,最后开源效果可能慢慢变成一个无源之水,慢慢干涸了。
    刚才改的问题,总结成一个是缺乏共享、不愿意共享或者共享不被接受,不管什么原因,经常会有这么两个模式的对比。左边的图是和社区主干、社区分支不断融合在一起的健康模式;右边的图中红色的是大家不管愿意共享还是不愿意共享、懒惰共享或者是开源不被社区接受,最终形成一个本地版本,公司的分支和社区分支渐行渐远,被社区无情的抛弃。左边的是健康模式,右边是短见的模式。左边有点像拿来主义,右边是用着一次爽,长期享用,是一个红利模式。
    7年多前我来小米就讲了,我们要站在巨人肩膀上还要为巨人指方向,要赢得话语权,让他知道小米的贡献是好的,小米的贡献应该被接受,小米是无私共享和开源的。让开源的巨人慢慢听从小米的指挥。
    基于这些,我定义了小米开源战略的五大原则,今天看来还没有过时。第一,快。快速选型、快速定位、快速上线、快速推出产品,这跟小米的互联网七字决非常像。第二,绝不重造轮子。很多经验是我个人开发,在以前的学校和公司、与人合作过程中发现的,大家很容易找出现有系统和别人的东西步态好的理由,这个轮子太大了,我需要一个小轮子,这个轮子太小了、我需要一个大轮子,或者这个轮子颜色不好,我要黑色的轮子,有的轮子太圆了,我要椭圆的轮子,由于各种原因要重造轮子,我们要坚决反对重造轮子。第三,不用则已,要用则精。我当时跟王健博士有过一次沟通,王健博士说阿里云要自建,他说用hadoop,一个线上的bug有问题以后,社区有一个pach(音),谁敢担保有决心按下ok把这个部署下去?他讲的有一定的道理,阿里云很多是自己写的代码。他讲这些话反映一个问题,就是他没有真正掌握,如果你用了hadoop,如果有一个pach过来都不敢上去,我觉得这不能掌握开源,不能驾驭开源系统。小米不用则已,要用则精,要真正掌握,不能拿轮子跑起来就行了。第四,坚持开放与共享,这是开源精神。第五,极力推出自己的computen(音),小米这么小的公司,为什么要推出这个?我就是要为巨人指方向,就是想让巨人接受我的共享、我的提交。
    小米从2012年开始做了一些事情,在C、B、A的时代都开源了一些东西,这方面就不讲了。
    下面分享四个简单的案例,讲一下不同侧面、不同维度小米在开源过程中的打法。这里有几个系统的案例,可能覆盖了C、B、A,也覆盖了使用开源的开源资源项目等等案例。
    第一个案例我认为是非常经典的案例,完美地实现了我七年前制定的开源战略的体现,那就是Hbase选型、使用和我们的贡献。当年快速选型,选了几个版本和系统,我力推hbs(音),后来建了团队,到今天推出9个comiter(音),3个MC项目成员。这间接表明了我们赢得了话语权。小米在hbs的贡献去年站了23%,今年前段时间估计站了33%,这个比重在不断增加。
    hbs这个选型站在巨人肩膀上,让我们快速满足了小米各种业务线对存储的需求,同时我讲它的性能不可预测,未来还没有广告系统,未来很多进入广告领域会有问题,我们就立项做小米自己的开源项目,内部自研了两年,最后2017年开源。最近中科院搞了一个大奖,我们也获得大奖,这是C和B时代的开源项目,花了两年多时间,最后无私的分享出去。最近我们又发布了最新的版本。
    第三个案例,刘明老师提到的mix(音),小米贡献的移动端学习框架,小米是一家手机公司,也是一家个人设备公司,我们非常在乎端上的AI推理能力。这个Mix叫米什么,我当时觉得不太好,应该改成mobile,因为开源以后,这个项目未来可能就不仅仅属于小米了,在这里也呼吁华为加入进来。
    小米已经应用到很多场景,视觉、语音、自然语言,每天调用50万次,非常多,也获得了一些奖励和认可。相关的近期规划我就不再讲了。
    第四个案例,KALDI。对语言熟悉的会了解这是国际知名的开源语音识别工具,作业是Daniel Povey,霍普金斯大学的教授,他选择了小米。吸引他的有三个理由,第一个是小米强大的手机+AIoT的生态,第二个是小米对技术人才的重视,第三个理由我认为是非常重要的理由,就是他充分认可小米的开源文化。我给他发了很多PPT,讲小米的开源战略是什么、我们为什么拥抱开源、未来的计划是什么,当时有一条我讲的是我要团结中国所有的互联网公司,要把中国的开源力量推向世界,他说他也想做。所以,小米的开源文化、对开源的拥抱是吸引Daniel加入小米的主要原因。
    刚才讲了几个案例,我们可以通过这些来吸引人才。
    最后,讲一下开源的未来。
    我如何看未来的未来?我讲开源是软件的未来,开源是AI的未来,我觉得开源的未来非常辉煌。在AI时代,我想呼吁广义的开源,除了代码的开源、模型的开源,我们也要注意注重数据的开源、数据的共享。今天的AI还是大数据AI,有多少数据就有多少智能,但是在未来的小数据AI道理之前,我们还需要共享更多的数据,当然,除了隐私数据之外,我们能共享的还是要共享一下,尤其是知识图谱。今天的小爱同学和其他所有的智能助理有多聪明、多么伶俐、知识面多广,就来自于有多少知识,知识图谱是一种比较特殊的运用数据。
    一两年前,我积极推动OpenBase这个项目的产生,小米成为最大的赞助商,我们希望打造最大的中文知识图谱。
    另外,我想讲一个更加开放的开源。今天上午几位演讲嘉宾讲到完全的开源、完全的开放,其实我想表达的是更加开放的开源。今天有一个倾向,就是把开源和开放混为一体,开源叫开放平台就行了,那是弱化了开源,我想讲的是更加开放、更加极致、更加跨企业、跨国界的开源,我们要避免开源领域形成的寡头垄断。有一些公司通过自己强大的生态优势,慢慢控制了一些本来开源的一些项目和生态,慢慢变得不是那么开放的生态、不是那么的开源,我这里呼吁的是开放、共享、平等、全球化。大公司不要欺负小公司,西方不要欺负东方,中国不要欺负其他。要真正做到开源全球化,最终让开源没有国界。
    这是我今天分享的所有内容,谢谢大家!