新网工在YESLAB   

IT技术专业学习平台
IT人才专业服务提供商

 

VUE考试注册预约电话:010-82608710

全国热线:400-004-8626

为什么AI开发人员必须掌握CUDA编程

首页    技术博文    强化学习    为什么AI开发人员必须掌握CUDA编程

这篇文章的标题看起来像句狠话,有人可能会有疑问

CUDA编程是啥?但是在解答这个疑问之前我先要反问另一个问题,

请思考3分钟:AI开发人员是啥?

假如你在一家做音乐的公司上班,你的工作就是每天对新发行的音乐进行鉴赏并打分,你可能会想到让AI来代替你做这件事情。目前来看确实可以用大量的音乐去训练AI,让其以更加符合流行风格与群众口味的状态来给新的音乐打分,这显然比你根据自己的经验与喜好打分要公平的多,最重要的是,如果你有个老板并不知道的AI助手帮你做事,你就可以去玩了!

当然,要训练这样的AI助手有多种办法。

1、其中最简单的办法就是使用已经训练好的AI模型或知名模型,在Tensorflow等系统中导入数据进行训练,并改善结果。

2、另一种比较复杂的方法可以是完全从零开始自己设计算法与训练过程。其实在严格意义上,第一种方法仅仅是在“使用”AI,而第二种方法才是“AI开发”。

为什么这样讲呢,如果把AI换成计算机这个答案就会非常明白。例如我使用Python语言开发网络爬虫程序,那么我的职位是爬虫开发工程师或者Python开发工程师,绝对不会是计算机开发工程师。但现实社会中也有大把人称我的工作为“搞计算机的”,所以这里我们强调CUDA编程技能,实际上只是对很纯粹的AI开发者而言,例如AlphaGo的开发人员。

CPU与GPU

干货——CUDA编程是一种依赖于CPU与GPU的编程方式,在异构计算架构中,GPU与CPU通过PCIe总线连接在一起来协同工作,这兄弟俩总结起来就一句话:CPU负责处理逻辑复杂的串行程序,而GPU重点处理数据密集型的并行计算程序。所以我们常用的Tensorflow, Pytorch等深度学习系统都使用CUDA编写了许多代码(并行计算版本),这些代码也有不使用CUDA的原始版本(纯CPU版本)。

还是用图来说明这两者的工作方式吧,纯CPU版本的程序,使用CPU来处理数据,如同下图,从左至右依次完成文件审阅:

AI开发——CUDA编程

而使用并行计算的程序,使用GPU来处理数据,如同下图,多个任务被同时完成(矩阵):

AI开发——使用GPU来处理数据

并行计算

那么什么是并行计算呢?当我们CPU的每个核心都在全力工作时,称为满负荷,但通常像矩阵计算这样的计算过程并不会把核心占满,假如每个核心每次计算一个乘法或加法,那么大量的时间就会浪费在下一个乘法或加法的入站过程,所以CPU常常受到时间魔咒的影响。

AI开发——CPU服务器

如果我们把CPU的每个核心看成一头公牛,他们很厉害,通常CPU也就有两头、四头、八头、十六头公牛等。而GPU的核心相比CPU的核心要弱的多,我们可以认为是小鸡,但是GPU胜在核心数量多,过千的小鸡数量妥妥的。这时如果任务是吃完1吨小米,显然成千上万的小鸡比十六头公牛更有优势。如果说AI开发人员推荐掌握CUDA编程,不如说AI开发人员推荐掌握并行计算的编程方法,这可以让程序与数据的结合更加高效。

AI开发人员推荐掌握CUDA编程

 CUDA编程

CUDA是NVIDIA开发的GPU编程模型,它提供了GPU编程的简易接口,基于CUDA编程可以构建基于GPU计算的应用程序。CUDA提供了对其它编程语言的支持,如C/C++,Python,Fortran等语言。现在市面上对会CUDA的开发人员提供了相当多的工作机会,人才稀少,更不要讲你还会AI开发,更多资源可以关注CUDA官方文档,如果你对CUDA编程很感兴趣的话,可以留意 Yeslab的开课计划哦。

2018年12月10日 18:47
浏览量:0
收藏