2018年最好的软件开发、云计算、大数据分析和机器学习工具

InfoWorld编辑和评论家评选出今年最好的软件开发,云计算,大数据分析和机器学习工具。

欢迎来到InfoWorld的年度技术奖,这是我们对信息技术领域中最好,最具创新性,最重要的产品的年度庆典。 在这个2019年版的奖项中,你可能会猜出有容器,云原生应用程序栈,分布式数据处理系统和机器学习是主要的主题。

在我们的16项获奖技术中,你将找到三项领先的机器学习库,一项加速深度学习的分布式培训框架,以及一项通过特征工程,模型选择,培训和优化来指导非专家的自动化平台。与其他任何产品类别相比,这使机器学习成为更多选择,包括软件开发,这反映了该领域令人吃惊的活动水平。

三项数据库技术今年出现在我们的赢家名单李,包括一项宽列数据存储,一项多功能数据存储,以及一项与数据存储一样多的应用程序平台的数据库。因为数据总是必须从这里迁移到那里,最好是实时,我们还包括两个用于构建流处理应用程序的领先平台。

请继续阅读以了解今年的获奖者。

1、Kubernetes

Kubernetes(又名K8s)在过去几年里有惊人的增长。它曾经是众多容器编排系统中的一种,但现在它正在迅速成为普遍的标准平台,无论是在主要的云提供商,还是在本地的企业级安装中。如果你处于运营领域,那么花时间在Kubernetes上将有可能获得回报,因为开源项目将继续其无情的进军。

基于十年来运行Google海量数据中心的想法和经验教训,Kubernetes是一个经过实战考验的平台,用于在大型集群中部署,扩展和监控基于容器的应用程序和工作负载。在过去的一年中,Kubernetes的发布带来了重大亮点,例如存储大修,移动到容器存储接口,TLS安全的Kubelet引导以及改进的Microsoft Azure支持。

我们还看到了核心Kubernetes堆栈的重要补充,例如Istio,它定义了一个服务网格,可以更好地控制部署,可观察性和安全性。我们已经看到了更多专门的框架,例如Kubeflow,它允许你轻松地在Kubernetes上启动TensorFlow或PyTorch机器学习流水线,所有这些都由同样在集群上运行的Jupyter笔记本控制。

旨在简化Kubernetes管理某些方面的第三方工具和框架的数量,从简化应用程序定义到监控多个集群,似乎每天都在增长。与Kubernetes采用者的数量一样,2018年的主要公告和推荐来自IBM,华为,Sling TV和ING等。 哎呀,即便是福乐鸡(Chick-fil-A)在每家餐馆都经营着Kubernetes。 是不是你也应该登上K8S的大船?

--Ian Pointer

2、Firebase

不久的将来,我们可能还没有量子计算,思维阅读AI和次线性算法来解决邮差问题,但无论如何,我们肯定会用到“数据库”。所有优秀的软件技术最终被DBA所管理的Borg吸收。Firebase的出现就是如何实现这一目标的一个很好的例子。

乍一看,Firebase看起来像一个简单的存储解决方案,用于密钥及其附带的值。换句话说,就像其他NoSQL数据库一样,一对保持合理一致的对。但多年来,谷歌一直在增加一些功能,让Firebase可以做更多基于云的网络应用程序可能做的工作,谷歌甚至开始将Firebase称为移动平台。

还记得当互联网不完美时你在客户端上缓存数据的挑战吗? Firebase团队意识到保持数据库一致性的同步例程也是从移动客户端推送和提取数据的理想工具。他们打开了同步过程,现在你的代码不需要处理一些复杂的算法来握手或摆弄网络。你只需将其迁移到Firebase,就像魔术一样,它们出现在手机的副本中。它只是一个大数据库,你的服务器例程和客户端例程只是从公共池读取和写入。

随着将Firebase与其余部分集成在一起,Google不断添加更多内容。验证你的社交登录到Facebook、谷歌,让你的用户访问正确的数据库片段。分析、托管、消息,Google的所有解决方案都逐渐被数据库所覆盖。包括机器学习,对于想要分析数据库中已有的键/值对的Firebase用户,它已经是测试版选项。从某种意义上说,我们已经开始将AI与数据库合并。

--Peter Wayner

3、Serverless

租用服务器的第一代云,通过解除所有繁琐的硬件相关职责,为我们节省了时间。服务器放在遥远的建筑物里,加热,冷却和维护都是别人的问题。下一代云技术正在摆脱服务器,至少在名义上,并且不仅节省了对操作系统补丁和更新的烦恼,而且避免了与应用程序交付相关的大多数麻烦。

