赵海平专访【2015-03-26】

海平赵君,燕赵人也。年未弱冠已好奇巧编程之学。丁卯(1987)以状元入北大习生物,后弃美纽约大学博士,入普林斯顿获计算机科学硕士。曾供职微软年余,丁亥(2007)入脸书,创建HipHop,重写PHP,运速且五六倍于前,节余以数十亿美刀计。脸书且行且繁,赵君倾数年心力,以异步处理优化分布式系统,嵌yield与generator于PHP,以助其删繁就简。
乙未(2015)春,海平赵君远辞硅谷而大隐西溪,入盟阿里。赵君乐牌、好犬、喜掌游、擅乒乓,自得其乐,胜负不萦于怀也。旅美廿载余,赵最以麦迪为素昧知己也,其技至简至极。燕赵多慷慨之士,赵以大匠之志入阿里助其重梳架构,其志不自言也。
这里写图片描述
好了,采访正式开始
你在美国二十多年,作为Facebook前50名软件工程师,是什么让你下定决心加入阿里?
其实对于我来说,这是个非常自然的选择。阿里人自己看阿里可能比较谦虚,实际上阿里的软件系统规模之大在全世界的互联网公司都是遥遥领先的,双11当天的交易量惊人,甚至超过美国感恩节全周的线上交易量。这么大的机器规模,怎么提高性能和稳定性、有效的利用机器,我在Facebook工作多年,做了很多这方面的工作,所以对这个领域非常感兴趣。特别是阿里用Java做了很多东西,对我来说又是一个新的软件环境,就更加吸引我。
我之前还从来没有为中国的公司工作过,从美国回中国,也让我充满了好奇,十分期待能够体验中国的顶尖互联网公司是怎样的,在这里工作是什么感受。
杭州是个很棒的城市,附近的上海、宁波、南京、苏州等好多城市我都很喜欢,趁着在杭州工作的机会,也希望多到周围走走,感受一下江南的文化。

在Facebook的8年,你觉得最大的收获是什么?
2007年我加入Facebook的时候员工刚刚超过100人,只有40几个工程师。那个时候Facebook已经有萌芽状态要突飞猛进,用户开始急速增长,可当时的软件系统还处于很原始的阶段,所有的用户信息都还在一台机器上(阿里的同学有没有一种似曾相识的感觉),我们去了之后Facebook不断扩大,我们也不断地跟着改软件,跟上业务的发展。
这一点Facebook和国内的互联网公司非常象,大家都是边走边摸索,不断调整软件和架构,在业务高速发展的驱动下不断成长。这也可以说是这个时代的特点,在此之前,没有公司有这么大的规模,所以在软件上大家都没有做好准备,所有的公司当它大到一定程度,原有的软件不足以解决它的问题,就必须把软件拿过来,根据自己的规模做架构上的调整。
可能每个公司成长的经历不尽相同,但本质上都是业务带动技术发展。跟着业务一路狂奔到一定的阶段,终于可以喘口气的时候,就要坐下来认真想想,如果一开始我就知道会面对这么大的挑战的时候,怎么才能做得更好,然后再对系统做进一步的优化调整。
从企业文化的角度看,Facebook是一个去中心化的公司,每一个人都可以主动站出来说“我要做这件事情”。我当时恰好发现了webserver性能不够,就主动跳进去做PHP的优化,也恰好很幸运地把这个东西做出来了。因为公司很大,你做的东西自然就很有意义,所以天时、地利、人和,这是我的运气。我肯定不是这个世界上唯一能解决这个问题的人,但我恰好这个时间在这个公司做了这件事,充分发挥了自己的作用。
这就是我在Facebook的最大体会,不论是学习还是找工作,一个人要争取把自己放到一个有可能会发挥巨大作用的地方。象阿里巴巴、Facebook这样的公司就给我们提供了这种机会,因为规模特别大,你做的事情的意义就被自动放大了,比如说你让系统快10%,就可能节省几百万美元、几千万美元。从另一个角度看,当我们的业务量大到一定的程度,你写的软件有任何问题,哪怕是很小的问题,一下子就能暴露出来,你就能马上改好。和科研机构相比,这就是我们得天独厚的优势,有巨大的验证场景,在业务的驱动下把优化做到极致,这是在公司做软件一个宝贵的财富。

那在Facebook有没有遇到过项目几乎推进不下去的困境?
当然会有,即使那个PHP的项目,当时大家的意见也并不是完全一致的,有人提议干脆用Java重写程序。但大家有一个共识,就是用数据说话,究竟哪个路线能带来最大的性能提高,我们就走哪条路。当时的优化测试结果,我们的速度提高了50%,Java提高了25%,最后大家就决定还是走C++的道路。
每个工程师都有自己的技术信念,所以公司里有不同的意见完全可以理解,但重要的是我们基于什么做决定,只要大家都基于数据,就形成了一种默契。大家有不同意见时要抛开具体的事情,先探讨出一个统一的标准作为判断依据,这点达成一致,做决策就容易了,因为大家的本意都是好的,都是为了公司利益。

