yahaha~你终于找到这里了。
这里收集了老潘总结的深度原创文和珍藏的资料,相信可以帮助到你。
列一下博客的关键词:深度学习、神经网络、模型部署落地、服务器推理、Pytorch、TensorRT、Caffe、Python、C++、算法等。
如果这里刚好有你需要的,能够帮助到你,我会非常开心(PS:内心无比激动~)。这里的每一篇文章都值得你精读,每周都会更新,有关算法工程师和模型部署工程师的学习路线在文末。
如果you相关疑问,或者想要及时收到老潘发的消息,请拿起微信扫一扫~
老潘本潘
老潘不是严格的算法工程师,虽然也训练一些模型,但是对模型部署和产品落地更为感兴趣,也做过一些开发的工作,编程语言关键词如下:
- C++|Python|Javascript|PHP|lua|C#|swift
个人最喜欢C++和Python,这两个也较为熟练一些。最初的我,对编程语言也会有一些奇怪的看法(例如:XX是世界上最好的语言!),久而久之发现:编程语言其实没有高低贵贱之分(嗯,编程语言也是有情绪的),每一门语言是为完成不同的任务所设计,各自完成不同的使命。我们不但要精通自己领域所擅长的语言,也更需勇于尝试和探索新的语言,发现它们的美。
编程语言其实都是有共通性的,学好任何一门编程语言(例如C),再去上手其他语言差不多是轻而易举的。大部分的项目都会需要各种语言去构建,各司其职,彼此搭配才能够完成的更好。
话说回来,如果你对如何成为算法工程师感兴趣,或者想了解模型部署落地开发的具体工作内容如何去开始,亦或是有一些其他编程方面的问题,欢迎到公众号私信我(相信你能找到我),有求必应。
以下几篇文章有一些自己之前的感悟(现在已经工作啦),希望能帮助到和我经历相似的童鞋们。
接下来也会整理一篇深度学习落地部署的文章,以及算法工程师的学习攻略,感兴趣的不要错过~
废话不多说,干货走起。
文章汇总:
创作不易,坚持周更,关注「oldpan博客」不错过推文。
- 博客原址:oldpan.me
理论分析派
深度学习相关。
- 解密Deepfake(深度换脸)-基于自编码器的(Pytorch代码)
- 一文来了解目标检测/图像分割/coco数据集检测评价标准
- (深度文)马尔科夫随机场(MRF)在图像处理中的应用-图像分割、纹理迁移
- (深度文)扔掉anchor!真正的CenterNet——Objects as Points论文解读
- 封藏的SSD(Single Shot MultiBox Detector)笔记
- 如何根据训练/验证损失曲线诊断我们的CNN
- 关于训练神经网路的诸多Trick(完全总结版)
- 深度学习为什么需要那么多的数据?
- 理解深度学习:神经网络的双胞胎兄弟-自编码器(上)
- 浅谈深度学习:如何计算模型以及中间变量的显存占用大小
- 再次浅谈Pytorch中的显存利用问题(附完善显存跟踪代码)
- 深度学习中数据集很小是一种什么样的体验
- 深度学习图像分割(一)—PASCAL-VOC2012数据集(vocdevkit、Vocbenchmark_release)介绍
- 深度学习图像分割(二)——如何制作自己的PASCAL-VOC2012数据集
- 浅谈深度学习中超参数调整策略
工程实战派
光有理论哪儿够,落地部署实战才是最重要的。
Pytorch篇
适合Pytorch进阶的文章:
- 浅谈pytorch与torch的关系
- 解密Deepfake(深度换脸)-基于自编码器的(Pytorch代码)
- 一个Tensor的生命历程(Pytorch版)-上篇
- 一个Tensor的生命历程(Pytorch版)-下篇
- Pytorch的C++端(libtorch)在Windows中的使用
- 利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测
- 如何在Pytorch中正确设计并加载数据集
- Pytorch拓展进阶(一):Pytorch结合C以及Cuda语言
- Pytorch拓展进阶(二):Pytorch结合C++以及Cuda拓展
- 探讨pytorch中nn.Module与nn.autograd.Function的backward()函数
- 在pytorch中实现与TensorFlow类似的”same”方式padding
TensorRT篇
很有质量的TensorRT文章:
TVM
TVM不多说了,自动调优神经网络编译器,神器。
Caffe
多么经典的Caffe。
编程技能篇
工欲善其事必先利其器。
C++
Python
实用工具工具
关于显卡与深度学习装备
部分已过时,不过仍有参考意义!
有趣好玩的项目推荐
正在整理ing…
学习路线以及书籍资源:
如果你是新手,看完此攻略可以让你少走N段弯路~
深度学习学习路线
基本路线《统计学习方法》
->《机器学习花书》
->《深度学习花书》
。课程可以看李宏毅和吴恩达的入门课。非常不建议只看书籍,最好配上项目实战,边学边做。
有时间一定要需要看的书籍:
- 程序员的数学系列,适合重温知识,回顾一些基础的线性代数、概率论。
- 深度学习花书,总结类书,有基础知识的讲解,比较全面。
- 统计学习方法,总结类书,篇幅不长,都是核心。
- Pattern Recognition and Machine Learning,条理清晰,用贝叶斯的方式来讲解机器学习。
- 机器学习西瓜书,适合当教材,内容较广但是不深。
另外推荐大家一本叫做《百面机器学习》的新书,2018年8月份出版的,其中包括了很多机器学习、深度学习面试过程中会遇到的问题,比较适合需要准备面试的机器学习、深度学习方面的算法工程师。
深度学习部署落地
老潘认为算法部署落地这个方向是比较踏实务实的方向,相比“设计模型提出新算法”,对于咱们这种并不天赋异禀的普通人(哈哈,咱们要谦虚)来说,只要你肯付出,收获是肯定有的(不像设计模型,那些巧妙的结果设计不出来就是设计不出来你气不气)。其实算法部署也算是开发了,不仅需要和训练好的模型打交道,有时候也会干一些粗活累活(也就是dirty work),自己用C++、cuda写算子(预处理、op、后处理等等)去实现一些独特的算子。算法部署最常用的语言是啥,当然是C++了,C++虽然复杂,但是由于优异的性能和各种特性(类对象、元编程等),被很多推理框架作为backbone的语言。
部署落地这方面需要学习需要做的事情还是蛮多的。最好还是以项目作为驱动,或者找一些开源的推理部署框架练练手,找一两个开源项目玩玩,找找感觉,自己也就逐渐有方向了。
例如NCNN(优秀)、MNN(牛逼)等框架(还有很多框架这里不一一列举了额),是针对移动端进行部署进行优化的推理引擎,对ARM核进行了优化,如果你想做和移动端或者嵌入式端有关系的,可以看看这两个框架的源码,跑一两个demo找找感觉,另外还有Openvino和TensorRT,分别是对应cpu和gpu端的首推框架(想详细了解可以参考我之前的文章),可以找相关的项目去做做。
部署的流程一般就是:
- 训练一个模型,也可以是拿一个别人训练好的模型
- 针对不同平台生成的模型进行转换,也就是俗称的parse、convert,前端解释器
- 针对转化后的模型进行优化,这一步很重要,涉及到很多优化的步骤
- 将转化好的模型运行在特定的平台(嵌入端或者服务端)
需要掌握什么技术,学好C++很重要,起码能看懂各种关于部署精巧设计的框架(再列一遍:Caffe、libtorch、ncnn、mnn、tvm、openvino、tensorrt,不完全统计,我就列过我用过的)。当然并行计算编程语言也可以学一个,针对不同的平台而不同,可以先学学cuda,资料更多一些,熟悉熟悉并行计算的原理,对以后学习其他并行语言都有帮助。
部署和落地的重要性…当然是很重要呃,对于硬件公司来说,需要将深度学习算法部署到性能低到离谱的开发板上,因为成本能省就省,这时就需要部署了。在算法层面优化模型是一方面,但更重要的是从底层优化这个模型,这就涉及到部署落地方面的各个知识(手写汇编算子加速、算子融合等等);对于软件公司来说,我们往往需要将算法运行到服务器上,当然服务器可以是布满2080TI的高性能CPU机器,但是如果QPS请求足够高的话,需要的服务器数量也是相当之大的。这个要紧关头,如果我们的模型运行的足够快…可以省机器又可以腾一些buffer上新模型岂不很爽,这个时候也就需要优化模型了,其实优化手段也都差不多,只不过平台从arm等嵌入式端变为gpu等桌面端了。
系统的知识嘛,有是有,不过实际中都是用到啥再看啥,有项目在push你,个人建议直接上手项目,没有自己找找,按需学习。
这里简单总结下可以选择上手:
- 好用的开源推理框架:caffe NCNN、MNN、TVM
- 好用的开源推理框架:Openvino、TensorRT(infer不开源)
- 好用的开源服务器框架:triton-server
- 好用又不好用的编程语言:C++、CUDA、python
基础知识:计算机原理 编译原理等
后记
以上的路线介绍可能不够详细,更多详细的路线会单独发文,请关注~
书籍路线
作为程序员,相关技能书籍是必不可少的,敲代码累的时候看看书轻松一下(???)也是极为不错的。
书不可贪多,贪多嚼不烂,切记切记。
书籍路线正在完善中,完善后发布~
推荐一个看书神器
看书神器如下,不光是看书,看论文都舒服多了:
上述是国产文石BOOX-MAX2
电纸书,相当于大号Kindle,看论文pdf文档绝配!关于此书的评价可以看:
PS:老潘自己收集了很多书籍,但是苦于没有整理,公众号回复666
可获得已经整理好的书籍。其余的正在逐步整理中。
公众号
公众号名称是oldpan博客
,oldpan博客
,oldpan博客
!重要的事情说三遍。
如果你不满足于上述,请直接公众号私信联系我,不要害羞兄弟!有问必答。
交流群
进交流群的请私信公众号,回复“加群”即可。
交流一下吗
如果你与我志同道合于此,老潘很愿意与你交流;如果你喜欢老潘的内容,欢迎关注和支持。博客每周更新一篇深度原创文,关注「oldpan博客」不错过最新文章。老潘也会整理一些自己的私藏,希望能帮助到大家,在公众号回复相应code即可:
- 回复”888″获取学习路线资料与文章汇总
- 回复”666″获取老潘整理好的必看编程书籍和视频资料
- 回复”001″获取机器学习经典论文集
- 回复”002″获取面试宝典秘籍
- 回复”004″获取人工智能必看经典论文合集
- 回复”005″获取人工智能入门视频
- 回复”006″获取CUDA珍藏笔记
- 回复”007″获取CS231N经典课件汇总