我们的代码仍然存在服务器硬件和操作系统,但现在更多的是其他人的责任。我们可以上传函数,让其他人的软件堆栈评估它们,而不是通过root访问获得事物。我们可以专注于功能,并将其他一切留给那些让云保持运行的技术。

但是仍有挑战,无服务器意味着重新思考技术架构。依赖事件和异步队列需要将应用程序重构为整齐划分的任务。虽然已经有了一些工具支持,但仍需要弄清楚:集成调试,分布式监控,部署打包,功能版本控制等。

然后有供应商锁定担心。领先的FaaS(函数即服务)提供商:AWS Lambda,Microsoft Azure功能和Google Cloud Functions,都有自己专门的部署和操作方法。

无服务器框架特有的功能是提供了一个针对特定于供应商的实现的抽象层,以简化应用程序部署。开源框架为你提供了方便的方法来测试和部署您的功能到各种云提供商,并通过常见的YAML文件简化配置更新,同时还提供丰富的功能管理和安全功能。

除了这些专业,Serverless Framework还支持Kubeless,一个用于在Kubernetes集群上部署FaaS的框架,以及Apache OpenWhisk,这是一个支持IBM Cloud Functions的基于Docker的平台,提供广泛的语言支持和独特的功能来处理更持久的连接。

无服务器计算既不成熟也不是每个用例的银弹,但经济性和效率难以抗拒。借助无服务器框架来缓解困难,为什么不加入越来越多的企业转向无服务器以降低运营成本并加快部署速度?

-- James R. Borck

4、Elastic Stack

如果你现在正在运行面向用户的Web应用程序,则无法提供复杂的搜索功能。不断给用户提供自由文本搜索界面,可以修复拼写,自动建议替代短语,并突出显示搜索结果,以显示返回某些结果的原因。无论喜欢与否,这些都是你必须遵守的搜索标准。

幸运的是,Elastic Stack将满足你的所有搜索需求等等。Elastic Stack主要由Elasticsearch,Kibana,Logstash和Beats组成,支持许多用例,包括面向用户的文档搜索和集中式日志聚合和分析。将文档一次索引或大量索引到Elasticsearch中几乎可以从任何语言编写索引,并且可以对所有字段的映射类型进行最佳猜测(请考虑关系数据库中的列数据类型)。现在你可以使用完整的搜索API,包括模糊搜索,突出显示和分面搜索结果。将它与Searchkit等前端工具配对,你就可以立即快速获得分面自由文本搜索原型。

在这里相信有许多想要学习大数据的同学,大家可以+下大数据学习裙: 740041381,即可免费领取套系统的大数据学习教程

使用Logstash和Beats从任意数量的单独服务聚合日志变得更加容易,允许你将日志行发送到集中式Elasticsearch集群,以便更轻松地进行故障排除和分析。将日志数据编入索引后,使用Kibana构建图表并组装仪表板以使系统健康状况一目了然, Elastic Stack是当今任何新Web项目的必备之一。

--Jonathan Freeman

5、DataStax Enterprise

Apache Cassandra是一个开源的大型分布式列系列数据库,受Google的Bigtable论文的启发,是运行大规模可扩展的全球数据基础架构的绝佳方式。无主设计非常适合运行多种类型的高吞吐量云应用。

但是,Cassandra并不是最容易部署和管理的系统。当尝试执行涉及分析,搜索和图形操作的各种类型的应用程序时,它也会让你失望。DataStax Enterprise(又名DSE)增加了这些功能以及改进的性能和安全性,大大改进了管理,高级复制,内存中OLTP,批量加载器,分层存储,搜索,分析和开发人员工作室。

与Bigtable和Cassandra一样,DataStax Enterprise最适合大型数据库,兆兆字节到千兆字节,最好与非规范化架构一起使用,每个row有很多列。DataStax和Cassandra用户倾向于将其用于非常大规模的应用程序。例如,eBay使用DataStax Enterprise存储250 TB的拍卖数据,每天写入60亿次,每次读取50亿次。

DataStax Enterprise 6在2018年带来了DSE Analytics,DSE Graph和DSE Search中的几项新功能,以及更精细的安全设置。DataStax Studio的改进跟踪DSE Analytics的改进,例如对Spark SQL的支持,以及对带有交互式图形的DSE Graph的扩展IDE支持。最重要的是,基准测试显示DSE 6比Cassandra快倍数。

— Andrew C. Oliver

6、Apache Kafka

