从0开始深度学习工程师之路(二):开发的基础设施和工具之语言和开发工具

前言

上一篇写了写为什么算法工程师有必要了解机器学习或者说深度学习的全栈知识,这一篇就正式步入学习过程了。机器学习开发的理想状态是给定一个项目的需求和一些样本数据,就可以得到一个不断迭代升级的模型以及对应的系统。然而,实际情况却是:

  • 你需要收集、汇总、处理、清洗、标注数据
  • 你需要找到有效的模型结构、预处理权重,然后训练和调试模型代码
  • 你需要不断的做训练,观察结果,尝试各种新结构、新loss,对应的就是调试更多的代码了
  • 终于,训练得到了一个还不错的模型,需要开始部署模型了,你会面临在各种各样的硬件上部署模型,这些硬件算力不同、操作系统不同,架构不同···
  • 模型部署后,需要观察跟踪模型的使用效果,往往还需要获取现场的数据,进行进一步的训练,也就是重复以上的炒作。
    整个过程基本上就是数据->开发(训练)->部署的循环,工欲善其事,必先利其器,这三大部分里有各种各样的工具。这一篇就先从开发工具入手了,因为其实我们入门深度学习也基本上从这部分入手了,刚开始学习所使用的基本都是公开数据集了。

开发语言

训练模型这部分基本上就没什么争议了,python在这个领域属于一家独大了,所有你能了解到的训练框架,论文复现几乎全部是python。所以要进入深度学习领域,学会python是首要条件。而到了部署部分则选择较多了,python\C++\Java等等,一般来说都是在C++基础上进行封装,这一部分可以根据需要进行学习,这一部分在后续再详细讨论,目前专注于训练部分。

开发工具(IDE、编辑器)

python的开发工具比较多,比较出名的有Pycharm, VSCode, Jupyter Notebook/Lab等等,还有Vim, Subline等一众编辑器也可以作为开发环境。一般来说,建议从Pycharm和VSCode中2选一,这2者都可以通过插件的方式支持Jupyter Notebook。Jupyter Notebook在数据开发领域比较有名,为什么不直接选择Jupyter Notebook?Jupyter Notebook确实是入门学习的一个比较好的工具,作为写教程确实是个好工具,但我不觉得它适合真的用来做开发,一个是他的编辑器是比较初级的,代码提示、调试这些都需要折腾,此外,它代码结构不清晰,不适合管理大量代码,还有一个比较重要的点就是插件,比如现在写代码常用的Copilot, 它就没有,所以我认为真的做开发,还是应该选择真正的开发工具。VSCode的优势是免费,轻量级,远程开发比较方便。Pycharm是python专用IDE, 因此功能更强大也更容易使用,但远程开发功能需要专业版,而且即使专业版,远程功能也没有VSCode好用。所以如何选择要看自己的工作方式,如果是在Windows上远程连接开发机开发,建议VSCode,其他情况根据自己的喜好选择即可。这2者的比较后续在开发工具的专栏里再详细写。这个专栏就主要在VSCode下开发了。

Python版本管理工具

Python有许多不同的版本和库,可以用于各种各样的项目。但是,如果想在同一台电脑上使用不同的Python版本或库,你可能会遇到一些问题。为了解决这些问题,可以使用一些工具来创建和管理不同的Python环境,这样就可以在每个环境中安装和使用不同的Python版本和库,而不会影响其他环境。常用的Python环境管理工具有virtualenv, pyenv和anaconda。

virtualenv创建的环境是在项目目录的,因此适合那些需要在不同的项目中使用不同的Python库,但是不需要切换不同的Python版本的用户。

pyenv可以在同一台电脑上安装和使用多个Python版本,而不会影响系统级别的Python或其他版本。

anaconda是一种集成了多个科学计算和数据分析相关的Python库和工具的发行版,除了可以创建不同版本的python环境,anaconda还是一个包管理器(和pip同级),有一些高性能的库版本可以通过它安装,比如mkl版本的numpy。

这三者各有各自适合的场景和用户群体。根据你自己的需求和偏好,你可以选择其中一种或多种工具来帮助你更高效地进行Python开发。笔者日常使用anaconda。

代码助手

随着AI的发展,代码开发中已经不仅仅有代码补全工具了,还有了很多基于AI的代码生成和代码提示工具。通过这些工具,可以极大的减少我们的开发工作量,特别是在深度学习领域,很多算法和框架都是开源的。这块的选择也比较多,比如Github Copilot, 亚马逊的CodeWhisperer, CodeGeeX等等,还有一些基于GPT的API做的插件。这些工具有些收费有些免费,就根据自己的情况选择了。笔者日常使用Coplilot,体验还挺不错。

训练框架

训练框架基本就是Pytorch、Tensorflow以及国内的Paddle,MXnet之类已经使用较少了。总体上Pytorch是开源资源最多,Paddle是百度自己开源的较多,Tensorflow由于API混乱等原因,目前占有率已经被Pytorch甩开。建议从Pytorch入手。
还有一些是基于Pytorch封装的,比如Pytorch Lighting, huggingface等,这块可以自行选择,也可以不使用。

总结

本文介绍了训练阶段需要的开发语言、工具、框架等等,这些是我们步入深度学习的基础。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingInCV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值