TL; DR —构建良好的机器学习应用程序就像制作米其林式菜肴。 拥有一个井井有条的厨房是至关重要的,但是选择太多了。 在本文中,我重点介绍了我发现的工具,这些工具可用于交付专业项目,分享一些想法和替代方案,并进行快速的实时调查(您可以在参与后看到社区的想法)。
像任何工具讨论一样,该列表并不详尽。 我尝试着眼于最有用和最简单的工具。 欢迎在评论部分中提出任何反馈意见,或者让我知道是否有更好的选择。
免责声明:本帖子不被认可或赞助。 我将数据科学和ML互换使用。
"如何构建良好的机器学习应用程序?"
在与学校中有抱负的数据科学家,希望转换的专业人士以及团队经理进行的聊天中,这个问题以各种形式多次出现。
交付专业数据科学项目有很多方面。 像许多其他人一样,我喜欢使用在厨房做饭的类比:有成分(数据),食谱(设计),烹饪过程(以及您独特的方法),最后是实际的厨房(工具)。 )。
因此,本文遍历了我的厨房。 它重点介绍了设计,开发和部署全栈机器学习应用程序的最有用工具,这些应用程序是与系统集成或在生产环境中为人类用户服务的解决方案。
如果您想进一步了解交付ML的其他方面,请在此处查看我的文章。
压倒性的可能性
我们生活在黄金时代。 如果您在Google中搜索"机器学习工具"或咨询顾问,您可能会得到以下信息:
> Data & AI Landscape 2019, Image Source
那里有太多工具。 可能的组合是无限的。 这可能会令人困惑和压倒性。 所以,让我帮助您缩小范围。 也就是说,没有完美的设置。 这完全取决于您的需求和约束。 因此,进行相应的选择,选择和修改。
我的列表按以下顺序排列优先级(不按顺序排列):
警告:我有99%的时间使用Python。 因此,这些工具可以与本机Python一起很好地使用或构建。 我尚未使用其他编程语言(例如R或Java)对其进行测试。
1. 冰箱:数据库
PostgreSQL
一个免费的开源关系数据库管理系统(RDBMS),强调可扩展性和技术标准合规性。 它旨在处理各种工作负载,从单台机器到具有多个并发用户的数据仓库或Web服务。
> Image Source
备选方案:MySQL,SAS,IBM DB2,Oracle,MongoDB,Cloudera,GCP,AWS,Azure,PaperSpace
2. 工作台:部署管道工具
管道工具对于开发的速度和质量至关重要。 我们应该能够以最少的人工处理快速进行迭代。 这是一个运行良好的设置,有关更多详细信息,请参阅我的12小时ML挑战文章。 每个懒惰的数据科学家都应该在项目的早期阶段对此进行尝试。
> Author's work, 12-Hour ML Challenge
(1) Github
它提供了Git的分布式版本控制和源代码管理(SCM)功能,以及其自己的功能。 它为每个项目提供访问控制和多种协作功能,例如错误跟踪,功能请求,任务管理和Wiki。
备选:DVC,BitBucket,GitLab
(2) PyCharm社区版
计算机编程中使用的集成开发环境(IDE),专门用于Python语言。 它是由捷克JetBrains公司开发的。 它提供代码分析,图形调试器,集成的单元测试器,与版本控制系统(VCSes)集成,并支持使用Django进行Web开发以及使用Anaconda进行数据科学开发。
替代方案:Atom,Sublime
(3) pytest
框架使编写小型测试变得容易,但可以扩展以支持针对应用程序和库的复杂功能测试。 它节省了手动测试的大量时间。 如果您每次更改代码都需要测试某些东西,请使用Pytest将其自动化。
备选:单元测试
(4) CircleCi
CircleCI是一个持续集成和部署工具。 当您提交到Github时,它将使用远程docker创建一个自动化的测试工作流。 Circle CI拒绝任何未通过PyTest设置的测试用例的提交。 这样可以确保代码质量,尤其是在与较大的团队合作时。
备选方案:詹金斯,特拉维斯CI,Github Action
(5) Heroku(仅当您需要网络托管时)
平台即服务(PaaS),使开发人员可以完全在云中构建,运行和操作应用程序。 您可以与CircleCI和Github集成以启用自动部署。
替代方案:Google App Engine,AWS Elastic Compute Cloud,其他
(6) Streamlit(仅在需要交互式UI时)
Streamlit是面向机器学习和数据科学团队的开源应用程序框架。 近年来,它已成为我最喜欢的工具之一。 查看我如何使用它以及本节中的其他工具来创建电影和模拟应用程序。
替代方案:Flask,Django,Tableau
3. iPad:探索工具
Streamlit重新点亮
忘了Jupyter Notebook。 是的,这是对的。
Jupyter是我探索数据,进行分析以及尝试不同数据和建模过程的入门工具。 但我不记得有多少次:
真令人沮丧。 因此,我使用Streamlit进行早期探索并为最终的前端服务-用一块石头杀死两只鸟。 以下是我的典型屏幕设置。 左侧为PyCharm IDE,右侧为结果可视化。 试一试。
> IDE (left) + live update with Streamlit (right), author's work from the Forgotten Algorithm
替代方案:Jupyter Notebook,Anaconda的Spyder,Microsoft Excel(严重)
4. 刀具:机器学习框架
就像使用实际的刀一样,您应该根据食物和切割方式选择合适的刀。 有通用刀和特种刀。
要小心。 尽管寿司刀更加亮丽,但使用专用刀将寿司切成骨头将需要很长时间。 选择正确的工具来完成工作。
(1) Scikit-Learn(通用ML用例)
在Python中进行常规机器学习的入门框架。 说够了。
> Use Cases for Scikit-Learn, Source
备选方案:无,期限。
(2) PyTorch(深度学习用例)
一个基于Torch库的开源机器学习库。 鉴于深度学习的重点,它主要用于计算机视觉和自然语言处理等应用。 它主要由Facebook的AI研究实验室(FAIR)开发。 最近,许多著名的AI研究机构,例如Open AI,都使用PyTorch作为其标准工具。
替代方案:Tensorflow,Keras,Fast.ai
(3) 开设AI Gym(强化学习用例)
开发和比较强化学习算法的工具包。 它提供API和可视环境。 这是社区正在为其构建工具的活跃区域。 打包好的工具还不多。
替代方案:许多小型项目,但维护得不如健身房。
5. 火炉:实验管理
(1) Atlas
这是一个免费工具,可让数据科学家使用几个摘要进行实验并将结果显示在基于Web的仪表板上。
> Atlas process, source
免责声明:我曾在创建Altas的公司Dessa工作。
替代方案:ML Flow,SageMaker,Comet,权重和偏移,数据机器人,Domino
(2) 一项调查
出于好奇,寻找合适工具时最困扰您的是什么? 我很想听听您的以下想法。 这是一项实时调查,因此您可以查看社区参与后的想法。
(3) 另一种观点
如前所述,没有完美的设置。 这完全取决于您的需求和约束。 这是关于哪些工具可用以及它们如何协同工作的另一种观点。
> Presentation from Sergey Karayev at Full Stack Deep Learning, 2019
(4) 迷你挑战赛
如果您想了解有关如何使用这些工具的更多信息,最好的方法是找到一个要进行的项目。 您可以将工具合并到当前项目中,也可以进行12小时的ML挑战。 不确定如何? 看看我如何使用讨论的工具和流程创建用户授权的推荐应用程序。
我期待看到您能创造什么。 请与社区共享,并在Twitter tag上标记我。
喜欢您阅读的内容吗? 在Medium,LinkedIn或Twitter上关注我。 另外,您是否想以数据科学家的身份学习商业思维和沟通技巧? 查阅我的《机器学习的影响力》指南。
回想一下在智能手机问世之前的那些日子,人们将随身携带各种电子设备,例如翻盖...
科技创新平台作为推进国家科技创新能力建设的重要抓手,对促进我国科学源头创新...
近年来,伴随着中国智能手机市场上品牌和机型的激增,竞争也越来越激烈。手机市...
需要指出的是,这是短信验证码的价值发挥,而非义务所在!凭什么手机号码就可以验...
据外媒,美国电信运营商Verizon近期引起了休斯敦部分居民的不满,据了解,该公司...
说起当年的微软手机系统,刚推出那会还挺让人期待的,因为微软在电脑端的操作系...
虽然苹果早在 iPhone 6 中已加入 NFC 功能,但对于该权限向第三方开放却一直很谨...
5G是一个为各行各业的企业提供新的能力和机会的推动者。Cradlepoint欧洲,中东和...
北京时间2018年6月14日,3GPP全会(TSG#80)批准了第五代移动通信技术标准(5G NR)...
【责任编辑: 贺鑫 TEL:(010)68476606】 本文转载自网络,原文链接:...