老实说,想象一个没有Apache Kafka的世界是奇怪的。分布式流媒体平台将很快庆祝其八岁生日,该项目仍然是流媒体应用程序的坚实开源选择,无论是要添加Apache Storm还是Apache Spark等处理或使用由Apache Kafka本身。Kafka可以轻松处理低延迟应用程序,其基于日志的存储使其成为需要可靠性的绝佳选择。

为了与数据库和其他数据源进行交互,Kafka Connect包含许多连接到流行产品的连接器,如Microsoft SQL Server,Elasticsearch,HDFS,Amazon S3等等,允许通过编辑数据流将数据流入Apache Kafka集群、配置文件。想象一下,设置从数据库到Amazon S3的整个管道,而无需编写自定义代码或触摸任何Java代码。

Confluent是Apache Kafka的主要开发者之一,包括最初的创建者:Jay Kreps,Neha Narkhede和Jun Rao,提供了一个基于开源产品的平台。虽然这包括传统的企业好东西,例如更好的操作用户界面,但它还包括KSQL,这是一个库,使你能够使用直接SQL查询和处理Kafka主题中保存的数据。

如果你不自己完成运行Apache Kafka的任务,那么Google会提供一个与Confluent结合使用的托管平台,而亚马逊则为Kafka(Amazon MSK)提供Managed Streaming。亚马逊MSK目前正在进行公开预览,有可能在2019年的某个时候达到普遍可用性。

--Ian Pointer

7、Apache Beam

Apache Beam采用一种前瞻性的方法来开发批处理和流处理流水线。与大多数平台不同,Beam将开发语言从最终的执行引擎中抽象出来。可以使用Java、Python或Go编写流水线,然后混合并匹配运行时引擎以满足你的特定需求,例如,针对内存中的作业使用Apache Spark或针对低延迟性能使用Apache Flink。

Apache Beam不仅为处理分布式ETL,实时数据分析和机器学习管道提供了可靠的引擎,而且还可以通过未来证明你的投资的方式实现这一目标。

--James R. Borck

8、Redis

这是NoSQL数据库!这是内存缓存!这是消息中间件!Redis是以上所有并且提供更多功能。Redis在一个包中提供了许多有用的功能,所谓的“内存数据结构存储”已成为现代Web应用程序堆栈的主要内容并不奇怪,几乎所有编程语言都可以选择库支持使用。

Redis提供的工作能力仅限于给定工作所需的复杂性和功能。如果你只需要一个简单的数据片段内存缓存,你可以在几分钟内设置Redis并使用您的应用程序。如果你想要什么相当于磁盘支持的NoSQL系统,具有不同的数据结构和你选择的缓存驱逐方案,你可以只需要更多的努力。

Redis 5.0于2018年10月发布,它引入了许多强大的新功能,其中最重要的是新的流数据类型。这种类似日志的附加数据结构使得用Redis构建类似Apache Kafka的消息传递系统成为可能。Redis 5.0中的其他改进包括更好的内存管理和碎片控制,以内存存储为基础的系统的重要性能增强作为其主要隐喻。

--Serdar Yegulalp

9、Visual Studio Code

Visual Studio Code的优点在于它可以与你希望的一样多,也可以一样少。Visual Studio Code将作为一个快速轻量级的编辑器,如果你只需要它,或者成为一个成熟的开发环境,这要归功于当今使用的几乎所有主要语言或运行时的插件和附加组件。Python,Java,Kotlin,Go,Rust,JavaScript,TypeScript和Node.js(更不用说微软自己的.Net语言)都有很好的支持,像Markdown,HTML,reStructuredText和LLVM IR这样的补充文档格式也是如此。

除了广泛的支持和广泛采用之外,Visual Studio Code还为产品提供了无情的改进和补充。没有忽略任何功能区域。因此,你将获得对Git,Team Foundation Server,Docker,代码linting,重构,大型文件等的强大支持。甚至可以在自包含目录中运行Visual Studio Code,从而打开重新打包Visual的大门Studio Code是一个独立的环境,可以满足梦寐以求的新目标。

— Serdar Yegulalp

10、.Net Core

有人说,将软件项目转换为开源是最好的,也可能是最糟糕的事情。就微软的.Net Framework而言,开放源代码的一部分功能为.Net Core一直是一个鲜明的积极因素,导致更轻量级的运行时具有开放的开发流程,跨平台优先的理念,以及兼容性桥接到需要它的应用程序的主.Net Framework。

2018年5月发布的2.1版本推出了许多功能,补充了这个更大的计划。其中最大的:.Net Core Global Tools,一个用于部署和扩展用于管理.Net应用程序的命令行工具的新系统; Windows兼容包,提供对用于Windows原生应用程序的大哥.Net Framework中使用的20,000个API的访问;用于在移植Windows应用程序时识别Windows API依赖关系的API分析工具;和捆绑最新运行时的自包含.Net核心应用程序的机制。

