深夜的宿舍内,只有三人起伏的鼾声。
齐凡逛遍外网各大技术论坛,还有各类论文数据库,以及各种大小期刊数据库。
他发现一个可悲的现实--没人想过要用gpu来跑深度学习模型。
所谓的深度学习,就是n层神经网络的叠加。就好比是千层糕,每一层神经网络就相当于千层糕中的一层。于是一层又一层的神经网络叠加,这块千层糕就越来高。相对来说,就是神经网络的深度越来越深。
因此,采用多层神经网络的模型才会被称为深度学习模型。
而神经网络层数越多,模型的深度越深,势必就会带来运算量的增加。
虽然深度学习的概念早就被提出了,可是碍于cpu运算能力的限制,也就是碍于硬件能力的限制,一直没得到长足发展。
齐凡好奇。既然cpu的运算量能力不足,那干嘛不上超算,搞它个一堆cpu。众人拾柴火焰高,几百个cpu一块运算,就不信这还不够。
正在他好奇之间,脑海中的系统面板有了变化。
【任务--开启并行计算。奖励:经验、积分、一次中级转盘奖励。】
齐凡嘴角邪魅一笑。他如今对这系统的尿性已经有十足了解。每当自己接触新东西时,就会触发这系统的提示。
既然眼下系统提示了,那说明自己的路子就是正确的。
并行计算?多核cpu还是用gpu?
齐凡查了下多核cpu的现状。除了那些被当成国之重器的超级计算机,一般的服务器撑死了十几个cpu就不得了了。
这系统不可能指引自己去碰超级计算机的,因为那玩意儿根本就不是如今的自己能触碰的。况且这任务的奖励是一次中级转盘,从奖励来看也不是难于上青天的任务。
那也就只有两种可能。用多核心服务器或者是用gpu。
齐凡先查了下cpu和gpu的运算原理。cpu和gpu相比,前者更像是串行计算,就是一条条数据排着队一次被cpu处理。而gpu则不同,它可以让格式雷同的数据,排排站手牵手并排地被它处理。
多核心的cpu本身并未改变cpu的计算方式,只是相当于多找了些帮手。一个核心的cpu就是一個帮手,多核心cpu相当于一群人一起干活,但是每个人干活的方式却并未改变。
那答案就呼之欲出了,肯定是用gpu来支持并行计算。
而眼下遗憾的是,齐凡并未在网上找到任何相关的资料。不过呢,这既是他的麻烦,也是他的机会。
因为没人做过,他就成了那个第一个吃螃蟹的人。
齐凡当即上英威达的官网,下载了gtx680的底层库。他打算动手自己写。
这底层库非常不好找,在英威达官网极其角落的地方。或许连英威达官方都觉得不会有人拿显卡来跑图形计算以外的工作。底层库被打开后,也证实了这一点。
整个底层库的应用介绍中,全部都是关于图形计算的。齐凡无奈吐槽:可怕的惯性思维,待我来给你们一点小小的震撼。
贤者饮料被大口大口的灌下,齐凡快速检索着底层库的英文文档。
这显卡底层库的设计初衷,是给photoshop和cad等绘图软件用的。因而提供的接口文档简直稀烂。英威达官方就没打算给个人开发者使用,而对于photoshop那类大公司产品,英威达自然会派专业工程师负责对接。
齐凡猜测,英威达肯定不会给那些大公司也提供这种晦涩难懂的破文档。这放在官网上的底层库鬼知道是什么垃圾版本,弄不好是bug一堆。可无奈,他眼下只好先凑合拿来用用。因为他要是给英威达官方发邮件,对方肯定不会鸟他。
临近拂晓,齐凡总算用c++写了个英威达显卡的python接口库。测试了下,果然bug一堆。而且细看那些bug,很多都是无厘头,在文档上找不到半点信息的。
无奈,齐凡只好想了个折中的办法--跑去github吐槽。
齐凡登录github账号。自己的那个去除马赛克项目又涨了不少start和评论。
他灵机一动,正好利用这波小热度。
于是他fork了一个去除马赛克2.0版本。
很多人都在呼吁他出2.0版本,现在2.0版本来了。
齐凡写了个项目介绍。
“hello,everyone.v2.0iscoming.”
“igotagoodideal,wecanusedeaplearningwithgpuforthiswork.”
“now,allwhatineedisthefuckingnvidia