- ?
清华魏少军:AI芯片2.0,终极智慧芯片 | GTIC2019
Nystad
展开
3月15日,由智东西主办,AWE和极果联合主办的AI芯片创新峰会,在上海成功举办!本次峰会报名参会的观众覆盖了近4500家企业,到会观众极为专业,其中总监以上级别占比超过62%,现场实际到会人数超过1800位。
大会现场,20位人工智能及AI芯片业界翘楚共聚一堂,系统的探讨了AI芯片在架构创新、生态构建、场景落地等方面的技术前景和产业趋势。
▲中国半导体行业协会IC设计分会理事长、清华大学微电子所所长 魏少军
魏少军教授是国内集成电路产业的领军人物,是清华大学微电子所所长、中国半导体行业协会IC设计分会理事长,并曾主导编写了《人工智能芯片技术白皮书(2018)》,从定义、脉络、标准以及发展趋势等方面对AI芯片进行了深入而专业的研究,填补了国内空白。
现场,魏少军教授带来了主题为《AI Chip 2.0 的愿景和实现路径》的开场演讲。
一、终端AI成未来市场主导
魏少军教授认为,目前大部分AI服务都在云端,原因是云端已经存在大量AI应用,比如智慧家庭、图像认知、智慧医疗、AI翻译等。
但是,终端侧的应用是更大的潜在市场,AI从“云”走向“端”是必然。展望未来几年的发展,终端应用将会占据AI市场的主导地位。
而对于终端应用来说,功耗限制将会是AI芯片所面临的一个大挑战。
比如,可穿戴设备功耗需要限制在mW级别;视频监控、工农业应用需要限制在W级别;而自动驾驶、数据中心等AI芯片的功耗则可以到百W级。计算需求对应功耗的限制一直是非常难以解决的问题。
与此同时,正如魏少军教授在2018年GTICAI芯片峰会上提出的,另一个挑战则是目前AI芯片所面临的两个问题:
1、算法仍在不断演进,新算法层出不穷。而做芯片的人最怕算法变,变了就要重新开始。
2、一种算法对应一种应用,没有统一的AI算法。多个AI功能需要多颗AI芯片放在一起。
因此,高效能通用深度学习引擎是AI芯片的必备特性。对于终端AI芯片来说,这个引擎最重要的特点就是高能效,必须同时具备高计算力与低功耗两个优势。
二、AI芯片需要1000倍以上的能量效益
下图是是Kunle Olukotun在去年的ISCA演讲中的PPT,他将芯片分成三部分,第一部分是可以更多编程的如CPU,第二部分是少量编程的如GPU,第三部分是不能编程的如专用芯片。
它们间的重要差别除了可编程性外就是能效的不同。从专用芯片到GPU之间有1000倍的能效差距。而1000倍是一个很重要的分界线,如果我们的AI芯片做不到比GPU高1000倍的能效,就不能满足人们在终端侧的需求。
对于终极AI芯片来说,人们希望它既具备高能量效率、同时也具备很好的可编程性,比如图中红色圈的位置。那这样的东西是什么呢?
去年魏少军教授团队提出了“软件定义芯片”,而无独有偶,上图的作者提出了“粗颗粒度可重构阵列(CGRA)”的思路,与“软件定义芯片”不谋而合。这样的发展方向告诉我们,如果要解决能量效率的问题,软件定义芯片可能是最适合的一种架构。
对于这种AI芯片来说,不仅仅要注意软件的可编程性,更重要的是硬件的可编程性。
三、AI芯片2.0:终极智慧芯片
最后,魏少军教授还给出了他对AI芯片发展的四个阶段的看法:
1、AI Chip 0.5阶段。这是非常早期的阶段,人们利用CPU、GPU等已经存在的芯片尝试实现AI的功能。
2、AI Chip 1.0阶段。这一阶段不论是Google的TPU、MIT的Eyeriss、NVIDIA的SCNN等都是专门为AI设计的,其主要是用来做AI训练、我们有了为AI专门设计的芯片。
3、AI Chip 1.5阶段。AI Chip1.5阶段已经开始探索所谓的通用性,所以像Tsing Micro的Thinker、Wave Computing的DPU都属于1.5阶段,它们是半通用的,是可重构、可配置的。
4、AI Chip 2.0阶段。2.0是什么?我们到今天为止还没有答案。但我们可以畅想一下,2.0应该是通用的、自适应的、具备智慧化的架构和芯片。我们正在向着一颗通用的AI处理器方向努力,但这将非常艰难。
AI 0.5和1.0主要还是围绕着云端的AI,以训练作为主题,因为主要玩家是大的互联网公司,所以他们很自然地聚焦到训练层面。从AI1.0到1.5的时候开始出现变化,更多在聚焦边缘、终端,在1.5到2.0的时候云与端可能会结合在一起。
同时,0.5和1.0阶段我们关注算力和功耗,1.5阶段我们关注性能、能效的同时还关注灵活性,而到了2.0,智慧化将会是主流。
对于芯片设计者来说,如何让芯片智能化是一个重要心结。
现在芯片要想在竞争中胜出最重要的是差异化,但差异化太难了。通常芯片设计者会花六个月时间定义一颗芯片,花六个月的时间制造一颗芯片,又卖了六个月,好不容易卖出去后,发现市场上有和你差不多的东西,所以不得不推倒重来。
芯片制造者在定义—设计—销售—再定义—再设计—再销售的迭代中循环往复,差异化随着时间的推进在逐渐缩小。
因此,我们能不能让芯片通过教育、学习的方式使得自己变得差异化——正如我们每个人从婴儿逐渐长大成人的过程?能不能让芯片越用就越有价值?在市场上越用越好?这个问题正是我们一直追求的目标。
附魏少军教授演讲实录
魏少军:大家上午好!感谢主办方再次邀请我来做开场报告,在开始前我有一个小小的请求。这个请求就是:请在座的自媒体朋友们不要照一张相下面加一句话就把我的讲演放到了网上,这让我有一种被“阉割”的感觉。大家要写的话一定要反映我想说的精髓。我知道大家抢新闻有点着急,但还是希望能报道的比较完整,不要出现断章取义的现象,引起误解,特别是不要让听众误解。
今天我只有14张PPT,其中还有3张是去年讲过的。过去一年中我思考了很多,但真正浓缩起来用两张就可以讲完,所以我想今天会很快讲完,不会占用很多时间。
这是我去年最后一张PPT给出的题目:我们是否会出现像CPU那样通用的AI处理器?如果真是这样的话那今天的AI芯片将会怎么走?当然我也提了一个问题,未来的AI芯片很可能会遭遇一些挫折。事实情况是有的说中了,有的我不希望说中的也说中了,所以很遗憾。
不管怎么样,我们可以看到今天的AI服务基本都在云上,很少出现在其他地方。原因是什么呢?原因还是先驱者们在云上做了大量工作,包括智慧家庭、图像认知、智慧医疗、AI翻译等。但是我们说从“云”走向“边”,从Cloud到Edge是大趋势。其实,不同区域的用户数量差异很大,有100量级的差异。如果我们在Cloud有10的8次方,到了IoT就有10的12次方。
Google在2018年峰会上也提出了很有意思的系统框架。不管是什么样的AI,都要从现实社会中获取数据,把原始数据转化成语义化的数据,最后让Cloud来处理,这是一种必然。
在AI走向边缘的过程中,现在看起来还是主要以“通用”作为主要驱动力,但是看未来几年的发展,恐怕终端应用将会占有主导地位,特别是到2025年,以家电为主要应用场景的专用集成电路、专用AI芯片会起重要的引领作用,这也是我们看中的未来发展的重要方向。
当然,我们谈到芯片的时候一定会遇到我去年讲过的PPT内提到的两个问题:一是算法仍然不断地演进不断在变化。我们做芯片的人最怕算法在变,变了就跟不上了;二是我们依然缺少放之四海而皆准的算法。把多个AI功能集合到一起的时候一定会出现要使用多颗AI芯片,还做不到一颗全解决。当然我们希望能够出现对各种算法都有效的芯片,能够找到全新的统一的解决方案,但是非常难。
既然如此,我们就在考虑需要有一个所谓通用的深度学习引擎,如果把它往边缘上推的话就会发现这个引擎最重要的特点就必须是高能效。在高的计算能力和低的功耗两者驱动下,要获得好的芯片显然需要认真地思考用什么样的方式才能做。
分析一下具体的引用场景,可以发现像:可穿戴设备、智能传感器等功耗限制为1mW;家电的等将近100mW;视频监控、工业和农业应用大概是W,但要2T的运算能力;而Automobile、DataCenter可以100W,但至少20T的运算能力。计算需求对应功耗的限制是我们一直面临的、非常难以解决的问题。
我们希望了解什么样的架构才能满足不同的需求呢?如图是Kunle Olukotun在去年的ISCA演讲中讲的。横轴用了1、2、3、4一直到16,我一直看不懂他为什么要用这个,后来我问了一下,据说是芯片的编号而非代表用了多少芯片。这个地方容易产生误解。但是它很清楚地告诉我们可以把芯片分成三部分,第一部分是可以有比较多编程的,第二部分是少量编程的,第三部分是不需编程的。
显然,可以有比较多编程的像CPU,有一定编程能力的是GPU,不需编程的就是专用芯片。可以看到这几者间有重要的差距就是能量效率的差距,如果我们仔细看一看的话可以看到从Dedicated到GPU蓝线之间有1000倍的差距,而1000倍是一个很重要的分界线,如果芯片做不到这一点,显然就达不到目的。
那我们希望最后做的芯片到底出在哪个区域呢?显然希望在红色区域,这个区域具有很高的能量效率以及很好的可编程性。但处于这部分的东西是什么?
去年我们提出“可重构芯片”,或叫“软件定义芯片”可能是一个比较好的架构,很巧的是这位作者提出了“粗颗粒度可重构阵列(CGRA)”的思路,与我们不谋而合。如果能解决能量效率的问题,“软件定义芯片”可能是目前最好的一种架构。
我们要去找的这个“软件定义芯片”架构具备是什么样的呢?我们把软件和硬件的可编程性作为两个轴,构成了四个象限。可以看出传统的CPU、DSP一定处在第二象限;而我们所知的专用集成电路处在第三象限,它具有比较差的软件和硬件可编程性,好处是具有很高的能量效率;我们所知的FPGA和EPLD一定处在第四象限。
如果把已知的芯片都放到了二、三、四这三个象限后,一定很奇怪第一个象限中的是什么?第一个象限对应的芯片应该有很好的软件可编程性,同时有很好的硬件可编程性。如果这两者都成立的话,恰恰就是刚才所讲的“软件定义芯片”,不仅软件可编程,更重要的是硬件也可编程。
有了“软件定义芯片”的志向,我们现在可以讲一下AI Chip 2.0的愿景和实现路径,什么是AI Chip 2.0?我们拉一个横轴,从AI Chip 0.5、1.0、1.5到2.0进行相应的展开。
1、AI Chip 0.5阶段。可以看到AI Chip 0.5是非常早期的阶段,主要是像Intl的CPU、Nvidia的GPU、AD的DSP等。这些芯片都不是为AI而出现的,而是早就存在了。我们只是利用已经存在的芯片尝试实现AI的功能,这个时候我们成为AI Chip 0.5。
2、AI Chip 1.0阶段。在这一阶段,不论是Google的TPU、MIT的Eyeriss、nVidia的SCNN还是KAIST的UNPU,已经是专门为AI设计的了。我称它们为AI Chip 1.0。它们的主要工作是用来做Training,我们可以认为它们是一种领域专用的东西,也可以认为是某种拓展。AI Chip 1.0是真正为AI专门设计的芯片。
3、AI Chip 1.5阶段。AI Chip 1.5就发展很有意思。我认为AI Chip 1.5已经开始探索所谓的通用性,所以像Tsing Micro的Thinker、Wave Computing的DPU都属于AI Chip 1.5。它们是半通用的,是可重构、可配置的,兼顾了两个训练和推理两个方面的内容。
4、当然,我们希望最终能够走到AI Chip 2.0。什么是AI Chip 2.0?今天还没有答案。不过,我们可以畅想一下。首先它应该是通用的,然后它应该是自适应的,最重要的它应该是智慧化的。如果我们真的找到这样的一个芯片架构,这就回答了我去年的问题:到底存不存在一颗通用的AI处理器?我们正在向这个方向努力。显然它非常难。
如果说我们在AI Chip 0.5的时候采用的是一些传统器件,到了AI Chip 1.0已经做到了领域专用,而AI Chip 1.5做到可重构、可配置,AI Chip 2.0就应该是智慧化。
AI Chip 0.5和1.0主要还是围绕着云端应用,以训练为主。由于主要是大的互联网公司在主导,所以他们很自然地聚焦到训练层面。从AI Chip 1.0到1.5,情况开始出现变化,更多聚焦到边缘、即EDGE。可以设想,AI Chip 1.5到2.0的时候训练和推理需要结合在一起。
AI Chip 0.5的时候我们关注的是Performance,希望它的计算能力足够强;AI Chip 1.0的时候不仅要关注算力,也要关注功耗;AI Chip 1.5的时候,在关注性能、能效的同时还要关注灵活性;而到了AI Chip 2.0,我相信智慧化会是主旋律。
可以看出,上面每个阶段所关注的重点是不太一样的。早期更多是实现,只要做出来就好;而到了AI Chip 1.0,应用成为关键;AI Chip 1.5的时候关注的是系统;而AI Chip 2.0的时候关注的是智慧化。
尽管现在我们提出这样的AI芯片发展阶段大家也许不同意,但是我们觉得这是一种不错的方式来总结或者归纳现有AI芯片的整体发展方向。
另外,我的同事做了一张高能效神经网络发展方向的图,纵轴是架构在不断创新往下走,而横轴所表现的是不同神经网络模型,中间是通过算法设计和硬件设计的结合去产生更小延迟、更高能效和更通用的产品。
当然,右上角展示的是希望让硬件更“忙碌”以向终端应用提供紧凑型的并行计算;而左下则更多是面向云端的发展,通过让算法(架构)更灵活以提供大规模的并行计算。几种不同的æ–...
- ?
历经五年,网络大电影的冰与火之歌
指环王
展开
大潮退去,才知道谁在裸泳,这句话用在曾经的网络大电影(以下简称网大)上,再恰当不过了。
经历三年洗牌
“老板,想拍网大吗?我这里就有一部现成的!”穿着西服系着有些褶皱的领带,“用心”打扮的李浩在百子湾一间咖啡厅见到自己约的投资人,立马就上前去推销。
对,是推销,在见了五十多位有意向网大的投资人后,李浩已经不再像以前那般,上去就先给人普及网大的前景,然后再说手上的项目有多么多么的好。用他的话说:“最快速度的单刀直入,投资人可能会觉得我更靠谱、信任,而我的网大或许就能有一线生机。”
在2017年6月之前,32岁的李浩还是一家传统影视公司中的一名网剧制片主任。在看了2017年《斗战胜佛》和《降龙大师》两部网大相继成功之后,他感觉自己的机会来了。
“当时我并不是一拍脑门头脑发热,我是觉得在影视圈积累的五年经验已经足够了。而且,网大在经历三年洗牌之后,2017年是最好的时机。”李浩对读娱君说起当时的动因。
网大从2014年到2017年6月,历经了发展、泡沫、死亡和监管,那些抱着玩的心态者煤老板、房地产商等都渐渐被淘汰了出去。市场上的内容也逐渐从蹭IP、软色情、低俗暴力……逐渐变少了。而能看到这些,也说明李浩对这一行是有准备的。
在这样的环境下,李浩拿出了自己积攒的35万,然后开始串项目。因为在过去工作的原因,他认识了一些编剧,最后与一名叫小溪的编剧达成了合作,准备开发一个西游类的玄幻网大。
对于选择西游,李浩有自己的考虑:“西游IP热、容易火,你看春节档的贺岁片西游系列都大赚特赚,同样,网大市场的西游题材也都是赚钱多亏损少。最主要的是版权还免费,观众都容易接受一些。”
而且,他心目中已经有了所属的演员人选:“由陈浩民来演孙悟空,收益绝对有保证。但有个前提,是要能拉到投资人,拉到钱。”
然而,拿着一份很好看的项目PPT和剧本却没能如愿拉到自己理想中的600万,最终靠着以前的关系,通过上家公司的老板介绍,找到了一个大老板,拉到235万的资金,这其中还包括他的35万。不过,这老板也是个人精,人家有个前提,钱要分三笔打,前期40%,中期30%,制作的时候再付30%。
“当时我也没细想太多,看着这个老板好爽,当天就转了先期款,索性我就立马找人组局了。”从前期剧本修改,分镜、看景,包括找演员、导演等等,李浩前期就花了一个多月。
加上找资金和前期时间,这部网大终于于10月份在横店开机了。对于这速度,李浩是不满意的,原计划他是想8月初开拍,用15天拍完,然后一个半月剪辑制作,10月上线。
没赶上曾经的拍摄计划,同时,李浩还遭遇到了新的意外。
“拍到中期,眼看要没钱的时候,我给老板打电话,他竟然TM的消失了。然后我去他公司找他,也找不到人。”那时候的李浩觉得天都要塌了,但横店还有个剧组都等着他带钱回去,所以他自己给自己打气,不能就这么输了。
在北京苦等三天无果,李浩最后只有向父母亲戚朋友借了三十万,带回了横店。之后,他开始了漫长的等待和节衣缩食。
这期间,他用尽各种办法、各种拖,也给一些主创谈了话,“我没钱了,我只能做承诺,用后期片子的收益来给他们做结算。”还好,李浩说通了这些人,也拖着把片子拍完了。
不过,片子是拍完了,他却没有了后期制作、宣发的钱,又开始回到最初的状态,从新拉投资人,期望拉一笔钱能把后期和宣发的钱找到——只不过,即使李浩承诺30%的版权收益,都没人接盘。而且运气实在太霉,碰到年底,也遇到了开年后的经济不景气,一直都没找到有意愿的投资人。
期间,他找过视频平台,因为片子连初剪都没有,所以无法被爱奇艺、优酷所接受。“腾讯视频我也找过,但他们需要前期立项就介入,一旦谈好,就要投资80%。我这个网大都拍完了,他们就拒绝了这样的方式合作。”李浩无奈说道。
而后,他开始忙碌着各种找投资人,也就出现了前文所言的推销。
大潮退去
比起李浩的坎坷之路,程序员出身的阿华则要比他有优势多了。
阿华因为技术出身所以早年赚了一些钱,后来投资了一个影视公司,专门给爱奇艺等视频平台拍剧及其做一些项目。而在网大兴起的时候,他也抓住了机会,在2014年底进军了网大。
阿华的公司第一部网大拍的是悬疑片,投资成本大概在60万左右,最终受益约160万。尝到甜头后,他和合伙人开始发力,并邀请了张勇一起成立了新的影视公司,专注于网大的开发。
“找张勇一起合作,是因为他在这个圈子里面混的比较熟,宣发也在行。”阿华说道。
的确,自从张勇加入了新公司后,阿华的公司正式起航且加速运转。在2015年、2016年网大最热闹也是最浮躁的时期,公司开发出7部网大、两部超级网剧,其中除了一部亏损,两部持平意外,四部网大都是赚钱的,网剧也因为有平台购买版权也小有营收。
在当时,阿华、张勇等人,以及公司都快速的成为了行业中的新贵,且很多人开始称呼阿华为华爷。
“看着一大笔的收益,我和合伙人以及张勇三人都胆子大了起来。还找到了此前的老领导合作,以及找到了个投资公司做靠山。”阿华说道。
在2017年年初,阿华三人的公司与中国最大的一家传媒公司进行了战略合作,还召开了发布会。之后,更是与一家基金公司,合资成立了新的影视公司。
有基金公司的资金作保障,阿华三人甩开膀子就开干,立马就立项了一部此前写好的剧本,准备拍一部魔幻+动作古装题材的精品影片。
“选魔幻动作类型,是基于我们对市场和用户的判断。”阿华说道此处时,张勇也做了补充:“2015年、2016年的时候,网大大多都是悬疑为主。而经过市场淘汰后,2017年网大市场的类型已经开始多元化了。而且,网大的主要受众是小镇青年,他们喜欢网大的原因有两方面,一是打发时间,二是猎奇。故此,题材相当重要。这也是我们选择魔幻+动作古装题材的原因。”
根据数据显示,2018年上半年网大共上线651部网大,不再是过往的悬疑题材为主,其中动作片160部,占比最大,为24.5%。其中除了腾讯视频以悬疑为主之外,爱奇艺与优酷均以动作作为头部类型片,分别上线了105、41部。按数据来看,阿华和张勇的策略是遵循了市场的发展轨迹的。
对此,优酷内容开放平台总经理梁洁(天戈)也告诉读娱君:“网大的主要用户群还是小镇青年和农民工群体,起初这类人群的刚需是悬疑类型片。但因为市场内容过多、泛滥,导致用户审美疲劳。而如今的拐点则是新类型的突破和成功。明年,网大主题将是类型化和精品化。”
阿华、张勇二人的布局是符合网大行业走势的,一是类型化,二是精品化。只不过,这次投资比以往200万、400万的投资都要大,而且还一次性连续拍两部,投资成本在2000万左右,也就是说单部片子在1000万左右。
要知道,2014年《道士出山》才28万,即使2016年上线的2461部,2017年的1892部作品,甚至2018年,也少有投资成本会出现单部千万的。
“按2018年的标准,350万成本是小体量,500万是中体量,而1000万已经算是大体量的投资了。不过那时,我们想的是品质和钱是成正比的。而且我们的目标就是做大做典型者,做两部系列网大,然后在爱奇艺或者优酷的电影频道连续两月霸屏。”
这是典型的想上位的心理,每个行业都会有如此之人,读娱君也非常理解。
只是,这两千万投资进去之后,前期票房走势是惨淡的。今年三、四月,两部影片分别在爱奇艺、优酷先后上线,最终,投资与收益未达预期。
“还是步子迈得太大。”在2018年11月21日晚上,阿华回想起2017年的扩张,如此给我说道。
“其实后期这两部的票房也涨起来了,目前来看也没有亏,只不过是分账的回款周期变长了。以前三个月,现在都六月了。而且,原本承诺基金公司的预期,也未达到,哎……”阿华一阵唏嘘。
确实,如阿华所言,2018年网大分账有了一些调整和新的变化。
1、优酷网络院线采取会员有效观看时长分账模式,由会员观看有效时长、有效播放量(VV)对应单价决定。同时,优酷对前5名有会员拉新奖励,分别为100万、50万、30万、20万、10万。
2、爱奇艺网络大电影合作分成模式分为:内容分成、营销分成、广告分成三大类。
3、腾讯则是采取了标准付费播放总收益及会员拉新激励收益。(以前是观看“六分钟以上”才算一次点击,而今只要是付费用户的点击,都记为一次“标准的付费播放”。)
4、10月10日,芒果TV也高调宣布进军网大市场,成为又一个进军网大的巨头平台——芒果TV的网络大电影分账收益,其由保底+分成两部分构成,即成本保底加有效付费点播分成收益。合作方分账收入等于保底+有效付费点播量*分成单价,芒果TV也基于网络电影评级标准的不同,不同级别影片的合作方式和保底比例也不同:B级以上影片均有保底,最高保底比例100%;超S级项目买断合作。
加上芒果TV,四家平台分别针对性的做了服务升级、分账升级、营销升级。
暂不说分账内容的好坏,以前阿华是自己的公司,如今新公司是由基金公司投资,合资企业,虽说有资金保障,但也有一定的掣肘,什么样的资金投入就要有匹配的收益体现——自这两部失利之后,再加上影视行业税改,行业的整体下行,投资公司觉得风险太大,开始撤退。
公司逐渐清退了员工,阿华及张勇三人在那时也有些心灰意冷。“想不到,一炮就把我们打趴下了。”
其实,与阿华相似,甚至比他更惨的人、公司还有很多,用阿华的话说,这个行业还是2、8定律,2中的10%赚钱,10%持平,剩下的80%都在裸泳,而这80%中的人大多是抱着投机、试一试的心态入水,最终惨不忍睹。
其实,推销员李浩又何尝不是试水心态呢!
不过,对于网大的发展,在经历过半年旁人视角观望之后,阿华三人还是比较看好的:“平台规则越来标准,内容质量越来越高,很多没有实力的公司都被淘汰了,网大的未来也会发展的越来越好,越来越规范化。所以,今年我们就先稳一下。2019年再战江湖吧!”阿华信誓旦旦道。
网大回归理性
不管是李浩的磨难,还是阿华的不如意,网大确实经过前四年的泡沫、沉淀之后,正在回归理性。
这里先看四组数据:
1、网大数量正逐年缩减,从2014年的450部暴增至2016年的2461部,2017下降为1892部;2018年上半年全网共上线网大更是刷新了最低记录,651部,这主要取决于政策驱动和平台的有效控制;
2、截止10月31日,优酷爱奇艺已公布的网大票房数据来看,已有25部超过千万,这在2015年全年才仅1部,2016年全年为11部,2017年全年为18部。同时,更有五部网大票房超过了去年的冠军《斗战胜佛》的26554311元票房;
3、前文所言的,动作等类型化题材正在加大,这将丰富用户和网大的内容库。
4、前文所言的分账模式、数据,虽然除了优酷,其他平台的周期都变成了六个月,间接拉高了行业的门槛,但更多的还是平台的扶持政策加大了,对网大公司是利大于弊的。
而综合来看,这些都表明,网大行业正逆风翻盘、向阳而生。尤其优爱腾芒果TV等平台的竞争刺激,未来将是一片崭新。
李果就是网大新发展下成长起来的一名编剧、导演——她原来是阿华公司中的一名在职编剧、导演,在阿华公司撤退时,她就第一个跳了出来。
出来后与自己的老公成立了一个编剧小工作室,她的老公应聘了一家传统影视公司上班,所以这个工作室还是以她为主,外加两名编剧小助理。
因为此前在阿华公司有过网大的案例,也结交了一些行业朋友,所以李果创办工作室后,立马就有一个朋友下...
- ?
中美大学课堂教学和课后实践的比较及启示
郑谷兰
展开
0 引 言
2017年9月,备受关注的“双一流”实施方案及建设高校终于尘埃落定,引发了社会各界的极大反响。如何在未来的竞争中培养和造就一批高素质且有竞争力的一流人才,成为我国高等教育改革与发展的战略选择,而创造型及应用型人才的培养与教育培养模式有着密不可分的关系,欧美等西方发达国家的高等教育改革自20世纪80年代以来取得了显著成效,诺贝尔奖获得者、全球重大的科技发现、ESI高被引用论文等大部分来自于以美国为代表的西方发达国家,这与它们的本科教育及人才培养模式密不可分。目前我国正处于本科教育改革的关键时期,传统的以教师讲授为主的教学方式、人才培养模式、课程设置以及考试形式已经制约着创新思维和能力的培养,这些都是“双一流”建设以及应用型大学转型必须要面对的亟待解决的问题,因此借鉴和学习美国本科教育改革的成功经验,尤其是它的课堂教学和课后实践的优秀做法[1-4],对促进我国高等教育改革、科研、“双一流”学科等发展均有着非常重要的意义。
1 课堂教学的不同
1.1 教学材料
美国大学的大部分课程一般不指定固定教材,教学内容灵活,授课教师学期初都会推荐若干参考书,下发阅读材料和课堂材料,基本上就是主讲教师自己组织的知识点案例、自编讲义或在相关领域的研究文献或科研成果,学生所学内容相对比较新颖和前沿,课程设置更贴近社会实际[1,5]。相对地,中国的课程一般采用固定的教材,教材内容更新不及时,很多时候与现实需求衔接得不是很好,从而导致学的知识用不上,本科毕业生不如技校生,大学教育定位、毕业生技能与社会需求不能很好地匹配,毕业生就业难。
1.2 课堂容量
相比较而言,美国大学每节课的课堂内容量比较少,大约是中国目前比较普及的PPT授课方式容量的一半,但美国教育更注重于学生对知识点的发散、实践以及其在现实生活中的应用。中国课堂偏重讲解理论,实行填鸭式教育,对于知识点强压注入。美国高校工科专业实验性课程比重和内容知识量比较大,着重考查学生的综合应用能力,与国内的实验性课程差别较大,学生必须在掌握课堂内容的基础上用心思考才能做好每个实验[6]。国内的课程实验中,学生大多照着实验书上的内容,依葫芦画瓢即可做出,没有真正起到培养学生解决问题能力的作用。
1.3 辅助教学系统
美国高校基本都有专门的综合辅助教学系统,每个教师和学生都有自己的一个专有账号(ID),用于登录学校的各个系统。教师可以在系统上发布相关课程信息、讲义、作业、相关课外读物等,学生可以在线查看、下载相关读物及提交作业。学生一般要在课前阅读大量的课外资料,课业的时效性很强,超过截止日期将无法提交作业,因此全部课程拿A并非易事[7-8]。国内大部分高校很少有这样专门的教学辅助系统,从而不利于课堂教学的开展以及探究性活动的实践。
1.4 师生互动
美国教育更多的是注重培养学生发现问题以及动手解决问题的能力,课堂比较活跃,提倡在实践中不断提高学生的认知、推理及动手能力。这与教师身兼“导演”和“演员”双重身份,学生却是“观众”的中国课堂有所不同,美国教师更像是“导演”和“评论员”,学生才是“演员”。经过课堂问答、分组讨论、案例分析、角色扮演等一系列活动,提高学生的表达能力、推理能力及综合素质,将学生个性与当前社会现实紧相连,进而提高其社会适应能力和实践能力。
1.5 做笔记
美国课堂上,学生有做笔记的良好习惯,对于课堂上的案例、衍生知识、待验证理论等都进行详细的分类记录,并在课后予以解决。中国学生记笔记的不是很多,更多的是停留在教材上画画重点,很少对重点问题进行思维发散分析以及实践论证,导致对理论背后的真实原理一知半解,更谈不上创新。
1.6 互动主体
课堂气氛活跃、形式多样是美国课堂的特色,其中互动是整个课堂教学的灵魂。美国学生敢于表达,对于不懂的知识点及时向教师发问,教师现场解惑,课堂气氛宽松活跃[9]。在中国,大部分学生性格比较腼腆,机械式地接受填充,“不懂、不会、不问”是我国大学生的普遍现象。
1.7 考核方式
美国课程的考核方式大多是由平时出勤、当堂quiz测试、课堂讨论、课堂游戏、案例分析、平时作业、结课汇报、期末考试等构成。学生可以根据自己的成绩情况及时作出相应的调整。期末考试多半采用半开卷形式,教师会允许学生带一张有该门课程相关知识点内容的草纸,因此它侧重于边学习、边检验,从而保障学习效果进入一个良性循环[10]。我国现有的教育体制一般是把期末考试作为评判该门课程学习效果的主要标准,学生在考前一周采用填鸭式的方式进行备考,从而导致总体学习效果不理想。
1.8 注意力
在美国,大多数课堂秩序比较好,学生自律意识强,基本上没有玩手机的,而中国课堂“低头一族”很多,上课过程中学生大多只是被动接受。在美国,学生都是课堂的主人,为课堂继续下去充当着相应的角色,注意力全都集中在整个教学活动中[9-10]。
1.9 诚 信
美国学生考试基本上不抄袭,因为比较重视诚信教育,考试抄袭的代价也比较高,而且美国一般是半开卷考试,同时平时作业和表现占了很大比重,所以基本上他们知道通过努力自己能拿到多少分。相比之下,我们在这方面需要反思,无论是考试制度,还是考试形式方面,都值得向美国借鉴。
2 课后实践的不同
2.1 办公时间
美国教师的办公地点相对固定,每个教师都有一个自己独立的办公室,每周的办公时间都张贴在办公室门口,方便学生提前预约。中国高校在硬件条件方面相对不能保障,课下很难找到教师辅导。如何配套这方面的资源并建立坐班制度,以便学生课后预约,同时促进学术研究和交流,是一个亟待解决的问题。
2.2 助 教
针对大部分比较薄弱的数学课程,美国高校一般聘请高年级的学生或者研究生当助教,除了免除他们的学费外还额外发放一部分津贴,他们只需没课时在实验室为其他同学提供辅导,这样既巩固了助教的原有知识,又丰富了自身阅历[2,11];既节约了教师时间,使得其有更多的时间进行科学研究,进一步提高工作效率,又发挥了助教在师生间的良好纽带作用。在中国,助教存在和发挥实质性作用的高校相对不多。
2.3 调 研
大部门美国教师的课业经常涉及调研实践,通常情况下3~5个学生组合为一个team,每个队针对一个具体的问题,对理论知识进行加工与梳理,然后搜索资料,深入一线了解具体情况,建立对应的模型,找出解决问题的最佳方案,从而真正提高学生的团队意识、动手实践能力和分析综合能力[2]。相比之下,中国的高等教育中社会调研环节却较少,有时候出于安全角度怕承担责任,从而省略掉相应的调研环节,即使有也是流于形式,从而影响学生科研素质和综合能力的提高。
2.4 参与国际会议
美国高校从本科生阶段都逐渐融入科研中,积极参与教师的科研项目,院系也鼓励本科生参加学术会议,给予补贴(汽油补贴);美国大部分学校专门成立了本科生科研基金,这样既能尽早开阔他们的眼界,又能使学生获得一些科研经历及人脉资源。在中国,学术会议也只有研究生以上学历的学生才有资格参加,这样不利于相关领域知识的衔接以及创新思维的尽早培养,我国在这方面还需要出台相应的措施。
2.5 多元化就业渠道
美国是一个多元化的国家,因而具有多元化的校园文化,学生处处都透露着浓厚的爱校情结,喜欢穿带学校logo的校服。美国学校经常组织优秀校友返校活动,通过这样的渠道,一方面能够全面了解返校校友的就业去向及现状,为毕业生就业提供积极的指导;另一方面,通过优秀校友的交流,可以掌握用人单位对毕业生素质和职业能力的要求,从而促进教学改革不断深入,提高人才培养质量,推动专业的发展。中国也应逐步加强这方面的建设。
2.6 图书馆的利用
在美国,学生对图书馆的利用发挥到了极限,学生课下时间经常去图书馆学习,而且图书馆开馆时间很长,晚上能开到凌晨。图书馆内配套设施比较完善,学生可以随时休息或进行集中讨论[7]。中国学生除了考研或者期末考试前,平时入馆率相对较低,一方面可能是目前大部分学生课下学习意识尚未培养起来,另一方面可能是高校图书馆配套设施还不够完善和开馆时间较短,因此需要在硬件以及制度上给予保障。
3 教学启示和实践应用
3.1 教学启示
3.1.1 课堂教学内容和教学方式
教学内容是课程的核心,合理教学内容的取材应兼顾教材的现实性和前瞻性,但任何一本指定教材的内容在知识点的取舍、某些非知识点的详略程度上都不相同,甚至对同一知识点的描述思路、讲解方法和应用举例也是不同的,因此,教学内容不能禁锢在某一本教材上。教师应直接适时地补充相关学习材料,特别是最新的研究进展,还要引导学生学会查阅相关主题的书籍或网络资源,这样更有利于他们形成完整的知识结构,多角度深入理解知识,培养信息检索能力和分类整理与总结能力。
教学内容还应该重理论与应用和实践结合,将教学内容组织为有趣的、直观形象的知识应用型案例。在教学内容的难度方面要适当控制,做到难易结合,通过容易的教学内容与案例,引导学生入门并对这门课程产生浓厚的兴趣,同时,通过难度高的教学内容和案例进一步锻炼学生的专业技能和职业能力。
教学方式是将教学内容有效传递给学生的重要方法,课堂教学要重视知识的启发与应用,实时注意学生的接受程度与反映,必须增加一定的师生互动环节。单纯的填鸭式课堂教学在高校人才培养中凸显出越来越多的问题,以教师讲授为主的教学方式,必然要转换成以学生为主的教学模式,启发式教学、案例教学和任务驱动教学法都是很好的教学方法。
3.1.2 课后学习和实践指导
课后学习是学生消化和巩固课堂所学知识不可缺少的一个环节,工科课程的课后实践指导可以使学生学以致用,更加有效地把所学理论转化为实践技能,并综合应用解决新的问题,有效培养动手能力及创新能力。课后学习和实践指导主要有教师指导、学生指导或两者相结合3种方式,总体上第3种方式比较合适,可聘请高年级学习好的学生指导低年级的学生,并将指导中的困难问题反馈给教师,以便集中指导。这样生生互助比较便利,有助于形成长效的学习团队,同时能将教师最大限度地解放出来,高效地对学生进行辅导。此外应该针对课程特点开发或配套对应的教学辅助系统,为学生课后学习提供良好的学习资源和练习平台。
3.1.3 考核方式
考核过程化可有效引导学生将工夫用在平时,通过平时的考核作业,有目的、有步骤地收集资料和设计方案,有条不紊地实现一个阶段性的小作品或者完成一个小课题,为后续内容的学习以及综合应用打下坚实的基础。
3.2 教学实践应用
鉴于美中高等教育课堂教学及课后实践的启示,我们对某二本高校2014级计算机科学与技术和物联网工程两个专业的C程序设计课程进行改革与实践,对课程教学内容、教学方式、课后实践指导、考核方式过程化等进行全新的设计,并对比分析改革效果。
3.2.1 教学改革方案
1)教学内容改革。
自编教材,并以谭浩强教授主编的《C语言程序设计》为辅,采用课程组授课的方式。课程组成员将教学内容组织为有趣的、直观形象的知识应用案例,利用教学案例贯穿整门课程,更便于学生掌握。教学案例有入门级的像计算器一样有趣又容易的教学内容,也有锻炼学生专业技能和职业能力的像选手评分管理系统一样的难度高的教学案例,按照知识模块先易后难循序渐进。
2)课堂教学环节实施方案。
(1)任务下达环节。教师提前把单元任务安排表发给学生,要求学生以课题组的形式在课前进行自助学习和讨论,在助教的引导下完成对任务的理解和分析,并按照要求做好课堂讨论准备。
(2)教学互动环节。针对之前下达的任务,教师在课堂上引导学生提出自己的观点和思路,因势利导,激发学生的发散性思维,从计算机解决问题的思路思考和解决问题,同时结合各组的表现记录课堂互动成绩。
(3)课外训练环节。由助教组织并带领学生完成各类任务的小组讨论、自学和拓展学习,解决学生的共性问题,同时激发学生用C语言进行程序设计的兴趣,同时遴选任务完成优秀的学生进行成果分享,并由教师对其进行总结和拓展;进一步地,开展ACM素质拓展训练及网上刷题,作为学生的技能训练成绩,从而保证整个班级的学习进度和效果。
3)课程辅导方式。
该课程实施课外学长助教制、课内组长助教制、对学生分组式的1~7课题组机制。
(1)1~7课题组。每班学生分若干组,每组由5~7名学生组成,遴选优秀学生作为组长,负责该组课堂的辅导以及日常教学与管理。
(2)å...
- ?
DataPipeline |ApacheKafka实战作者胡夕:Apache Kafka监控与调优
阮若剑
展开
胡夕《Apache Kafka实战》作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM、搜狗、微博等公司。国内活跃的Kafka代码贡献者。
前言
虽然目前Apache Kafka已经全面进化成一个流处理平台,但大多数的用户依然使用的是其核心功能:消息队列。对于如何有效地监控和调优Kafka是一个大话题,很多用户都有这样的困扰,今天我们就来讨论一下。
一、Kafka综述
在讨论具体的监控与调优之前,我想用一张PPT图来简单说明一下当前Kafka生态系统的各个组件。就像我前面所说,Kafka目前已经进化成了一个流处理平台,除了核心的消息队列组件Kafka core之外,社区还新引入Kafka Connect和Kafka Streams两个新的组件:其中前者负责Kafka与外部系统的数据传输;后者则负责对数据进行实时流处理计算。下图罗列了一些关键的Kafka概念。
二、Kafka监控
我打算从五个维度来讨论Kafka的监控。首先是要监控Kafka集群所在的主机;第二是监控Kafka broker JVM的表现;第三点,我们要监控Kafka Broker的性能;第四,我们要监控Kafka客户端的性能。这里的所指的是广义的客户端——可能是指我们自己编写的生产者、消费者,也有可能是社区帮我们提供的生产者、消费者,比如说Connect的Sink/Source或Streams等;最后我们需要监控服务器之间的交互行为。
1.主机监控
个人认为对于主机的监控是最重要的。因为很多线上环境问题首先表现出来的症状就是主机的某些性能出现了明显的问题。此时通常是运维人员首先发现了它们然后告诉我们这台机器有什么问题,对于Kafka主机监控通常是发现问题的第一步。这一页列出了常见的指标,包括CPU、内存、带宽等数据。需要注意的是CPU使用率的统计。可能大家听过这样的提法:我的Kafka Broker CPU使用率是400%,怎么回事?对于这样的问题,我们首先要搞清楚这个使用率是怎么观测出来的? 很多人拿top命令中的vss或rss字段来表征CPU使用率,但实际上它们并不是真正的CPU使用率——那只是所有CPU共同作用于Kafka进程所花的时间片的比例。举个例子,如果机器上有16个CPU,那么只要这些值没有超过或接近1600, 那么你的CPU使用率实际上是很低的。因此要正确理解这些命令中各个字段的含义。
这页PPT右边给出了一本书,如果大家想监控主机性能的话,我个人建议这本《SystemsPerformance》就足够了。非常权威的一本书,推荐大家读一下。
2.监控JVM
Kafka本身是一个普通的Java进程,所以任何适用于JVM监控的方法对于监控Kafka都是相通的。第一步就是要先了解Kafka应用。比方说了解Kafka broker JVM的GC频率和延时都是多少,每次GC后存活对象的大小是怎样的等。了解了这些信息我们才能明确后面调优的方向。当然,我们毕竟不是特别资深的JVM专家,因此也不必过多追求繁复的JVM监控与调优。只需要关注大的方面即可。另外,如果大家时间很有限但又想快速掌握JVM监控与调优,推荐阅读《Java Performance》。
3.Per-Broker监控
首先要确保Broker进程是启动状态?这听起来好像有点搞笑,但我的确遇到过这样的情况。比如当把Kafka部署在Docker上时就容易出现进程启动但服务没有成功启动的情形。正常启动下,一个Kafka服务器起来的时候,应该有两个端口,一个端口是9092常规端口,会建一个TCP链接。还有一个端口是给JMX监控用的。当然有多台broker的话,那么controller机器会为每台broker都维护一个TCP连接。在实际监控时可以有意识地验证这一点。
对于Broker的监控,我们主要是通过JMS指标来做的。用过Kafka的人知道,Kafka社区提供了特别多的JMS指标,其中很多指标用处不大。我这里列了一些比较重要的:首先是broker机器每秒出入的字节数,就是类似于我可以监控网卡的流量,一定要把这个指标监控起来,并实时与你的网卡带宽进行比较——如果发现该值非常接近于带宽的话,就证明broker负载过高,要么增加新的broker机器,要么把该broker上的负载均衡到其他机器上。
另外还有两个线程池空闲使用率小关注,最好确保它们的值都不要低于30%,否则说明Broker已经非常的繁忙。 此时需要调整线程池线程数。
接下来是监控broker服务器的日志。日志中包含了非常丰富的信息。这里所说的日志不仅是broker服务器的日志,还包括Kafka controller的日志。我们需要经常性地查看日志中是否出现了OOM错误抑或是时刻关注日志中抛出的ERROR信息。
我们还需要监控一些关键后台线程的运行状态。个人认为有两个比较重要的线程需要监控:一个Log Cleaner线程——该线程是执行数据压实操作的,如果该线程出问题了,用户通常无法感知到,然后会发现所有compact策略的topic会越来越大直到占满所有磁盘空间;另一个线程就是副本拉取线程,即follower broker使用该线程实时从leader处拉取数据。如果该线程“挂掉”了,用户通常也是不知道的,但会发现follower不再拉取数据了。因此我们一定要定期地查看这两个线程的状态,如果发现它们意味终止,则去找日志中寻找对应的报错信息。
4.Clients监控
客户端监控这块,我这边会分为两个,分别讨论对生产者和消费者的监控。生产者往Kafka发消息,在监控之前我们至少要了解一下客户端机器与Broker端机器之间的RTT是多少。对于那种跨数据中心或者是异地的情况来说,RTT本来就很大,如果不做特殊的调优,是不可能有太高的TPS的。目前Kafka producer是双线程的设计机制,分为用户主线程和Sender线程,当这个Sender线程挂了的时候,前端用户是不感知的,但表现为producer发送消息失败,所以用户最好监控一下这个Sender线程的状态。
还有就是监控PRODUCE请求的处理延时。一条消息从生产者端发送到Kafka broker进行处理,之后返回给producer的总时间。整个链路中各个环节的耗时最好要做到心中有数。因为很多情况下,如果你要提升生产者的TPS,了解整个链路中的瓶颈后才能做到有的放矢。后面PPT中我会讨论如何拆解这条链路。
现在说说消费者。这里的消费者说的是新版本的消费者,也就是java consumer。
社区已经非常不推荐再继续使用老版本的消费者了。新版本的消费者也是双线程设计,后面有一个心跳线程,如果这个线程挂掉的话,前台线程是不知情的。所以,用户最好定期监控该心跳线程的存活情况。心跳线程定期发心跳请求给Kafka服务器,告诉Kafka,这个消费者实例还活着,以避免coordinator错误地认为此实例已“死掉”从而开启rebalance。Kafka提供了很多的JMX指标可以用于监控消费者,最重要的消费进度滞后监控,也就是所谓的consumerlag。
假设producer生产了100条消息,消费者读取了80条,那么lag就是20。显然落后的越少越好,这表明消费者非常及时,用户也可以用工具行命令来查lag,甚至写Java的API来查。与lag对应的还有一个lead指标,它表征的是消费者领先第一条消息的进度。比如最早的消费位移是1,如果消费者当前消费的消息是10,那么lead就是9。对于lead而言越大越好,否则表明此消费者可能处于停顿状态或者消费的非常慢,本质上lead和lag是一回事,之所以列出来是因为lead指标是我开发的,也算打个广告吧。
除了以上这些,我们还需要监控消费者组的分区分配情况,避免出现某个实例被分配了过多的分区,导致负载严重不平衡的情况出现。一般来说,如果组内所有消费者订阅的是相同的主题,那么通常不会出现明显的分配倾斜。一旦各个实例订阅的主题不相同且每个主题分区数参差不齐时就极易发生这种不平衡的情况。Kafka目前提供了3种策略来帮助用户完成分区分配,最新的策略是黏性分配策略,它能保证绝对的公平,大家可以去试一下。
最后就是要监控rebalance的时间——目前来看,组内超多实例的rebalance性能很差,可能都是小时级别的。而且比较悲剧的是当前无较好的解决方案。所以,如果你的Consumer特别特别多的话,一定会有这个问题,你监控一下两个步骤所用的时间,看看是否满足需求,如果不能满足的话,看看能不能把消费者去除,尽量减少消费者数量。
5.Inter-Broker监控
最后一个维度就是监控Broker之间的表现,主要是指副本拉取。Follower副本实时拉取leader处的数据,我们自然希望这个拉取过程越快越好。Kafka提供了一个特别重要的JMX指标,叫做备份不足的分区数,比如说我规定了这条消息,应该在三个Broker上面保存,假设只有一个或者两个Broker上保存该消息,那么这条消息所在的分区就被称为“备份不足”的分区。这种情况是特别关注的,因为有可能造成数据的丢失。《Kafka权威指南》一书中是这样说的:如果你只能监控一个Kafka JMX指标,那么就监控这个好了,确保在你的Kafka集群中该值是永远是0。一旦出现大于0的情形赶紧处理。
还有一个比较重要的指标是表征controller个数的。整个集群中应该确保只能有一台机器的指标是1,其他全应该是0,如果你发现有一台机器是2或者是3,一定是出现脑裂了,此时应该去检查下是否出现了网络分区。Kafka本身是不能对抗脑裂的,完全依靠Zookeeper来做,但是如果真正出现网络分区的话,也是没有办法处理的,不如赶快fail fast掉。
三、监控工具
当前没有一款Kafka监控工具是公认比较优秀的,每个都有自己的特点但也有些致命的缺陷。我们针对一些常见的监控工具逐个讨论下。
1.Kafka Manager
应该说在所有免费的监控框架中,Kafka Manager是最受欢迎的。它最早由雅虎开源,功能非常齐全,展示的数据非常丰富。另外,用户能够在界面上执行一些简单的集群管理操作。更加令人欣慰的是,该框架目前还在不断维护中,因此使用Kafka manager来监控Kafka是一个不错的选择。
2.Burrow
Burrow是去年下半年开源,专门监控消费者信息的框架。这个框架刚开始开源的时候,我还对它还是寄予厚望的,毕竟是Kafka社区committer亲自编写的。不过Burrow的问题在于没有UI界面,不方便运维操作。另外由于是Go语言写的,你要用的话,必须搭建Go语言环境,然后编译部署,总之用起来不是很方便。还有就是它的更新不是很频繁,已经有点半荒废的状态,大家不妨一试。
3.Kafka Monitor
严格来说,它不是监控工具,它是专门做Kafka集群系统性测试用的。待监控的指标可以由用户自己设定,主要是做一些端到端的测试。比如说你搭了一套Kafka集群,想测试端到端的性能怎样:从发消息到消费者读取消息这一整体流程的性能。该框架的优势也是由Kafka社区团队写的,质量有保障,但更新不是很频繁,目前好像几个月没有更新了。
4.Kafka Offset Monitor
KafkaOffsetMonitor是我用的最早的一个Kafka监控工具,也是监控消费者位移,只不过那时候Kafka把位移保持在Zookeepr上。这个框架的界面非常漂亮,国内用的人很多。但是现在有一个问题,因为我们现在用了新版本的消费者,这个框架目前支持得的并不是特别好。而且还有一个问题就是它已经不再维护了,可能有1-2年没有任何更新了。
5.Kafka Eagle
这是国人自己开发的,我不知道具体是哪个大牛开发的,但是在Kafka QQ群里面很多人推崇,因为界面很干净漂亮,上面有很好的数据展现。
6.Confluent Control Center
Control Center是目前我能收集到的功能最齐全的Kafka监控框架了,只不过只有购买了Confluent企业版也有的,也就是说是付费的。
综合来讲,如果你是Kafka集群运维操作人员,推荐先用Kafka Manager来做监控,后面再根据实际监控需求定制化开发特有的工具或框架。
四、系统调优
Kafka监控的一个主要的目的就是调优Kafka集群。这里罗列了一些常见的操作系统级的调优。
首先是保证页缓存的大小——至少要设置页缓存为一个日志段的大小。我们知道Kafka大量使用页缓存,只要保证页缓存足够大,那么消费者读取消息时就有大概率保证它能够直接命中页缓存中的数据而无需从底层磁盘中读取。故只要保证页缓存要满足一个日志段的大小。
第二是调优文件打开数。很多人对这个资源有点畏手畏脚。实际上这是一个很廉价的资源,设置一个比较大的初始值通常都是没有什么问题的。
第三是调优vm.max_map_count参数。主要适用于Kafka broker上的主题数超多的情况。Kafka日志段的索引文件是用映射文件的机制来做的,故如果有超多日志段的话,这种索引文件数必然是很多的,极易打爆这个资源限制,所以对于这种情况一般要适当调大这个参数。
第四是swap的设置。很多文章说把这个值设为0,就是完全禁止swap,我个人不建议这样,因为当你设置成为0的时候,一旦你的内存耗尽了,Linux会自动开启OOM killer然后随机找一个进程杀掉。这并不是我们希望的处理结果。相反,我建议设置该值为一个比较接近零的较小值,这样当我的内存快要耗尽的时候会尝试开启一小部分swap,虽然会导致broker变得非常慢,但至少给了用户发现问题并处理之的机会。
第五JVM堆大小。首先鉴于目前Kafka新版本已经不支持Java7了,而Java 8本身不更新了,甚至Java9其实都不做了,直接做Java10了,所以我建议Kafka至少搭配Java8来搭建。至于堆的大小,个人认为6-10G足矣。如果出现了堆æº...
- ?
历经五年,网络大电影的冰与火之歌
牛梦柏
展开
图片来源:视觉中国
文|读娱(yiqiduyu),作者|第二阿累
大潮退去,才知道谁在裸泳,这句话用在曾经的网络大电影(以下简称网大)上,再恰当不过了。
经历三年洗牌
“老板,想拍网大吗?我这里就有一部现成的!”穿着西服系着有些褶皱的领带,“用心”打扮的李浩在百子湾一间咖啡厅见到自己约的投资人,立马就上前去推销。
对,是推销,在见了五十多位有意向网大的投资人后,李浩已经不再像以前那般,上去就先给人普及网大的前景,然后再说手上的项目有多么多么的好。用他的话说:“最快速度的单刀直入,投资人可能会觉得我更靠谱、信任,而我的网大或许就能有一线生机。”
在2017年6月之前,32岁的李浩还是一家传统影视公司中的一名网剧制片主任。在看了2017年《斗战胜佛》和《降龙大师》两部网大相继成功之后,他感觉自己的机会来了。
“当时我并不是一拍脑门头脑发热,我是觉得在影视圈积累的五年经验已经足够了。而且,网大在经历三年洗牌之后,2017年是最好的时机。”李浩对读娱君说起当时的动因。
网大从2014年到2017年6月,历经了发展、泡沫、死亡和监管,那些抱着玩的心态者煤老板、房地产商等都渐渐被淘汰了出去。市场上的内容也逐渐从蹭IP、软色情、低俗暴力……逐渐变少了。而能看到这些,也说明李浩对这一行是有准备的。
在这样的环境下,李浩拿出了自己积攒的35万,然后开始串项目。因为在过去工作的原因,他认识了一些编剧,最后与一名叫小溪的编剧达成了合作,准备开发一个西游类的玄幻网大。
对于选择西游,李浩有自己的考虑:“西游IP热、容易火,你看春节档的贺岁片西游系列都大赚特赚,同样,网大市场的西游题材也都是赚钱多亏损少。最主要的是版权还免费,观众都容易接受一些。”
而且,他心目中已经有了所属的演员人选:“由陈浩民来演孙悟空,收益绝对有保证。但有个前提,是要能拉到投资人,拉到钱。”
然而,拿着一份很好看的项目PPT和剧本却没能如愿拉到自己理想中的600万,最终靠着以前的关系,通过上家公司的老板介绍,找到了一个大老板,拉到235万的资金,这其中还包括他的35万。不过,这老板也是个人精,人家有个前提,钱要分三笔打,前期40%,中期30%,制作的时候再付30%。
“当时我也没细想太多,看着这个老板好爽,当天就转了先期款,索性我就立马找人组局了。”从前期剧本修改,分镜、看景,包括找演员、导演等等,李浩前期就花了一个多月。
加上找资金和前期时间,这部网大终于于10月份在横店开机了。对于这速度,李浩是不满意的,原计划他是想8月初开拍,用15天拍完,然后一个半月剪辑制作,10月上线。
没赶上曾经的拍摄计划,同时,李浩还遭遇到了新的意外。
“拍到中期,眼看要没钱的时候,我给老板打电话,他竟然TM的消失了。然后我去他公司找他,也找不到人。”那时候的李浩觉得天都要塌了,但横店还有个剧组都等着他带钱回去,所以他自己给自己打气,不能就这么输了。
在北京苦等三天无果,李浩最后只有向父母亲戚朋友借了三十万,带回了横店。之后,他开始了漫长的等待和节衣缩食。
这期间,他用尽各种办法、各种拖,也给一些主创谈了话,“我没钱了,我只能做承诺,用后期片子的收益来给他们做结算。”还好,李浩说通了这些人,也拖着把片子拍完了。
不过,片子是拍完了,他却没有了后期制作、宣发的钱,又开始回到最初的状态,从新拉投资人,期望拉一笔钱能把后期和宣发的钱找到——只不过,即使李浩承诺30%的版权收益,都没人接盘。而且运气实在太霉,碰到年底,也遇到了开年后的经济不景气,一直都没找到有意愿的投资人。
期间,他找过视频平台,因为片子连初剪都没有,所以无法被爱奇艺、优酷所接受。“腾讯视频我也找过,但他们需要前期立项就介入,一旦谈好,就要投资80%。我这个网大都拍完了,他们就拒绝了这样的方式合作。”李浩无奈说道。
而后,他开始忙碌着各种找投资人,也就出现了前文所言的推销。
大潮退去
比起李浩的坎坷之路,程序员出身的阿华则要比他有优势多了。
阿华因为技术出身所以早年赚了一些钱,后来投资了一个影视公司,专门给爱奇艺等视频平台拍剧及其做一些项目。而在网大兴起的时候,他也抓住了机会,在2014年底进军了网大。
阿华的公司第一部网大拍的是悬疑片,投资成本大概在60万左右,最终受益约160万。尝到甜头后,他和合伙人开始发力,并邀请了张勇一起成立了新的影视公司,专注于网大的开发。
“找张勇一起合作,是因为他在这个圈子里面混的比较熟,宣发也在行。”阿华说道。
的确,自从张勇加入了新公司后,阿华的公司正式起航且加速运转。在2015年、2016年网大最热闹也是最浮躁的时期,公司开发出7部网大、两部超级网剧,其中除了一部亏损,两部持平意外,四部网大都是赚钱的,网剧也因为有平台购买版权也小有营收。
在当时,阿华、张勇等人,以及公司都快速的成为了行业中的新贵,且很多人开始称呼阿华为华爷。
“看着一大笔的收益,我和合伙人以及张勇三人都胆子大了起来。还找到了此前的老领导合作,以及找到了个投资公司做靠山。”阿华说道。
在2017年年初,阿华三人的公司与中国最大的一家传媒公司进行了战略合作,还召开了发布会。之后,更是与一家基金公司,合资成立了新的影视公司。
有基金公司的资金作保障,阿华三人甩开膀子就开干,立马就立项了一部此前写好的剧本,准备拍一部魔幻+动作古装题材的精品影片。
“选魔幻动作类型,是基于我们对市场和用户的判断。”阿华说道此处时,张勇也做了补充:“2015年、2016年的时候,网大大多都是悬疑为主。而经过市场淘汰后,2017年网大市场的类型已经开始多元化了。而且,网大的主要受众是小镇青年,他们喜欢网大的原因有两方面,一是打发时间,二是猎奇。故此,题材相当重要。这也是我们选择魔幻+动作古装题材的原因。”
根据数据显示,2018年上半年网大共上线651部网大,不再是过往的悬疑题材为主,其中动作片160部,占比最大,为24.5%。其中除了腾讯视频以悬疑为主之外,爱奇艺与优酷均以动作作为头部类型片,分别上线了105、41部。按数据来看,阿华和张勇的策略是遵循了市场的发展轨迹的。
对此,优酷内容开放平台总经理梁洁(天戈)也告诉读娱君:“网大的主要用户群还是小镇青年和农民工群体,起初这类人群的刚需是悬疑类型片。但因为市场内容过多、泛滥,导致用户审美疲劳。而如今的拐点则是新类型的突破和成功。明年,网大主题将是类型化和精品化。”
阿华、张勇二人的布局是符合网大行业走势的,一是类型化,二是精品化。只不过,这次投资比以往200万、400万的投资都要大,而且还一次性连续拍两部,投资成本在2000万左右,也就是说单部片子在1000万左右。
要知道,2014年《道士出山》才28万,即使2016年上线的2461部,2017年的1892部作品,甚至2018年,也少有投资成本会出现单部千万的。
“按2018年的标准,350万成本是小体量,500万是中体量,而1000万已经算是大体量的投资了。不过那时,我们想的是品质和钱是成正比的。而且我们的目标就是做大做典型者,做两部系列网大,然后在爱奇艺或者优酷的电影频道连续两月霸屏。”
这是典型的想上位的心理,每个行业都会有如此之人,读娱君也非常理解。
只是,这两千万投资进去之后,前期票房走势是惨淡的。今年三、四月,两部影片分别在爱奇艺、优酷先后上线,最终,投资与收益未达预期。
“还是步子迈得太大。”在2018年11月21日晚上,阿华回想起2017年的扩张,如此给我说道。
“其实后期这两部的票房也涨起来了,目前来看也没有亏,只不过是分账的回款周期变长了。以前三个月,现在都六月了。而且,原本承诺基金公司的预期,也未达到,哎……”阿华一阵唏嘘。
确实,如阿华所言,2018年网大分账有了一些调整和新的变化。
1、优酷网络院线采取会员有效观看时长分账模式,由会员观看有效时长、有效播放量(VV)对应单价决定。同时,优酷对前5名有会员拉新奖励,分别为100万、50万、30万、20万、10万。
2、爱奇艺网络大电影合作分成模式分为:内容分成、营销分成、广告分成三大类。
3、腾讯则是采取了标准付费播放总收益及会员拉新激励收益。(以前是观看“六分钟以上”才算一次点击,而今只要是付费用户的点击,都记为一次“标准的付费播放”。)
4、10月10日,芒果TV也高调宣布进军网大市场,成为又一个进军网大的巨头平台——芒果TV的网络大电影分账收益,其由保底+分成两部分构成,即成本保底加有效付费点播分成收益。合作方分账收入等于保底+有效付费点播量*分成单价,芒果TV也基于网络电影评级标准的不同,不同级别影片的合作方式和保底比例也不同:B级以上影片均有保底,最高保底比例100%;超S级项目买断合作。
加上芒果TV,四家平台分别针对性的做了服务升级、分账升级、营销升级。
暂不说分账内容的好坏,以前阿华是自己的公司,如今新公司是由基金公司投资,合资企业,虽说有资金保障,但也有一定的掣肘,什么样的资金投入就要有匹配的收益体现——自这两部失利之后,再加上影视行业税改,行业的整体下行,投资公司觉得风险太大,开始撤退。
公司逐渐清退了员工,阿华及张勇三人在那时也有些心灰意冷。“想不到,一炮就把我们打趴下了。”
其实,与阿华相似,甚至比他更惨的人、公司还有很多,用阿华的话说,这个行业还是2、8定律,2中的10%赚钱,10%持平,剩下的80%都在裸泳,而这80%中的人大多是抱着投机、试一试的心态入水,最终惨不忍睹。
其实,推销员李浩又何尝不是试水心态呢!
不过,对于网大的发展,在经历过半年旁人视角观望之后,阿华三人还是比较看好的:“平台规则越来标准,内容质量越来越高,很多没有实力的公司都被淘汰了,网大的未来也会发展的越来越好,越来越规范化。所以,今年我们就先稳一下。2019年再战江湖吧!”阿华信誓旦旦道。
网大回归理性
不管是李浩的磨难,还是阿华的不如意,网大确实经过前四年的泡沫、沉淀之后,正在回归理性。
这里先看四组数据:
1、网大数量正逐年缩减,从2014年的450部暴增至2016年的2461部,2017下降为1892部;2018年上半年全网共上线网大更是刷新了最低记录,651部,这主要取决于政策驱动和平台的有效控制;
2、截止10月31日,优酷爱奇艺已公布的网大票房数据来看,已有25部超过千万,这在2015年全年才仅1部,2016年全年为11部,2017年全年为18部。同时,更有五部网大票房超过了去年的冠军《斗战胜佛》的26554311元票房;
3、前文所言的,动作等类型化题材正在加大,这将丰富用户和网大的内容库。
4、前文所言的分账模式、数据,虽然除了优酷,其他平台的周期都变成了六个月,间接拉高了行业的门槛,但更多的还是平台的扶持政策加大了,对网大公司是利大于弊的。
而综合来看,这些都表明,网大行业正逆风翻盘、向阳而生。尤其优爱腾芒果TV等平台的竞争刺激,未来将是一片崭新。
李果就是网大新发展下成长起来的一名编剧、导演——她原来是阿华公司中的一名在职编剧、导演,在阿华公司撤退时,她就第一个跳了出来。
出来后与自己的老公成立了一个编剧小工作室,她的老公应聘了一家传统影视公司上班,所以这个工作室还是以她为主,外加两名编剧小助理。
因为此前在阿华公司有过网大的案例,也结交了一些行业朋友,所以李果创办工作室后,立马就有一个朋友下了一单,“接了一个财神方面的网大剧本,这个网大在2018年6月拍完,我担当的编剧、监制,9月份片子剪辑完成,也被爱奇艺评了A级,目前正准备排期上线。”
除了行业朋友照顾,李果觉得今年网大行业确实没有以前那么浮躁了:“以往找我约本子的大多都是行业外人士,有一次,一个干小贷金融的老板找到我,先付了一万,让我出个大纲、好看点儿的项目书,然后就拿去圈钱。最后,钱圈到了,片子也拍出来了,只不过质量被平台卡住了,品质不行,评不了级,也推不了。”
“而今这种骚操作已经不行了,也没人来接盘。大多都是一些以前生存下来的有实力的网大公司或者是转型的传统影视公司。其中传统影视公司更多一些,他们日子不好过,之前拍的电视剧积压严重,也不好上,上了也没多少用户看,所以就都下沉到网大了。”
今年在横店拍财神的时候,作为看客的李果,最大的心得就是这个行业有些明朗了:“因为80%的公司都在拍网大,而且都是叫得上名的公司,很少有新的。
最主要的是,专业的人和公司制作出来的东西,平台都会给予大力支持,再也不用像以前那样,要和上千部影片去争抢72小时黄金推广资源了ï...
- ?
IPv6原理及在Linux操作系统上的应用与实践
采梦
展开
2017年11月26日,中共中央办公厅和国务院办公厅印发了《推荐互联网协议第六版(IPv6)规模部署行动计划》,并发出通知,要求各地区各部门结合实际认真贯彻落实。这条新闻传达了一个很重要的信息:这个是推进中国IPv6发展的战略总动员令。
本文将会从以下几个方面进一步介绍IPv6,包括有:
IPv6的基本概念IPv6在Linux操作系统下的实现IPv6的实验IPv6的过渡技术介绍IPv6在Linux平台下socket编程应该注意的问题实现简易版TGW支持IPv6雏形demo
值得说的是,目前我们接触得比较多的主流操作系统内核,已经很好地支持IPv6协议栈,例如:
Windows: windows 7、windows 8.x、windows 10,默认开启IPv6Linux: 内核2.6.x、内核3.x、内核4.x 已经支持IPv6(需要手动开启)
IOS:IOS9开始已经支持IPv6 Only,2016年苹果已经强制要求app必须支持IPv6
本文提到的IPv6节点,没有特殊说明,一般指的是纯IPv6节点(IPv6 Only),也就是只支持IPv6协议栈;IPv4节点,是指纯IPv4的节点,也就是只支持IPv4协议栈;如果节点支持IPv6和IPv4双栈,会指明是双栈节点。
IPv6的基本概念
众所周知,32位的IPv4地址已经耗竭,IPv6采用128位的地址长度拥有更大的地址空间。首先我们先来认识一下IPv6到底长成什么样子。
初识IPv6
图1 IPv6数据报文
上图是我们最熟悉的ping的IPv6版本ICMPv6。可以看到,IPv6数据报文和IPv4有很大的差别:
数据链路层(L2)的type字段标识为 0x86dd,表示承载的上层协议是IPv6
IPv4对比:type字段为0x0800
IPv6的头部字段,和IPv4差别巨大(可以猜测到,IPv6和IPv4无法兼容)
IPv6的报文头部格式如下:
图2 IPv6报文头部(该图片来自互联网)
IPv6报文头部更精简了,字段更少了,对比起IPv4,有以下几个地方值得注意:
IPv6报文头部是定长(固定为40字节),IPv4报文头部是变长的。这个意味着,写代码处理IPv6数据报文的效率会提高很多:)IPv6中Hop Limit字段含义类似IPv4的TTL。IPv6中的Traffic Class字段含义类似IPv4中的TOS(Type Of Service)。IPv6的报文头部取消了校验和字段。取消这个字段也是对IPv4协议的一个改进。当IPv4报文在网路间传输,每经过一个路由器转发就是修改TTL字段,就需要重新计算校验和,而由于数据链路层L2和传输层L4的校验已经足够强壮,因此IPv6取消这个字段会提高路由器的转发效率。值得一提的是,在IPv6协议下,传输层L4协议UDP、TCP是强制需要进行校验和的(IPv4是可选的)。IPv6报文头部中的Next Header字段表示“承载上一层的协议类型”或者“扩展头部类型”。这里的含义与IPv4有很大的差别,需要加以解释:
当IPv6数据报文承载的是上层协议ICMPv6、TCP、UDP等的时候,Next Header的值分别为58、6、17,这个时候和IPv4报文头部中的Protocol字段很类似。
当不是以上3种协议类型的时候,IPv6报文头部紧接的是扩展头部。扩展头部是IPv6引入的一个新的概念,每个IPv6的数据报文可以承载0个或多个扩展头部,扩展头部通过链表的形式组织起来。当IPv6数据报文承载着扩展头部的时候,Next Header的数值为扩展头部的类型值。
为什么要引入扩展头部这个概念,这里也是IPv6对IPv4改进的一个方面,用扩展头部取代了IPv4的可选项信息,精简了IPv6的头部,增强了IPv6的扩展性。有同学会不会有疑问,IPv6的分片数据报文怎么处理?其实就是使用了IPv6扩展头部。我们来抓一个UDP分片报文来看看。
图3 IPv6分片报文
当发送一个分片IPv6数据报文的时候,IPv6使用的是扩展头部的形式组织各个分片的信息,如图IPv6报文头部Next Header字段值为44表示存在扩展头部,扩展头部是IPv6分片数据信息。
对比IPv4,分片信息是记录在IPv4报文头部的分片字段中。
IPv6的扩展头部类型有很多种,除了上述的分片头部,还有路由头部、逐跳可选头部等,具体的可以参考RFC2460。
本章主要介绍了IPv6的一些很直观的认识,下面逐渐介绍IPv6上的基本知识和概念。
IPv6的地址语法
一个IPv6的地址使用冒号十六进制表示方法:128位的地址每16位分成一段,每个16位的段用十六进制表示并用冒号分隔开,例如:
一个普通公网IPv6地址:2001:0D12:0000:0000:02AA:0987:FE29:9871
IPv6地址支持压缩前导零的表示方法,例如上面的地址可以压缩表示为:
2001:D12:0:0:2AA:987:FE29:9871
为了进一步精简IPv6地址,当冒号十六进制格式中出现连续几段数值0的位段时,这些段可以压缩为双冒号的表示,例如上面的地址还可以进一步精简表示为:
2001:D12::2AA:987:FE29:9871
又例如IPv6的地址FF80:0:0:0:FF:3BA:891:67C2可以进一步精简表示为:
FE80::FF:3BA:891:67C2
这里值得注意的是,双冒号只能出现一次。
IPv6地址的号段划分和前缀表示法
IPv6拥有128位巨大的地址空间,对于那么大的空间,也不是随意的划分,而是使用按照bit位进行号段划分(与鹅厂内部一些的64位uin改造放号的zone划分算法)。
IPv6的地址结构如下图:
图4 IPv6地址结构
例如RFC4291中定义了n=48, m=16,也就是子网和接口ID与各占64位
IPv6支持子网前缀标识方法,类似于IPv4的无分类域间路由CIDR机制(注意:IPv6没有子网掩码mask的概念)。使用“IPv6地址/前缀长度”表示方法,例如:
2001:C3:0:2C6A::/64表示一个子网
而2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64表示该子网下的一个节点地址。
可以看到,一个IPv6的地址有子网前缀+接口ID构成,子网前缀由地址分配和管理机构定义和分配,而接口ID可以由各操作系统实现生成,生成算法后面的章节会介绍。
IPv6的地址类型
IPv6地址分三种类型
1、单播,对应于IPv4的普通公网和私网地址
2、组播,对应于IPv4的组播(多播)地址
3、任播,IPv6新增的地址概念类型
IPv6没有广播地址,用组播地址实现广播的功能。实际上我们工作和生活最可能最多接触的就是单播地址,接下来本文重点会讲解单播地址的种类。组播和任播地址有兴趣的同学自行查阅相关RFC和文献。
IPv6单播地址
注意,大家如果在网上搜索IPv6的地址,可能都是千篇一律的把所有“出现过”的单播地址介绍出来,其实有一些单播地址类型已经在相关的RFC中被废除或者不建议使用,而本节会指出这类地址。同时,在介绍单播地址的时候,尽量与IPv4中对应的或者相类似的概念做对比,加深理解。
IPv6单播地址有以下几种:
1、全球单播地址
图5 IPv6全球单播地址结构
前缀2000::/3,相当于IPv4的公网地址(IPv6的诞生根本上就是为了解决IPv4公网地址耗尽的问题)。这种地址在全球的路由器间可以路由。
2、链路本地地址
图6 链路本地地址结构
前缀FE80::/10,顾名思义,此类地址用于同一链路上的节点间的通信,主要用于自动配置地址和邻居节点发现过程。Windows和Linux支持或开启IPv6后,默认会给网卡接口自动配置一个链路本地地址。也就是说,一个接口一定有一个链路本地地址。如下图:
图7 Linux下查看链路本地地址
图8 Windows下查看链路本地地址
值得说的是,每个接口必须至少有一个链路本地地址;每个接口可以配置1个以上的单播地址,例如一个接口可以配置一个链路本地地址,同时也可以配置一个全球单播地址。
注意,很容易会把链路本地地址和IPv4的私网/内网地址对应起来,其实链路本地地址对应于IPv4的APIPA地址,也就是169.254开头的地址(典型场景就是windows开启自动获取地址而获取失败后自动分配一个169.254的地址)。而IPv4私网对应于IPv6的什么地址,后面会介绍。
特别地,在IPv6 socket编程中,可以使用链路本地地址编程通信,但是需要增加一些额外的参数(这是一个小坑),在后面介绍编程的章节会介绍。
3、唯一本地地址
图9 唯一本地地址结构
前缀FC00::/7,相当于IPv4的私网地址(10.0.0.0、172.16.0.0、192.168.0.0),在RFC4193中新定义的一种解决私网需求的单播地址类型,用来代替废弃使用的站点本地地址。
可能看到这里,有同学会跳出来说:IPv6不是为了解决IPv4地址耗尽的问题吗,既然IPv6的地址空间那么大,可以为每一个网络节点分配公网IPv6的节点,那为什么IPv6还需要支持私网?这里需要谈谈对IPv6下私网支持的认识。
在IPv4中,利用NAT技术私网内的网络节点可以使用统一的公网出口访问互联网资源,大大节省了IPv4公网地址的消耗(IPv6推进缓慢的原因之一)。另一方面,由于默认情况下私网内节点与外界通信的发起是单向的,网络访问仅仅能从私网内发起,外部发起的请求会被统一网关或者防火墙阻隔掉,这样的网络架构很好的保护了私网内的节点安全性和私密性。可以设想一下,如果鹅厂内部每台办公电脑都配置了IPv6的公网地址上网,是多么可怕的事情,每台办公电脑都会面临被黑客入侵的威胁(肉鸡真多)。
因此,在安全性和私密性要求下,IPv6中同样需要支持私网,并且也需要支持NAT。在Linux内核3.7版本开始加入对IPv6 NAT的支持,实现的方式和IPv4下的差别不大(Linux内核代码中变量和函数的命名几乎就是ctrl+c和ctrl+v过来的-_-||)。
4、站点本地地址
前缀FEC9::/48,以前是用来部署私网的,但RFC3879中已经不建议使用这类地址,建议使用唯一本地地址。大家知道有这么一回事就可以了。网上还有很多文章还提到这种地址,但是没有说明这种地址已经不再使用。
5、特殊地址:回环地址
0:0:0:0:0:0:0:1或::1,等同于IPv4的127.0.0.1
6、过渡地址:内嵌IPv4地址的IPv6地址
就是在IPv6的某一些十六进制段内嵌这IPv4的地址,例如IPv6地址中64:ff9b::10.10.10.10,此IPv6地址最后4个字节内嵌一个IPv4的地址,这类地址主要用于IPv6/IPv4的过渡技术中。
一、IPv4兼容地址
0:0:0:0:0:0:w.x.y.z或::w.x.y.z(其中w.x.y.z是点分十进制的IPv4地址)。但在RFC4291中已经不推荐使用这类地址,大家知道有这么一回事就可以了。
二、过渡地址:IPv4映射地址
0:0:0:0:0:FFFF:w.x.y.z或::FFFF:w.x.y.z(其中w.x.y.z是点分十进制的IPv4地址),用于IPv6地址表示IPv4地址。主要用于某些场景下IPv6节点与IPv4节点通信,Linux内核对这类地址很好地支持,在后面编程和内核分析的章节会分析使用过程。
三、过渡地址:特定过渡技术地址
6to4地址、ISATAP地址、Teredo地址主要用于对应的过渡技术的地址,在后面介绍过渡技术的时候会介绍。
IPv6接口ID生成算法
从前面的介绍中可以看出,IPv6单播地址是由前缀(64位)+接口ID(64位)组成。接口ID的生成算法主要有以下几种:
1、根据RFC4291定义,接口ID可以从EUI-64地址生成。
详细算法可以查看regli同学的PPT第14页。
2、为了可以具备某种程度的匿名信,接口ID可以使用一个随机分配的,windows操作系统默认就是使用这种生成算法,Linux下也是默认开启这个算法。
3、使用状态化的自动配置技术分配,例如DHCPv6分配。
4、手工配置。
IPv6地址配置
前面对IPv6的地址、前缀、接口等等做了介绍,接下来就是要介绍一个接口如何配置IPv6地址。IPv6一个比IPv4更厉害的方面,就是可以自动配置地址,甚至这个配置过程不需要DHCPv6(在IPv4中是DHCPv4)这样的地址配置协议。最典型的例子就是,只要开启了IPv6协议栈的操作系统,每个接口就能自动配置了链路本地地址,这个是和IPv4最重要的区别之一。
IPv6的地址配置有以下几种:
1、只要开启了IPv6协议栈,接口自动分配链路本地地址。
2、无状态自动配置地址(RFC2462),后面会有实验演示。
3、有状态自动配置地址,例如DHCPv6。
4、手动配置。
IPv6的域名解析
由于IPv6的地址扩展为128位,比IPv4的更难书写和记忆,因此IPv6下的DNS变得尤为重要。IPv6的的DNS资源记录类型为AAAA(又称作4A),用于解析指向IPv6地址的完全有效域名。下面是一个示例:
Hostipv6.example.wechat IN AAAA 2001:db8:1::1
IPv6下的域名解析可以认为是IPv4的扩展,详细可以查看RFC3596.
Linux内核IPv6架构简析
本文后面主要的分析都是基于Linux,会有涉及关于Linux内核对IPv6的实现。主要是因为,现在IPv6的参考资料不多,除了与IPv6相关的RFC之外,还有少数可以参阅的IPv6国外文献,而Linux内核一直都与跟随着IPv6的协议更新和变化,Linux内核IPv6的实现是十分重要的参考材料之一。而且从事后台开发工作主要也是在Linux平台下,熟悉Linux下IPv6的实现也是为以后的工作做知识储备。
PS:客户端开发的同学可以参考各自平台的文档.............
Linux在很早之前就已经开始支持IPv6,目前我们接触最多的Linux内核版本都很好地支持IPv6,同时也是支持IPv4/IPv6双栈体系。在Linux操作系统中,IPv4是默认必须开启,IPv6是可选编译和配置开启。
例如在编译内核的时候,需要选择IPv6编译选项才支持IPv6
图10 Linux内核编译支持IPv6
当开启支持IPv6的Linux的内核网络双栈的结构,如下图:
图11 Linux内核双栈架构
Linux内核中,IPv6协议栈与IPv4协议栈并行关系。IPv6和IPv4完全是两套不一样的代码实现。IPv6完整的协议栈逻辑模块包括:
1、网络层IPv6,核心逻辑:IPv6路由子系统
2、传输层TCP/UDP实现:TCPv6、UDPv6
?任正非亲自参与,2021数字化转型再造华为!
Olga
展开
“一个企业数字化转型,要有战略决心,要有最高层和业务主体的业务驱动,而不是技术部门驱动。我认为数字化转型一定是一把手工程,在这件事情上,华为董事会、任总,都投入了很大的关注度,来推进华为的数字化转型。我还没有见到哪一个行业的数字化转型,是由技术部门驱动的。”这是现任华为董事、CIO、质量与流程IT管理部总裁陶景文在2018年10月华为全连接大会·数字化华为峰会上分享的华为自身的数字化转型经验。
在华为历史上,历经了三次大的公司战略发展阶段:1988年成立的华为从电信基础设施供应开始,历经30年逐步发展成为全球性的电信企业,通过电信运营商服务全球超过一半的人口;1998年左右,华为开始了国际化战略,同时经历了管理体系升级,从IBM引入了IPD、ISC等流程,并在1995年前后请人大教授提炼了《华为基本法》;2007年华为涉足消费电子领域,2011年华为成立了企业BG,2017年成立了Cloud BU,从单一的运营商业务向多元化业务拓展。
2017年,华为收入6036亿人民币,在世界500强中排名第72位,2018年营收预计将超过1000亿美元大关。在2018年,华为手机业务位居全球第二,每年出货量高达1.5亿台。截止2018年上半年,华为企业BG是197家世界500强企业、45家世界100强企业的数字化转型合作伙伴;华为云收入同比增长700%,合作伙伴增长45%,已发展云服务合作伙伴6000家,云市场新增上架应用872个。如今,华为的业务遍及全球170多个国家,拥有14个研发中心、18万员工、15万合作伙伴、16个工厂/供应中心/配送中心,以及190多个物流中心仓库,数亿人在使用华为的数字化平台。过去10年间,华为研发投入达到3900多亿,获得74000多项的专利。
在本轮全球企业数字化转型大潮中,华为也是其中的一员,也在积极推进自己的数字化转型。作为一个非数字化原生的企业,华为从成立之初开始就经历了最初的分散型企业IT、第二阶段的集中化IT、第三阶段的国际化IT ,自2012年1月邓飚出任华为CIO后提出了基于IaaS、PaaS和SaaS云模式的第四阶段IT 2.0,2016年1月陶景文出任CIO后继续推出数字化变革。2016年,华为数字化转型的愿景是:通过数字化变革,在客户服务、供应链、产品管理、流程与组织等方面全面提升效率,自身率先实现基于ROADS(Real-time、On-demand、All-on-line、DIY和Social)体验,实现达到领先于行业的运营效率与客户满意度。
2018年初,华为发布了新的愿景,要把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界,而华为自身也要去使能这样一个万物互联智能世界的未来。因此陶景文在2018年10月华为全连接大会·数字化华为峰会上强调,“把数字化转型重新定义为华为公司未来转型的唯一任务,打造全联接的智能华为生态,为构建万物互联的智能世界做出努力。”目前,华为正在全面推进“Digital First”数字化战略,并在2021年前实现全联接智能华为,成为行业标杆。同时还将实现两个诉求:对外让华为与用户和客户做生意,简单、高效、安全;对内逐步提升内部的运营、效率和效益,支持公司“多打粮食”,增加“土壤肥力”。
相对于亚马逊和阿里等原生互联网企业的数字化转型、微软等传统软件企业的数字化转型,华为走出了一条独特的硬件产品公司数字化转型之路(华为也有软件业务,但硬件是其主体业务)。华为内部IT从最初的信息化到后来的数字化,再从数字化平台到基于平台的服务化,再到以客户体验为中心的业务与IT合一、甚至IT使能业务这种接近数字化原生企业模式(即“Digital First”),华为将在2021年实现“高速路”上的重生:即所谓“开着飞机换引擎”、“高速路行驶中换车轮”。
华为作为一家非数字化原生的企业:“我们永远不可能让业务停下来,去做公司的数字化转型,我们永远是在进行非破坏式的演进和改造。”2018年底,华为质量与流程IT管理部3300余人,支撑了华为全球18万员工、15万合作伙伴、170多个国家和地区的高效运营,以及2018年历史性的1000亿美元营收大关。
华为从信息化到数字化的五个阶段
2016年,华为营收首次超过800亿美元,华为IT部门在全球170多个国家部署了IT网络、70多个数据中心、800多个IT应用系统、网络带宽达到70GB、云存储的容量达到70PB,在全球有28个客户联合创新中心。伴随着华为业务的高速发展,华为的IT体系一直在应对诸多的战略性挑战。
从华为成立开始,前面十年华为的IT系统主要以Email和MRP II(即物料生产计划管理)为主。1998年到2003年的五年时间,华为IT进入了第二个阶段:从分散走向集中。在这个过程中,华为引进了IPD和ISC,其中IPD为从IBM引进的集成产品开发管理,ISC为集成的供应链管理。围绕这两条业务主线,通过IT集中化对业务提供更好的支撑。关于华为引进IBM咨询进行管理变革的故事,一直为业界所津津乐道:在1998年的时候,华为的一年营收为40亿元,而IBM的管理咨询项目为期五年总价20亿元;到2004年的时候,华为再度斥资20亿元师从IBM,引入了EMT(Executive Management Team,企业最高决策与管理团队)、财务监管二期管理变革等;从1998年到2008年一共十年,华为花费40亿元人民币,引入IBM咨询进行了一次脱胎换骨式的成长。当然,IBM最终收取多少咨询费,这尚未得到华为官方的确认,但40亿元总值的管理咨询,奠定了后来华为的成功。
华为IT的第三个阶段为国际化,从国内IT体系走向全球的IT体系,其中包括100多个国家的ERP上线。以巴西为例,华为巴西ERP系统前后三次上线才成功。其中一个很重要的原因,在于巴西复杂的税制和财务系统,甚至不同的州都有不同的税和通行货票。因此,华为IT的第三个阶段花了差不多近10年的时间,才在全球100多个国家建立起了一张大网,包括网络、OA、ERP等。
2012年1月,时任华为软件公司总裁的邓飚转到质量与流程IT管理部担任公司高级副总裁、集团CIO后,提出了华为IT 2.0。邓飚自1996年加入华为,历任公司网络产品线总裁、软件公司总裁。面对庞大而复杂的IT系统,既要支撑内部公司运营,又要支持对外的业务创新,邓飚调到IT部门后即提出了代表华为IT第四个阶段的IT 2.0。
华为IT 2.0是一个开放的架构,提供一个开放的平台,支撑以人为中心的作战系统。华为IT 2.0的目标是对企业内部实现现金流、物流和信息流的透明可视管理,对外做到公司与客户及合作伙伴的数据共享和高效协同。华为IT2.0针对未来3-5年公司制定的变革目标主要有两点:第一,要建立面向全球的联合作战系统;第二,构建数字化作战平台,提升运营效率。特别是当一线机会来临的时候,要让IT系统能够迅速适应全球市场快速变化的作战场景。为此,华为IT 2.0以云计算和大数据为双轮驱动。
简而言之,华为IT 2.0就是在IaaS层建立全球云化的数据中心、在P层建立一个开放的PaaS云平台、在S层建立以人为中心的IT应用层。在P层,这个PaaS平台主要包括三个部分:H.A.E云平台,华为大量的应用都可通过这个平台承载,支持弹性扩展,并包含了软件包平台和大数据平台。S层则基于应用云,构建以人为中心的作战系统,把IT从支撑功能部门为主导,转换成支撑以流程角色和以人为中心的IT作战系统。
在应用云方面,邓飚领导的IT部门为华为IT 2.0提出了营销三朵云、生产五朵云、研发七朵云以及企业社交云。其中,营销三朵云包括体验云、知识云、方案云,生产五朵云包括销售云、财经云、交付云、供应云、采购云,研发七朵云包括设计云、桌面云、持续集成云、仿真云、测试云、调测云、杀毒云,企业社交云则为基于eSpace的企业协同办公平台。
在华为IT 2.0中结合了人、物和业务协同的趋势,强化了物理世界和数字世界的协同。体验云、知识云、方案云这三朵营销云解决的是全球客户体验一致性的问题,以及人和人、人和知识的连接。当员工在岗位上的时候,知识库里最有价值的知识就会主动推送给员工,让员工在更短的时间里高质量完成任务。
通过华为IT 2.0的实施,华为实现了业务场景化,针对业务场景解构为一个个的业务时刻,然后建立相应业务规则,对应业务规则建立微服务。所谓微服务,就是把以前传统的业务服务解构成微服务,封装在Container/Docker容器里面。这使整个软件架构发生很大的变化,可以更快的响应需求变化,提供更好的服务。
以精准营销为例,华为IT 2.0通过用户标签定义和标签数据,为营销活动提供了精准的用户的画像。用户画像让华为针对潜在客户群体做精准营销,提升线下活动的营销价值。根据相关统计,基于用户画像的营销推广活动,让华为在P8的传播效果提升了10倍、销售效果提升了3倍。
2015年底,邓飚转到华为与西门子通信集团的合资公司鼎桥通信任CEO。2016年初,陶景文出任华为CIO、质量与流程IT管理部总裁。陶景文于1996年加入华为,历任产品开发工程师、市场技术处副总经理、国际行销部常务副部长、南部非洲地区部常务副总裁/总裁、全球行销/营销总裁、终端公司总裁、西欧地区部总裁等职。
华为IT 2.0也就是华为内部IT的云化,从2012年1月开始到2016年1月陶景文接手,历经3年的建设,已经初具规模。从2016年开始,华为IT在云化的基础上,开始以用户为中心,向应用和服务化方向发展。例如,在陶景文主导下,华为IT开发了WeLink华为数字化办公平台。
2017年1月,任正非在华为质量与流程IT管理部员工座谈会上表示:未来五年,华为要自己实现ROADS,实现数字化转型,在研发、销服、供应等业务领域要率先实现ROADS体验(实时、按需服务、在线、自助、社交化连接)。任正非当时还强调:“过去几年,质量与流程IT支撑了公司业务的高速发展,取得了一些成绩,比如:建成了覆盖全球业务的网络,构建了8个100ms业务圈,建立了IT服务质量承诺,接受业务监督;通过 “三朵云” 部署,面向客户首次实现体验式营销;结束区域站点存货无法盘点历史,中心仓存货的帐实准确率99.89%,站点存货的帐实一致率98.17%;业务对流程IT的满意度达到87.22分历史最好,IT需求端到端交付周期也下降了3倍……”他还对未来提出了三点要求:一、变革和IT也要聚焦,减少变革项目数量,IT不能遍地开花。每增加一段流程,要减少两段流程;每增加一个评审点,要减少两个评审点。二、主业务流程和能力解耦,能力模块化、微服务化是方向。三、未来五年,华为要自己实现ROADS,实现数字化转型,变革与lT要在夯实IPD/ISC/LTC/IFS的基础上围绕这个目标来展开。
WeLink:体验数字化华为
为提升员工协同效率,提供一个更简单、高效的办公体验,华为于2016年5月正式成立了Huawei Works(WeLink)变革项目,旨在用3到5年时间,完成Digital Workplace数字化转型,支撑线上线下精兵作战和跨企业团队协同合作,率先在内部面向员工提供ROADS办公体验。
短短几个月的时间,华为从产品规划到开发再到最终验证成功,Huawei Works项目于2017年1月1日发布华为全连接平台WeLink。相对于原有的办公模式,WeLink实现各种办公应用之间的融合,通过建立与团队、知识、业务、办公装备的连接,打破内外协同边界,构筑简单、安全、高效的极致办公体验。
此前,由于华为采用的是“烟囱式”开发模式,留下了很多集成较差、体验不一致的移动应用:即时聊天、待办审批、邮件处理等等各个功能都有单独的APP,造成员工日常办公需要打开多个应用;同时,员工在与客户、合作伙伴等交流时,主要还是依赖于传统线下会议、电话、邮件等,效率相对低下;会议室、开放区等办公区域,硬件装备数字化能力低,无法提供跨地域、跨语种和跨终端的无缝远程协同。
WeLink由华为质量与流程IT管理部·办公应用装备部部长王俊负责开发,他在2018华为全连接大会·数字化华为峰会上分享:华为内部希望能率先实现、构建一个数字化的全新的华为。而数字化有三个目标:构建一个强大的IT数字平台、体验更好、效率更高。所以,如果从这三点出发用三个公式对WeLink总结,就是:面向用户体验,即构建最简单的用户连接,不需要用户思考,实现1+1=2;面向企业效能,即如果一个华为员工使用WeLink解决方案,就能够感受到11个人华为人,甚至华为集团所有的知识,这样就能更好的服务于客户,服务于全链接的数字世界,这就是1+1=11;希望构建一个全链接的数字平台,即1+1=1,结果的“1”就是一切。
华为的办公平台经历了4个阶段发展,从最初的Notes到Web和移动,再到今天的数字化办公,每个阶段都有鲜明的时代特征。而在数字化办公阶段,相对于前三个阶段的变化在于:1、过去全部围绕以功能为中心,新上一个功能就是一个里程碑,但最后发现技术的里程碑赶不上用户的口碑,所以数字化办公阶段转变为以用户为中心、体验驱动;2、过去做了很多IT项目,上线了很多新功能,但上线以后就不再关注有没有用户用、用的好不好、能否变得更好,所以数字化办公阶段就转变为关注有没有解决用户问题,解决了什么问题;3、过去业务需求客观存在,信息化从零到有、从少到多、从多到更多,华为IT为业务部门开发了很多APP...
?教程 | 斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比
巫怡
展开
作者:李飞飞等机器之心编译参与:Smith、蒋思源
斯坦福大学的课程 CS231n (Convolutional Neural Networks for Visual Recognition) 作为深度学习和计算机视觉方面的重要基础课程,在学界广受推崇。今年 4 月,CS231n 再度开课,全新的 CS231n Spring 2017 仍旧由李飞飞带头,带来了很多新鲜的内容。今天机器之心给大家分享的是其中的第八讲——深度学习软件(Deep Learning Software)。主要内容有:CPU 和 GPU 的对比;深度学习框架简介;TensorFlow 和 PyTorch 的实例;以及各种深度学习框架的比较。
一、 CPU 和 GPU
CPU:核芯的数量更少;
但是每一个核芯的速度更快,性能更强;
更适用于处理连续性(sequential)任务。
GPU:核芯的数量更多;
但是每一个核芯的处理速度较慢;
更适用于并行(parallel)任务。
二、深度学习框架简介
去年我们还仅有 Caffe、Torch、Theano 和 TensorFlow 这些深度学习框架可供使用;但是到了今年,在此基础上我们又新增加了 Caffe2、Pytorch、TensorFlow、PaddlePaddle、 CNDK、MXNet 等等一系列新的框架,可谓「百花齐放」。如今最常用的框架当数 Pytorch 和 TensorFlow 了, 而 Caffe 和 Caffe2 次之。
深度学习框架的关键点在于:
(1)易于建造大型的计算机图形;
(2)易于在计算机图形中进行梯度计算;
(3)能在 GPU 上高效运行(cuDNN, cuBLA 等)
三、TensorFlow 简单实例
下面我们将详细说明一个在 TensorFlow 下训练神经网络的简单实例:即用随机数据训练一个两层的网络,激活函数为 ReLU。
a. 定义计算机图形:
1. 为输入 x,权重系数 w1、w2, 和目标函数 y 创建 placeholder:
2. 定义前向传输:这是为了计算 y 的预测值和误差损失(loss);实际上这里是没有计算过程的——仅仅是为了创建图形!
3. 告诉 Tensorflow 去计算关于 w1 和 w2 的梯度损失;这里仍然不产生计算过程——仅仅是为了创建图形。
b. 运行
现在已经完成了创建图形的步骤,所以我们进入对图形进行运算的部分。
创建 Numpy 数组,这个数组将会被填进上方的 placeholder 中。
对图形进行运算:将 x、y、w1、w2 输入到 numpy 数组中;得到关于损失(loss),w1 梯度和 w2 梯度的 numpy 数组。
训练网络:反复对图形进行运算,用梯度(gradient)来更新权重(weights)。
把 w1 和 w2 的相应函数从 placeholder() 改为 Variable()。
添加 assign 操作来更新 w1 和 w2(图形的一部分)。
对图形进行一次运算来初始化 w1 和 w2,然后进行多次迭代训练。
完整代码如下:
但是产生一个问题:误差损失(loss)并没有下降!这是因为 Assign 指令实际上并没有被执行。
这时我们就需要添加虚拟图形节点,并且告诉图形去计算虚拟节点。
可以使用 optimizer 来计算梯度和更新权重系数;记得要执行 optimizer 的输出!
使用预先定义的常用损失函数:
使用 Xavier 进行初始化;tf.layer 会自动设置权重系数(weight)和偏置项(bias)!
c. 高级 Wrapper——Keras
Keras 可以理解为是一个在 TensorFlow 顶部的 layer,它可以让一些工作变得更加简单(也支持 Theano 后端)。
把模型目标定义成一系列的 layer :
定义优化器目标(optimizer object):
创建模型,明确规定损失函数(loss function):
仅用一行代码就能训练模型!
除了 Keras, 还有一些其他类型的高级容器(Wrapper)可供使用:
四、PyTorch 实例
PyTorch 是 Facebook 推出的深度学习框架,不论是在工业界还是学术界,它都得到了广泛的应用。它包括三个等级的抽象概念:
张量(Tensor):命令式的多维数组对象(ndarray),在 GPU 上运行;变量(Varaible):计算型图形(computational graph)的节点;用于存储数据和梯度(gradient)模块(Module):代表一个神经网络层;可以存储状态(state), 也可以存储可学习的权重系数(learnable weights)
PyTorch 和 TensorFlow 中抽象概念的等价对应关系:
a. Pytorch 中的张量(Tensor)设置
PyTorch 中的张量就像 numpy 中的数组,但是这些张量可以在 GPU 上运行;
这里我们用 PyTorch 的张量设置了一个两层网络:
下面我们来分步解读:
1. 为数据和权重(weights)创建随机张量:
2. 设置前向传播:计算预测值(prediction)和损失(loss):
3. 设置反向传播:计算梯度(gradients):
4. 梯度下降(Gradient descent)和权重(weights)相对应:
5. 为了在 GPU 上运行,将张量(tensors)设置为 cuda 数据类型:
b. PyTorch 中的 Autogradient 设置
PyTorch 的张量(Tensors)和变量(Variables)拥有相同的应用编程接口 API。变量(Variables)可以记忆它们是怎么产生的(因为反向传播的缘故)。
下面仍进行分步解读:
1. 我们不希望(损失 loss 的)梯度和数据(data)有相关性,但我们希望梯度和权重(weights)是相关的。相关设置如图:
2. 这里的前向传播看上去和上述张量(Tensor)的对应版本很相似,但是需要注意的是现在这里全部都是变量(variable)。
3. 计算损失函数对 w1 和 w2 的梯度(开始的时候梯度置零):
4. 让梯度和权重(weights)相对应:
C. 定义新型 Autograd 函数
通过张量的前向和反向传播来定义你自己的 autograd 函数:
可以在前向传播中使用新的 autograd 函数:
d. PyTorch 中的神经网络(nn)设置
用更高级的「容器」(wrapper)来处理神经网络(neural nets), 和 Keras 相似。完整代码如下:
下面进行分步解读:
把我们的模型定义成一系列的 layers:
也要定义常用损失函数:
前向传播:给模型输入数据;给损失函数(loss function)输入预测信息(prediction):
反向传播:计算所有的梯度(gradients):
让梯度和每一个模型参数对应:
下面我们添加一个优化器(optimizer):
在计算完梯度以后对所有的参数(parameters)进行更新:
E. PyTorch 中的神经网络——定义新的模型
Pytorch 中的模块(Module)其实是一个神经网络层(neural net layer),需要注意它的输入和输出都是变量;模块(Module)中包含着权重 (当作变量处理) 或者其他模块;你可以使用 autograd 来定义你自己的模块。详细代码如下:
下面进行分步解读:
1. 把我们的整体模型定义成一个单一的模块:
2. 用初始化程序来设置两个子模块(一个父模块可以包含子模块)
3. 用子模块和变量上的 autograd ops 定义前向传播;不需要定义反向传播——因为 autograd 会作相应处理:
4. 创建并训练一个模型实例:
E. PyTorch 中的资料存储器(Dataloaders)
资料存储器(DataLoader)包括一个数据集 (Dataset),而且给你提供了小批量处理(minibatching),「洗牌」处理(shuffling)和多线程处理(multithreading);当你需要载入自定义数据(custom data)时,写下你自己的数据集类型(dataset class)就可以了。
通过遍历存储器(loader)来形成小批量(minibatch);存储器会给你提供张量(Tensors), 所以你需要将其「打包」(wrap)进变量中:
注意:使用带有 torchvision 的预先训练好的模型(pretrained model)将会更加简单易行。
F. Torch 和 pytorch 的简单对比
结论:尽量使用 PyTorch 来做你的新项目。
五、Caffe2 简介
六、深度学习框架之争,究竟谁更胜一筹?
其实具体选择何种框架来进行深度学习取决于我们要做什么。在参阅相关文献之后,我们大致可以得出以下结论(仅供参考):PyTorch 和 Torch 更适用于学术研究(research);TensorFlow,Caffe,Caffe2 则更适用于工业界的生产环境部署(industrial production)。
Caffe 适用于处理静态图像(static graph);Torch 和 PyTorch 更适用于动态图像(dynamic graph);而 TensorFlow 在两种情况下都很实用。
Tensorflow 和 Caffe2 可在移动端使用。
附主要参考文献CS231n_2017_Lecture8,链接可直接下载PPT:
http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture8.pdf
其他参考资料:
http://203.187.160.132:9011/dl.ee.cuhk.edu.hk/c3pr90ntc0td/slides/tutorial-caffe.pdfhttp://203.187.160.132:9011/dl.ee.cuhk.edu.hk/c3pr90ntc0td/slides/DL_in_Action.pdf
?四川大学学霸:期末考试你这样复习,肯定能拿高分,建议收藏!
格洛斯特
展开
期末来啦,期末考试列队而至,你的状态是怎样的?胸有成竹?抑或,痛苦挣扎?
此阶段,复习为第一要务。那如何复习才能取得好的效果呢?大川此条推送绝对值得认真阅读,我们在全校范围搜罗真·学霸,整理出川大专属《学霸复习高招》。
无论你是文理工医哪一门,请让“学霸高招”带你学得更好!
课堂记忆法
李雪凤:2015级高分子科学与工程
绩点 3.72
均分 90.13
连续获得三年国家奖学金,是四川省优秀毕业生、四川大学优秀学生干部,获2018年“创青春”四川省大学生创新创业大赛银奖。
上课要清醒、亢奋!
我上课的时候会让自己处于一种很清醒、很亢奋的状态,一边学习一边记忆,基本做到下课时能记住课堂内容的70%以上。如何做到?让自己手里一直握着笔是种很好的方法,因为这样会给自己一种马上要开始记东西的感觉。听课不仅听的是课本知识,还有老师们运用知识的思路。
了解自己的生物钟提高复习效率。
复习的时候我会根据自己的生物钟来制定复习计划,一般上午刷题,下午复习课本和PPT,晚上记忆力最好,就用来背知识点。
好记性不如烂笔头。
我坚信这一点,所以我的书上一般全是笔记,期末复习也会选择通篇筛选知识点,写满几页A4纸。
(李雪凤的笔记~)
思想境界复习法
胡恒昌:2015级软件工程
绩点 3.78
均分 91
专业成绩连续三年排名第一,获得第三届四川省互联网+大学生创新创业大赛金奖、“英特尔杯”全国大学生软件创新大赛全国三等奖等多种奖项,曾赴美国加州伯克利大学交流、新加坡国立大学Computer House学习,并且以第一作者身份发表一篇IEEE论文。
想想毕业要拿成绩说话时的场景!
给大家分享一下我的思想境界学习法~具体而言就是在当前的时间点,设想现在做什么事以后某一天想起来不会后悔。比如期末那一周如果不好好复习,肯定会觉得大学结束要用成绩的时候贼后悔。
学会让自己放松。
打游戏弹吉他踢球whatever,能让自己恢复到最爽的状态就行。状态好了才好学习。
给自己创造动力。
如果主观不能克服的惰性,就要通过利用外界因素,客观因素来逼自己。比如打个赌,找个女朋友……,可以激发自己的就行,不给自己太多压力,但一定要给自己创造动力。
积累学习法
翁星宇:2016级英语
绩点 3.88
均分 93.78
两年综合排名专业第二,获得两次国家奖学金,专业四级成绩为优秀,英语六级考试600+,并拿到三级翻译专业资格证书。
学英语,平时积累、记忆很重要。
积累,不一定是每天都要看英语电影或者新闻,虽然这样做本身是好的,但更重要的是对知识的吸收,要把很好的表达写下来并且记忆。不一定要看很多,但是一定要去记。
每天精听很有效果。
听力方面,每天专门精听一小节会有效果的,大概1~3分钟。一定要听到确定自己每个词语都知道,精听之后发现有明显的提升。
专注于英语课本。
如果平时学习很忙,专注英语课本也很好。把课本中有用的或者自己觉得新颖的地方记下来,平时有意识地去使用,用得多了自然就记住了,这样期末复习也不会很紧张了。
免打扰复习法
罗梓梦:2015级化学工程与工艺
绩点 3.784
均分 90.74
专业排名第二,连续两年国家奖学金,曾获全国互联网+反应工程课模设计一等奖、全国大学生化工安全设计比赛优胜奖等奖项,大学生创新创业项目国家级负责人,获得清华大学化工直博预录取名额。
学习时候不上网!
从大一开始,我就习惯了在图书馆二楼某区域自习,我会在特定的时间,关闭网络(如果有急事,朋友们都是会打电话),然后让自己真的全心静下来学习,那个时候效率真的很高。
复习先看知识点。
复习的时候我是先看知识点,把书过一遍,用A4纸记录里面的知识点。如果有不懂的、自己没办法解决的就打问号去问老师。每一章看完后再看看课后习题,不一定要做,看到题能对应想起来知识点就行。
把自己放在一个屏蔽外界的小空间里 。
有些人是没办法一心二用的,但我学习的时候就一定要听歌,我不会去注意音乐的内容,那个声音并不会影响我的思考,反而能让我避开其他的杂音,就仿佛把自己放在一个屏蔽外界的小空间里。
(罗梓梦在复习时写满的A4纸)
慢慢渗透复习法
丁雨杭:2015级法学
绩点 3.8
均分 92.58
专业必修排名第一,日语N1,雅思7.5,曾前往台湾政治大学交换学习,获亚洲华语辩论赛省最佳辩手、全国英语奥林匹克竞赛一等奖。
背诵所到达的理解程度远不如慢慢渗透来的深
文科类学习平时的积累和理解最重要。考前突击也不是不行,但是背诵所能到达的理解程度远不如慢慢渗透来得深。
日常专业课我会统一用一个或者两个周末的半天预习好下一周的内容,包括基本概念的理解和涉及案例的熟悉等等。平日里也会每天用一个小时的时间复习一下当天老师讲过的重点内容、整理笔记、查漏补缺或者扩展兴趣点,和老师们交流一下。
考前复习最重要的就是专心。
我比较喜欢进图书馆就把手机关飞行丢进包包里,或者用一些软件控制学习和休息的频率。
高热量食品有助于保持复习阶段的好心情。
文科生要接受考前短期记牢大量知识的辛苦,做好充分的心理准备和时间安排,可以多吃高热量食品来保持好心情。
高考复习法
吴蕾:2015级生态学
绩点 3.87
均分 93.11
获得两次国家奖学金,是4次大创校级重点项目立项人,获得“美丽生命创意设计大赛”二等奖,担任院学术社团“自然讲堂”会长,参与自然博物馆志愿服务81小时。
期末时和高考一样,分三轮复习。
我一般是提前两个月开始。和高考一样,分三轮复习。第一轮:详细地过一遍课本/课件(有的老师讲的内容和课本差别很大,此时的复习重点就在课件里),梳理知识点,强化知识体系。第二轮:刷题,感受哪些知识点是考试的重点内容,同时也补充一些细节的知识点。第三轮:专题复习,结束刷题后,根据不同的知识模块有针对性地复习。
利用好整块的时间,换学科复习也是休息。
必须拿出整块的时间来复习,如一个上午或一个下午。零散的复习时间会导致思路被不断打断。换一门学科复习也是一种休息,注意力高度集中一小时以后,人的思维会很疲惫,此时更换学科可以让大脑重新活跃起来。
习武复习法
陆辰皓:2015级数学与应用数学
绩点 3.83
均分 92.45
托福成绩106,GRE328+4,英语六级613,获得一次综合一等奖学金,两次国家奖学金,全国大学生数学竞赛专业组四川赛区一等奖等多种奖项。获得清华大学五道口金融学院直博预录取资格。
练好内功,学好招式!
针对数学这门学科的学习而言,我一直很喜欢一个类比:如果把学数学比作是习武,那对严格的数学理论的理解相当于在练内功,而对各种解题技巧的学习,尤其是刷题,相当于在练招式。内功和招式当然都十分重要,但往往前者很容易被忽略。
回归课本,看题比做题效率更高。
考前复习,我觉得最重要的是回归课本,争取把课本上的所有定义定理推论证明都彻底搞清楚。一定量的习题训练是需要的,尤其是某些计算量较大的科目。至于难题,从备考角度而言,也许“看题”会比“做题”效率更高。不纠结技术性的细节,而是把握总体的思路,尤其是那些新的、自己不太熟悉的思路。
好心态复习法
叶俏欣:2016级 会计学
绩点 3.89
均分 92.27
英语四级成绩665,英语六级成绩635,获得“创青春”网络信息专项赛国家级银奖、大学生节能减排竞赛国家级三等奖、“创青春”四川省金奖、四川省互联网+大赛银奖等奖项。
对于学习,很重要的是心态。
学习,心态很重要,要学会接纳自己。我们学习是会面临很多困惑,比如说“早上有时候学习的时候效率很低”“高数就是学不进去”,有这种困扰的时候请不要烦。
现在的社会让我们接受了太多太强大的信息了,动不动就是清华特奖啥的,普通人也有普通人的活法嘛。要知道,效率低的时候就别看了去玩一会儿吧,高数学不进去就别怕丢脸多去问问别人。
多花一些时间也没关系。
如果可能很难保证每段时间的学习效率最大化,那就只能多花一些时间。真的有人期末冲刺一晚上就能达到别人好好复习了一周的效果,但是这有什么关系?这个世界终究是“功不唐捐,玉汝于成”的。只管努力就好。
多向懂的人请教。
多去问问学长学姐,请教一下他们的学习经验。学长学姐也许能够帮你指明一个复习的方向,让你对考试科目的考核内容更明确一些,能够让你在复习的时候达到事半功倍的效果。
分类复习法
朱亦宁:2015级药学
绩点 3.75
均分 90.05
托福成绩101,GRE325,四川大学优秀学生,获得2018年唐立新奖学金,连续三年获得国家奖学金,四川大学学院学生会优秀主席,优秀共青团干部。
记忆类的提前背。
比如解剖、生理、免疫等等,我会提前一个月开始在电脑上整理书上的笔记,把知识点都打在word上。然后整理完后开始背诵。有的人认为整理知识点很浪费时间,但我认为整理知识点不是浪费时间,相反它在帮助我理清楚教学内容的框架。
数理化类多刷题。
这类的学科公式较多,我一般整理公式,随后刷题,让自己能够熟练地使用这些公式解题。化学类同理就记忆反应公式,刷题。这种科目更加强调理解。
政治类的要扩展。
这类科目对于理科生的我,比较枯燥。我在考试前认真看一遍书,特别是马原,考试前读两遍,多看一些时政新闻。
(朱亦宁的复习安排表)
由难到易复习法
王鑫:2015级水利水电工程
绩点 3.705
均分 90.471
曾获得国家励志奖学金、国家奖学金、张光斗奖学金、感恩中国近现代科学家奖学金,四川大学百佳学生,四川省优秀毕业生,目前已保研到清华大学水利水电工程系。
一次性集中结束一个学科!
首先要明确任务,有几门课,每门课大概需要多少复习时间,这样排下来可以明晰自己需要提前多久开始复习。我个人喜欢一次性集中结束一个学科,先解决最难的,再准备轻松的。当然,井然有序的复习中也需要安排一些灵活的休息时间。
用不同的颜色笔来复习。
在总结知识点的时候要细致一些,复习记背的时候用红笔自己再勾画一些重点背。有的知识点只需要理解,有的需要精准记忆,因此我作笔记喜欢用铅笔,黑笔和红笔来区别重要程度。
刷题后,对不懂的要多请教。
针对工科方面数学和力学的学习,要先梳理一下这门课的知识点,然后每一章节做相应的习题册。在练习过程中遇到不懂的地方,一定要去请教同学或老师,因为刷题本身就是一个查漏补缺的过程,如果遇到不懂的不去搞清楚,最后做完题目也达不到效果。
(王鑫的复习笔记)
思维导图复习法
金泓宇:2015级临床医学
绩点 3.86
均分 91.29
综合成绩连续三年专业第一,英语四级679,英语六级652,托福109,连续三年获得国家奖学金,并曾获唐立新奖学金、首届华西英才特等奖,在审及发表论文21篇,其中SCI论文15篇,在审及获批国家发明专利8项。
对于每一门学科的知识要理清楚层次关系。
我个人比较习惯用Xmind这一款思维导图。做一个思维导图也有利于分层次记忆知识,记忆的时候思路非常情绪,也可以把近60页的一个章节概括到一张流程图,有利于第二次复习。
多做一些练习题。
不仅仅要做比较简单的A1型题,也需要多做一些具有难度的A2、A3等题型。因为记忆的东西太多了,必须有一个模式可以检验自己对知识的记忆状况,这个时候做一些往年的考研或者是执业医师考试的题目就显得比较重要了。
分清学科的特点,间插安排各学科的复习。
某些课程是记忆类课程,某些课程是逻辑类课程。某些记忆类课程需要长时间记忆,某些学科只需要短时间的记忆。分清楚这些学科的特点有利于制定良好的复习计划与进度。
(金泓宇的肺源性心脏病复习思维导图)
想多一点复习法
刘丹:2015级社会工作
绩点 3.8
均分 91
曾获国家奖学金、华图奖学金、全国城市管理大赛一等奖、“互联网+“省级金奖,曾发表一篇中文核心期刊论文,且参选国家级学术会议2次,目前保送中国人民大学社会学专业。
多做一些发散性的思考。
对于社会科学,很多同学会狂背书,但是我的建议是在复习的时候回想一下案例或是发散思维,能够有一部分自己的 critical thinking 。大学考试更多的时候是思维训练,社会科学也会出很多没有标准答案的考题,在考场上硬想,在紧张的状态下其实是不利于发挥的,所以多做一些发散性的思考。
复习阶段也要学会放松。
给自己一点点时间休息,疲惫期我就比较喜欢跟朋友和家人倾诉,...
?线性代数与张量?这本开放书籍帮你扫清通往ML的数学绊脚石
人英
展开
机器之心编辑
参与:思源
数学是机器学习的基础。斯坦福大学教授 Stephen Boyd 联合加州大学洛杉矶分校的 Lieven Vandenberghe 教授出版了一本基础数学书籍,从向量到最小二乘法,分三部分进行讲解并配以辅助资料。此外,这本书也是斯坦福 EE103 课程、UCLA EE133A 课程的教材,由剑桥大学出版社出版(允许网络公开)。
项目地址:https://web.stanford.edu/~boyd/vmls/
这一本书的资料还是比较齐全的,除了本身 473 页的教材,还有另一本 178 页的对应代码讲解。当然如果读者只需要了解数学部分的话,代码部分是不需要了解的。但是如果比较关注线性代数的应用,可能就需要阅读这些基础代码,并顺便学一学 Julia 语言了。最后,这一本书还提供了对应的课程 PPT,读者也可以把它们作为辅助资料。
书籍简介
这本书旨在介绍向量、矩阵和最小二乘方法等应用线性代数的基础内容,它的目标是为只有很少或根本没有线性代数基础的初学者提供入门方法,包括线性代数的基本思想以及在数据科学和机器学习等领域的应用方法。
不过读者还是需要熟悉一般的数学符号,并且在一些地方也会用到微积分,但它们并不起关键作用,因此基本上以前学过高数就差不多了。这本书包含了很多传统概率论与统计学所讨论的话题,例如使用数学模型拟合数据等,但读者不一定需要这一方面的背景知识。
这本书比一般的应用线性代数课本要有更少的数学成分,只会详细介绍基本线性代数、线性独立性等理论概念,以及 QR 因式分解这一计算工具。而这本书讨论的大多数机器学习等方面的应用只会使用一种方法,即最小二乘法及其扩展。在某种意义下,该书更强调的是应用,即依赖于少量基本数学概念和方法,而覆盖大多数应用。但是这本书所呈现的数学是完整的,因为它会仔细证明每一个数学声明。然而,与大多数介绍性的线性代数课本相比,这本书描述了许多实际应用。包括一些通常被认为是高级主题的应用,如文档分类、状态估计和投资组合优化等。
这本书并不需要任何计算机编程的知识,因此可以作为传统的教学课程,我们只需要阅读对应章节并完成一些不涉及数值计算的练习题就行了。然而,这种方法会并不能使我们完全理解这本书,同时也得不到实际锻炼,例如我们可以使用这本书的观点与方法构建一个基于数据的预测模型、增强图像数据或优化投资组合等。随着计算力的不断增长,以及 NumPy 等高效矩阵运算库的发展,这本书中的描述的方法可以轻松地应用到实践中。因此读者还可以使用 Python 等编程语言练习不同的项目而补充学习资源,只有使用真实数据搭建应用才能真切地理解理论思想。本书提供了一些需要数值计算的练习题,且数据文件与编程语言的资源都可在线获得。
这本书主要分为三部分。第一部分介绍了向量及各种向量运算和函数,例如加法、向量内积、距离和角度等。本书还展示了如何使用向量表示文档中的词数、时间序列、目标属性、产品规格、音频数据和图像等。第二部分如同前一部分重点关注矩阵的概念与应用,包括矩阵的求逆和解线性方程等。第三部分介绍了最小二乘法,它不仅展示了如何简单而自然地近似求解一个超定方程组,同时还有一些可应用到很多方法的最小二乘扩展知识。
该书还可用于自学,并辅以在线提供的资料,例如下面这份 470 页的 PPT。
地址:https://web.stanford.edu/~boyd/vmls/vmls-slides.pdf
按照设计,本书的进度会逐渐加快,也就是说第一部分和第二部分有许多细节和简单的例子,第三部分有更多高级的例子和应用。对于只有很少线性代数基础或根本没有的读者而言,课程可以侧重于第一部分和第二部分,并且仅简单了解一些更高级的应用。而熟悉背景知识的读者可以快速过一遍前面两部分,并将重点放在最后的应用部分上。
除了线性代数等数学基础,这本书还介绍了很多机器学习应用,包括比较流行的 K 均值聚类等。而这些机器学习算法主要都介绍了数学表现形式和伪算法,并不涉及具体的代码,读者可另外查看这本书的配套代码实现。这本书提供的了基于 Julia 语言的配套代码!
下面我们将简要介绍聚类这一方面课本内容与对应的 Julia 代码。聚类也就是说将同类的无监督数据聚在一起,它的目标函数可以简单地定义为各样本到对应聚类中心的距离和。如果这个距离和非常大,那么聚类的效果就不好,我们会希望通过最优化算法最小化这个距离。在这本书中,距离可以定义为:
而 K 均值聚类会更形象地利用图像展示聚类效果,下图展示了 K 均值聚类迭代一次的更新过程:
而这一更新过程会有对应的为代码:
除了这些基础内容外,这本书还会展示很多可视化内容以帮助理解理论知识,例如展示了最终聚类结果的图 4.4 和展示了损失函数下降趋势的图 4.5:
当然,K 均值聚类还提供了对应 Julia 实现,如下展示了实现该算法的代码,读者在学习这本书的同时还能顺便学学 Julia 语言。
function kmeans(X, k; maxiters = 100, tol = 1e-5)if ndims(X) == 2 X = [X[:,i] for i in1:size(X,2)]end; N = length(X) n = length(X[1]) distances = zeros(N) reps = [zeros(n) for j=1:k] assignment = [ rand(1:k) for i in1:N ] Jprevious = Inf for iter = 1:maxitersfor j = 1:k group = [i for i=1:Nif assignment[i] == j] reps[j] = sum(X[group]) / length(group);end;for i = 1:N (distances[i], assignment[i]) = findmin([norm(X[i] - reps[j]) for j = 1:k]) end; J = norm(distances)^2 / N println("Iteration ", iter, ": Jclust = ", J, ".")if iter > 1 && abs(J - Jprevious) < tol * J return assignment, repsend Jprevious = Jendend
最后,这本书的对应代码和数据都可以在 GitHub 中找到:https://github/VMLS-book。
对应与比较ppt
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
初入新手村 — 演示者视图的操作步骤 0102
-
初入新手村 — 鼠标的交互的方法 0103
-
初入新手村 — 如何快速访问工具栏 0104
-
初入新手村 — 文件选项卡、保存等基础 0105
-
第二关 :内容整理与处理 — 导航区操作技巧 0201
-
第三关 :文字工具与段落 — 如何给你的文字加特效 0301
-
文字工具与段落— 段落工具使用 0302
-
第四关:绘图与形状效果 — 基本形状的绘制方法 0401
-
绘图与形状效果 — 给你的图形加特效 0402
-
绘图与形状效果 — 快速排列多种图形 0403
-
第五关:合并形状与图标 — 用好合并形状轻松获得更多创意图形 0501
-
第六关:图片的神奇 — 教你PPT如何实现抠图 0601
-
图片的神奇 — 使用图片裁剪让图片为你所用 0602
-
第七关:表格与逻辑图表 — 教你画一个简洁大方的表格 0701
-
表格与逻辑图表 — SmartArt快速生成逻辑图表 0702
-
表格与逻辑图表 — 一招SmartArt走遍天下 0703
-
第八关:形象化市场数据 — PPT中数据图表怎么做?0801
-
形象化市场数据 — 教你做好看的条形图和柱状图 0802
-
形象化市场数据 — 饼图的美化技巧 0803
-
第十关:终成商务演示高手
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101