— Serdar Yegulalp

11、LLVM

乍一看,LLVM似乎是我们奖项的深奥选择。用于构建编程语言编译器的工具包?但LLVM编译器框架的强大功能是许多A-list项目的核心:Clang,Rust,Swift,Julia以及许多其他推动编程语言发展的创新项目。

LLVM为开发人员提供了以编程方式生成机器本机代码的方法,并且无需了解他们想要定位的每个体系结构和平台的变化。明显的用例是语言编译器,但LLVM也使各种其他应用程序成为可能。例如,PostgreSQL使用LLVM动态生成加速SQL查询的代码。同样,Numba项目使用LLVM将慢速Python代码转换为快速汇编语言,以用于高速数字运算应用程序。

LLVM的2018年两个主要版本引入了一系列改进:更好地支持更新的英特尔处理器,多处理器方案,缓解常见处理器缺陷,评估特定CPU架构上生成代码性能的工具,以及LLVM链接器LLD的进一步工作,可以跨多个平台从LLVM生成独立的可执行文件。

— Serdar Yegulalp

12、TensorFlow

TensorFlow是一个使用数据流图进行数值计算的开源软件库。图形节点表示数学运算,而图形边缘表示在它们之间流动的多维数据阵列(张量)。这种灵活的体系结构可以将计算部署到桌面,服务器或移动设备中的一个或多个CPU或GPU,而无需重写代码。TensorFlow还包括TensorBoard,一种数据可视化工具包。

在版本1.12中,TensorFlow是迄今为止使用最广泛且被广泛引用的深度学习框架。虽然它仍然支持其原始的低级API,但优惠的高级API现在是tf.keras,它是TensorFlow的Keras API标准的实现,包括TensorFlow特定的增强功能。

虽然TensorFlow仍然支持构建数据流图并在稍后的会话中运行它,但它现在也完全支持急切的执行模式,这是一个必要的,逐个运行的界面。渴望执行模式支持通过tf.GradientTape API自动区分。 tf.keras的一个增强功能是支持急切执行。

Keras API和热切执行模式都将在TensorFlow 2.0中展示。虽然在2.0版中不推荐使用其他一些API,但除兼容性库外,还会有现有代码的转换工具。

估算器是TensorFlow最具扩展性和生产导向的模型类型。可以使用Google提供的预制Estimators,也可以编写自己的自定义Estimators。估算器本身构建在tf.keras.layers上,简化了自定义。使用Estimators创建模型通常比使用低级TensorFlow API更容易。预制估算器使您能够在比基本TensorFlow API更高的概念级别上工作。

-- Martin Heller

13、Keras

Keras是一个高级神经网络API,用Python编写,能够在TensorFlow,CNTK或Theano之上运行。支持其他第三方后端,如MXNet和PlaidML。

在TensorFlow,tf.keras中实现Keras,具有一些特定于TensorFlow的增强功能。Keras并不是构建神经网络模型的唯一简化的高级API,但它在TensorFlow中的突出地位突出了其质量和重要性。在TensorFlow之后,Keras目前是第二大被引用的神经网络API。

Keras的创建是为了用户友好,模块化,易于扩展,并与Python一起使用。API是“为人类而不是机器设计的”,并且“遵循减少认知负荷的最佳实践”。

神经层,成本函数,优化器,初始化方案,激活函数和正则化方案都是Keras中的独立模块,可以将它们组合在一起以创建新模型。新模块很容易添加,作为新的类和函数。模型在Python代码中定义,而不是单独的模型配置文件。

使用Keras的最大原因源于其指导性设计原则,主要是关于用户友好的原则。除了易于学习和简化模型构建之外,Keras还具有广泛采用的优势,支持广泛的生产部署选项,对多个GPU和分布式培训提供强大支持,并得到Google,Microsoft,Amazon,Apple,Nvidia的支持,优步等。

--Martin Heller

14、PyTorch

PyTorch是一个用于在Python中创建具有强大GPU加速度的张量和动态神经网络的库,目前是TensorFlow和Keras之后引用率第三高的神经网络框架。动态神经网络可以从迭代变为迭代,例如允许PyTorch模型在训练期间添加和删除隐藏层以提高其准确性和通用性。PyTorch在每个迭代步骤中即时重新创建图形。

