yahaha~你终于找到这里了。
这里收集了老潘总结的深度原创文和珍藏的资料,相信可以帮助到你。
列一下博客的关键词:深度学习、神经网络、模型部署落地、服务器推理、Pytorch、TensorRT、Caffe、Python、C++、算法等。
如果这里刚好有你需要的,能够帮助到你,我会非常开心(PS:内心无比激动~)。这里的每一篇文章都值得你精读,每周都会更新,有关算法工程师和模型部署工程师的学习路线在文末。
老潘不是严格的算法工程师,虽然也训练一些模型,但是对模型部署和产品落地更为感兴趣,也做过一些开发的工作,编程语言关键词如下:
个人最喜欢C++和Python,这两个也较为熟练一些。最初的我,对编程语言也会有一些奇怪的看法(例如:XX是世界上最好的语言!),久而久之发现:编程语言其实没有高低贵贱之分(嗯,编程语言也是有情绪的),每一门语言是为完成不同的任务所设计,各自完成不同的使命。我们不但要精通自己领域所擅长的语言,也更需勇于尝试和探索新的语言,发现它们的美。
编程语言其实都是有共通性的,学好任何一门编程语言(例如C),再去上手其他语言差不多是轻而易举的。大部分的项目都会需要各种语言去构建,各司其职,彼此搭配才能够完成的更好。
话说回来,如果你对如何成为算法工程师感兴趣,或者想了解模型部署落地开发的具体工作内容如何去开始,亦或是有一些其他编程方面的问题,欢迎到公众号私信我(相信你能找到我),有求必应。
以下几篇文章有一些自己之前的感悟(现在已经工作啦),希望能帮助到和我经历相似的童鞋们。
接下来也会整理一篇深度学习落地部署的文章,以及算法工程师的学习攻略,感兴趣的不要错过~
废话不多说,干货走起。
创作不易,坚持周更,关注「oldpan博客」不错过推文。
深度学习相关。
光有理论哪儿够,落地部署实战才是最重要的。
适合Pytorch进阶的文章:
很有质量的TensorRT文章:
TVM不多说了,自动调优神经网络编译器,神器。
多么经典的Caffe。
利用Caffe推理CenterNet(上篇)
利用Caffe推理CenterNet(下篇)
工欲善其事必先利其器。
部分已过时,不过仍有参考意义!
新显卡出世,我们来谈谈与深度学习有关的显卡架构和相关技术
给你一份配置清单:机器学习、深度学习电脑显卡配置指南
正在整理ing…
如果你是新手,看完此攻略可以让你少走N段弯路~
基本路线《统计学习方法》
->《机器学习花书》
->《深度学习花书》
。课程可以看李宏毅和吴恩达的入门课。非常不建议只看书籍,最好配上项目实战,边学边做。
有时间一定要需要看的书籍:
另外推荐大家一本叫做《百面机器学习》的新书,2018年8月份出版的,其中包括了很多机器学习、深度学习面试过程中会遇到的问题,比较适合需要准备面试的机器学习、深度学习方面的算法工程师。
老潘认为算法部署落地这个方向是比较踏实务实的方向,相比“设计模型提出新算法”,对于咱们这种并不天赋异禀的普通人(哈哈,咱们要谦虚)来说,只要你肯付出,收获是肯定有的(不像设计模型,那些巧妙的结果设计不出来就是设计不出来你气不气)。其实算法部署也算是开发了,不仅需要和训练好的模型打交道,有时候也会干一些粗活累活(也就是dirty work),自己用C++、cuda写算子(预处理、op、后处理等等)去实现一些独特的算子。算法部署最常用的语言是啥,当然是C++了,C++虽然复杂,但是由于优异的性能和各种特性(类对象、元编程等),被很多推理框架作为backbone的语言。
部署落地这方面需要学习需要做的事情还是蛮多的。最好还是以项目作为驱动,或者找一些开源的推理部署框架练练手,找一两个开源项目玩玩,找找感觉,自己也就逐渐有方向了。
例如NCNN(优秀)、MNN(牛逼)等框架(还有很多框架这里不一一列举了额),是针对移动端进行部署进行优化的推理引擎,对ARM核进行了优化,如果你想做和移动端或者嵌入式端有关系的,可以看看这两个框架的源码,跑一两个demo找找感觉,另外还有Openvino和TensorRT,分别是对应cpu和gpu端的首推框架(想详细了解可以参考我之前的文章),可以找相关的项目去做做。
部署的流程一般就是:
需要掌握什么技术,学好C++很重要,起码能看懂各种关于部署精巧设计的框架(再列一遍:Caffe、libtorch、ncnn、mnn、tvm、openvino、tensorrt,不完全统计,我就列过我用过的)。当然并行计算编程语言也可以学一个,针对不同的平台而不同,可以先学学cuda,资料更多一些,熟悉熟悉并行计算的原理,对以后学习其他并行语言都有帮助。
部署和落地的重要性…当然是很重要呃,对于硬件公司来说,需要将深度学习算法部署到性能低到离谱的开发板上,因为成本能省就省,这时就需要部署了。在算法层面优化模型是一方面,但更重要的是从底层优化这个模型,这就涉及到部署落地方面的各个知识(手写汇编算子加速、算子融合等等);对于软件公司来说,我们往往需要将算法运行到服务器上,当然服务器可以是布满2080TI的高性能CPU机器,但是如果QPS请求足够高的话,需要的服务器数量也是相当之大的。这个要紧关头,如果我们的模型运行的足够快…可以省机器又可以腾一些buffer上新模型岂不很爽,这个时候也就需要优化模型了,其实优化手段也都差不多,只不过平台从arm等嵌入式端变为gpu等桌面端了。
系统的知识嘛,有是有,不过实际中都是用到啥再看啥,有项目在push你,个人建议直接上手项目,没有自己找找,按需学习。
这里简单总结下可以选择上手:
基础知识:计算机原理 编译原理等
以上的路线介绍可能不够详细,更多详细的路线会单独发文,请关注~
作为程序员,相关技能书籍是必不可少的,敲代码累的时候看看书轻松一下(???)也是极为不错的。
书不可贪多,贪多嚼不烂,切记切记。
书籍路线正在完善中,完善后发布~
看书神器如下,不光是看书,看论文都舒服多了:
上述是国产文石BOOX-MAX2
电纸书,相当于大号Kindle,看论文pdf文档绝配!关于此书的评价可以看:
PS:老潘自己收集了很多书籍,但是苦于没有整理,公众号回复666
可获得已经整理好的书籍。其余的正在逐步整理中。
公众号名称是oldpan博客
,oldpan博客
,oldpan博客
!重要的事情说三遍。
如果你不满足于上述,请直接公众号私信联系我,不要害羞兄弟!有问必答。