机器学习开发环境

您用于机器学习的开发环境可能与您用于解决预测建模问题的机器学习方法同样重要。

每周几次,我都会收到类似这样的问题:

您的机器学习开发环境是什么?

在本文中,您将了解我为开发人员使用的并推荐的用于应用机器学习的开发环境。

阅读本文后,你将了解:

  • 工作站和服务器硬件在机器学习中的作用之间的重要区别。
  • 如何确保以可重复的方式安装和更新您的机器学习依赖项。
  • 如何安全地开发机器学习代码并运行它,而不会引入新问题。

让我们开始吧。

Machine Learning Development Environment

机器学习开发环境
照片作者:Mohamed Aymen Bettaieb,部分权利保留。

您的机器学习开发环境看起来是怎样的?
在下面的评论中告诉我。

机器学习硬件

无论您是在学习机器学习还是正在为运营开发大型模型,您的工作站硬件都不会那么重要。

原因如下:

我不建议您在工作站上安装大型模型。

机器学习开发涉及大量的简短测试,以找出问题的初步答案,例如:

  • 使用什么数据。
  • 如何准备数据。
  • 使用什么模型。
  • 使用什么配置。

最终,您在工作站上的目标是找出要运行哪些实验。我称之为初步实验。对于您的初步实验,使用较少的数据:一小部分数据,使其能够满足您的硬件能力。

较大的实验需要数分钟、数小时甚至数天才能完成。它们应该在工作站以外的大型硬件上运行。

这可能是一个服务器环境,如果您正在使用深度学习方法,可能带有 GPU 硬件。此硬件可能由您的雇主提供,或者您可以像 AWS 一样在云端廉价租用。

确实,您的工作站 (CPU) 速度越快,工作站拥有的容量 (RAM) 越多,您可以运行的初步小实验就越多或越大,并且您可以从较大的实验中获得更多收益。因此,请获取您能获得的最好的硬件,但总的来说,请使用您拥有的。

我本人喜欢大型 Linux 机器,拥有大量的 RAM 和大量的核心,用于严肃的研发。对于日常工作,我喜欢 iMac,同样拥有尽可能多的核心和尽可能多的 RAM。

总结一下:

  • 工作站。使用一小部分数据进行工作,找出要运行的大型实验。
  • 服务器。运行需要数小时或数天的大型实验,帮助您找出要在运营中使用什么模型。

安装机器学习依赖项

您必须为您进行机器学习开发安装库依赖项。

这主要是您正在使用的库。

在 Python 中,这可能是 Pandas、scikit-learn、Keras 等。在 R 中,这是所有包,可能还有 caret。

不仅要安装依赖项,还应该有一个可重复的过程,以便您可以在几秒钟内重新设置开发环境,例如在新工作站和新服务器上。

我建议使用包管理器和脚本,例如 shell 脚本来安装所有内容。

在我的 iMac 上,我使用 macports 来管理已安装的软件包。我认为我有两个脚本:一个用于在新 Mac 上安装所有必需的软件包(例如,在工作站或笔记本电脑升级后),另一个脚本专门用于更新已安装的软件包。

库一直在更新中,包含错误修复,因此第二个脚本用于更新特定安装的库(及其依赖项)是关键。

这些是我随时可以运行的 shell 脚本,并且我会在需要安装新库时更新它们。

如果您在设置环境方面需要帮助,其中一个教程可能会有所帮助。

您可能希望将事物的可重复环境提升到一个新的水平,例如使用像 Docker 这样的容器,或者维护您自己的虚拟化实例。

总结一下:

  • 安装脚本。维护一个脚本,您可以使用它来重新安装开发环境所需的所有内容。
  • 更新脚本。维护一个脚本来更新机器学习开发的所有关键依赖项,并定期运行它。

机器学习编辑器

我推荐一个非常简单的编辑环境。

机器学习开发中的艰苦工作不是写代码;而是处理前面提到的未知情况。未知情况,例如:

  • 使用什么数据。
  • 如何准备数据。
  • 使用什么算法。
  • 使用什么配置。

写代码是件容易的事,特别是因为您很可能从现代机器学习库中使用现有的算法实现。

因此,您不需要花哨的 IDE;它不会帮助您解决这些问题。

相反,我建议使用一个非常简单的文本编辑器,它提供基本的代码高亮显示。

我个人使用并推荐 Sublime Text,但任何类似的文本编辑器都能很好地工作。

Example of a Machine Learning Text Editor

机器学习文本编辑器示例

一些开发人员喜欢使用笔记本,例如 Jupyter。我不使用也不推荐它们,因为我发现这些环境在开发方面存在挑战;它们可能会隐藏错误并为开发引入依赖项怪异。

对于学习机器学习和机器学习开发,我建议编写可以直接从命令行或 shell 脚本运行的脚本或代码。

例如,R 脚本和 Python 脚本可以使用各自的解释器直接运行。

Example of Running a Machine Learning Model

运行机器学习模型示例

有关如何从命令行运行实验的更多建议,请参阅帖子:

一旦您有了最终的模型(或一组预测),您就可以使用项目标准的开发工具将其集成到您的应用程序中。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

总结

在本文中,您了解了用于机器学习开发的硬件、依赖项和编辑器。

具体来说,你学到了:

  • 工作站和服务器硬件在机器学习中的作用之间的重要区别。
  • 如何确保以可重复的方式安装和更新您的机器学习依赖项。
  • 如何安全地开发机器学习代码并运行它,而不会引入新问题。

您的机器学习开发环境看起来是怎样的?
在下面的评论中告诉我。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

机器学习开发环境 的 8 条回复

  1. Bart 2018年4月11日 上午5:40 #

    你好 Jason,

    重要提示,提及 Google Colab,Google 免费为 AI 开发人员提供的云服务。使用 Colab,您可以免费在 GPU 上开发深度学习应用程序。(https://colab.research.google.com

    它是免费的,提供 GPU——主要是 Tesla K80 GPU。

    即使只有一台 200 美元的笔记本电脑,您也可以进行机器学习!

    这恰恰证明了世界上最好的东西一直都是免费的……

    • Jason Brownlee 2018年4月11日 上午6:41 #

      非常棒,感谢分享。

    • Neha 2018年4月13日 下午5:06 #

      感谢分享

    • Solomon 2018年10月21日 上午3:10 #

      @Bart,您是说我可以免费使用它来做我的机器学习(深度学习)研究,并且只要我遵守其条款和条件,就不会在某一天被锁定吗?

  2. Sanjay Mall 2020年8月31日 下午5:15 #

  3. schm0e 2021年4月23日 上午1:32 #

    此评论发布在“面向开发人员的机器学习”区域。似乎更适合这里。抱歉,管理员,重复了。
    =========================

    哥们。喜欢您的作品。

    我需要设置一个部署方案来展示我的研究。它需要符合以下要求:“亲爱的某某:请点击此链接查看我的作品:https://myShowcase.net”。

    作为一名开发人员,我脑海中一直都有 UI 的构想,它非常明确地影响着我的设计。因此,在不知道如何展示我的机器学习工程师工作的情况下,我很难开始:对我的工作流程缺乏宏观的理解,这甚至阻碍了我确定应用程序架构。

    工匠需要有自己的技能、工具、工作台、车间和展示品。对于独立机器学习工程师如何进行设置,有什么建议吗?这样我们就可以回到您在这篇文章开头描述的重要事情上去了?

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。