PyTorch集成了加速库,如英特尔MKL,Nvidia cuDNN和Nvidia NCCL,以最大限度地提高速度。其核心CPU和GPU张量和神经网络后端-TH(Torch),THC(Torch Cuda),THNN(Torch神经网络)和THCUNN(Torch Cuda神经网络) - 作为具有C99 API的独立库编写。同时,PyTorch不是Python绑定到单片C ++框架 - PyTorch的目的是与Python深度集成并允许使用其他Python库。

PyTorch能够在张量发生变化时对其进行快照。该框架通过查看该点与先前张量之间的差异来近似每个保存张量的梯度。被称为“autograd”,这可以加快计算梯度,最多可达三倍。鉴于最陡的下降优化器依赖于梯度,它可以将整个训练过程加速三倍。 TensorFlow具有相同的功能。

PyTorch主要由Facebook支持,但其他赞助商和贡献者包括Twitter,Salesforce和Microsoft。微软已经贡献了源自其自己的CNTK框架的技术,以增加PyTorch从Torch和Caffe继承的功能。

--Martin Heller

15、Horovod

Horovod是TensorFlow,Keras和PyTorch的分布式培训框架,在Uber创建。Horovod的目标是使分布式深度学习快速且易于使用。Horovod建立在百度实施TensorFlow环allreduce算法草案的基础之上。

优步最初尝试使用带有参数服务器的Distributed TensorFlow。工程师发现MPI模型要简单得多,并且需要更少的代码更改。优步声称,Horovod系统可以训练AI模型的速度大约是TensorFlow传统部署速度的两倍。

Horovod使用Open MPI(或其他MPI实现)在节点之间传递消息,而Nvidia NCCL则使用高度优化的ring allreduce版本。 Horovod在Inception-v3和ResNet-101上实现了90%的扩展效率,在高达512个Nvidia Pascal GPU上实现了68%的VGG-16扩展效率。

2018年12月,优步宣布它正在Linux基金会的LF深度学习基金会的支持下开放Horovod项目,用于开源人工智能软件。

--Martin Heller

16、XGBoost

XGBoost(eXtreme Gradient Boosting)是一个开源机器学习库,它为Python,R,Java,Julia和其他编程语言实现分布式梯度提升。核心项目代码是用C ++编写的。

XGBoost提供了一种并行树提升算法,可以快速准确地解决许多数据科学问题。相同的代码在单个机器和分布式环境(Hadoop,MPI,Spark等)上运行。分布式版本可以扩展以解决比数十亿示例更大的问题。

XGBoost通过赢得一些Kaggle比赛而在数据科学界成名。它起源于华盛顿大学的一个研究项目。由Tianqi Chen和Carlos Guestrin撰写的2016年XGBoost论文解释了渐变树增强算法和XGBoost中添加的改进,例如缓存感知预取和稀疏感知。本文还比较了XGBoost与Scikit-learn和R.gbm中用于分类的其他两种常用的确切贪婪树提升实现的性能,并对学习排名问题的pGBRT(并行梯度提升回归树)测试XGBoost。

--Martin Heller

17、H2O Driverless AI

在将原始数据转换为预测分析时,H2O Driverless AI凭借其自动化的简单性超越了所有人。最佳实践护栏和路标将非AI专家引导到发现的路径,使用有监督和无监督的机器学习来发现隐藏的模式。

你提供数据并隔离因变量,H2O的本地算法可以完成特征工程,模型选择,培训和优化。

这不是魔术,你仍然希望了解你的数据集和解释输出的能力,但H2O的可视化工具和清晰的解释对于理解业务团队,IT和数据科学家之间的理解有很长的路要走。

数据科学家和开发人员可以通过Python和R. Jupyter笔记本出口机器学习管道代码进行生产来提升模型参数并构建功能。无论是在本地还是在云中,H2O都可以与你现有的大数据基础架构(如Hadoop或Spark)一起使用,从HDFS,Amazon S3或Azure Data Lake中提取数据,并点击Nvidia GPU处理以获得更高的速度。

H2O在2018年推出了几项重大更新,最重要的是自然语言处理,时间序列预测和梯度提升。视觉决策树现在以图形方式逐步引导用户理解预测的“如何” - 例如,澄清为什么保险索赔被标记为欺诈。 H2O甚至开始在亚马逊和微软云上直接提供算法。

H2O无人驾驶AI不会让数据工程师走上街头或解决每一个先进的机器学习问题。但它提供了从头开始构建AI的简化替代方案,减少了企业变得更具预测性和反应性所需的时间。

--James R. Borck

你可能感兴趣的:(2018年最好的软件开发、云计算、大数据分析和机器学习工具)