章闻铎说道:“这个问题我也想到了,传统的方法肯定是等一个batch(批次)的训练都跑完,新参数更新回模型,再跑下一个batch,但那是一般的模型,长程任务不够多,也不够长。像我做的这个实验,用这种传统算法,平
均下来计算卡利用率只有百分之二十多。”
百分之二十多,赵文渊在心里复述了一下,现在汤圆的后训练任务,平均利用率大概是百分之四十多,两者相差一倍。
章闻铎左右看了看,没在赵文渊的桌子上找到纸笔,干脆把自己的设备申请表翻过来,从裤兜里掏出一只圆珠笔,在上面写了起来。
“院长你看,这个是我想出来的新架构。”
他在纸的中心画了一个圆,两侧各有两排小人,一排写着Actor(行动者),一排写着Learner(学习者)。中间的圆则是经验池。
在传统的学习方法中,行动者全部行动完之后,会得到一批结果,学习者把这些结果更新到原本的模型中,行动者再基于新版本的模型进行行动。
就这样模型、行动者、学习者、模型、行动者、学习者反复执行,一直到最后的结果达到相对最优,没有进步的空间,就算是完成了训练。
而在章闻锋的新架构里,行动者和学习者并不互相等待,行动者一直在行动,行动完之后把结果放到经验池,学习者则在经验池有足够的数据之后就把经验更新回模型。
“你是说,放弃同步策略,改用异步策略?”
章闻铎讲完之后,赵文渊已经懂了。
所谓同步,就是你走一步,等你走完,我再走一步,大家不会同时走。好处是数据永远同步,坏处是慢。
而异步就是我走了告诉你一声,你也可以走,等你走完再告诉我一声,但你走的同时我还在走。好处是快,坏处是数据会乱。
在传统的编程领域,同步和异步各有好处。
但是在机器学习领域异步的应用远远不如同步的应用,因为大多数时候,准确率要比速度重要的多。
谁也不想飞快地训练出一个傻瓜模型,那没有任何意义。
赵文渊心里想了一下,说道:“还是刚才的老问题,新一轮的行动已经开始了,用的却是老的模型,这中间造成的偏差怎么办?”
章闻铎说道:“在我的这个实验里,每个行动结果的重要性不是完全相同的,大部分结果其实没那么重要,真正重要的几个结果,我已经提前标出来了,只要在训练的过程中,这几个关键步骤被更新,其他的步骤就算被跳
过,对最终结果的影响也不太大。”
“效果怎么样?”赵文渊问道,他的声音已经不自觉提高了几分。
“运气好的时候能跑到百分之八十多。”章闻铎说道,“但运气不好,长程任务把所有的Actor都占了,大家一起陷入等待,这个策略就失效了,所以我才来申请多几张卡。”
赵文渊愣了一下。
八十多?
如果计算卡的平均利用率能从百分之四十提到百分之八十,那训练时间至少能缩短百分之三十。
至少!
“章博士,你说的准确率不会受影响,大概会影响多少?更新的关键步骤怎么标注?”赵文渊急切地问道。
“额,我——”章闻铎被赵文渊的状态吓了一跳。
我不是来申请卡的吗?怎么突然这么细?实验数据都在我电脑里啊。
赵文渊也意识到这些细节估计章闻铎一下子讲不清楚,他站起身,说道:“走,章博士,去你那看看实验数据,还有训练框架的代码。”
章闻铎也愣愣的站起来,还有点儿搞不清状况。
“那,院长,我那六十四张卡———————”
“要是真有你说的那么好,六十四张卡我肯定给你挤出来,我一会给你电子批,现在先去你工位。”
赵文渊风风火火地走了出去。
章闻铎回头看了看,把桌子上那张背面画着水池和小人儿的申请表拿了起来,也跟着赵文渊出门了。
广告位置下