前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >入行算法领域时,认真读过的两本书

入行算法领域时,认真读过的两本书

作者头像
二环宇少
发布2020-08-25 10:49:01
5730
发布2020-08-25 10:49:01
举报

1

引言

因为机缘巧合,本人进入算法领域时,主要的方向是算法与系统的交叉领域。往通俗了说,就是研究Deep Learning模型的性能优化,更多的是从系统的角度去优化算法的性能。偶尔,也会承担一些建模调参的工作。

现在的算法框架无论是TensorFlow还是PyTorch,或多或少都有性能问题。毕竟做一个通用的高性能的计算框架,这个目标实在太难达到了,总会遇到corner case。这就需要算法与系统交叉领域的工程师们去做优化和落地了。

目前这个领域不但没有内卷,还处于蓬勃发展期,对即将入行的同学也是一个弯道超车的机会。

既然是交叉领域,肯定是算法能力和系统技术栈都需要掌握。你也不要急功近利直接找算法框架性能优化的书,因为目前也不存在什么优质的《TensorFlow源码解析》或者《PyTorch技术内幕》之类的资料,市面上关于算法框架的书基本都是官方文档的直接翻译,和垃圾差不多,所以别浪费时间和金钱了,要打牢基础。

今天我推荐两本书,它们是我入门时认真读过的资料。只熟悉算法或系统其中一个技术栈的同学,请直接关注自己不熟悉的部分即可。

2

CUDA入门

算法同学请看过来,这本书可以让你了解一下GPU的并行架构,书名是《大规模并行处理器编程实战(第2版)》。如果你比较抵触一般CUDA的学习资料,那么我强烈推荐这本书,读起来一点都不难。

在Deep Learning这个领域中,CUDA是不可能不看的,所以请不要停留在“调库”这个阶段。

作为一个技术书,本书我读得很快,大约耗时两周多。虽然CUDA更新了好几个版本,本书还在讲CUDA 5的东西。但是直到目前为止,CUDA编程的基本范式没有太大的变化,只有增加了新的特性。

要压榨昂贵硬件的性能,就一定要对硬件的体系结构足够了解。阅读本书时,相比于熟悉编程的语法,更重要的是理解GPU硬件的体系结构。比如global memory,shared memory,sm,thread,block,grid,warp等。

另外,本书也不用全部阅读,学习前十章即可,足够让你了解编程模式和硬件架构。从第十一章(《高级RMI重构》)开始有案例研究,也有一些高级知识介绍,但对于Deep Learning的领域需求来看,并不十分重要。

本书还配有公开课,直接Google搜索“Heterogeneous Parallel Programming”即可。

3

Deep Learning入门

只熟悉系统的同学请看过来,你们工程能力学习CUDA肯定没有问题,但容易在算法上抓瞎。

Deep Learning入门时,下面这一本就够了,书名就是《深度学习》,网上有电子版。大部分做算法可能都收藏了本书。它的作者是Good Fellow,以及深度学习三巨头Yoshua Bengio。

同样这本书也不用全读,至少Section III的Research部分不用看。

虽然内容比较基础,但它确实是“书”这种材料中比较前沿的知识了。后续若想再深入学习,就要紧跟业务和paper了。读其他的书可能只能让你大量阅读重复的知识。

类似深度学习实战之类的教程我也不太推荐,因为它们或多或少都与某种具体的深度学习框架耦合,容易变成“学习”某种框架的API。与其这样,我们不如去看GitHub或者网上的实例。

4

后续

上述两本资料是我快速入门时认真啃过的两样东西。入门作为一个阶段,切忌停留太久,而应该在掌握之后迅速投入到实战之中。实战包括做具体的业务建模,或者搭建具体的项目工程,用写代码的方式让自己形成体感。

再之后,就应该会涉及到性能优化了,免不了阅读框架源码,改写框架结构等。

关于如何切入到框架源码的阅读中,快速梳理调用栈,我会另写一篇文章详细介绍我的方法。

讲技术,也谈风月,更关注程序员的生活状况,欢迎联系二少投稿你感兴趣的话题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 互联网西门二少 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档