就如同制作米其林菜肴,拥有井井有条的厨房固然重要,但可选择的东西太多也着实让人烦恼,建立良好的机器学习(ML)应用程序也是如此。
所以,小编将重点介绍一些可用于交付专业项目的工具,分享想法和备选方案,并开展一个快速的调查。任何关于工具的讨论给出的选项总是无法穷尽,但下面这几种将是最有用和最简单的。
当然啦,如果你有其他更好的选择,也欢迎在评论区告诉小芯。(免责声明:本帖未署名,且未受到赞助。小编将数据科学和机器学习两个名词互换使用。)
常见问题
“如何构建优秀的机器学习应用程序?”
与数据科学家、正在寻求转型的专业人员以及团队经理沟通的过程中,这个问题以各种形式多次出现。
交付专业数据科学项目涉及很多方面,实际上它在厨房做饭很相似:有原料(数据)、食谱(设计)、烹饪过程(独到的方法)、最后是实际的厨房(工具)。
本文遍历了小编的“厨房”,重点介绍了在设计、开发和部署全栈机器学习应用程序中最有用的工具——这些解决方案或与系统融合,或能够在生产环境中服务于用户。
势不可挡的可能性
这是最好的时代。如果在谷歌中搜索“机器学习工具”或咨询顾问,可能会得到以下信息:
2019数据&人工智能全景 | 图源:GIPHY
你能得到太多的工具,组合的可能性是无限的,这势不可挡,却也令人迷茫。你需要去缩小范围。但要注意的是,完美的安装依旧不存在,而这取决于用户的需求和限制条件。简而言之,最适合的才是最好的。
小编的优先列表如下(无先后之分):
- 免费
- 工程大于研究
- 易于学习和安装
- 只要能完成工作就好
- 久经考验的(应用程度&工具成熟度)
- 在创业或大型企业被应用于大型或小型项目
注意:小编99%的时间里都会使用Python 。因此,本文推荐的工具要么和Python完美适配,要么本地就有Python。小编尚未使用其他编程语言(例如R或Java)对它们进行测试。
冰箱:数据库
PostgreSQL
这是一个免费的开源关系数据库管理系统(RDBMS),拥有可扩展性和技术标准合规性。它旨在处理各种工作负载,包括单台机器、数据仓库或拥有多个并发用户的Web服务。
图源:medium.com
备选方案: MySQL、SAS、IBM、DB2、Oracle、MongoDB、Cloudera、GCP、 AWS、Azure
厨房台面:部署Pipeline工具
Pipeline工具对于开发的速度和质量至关重要。这一工具的目标是在最少人为干预的情况下快速进行迭代。小编有一个运行良好的安装教程,想要知道更多详细信息,请参阅我的文章——12小时机器学习挑战,想“偷懒”一定要尽早尝试~
(https://towardsdatascience.com/build-full-stack-ml-12-hours-50c310fedd51)
小编的作品:12-小时机器学习挑战
Pytest
架构使编写小型测试变得容易,但需扩展之后,才支持针对应用程序和库的复杂功能测试。它节省了手动测试的大量时间,如果每次更改代码都需要测试某些东西,Pytest的自动化将会帮助到你。
备选方案: Unittest
Github
它提供了Git的分布式版本控制和源代码管理(SCM)功能,当然还包括自带的功能。它为每个项目提供访问控制和多种协作功能,例如功能请求、错误跟踪、任务管理和wikis。
备选方案: BitBucket, GitLab,DVC
PyCharm 社区版
这是一个在计算机编程中使用的集成开发环境(IDE),专门用于Python语言。它是由捷克JetBrains公司开发的,提供代码分析、图形调试器、集成的单元测试器与版本控制系统(VCS)集成,并支持使用Django进行Web开发以及使用Anaconda进行数据科学研发。
备选方案: Atom, Sublime
Heroku (仅当用户需要网络托管时)
图源:heroku.com
平台即服务(PaaS),使开发人员可以完全对应用程序进行云构建,云运行和云操作。与CircleCI和Github集成后也可以启用自动部署。
备选方案: Google App Engine, AWS Elastic Compute Cloud, others
Streamlit (仅在用户需要交互式UI时)
Streamlit是面向机器学习和数据科学团队的开源应用程序框架。它是小编近年来最喜欢的工具之一。在小编的12小时机器挑战中,你可以看到该如何使用它以及本节中的其他工具来创建电影和模拟应用程序。
备选方案: Flask, Django, Tableau
CircleCi
CircleCI是一个持续集成和部署工具。当你将自己的项目提交到Github时,这一工具能使用远程docker创建一个自动化的测试工作流。任何未通过PyTest设置测试用例而提交的项目都会被Circle CI拒绝。这样可以确保代码质量,这点在于大团队合作时尤其重要。
备选方案: Travis CI, Jenkins,Github Action
the iPad: 探索工具
Streamlit (又见面了~)
别再留恋Jupyter Notebook了!
Jupyter曾经是小编的首选工具,它可用于数据探索,分析,并利用不同的数据和建模过程进行实验。但下面这种令人沮丧的情况,已经记不清有多少次:
- 绞尽脑汁进行调试,但最终意识到自己忘记了从头开始运行代码;Streamlit可以解决这个问题。
- 总是需要等一会儿才能重新运行数据pipeline;Steamlit缓存可解决此问题。
- 不得不将代码从Jupyter重写或转换为可执行文件,还要在重新测试上花费时间;Streamlit提供了一个解决问题的快捷方式。
所以,小编顺理成章地转而使用Streamlit进行早期探索并服务于最终的前端。以下是小编常用的屏幕设置。左侧为PyCharmIDE,右侧为结果可视化。
IDE+ Streamlit的实时更新 | 图源:towardsdatascience
备选方案: Jupyter Notebook、Anaconda、Spyder from、Microsoft Excel (认真脸!)
刀子:机器学习架构
你应该根据食物和切割方式选择合适的刀具,比如通用刀和专用刀。
当心!尽管寿司专用刀更加亮丽,但使用专用刀将寿司切成块状将花费很长时间。要选择正确的工具来完成工作。
Sklearn (常见的机器学习使用案例)
这是在Python中进行通用机器学习的首选框架,有它就足够了。
图源:scikit-learn.org
备选方案:none、period.
Open AI Gym (强化学习使用案例)
这是一个开发和比较强化学习算法的工具包,它提供API和可视环境。许多社区都在争先为该领域构建工具,不过可用的完整安装包还不多。
备选方案:许多小型项目,但多数的维护工作都不如Gym。
PyTorch (深度学习使用案例)
这是一个基于Torch库的开源机器学习库。深度学习是此库重点,它主要用于计算机视觉和自然语言处理等应用。Torch主要由Facebook的人工智能研究实验室(FAIR)开发。最近,许多著名的人工智能研究机构,例如Open AI,都使用PyTorch作为其标准工具。
备选方案: Tensorflow、 Keras、Fast.ai
火炉:实验管理
Atlas
这是一个免费工具,可让数据科学家使用一些摘要进行实验,将结果显示在基于Web的仪表板上。
Atlas 程序 | 图源:atlas.dessa.com
(免责声明:小编供职于Dessa, 该公司创建了Altas。)
备选方案: ML Flow、Weights & Biases、Data Robot、SageMaker、Comet、Domino
另一种观点
没有完美的安装,一切都取决于你的需求和限制条件。下图展示了另一种想法,也是关于何种工具可用以及它们如何一起工作。
谢尔盖·卡拉耶夫在2019年全栈深度学习中的演讲
迷你挑战
想要了解这些工具,最好的方法是找一个项目开始操作。你可以将这些工具合并到当前项目中,也可以进行一个12小时机器学习挑战。
我看好你哟~