入职第一天就参加了部门月会,堪称无缝落地,感觉如何?你加入的是技术保障PACE(性能架构容量团队),接下来的工作重点是什么?
其实我提前1周就开始倒时差了(我只想说,学霸真可怕),每天晚睡一点儿让身体适应。这好像是我的性格(笑),我中学的时候计算机刚刚出来,只有午饭时间才能去机房,每天中午都急急忙忙把饭吃完,一路狂奔,先找老师要钥匙,再去机房,就是为了多省几分钟上机。
入职第一天正好赶上月会,听了不少东西。开完会就和毕玄聊了两个小时,他提了几点希望我接下来做的东西,比如性能、稳定性、容量、运维、架构,恰恰和我想做的一模一样,所以那天谈得特别高兴,他一边讲,我一边喜形于色。
接下来第一个阶段,我会先从了解问题着手,目标是建立一套非常强大的Profiling(软件剖析)系统,这样我们就能知道运算的时间花在哪儿了,有多长时间,这个时间是被CPU用掉的,还是被网络用掉的,花的内存有多少、网络有多少、磁盘IO有多少,如果咱们能够特别精细的把所有的系统都无死角的展现到全员面前,而且是实时的,可能我们技术保障部都不需要说哪儿有问题,开发的人员就已经自己看到问题了。我希望能够花很多很多时间把这套系统做的非常好,让阿里所有的软件都能享受到这个待遇。
AliPay做了一套系统叫ZProfiler,比较接近这个理念,他们做的这个工作非常有意义。明天下午我会和AliPay的同学交流,看怎么在他们的基础上,把技术保障部想要的信息加上去,形成一个完整的系统,我们就能对机器性能一览无余。
等积累了第一手材料,我们就可以进入第二个阶段,比如我们能看到CPU效率不高是因为哪几点原因,JVM的问题有哪些,这个时候我们就能够对症下药。如果是小症状,就做局部优化,如果症状很大,就需要做一个新的架构。我特别希望今后的每一步优化都是有的放矢、有据可查、根据Profiling的剖析结果来做决策,避免主观猜测引发的不同意见。技术人都很尊重数据、尊重事实,所以有了剖析结果,对第二步的工作非常有帮助。
(Facebook在这方面的情况是怎样的)Facebook的剖析系统正好是我开创的,我进了Facebook之后就开始诊断网站上的问题,并且不断地把这种诊断自动化,后来系统被一个Oracle来的同事接手,继续完善,做的非常好。这套剖析系统能够看到PHP每一个函数的调用花了多少Wall Clock钟表时间(钟表时间和CPU的时间不一定一样,比如在网络等待是不占用CPU时间的,但的确消耗了时间,我们看性能时要充分考虑这些因素),所有的PHP开发者,都能在一个非常详细的网页上看自己程序的表现,每个人都可以自我验证、找到性能弱点,再不断优化。
Facebook没有专门的程序员帮别人优化,每个程序员最了解自己的程序,大家都是自己优化自己的程序,前提就是基于这套自我诊断工具。象阿里这种有上万名工程师的公司,没有一个部门有能力帮助所有人优化,而对开发者来说,这种诊断优化的过程就是最宝贵的学习,能够帮助你成为最好的程序员。任何地方写的不好,下次就会做得更好,看到自己的程序不断优化,开发者也会深受鼓舞。

在网上看到你对各个阶段工程师的建议,特别提到资深人士的一个重要任务就是帮助年轻工程师成长,你加入阿里后在这方面有什么想法吗?
其实我在面试时就说过,我来阿里有几个任务:第一个当然是积极参与技术上的活儿;第二点也很重要,我希望在做第一件事时,可以带动一批人,让大家共同成长为技术很强的专家,因为任何项目都需要有一个或几个强大的团队。我肯定会和大家无私分享,帮助整体业务水平提高,如果大家需要C++或debug方面的知识,欢迎随时来找我。
(看到这里,大家应该都懂了吧,技术保障PACE团队急需人才,有机会跟着赵海平、毕玄这样的大牛成长,还不动心吗。有想法的同学,欢迎随时找我们的HR妹妹倩男)

刚刚看到你给自己起好了花名,“福贝”有什么美好的寓意吗?
天哪,花名真是太难起了,昨天下午我一直在选花名,赵云、伯昌(周文王,西伯姬昌)、邵雍(北宋易学家)都不能用了。来之前Facebook的同学知道我来阿里要起花名,就说你选个FB打头的名字,我先想到福宝,也被人用了,干脆就福贝吧,给阿里带来福气和钱财。而且我是满族人,如果能起三个字,我就用“福贝勒”了(笑)

从美国不远万里来杭州,这可不是个容易的决定,怎么获得家人的支持的?
等我安顿好,我太太也会一起来。其实我刚刚说服我爸妈去美国,我自己就回来了,挺说不过去的,不过我爸妈都特别惯着我,愿意纵容我(笑)。家人都很支持我,这一点我特别感激。现在是杭州最好的季节,我争取先接爸妈来杭州周边玩一玩。今天的互联网这么发达,我和爸妈、爱人视频聊天特别方便,也拉近了距离。

业余时间喜欢做什么?定居杭州后,准备培养些什么新爱好吗?
我业余爱好还挺多的,养狗、打了很多年兵乓球、还有电子游戏,其实我计算机都是因为打游戏学习的。当时特别痴迷,觉得游戏一定要打通关,问一个口令不知道,我就找工具破解,这样学会了机器语言,最早的程序都是这么玩出来的。
另外现在定居杭州,打算多去周围走走,体会一下江南的人文风情,看看文化古迹,思考一下皇帝为什么总喜欢下江南(笑)。说实话国内的环境比我20年前走的时候好太多了,前两天去了印象城,觉得这个购物中心太漂亮了,每个店都想进,每个餐厅都想吃(大家赶紧排队约大牛吃饭吧)。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值