![640?wx_fmt=gif](https://i-blog.csdnimg.cn/blog_migrate/e05302bf15c1c109f686893ff6470fd7.gif)
![640?wx_fmt=jpeg](https://i-blog.csdnimg.cn/blog_migrate/ed34e86f11c648cc9afd46b16ed62657.png)
以下为译文:
十多年以来,InfoWorld每年都要举行年度最佳开源大奖赛——即Bossie大奖赛,旨在选出最有趣以及最具创新的开源项目。回顾当初我们刚开设此奖项的时候,开源项目的规模都非常小,而且一般只为企业开发人员以及IT部门所熟知(除 Linux或者BIND等少数例外情况)。然而,这些项目都是非常实用的工具,而且还是免费的。
如今,软件开发、云计算、分析、机器学习以及几乎所有新兴领域中最重要的软件几乎都拥有开源身份。有时开源软件甚至需要多家互为竞争对手,且资金雄厚的科技公司支持,它们肩负着解决企业计算、重塑企业基础设施和应用程序的重任。
近日,2019年InfoWorld Bossie大奖赛榜单正式公布。今年的获奖者不仅仅是最佳开源软件,同时也代表了目前最出色的软件。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/fe1bebfcc6b5ca8a354ca8fea2c30183.png)
Linux世界中鼎鼎大名的eBPF(The Extended Berkeley Packet Filter)取代了iptables等网络支持工具,同时还以更实用且更安全地方式降低了观察工具在内核空间中运行的成本。
BPF Compiler Collection以高效观察作为核心目标,它提供了一套编译工具,方便用户在Python或Lua内创建和运行eBPF代码。该项目还包含了大量示例程序,可针对代码内存分配以及HTTP数据包等任务运行跟踪和全局筛查。
Netflix 公司主内核与性能工程师 Brendan Gregg 的新书《BPF 性能工具》(BPF Performance Tools)即将出版,相信届时又将掀起新一波 eBPF 人气飙升。因此,推荐大家在这波浪潮来临之前抢先一步学习了解。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/40fc030759e63eaf44fb234c4685c42c.png)
WebAssebley(简称Wasm)即将推出闪电般的启动速度以及以及极低的占用空间,因此它将成为无服务器架构与物联网边缘设备的理想选择。Wasmer在WebAssembly服务器运行时领域居于领先地位,其优势主要在于接近原生水平的执行速度。事实上,单凭速度这一点, Wasmer 就足以技压群雄。
Wasmer结合了各种独立的运行时与工具包,用于编译并定位WebAssembly二进制代码,包括WebAssembly 模块、CLI可执行应用以及嵌入至现有代码中的 二进制库等等。类似于 Node.js与JavaScript的关系,Wasmer允许WebAssembly在各个平台上运行。
Wasmer以Cranelift 代码生成器为基础,提供涵盖 Go、C/C++、C#、Python、R、Rust、Ruby 以及 PHP 的语言集成,同时还支持 Linux、Mac 与 Windows 运行时(在 Windows 平台上采用 Emscripten 实现,尚处于实验阶段)。Wasmer的类NPM工具包管理器WAPM提供了经过认证且可立即运行的各类库。
在2019 年,Wasmer有添加了两套Cranelift的后端插件(包括通过优化提高LLVM 运行时运行速度),同时还为 WASI(WebAssembly 统接口)与SIMD 并行性提供支持。WASI是实现应用程序跨操作系统可移植性的关键,而SIMD支持将为加密及视频处理等数学密集型应用带来巨大的性能提升。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/b721cd1340f1485668e190eb09ecea4c.png)
近年来,软件领域中又出现了不少卓越的工具链创新成果,其中LLVM 编译器框架为各类编译器的实现提供了。而来自微软的Language Server Protocol为软件开发人员提供了另一个强大的工具:它为编译器或者语言工具链与创建代码的IDE或编辑器之间建立了双向通道。
开发人员需要来自编程工具的实时反馈。除了静态查找标准库函数之外,还需要与他们编写的代码相关的交互式详细信息。为此Language Server Protocol提供了开发工具与语言服务器间通信的JSON-RPC标准,而该标准提供了编辑期间的语言文档以及自动补全等功能。
从Ada到YANG,目前Language Server Protocol已经为数十种语言提供实现方案。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/93886f8435dcd82db17494dddcdb51ea.png)
在降低运营开销方面,无服务器架构所向披靡。但遗憾的是,降低开销往往也伴随着架构复杂性的加剧,以及云供应商锁定等问题。Serverless Framework在无服务器应用程序与各类流行云实现方案(包括Amazon Web Services、微软的Azure、Google Cloud Platform以及 Kubernetes)之间建立了与供应商无关的抽象解决方案。
Serverless Framework不仅允许用户自由选择不同的部署目标,而且还能让你更快更轻松地测试、部署以及管理事件驱动型功能即服务应用程序。在创建功能、定义端点并指定目标云环境之后,Serverless Framework 即可对代码、安全性要求、资源要素以及云部署YAML文件进行打包,然后部署项目。另外,该框架内置的自动检测功能还会立即开始监控并捕捉各项指标,从而提供开箱即用的通知功能。
今年,该项目背后的开发人员将着重加强有关Serverless Framework实时监控、安全性与集成测试方面的工作,并将其整合至应用程序的生命周期管理中。新的条款允许用户管理凭证及访问策略,从而增强安全性,而且你可以通过编程修改这些限制。此外,还有一套新的即插即用组件(目前仍处于 beta 测试阶段),它们将为静态网站以及全栈Web应用程序的构建提供一套常用的功能。
总的来说,Serverless Framework为开发人员创造了无缝式使用体验,从而消除了构建无服务器应用程序时面临的各种常见难题与陷阱。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/59d699b6d8dad72162b4be03dd909eba.png)
微服务架构能够简化开发流程,但随着服务数量的爆炸式增长,各服务间通信的管理也会变得异常复杂。基于Kubernetes生态系统的Istio将发现、负载均衡、访问控制、加密、流量管理以及监控等功能集成至基础设施层级的解决方案中,从而显著减轻了开发人员在服务间通信上的负担。开发人员无需手动编写这些服务当中的逻辑。
Istio能够管理所有介于Kubernetes集群中容器与编排服务之间的空间,通常称之为“服务网格”。Istio利用Envoy代理“sidecar”,充当服务网格中各个服务间所有通信的媒介。用户可以通过高级抽象随意改动集群中的网络,然后逐步推出,如果发现问题则可以回滚。Istio还能生成与流量活动相关的统计信息,帮助你迅速掌握有关服务性能的信息。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/704d4e2bf713c39f01915354e1e5af62.png)
作为Kubernetes的标准服务代理,Envoy一直在不断发展壮大。在成为首个云原生计算基金会项目(甚至早于Prometheus和Kubernetes)之后,Envo快速进入Istio与AWS App Mesh 等服务网格的核心,并成为大部分 Kubernets 设置中不可或缺的组成部分。在大型生产部署方面Envoy甚至可与Reddit媲美,足以证明其处理大规模的能力。
在过去一年中,我们迎来了Envoy Mobile,该版本将Envoy的诸多优势(包括断路、重试处理、可观察性与一致性等)引入到了面向iOS与Android的统一跨平台库中。尽管尚处于早期发布阶段,但我们对Envoy Mobile在 2020年的表现已经充满期待。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/f68d156363c69e16b028b1066d784f50.png)
如果你的工作是负责构建 API,那么就不需要反复实现速率限制、负载均衡、身份验证、日志记录等功能。由Mashape(现在的Kong有限公司)于2015年开源的Kong提供的功能甚至超越了上述这些功能。此外,该公司还提供Kong Enterprise,这是一套基于开源内核构建的企业级API平台。
Kong以开箱即用方式提供了应用程序API集所需的大部分功能。除了上述提到的主要功能之外,Kong还提供了断路器、运行状态检查、开放授权、转换、缓存、地理位置复制等功能。即便未出现在默认列表中的功能,你也可以通过Kong Hub从数十款插件中找到。
此外,Kong还能够与各类云原生工具协同合作。Kubernetes用户希望自己的集群与Kong紧密集成,通过使用Kubernetes Ingress Controller for Kong来减少主要功能的重复开发。Kong Enterprise版本不仅拥有强大的支持,同时还提供专业级的自动化与可视化工具。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/138de210d7bdb5ac18b1af9193b4ec34.png)
一般来讲,IT基础设施需要手动方式拼凑起来(非常麻烦),但是你也可以通过调用数十个API的脚本组装在一起(极为复杂),还有一种方式是通过Terraform等工具执行配置文件(高度专业化)。Pulumi 提供了一种与众不同、通用且基本思路非常简单的方案,能够帮助我们轻松解决各类集成过程中的常见问题。我们无需再为新工具或笨拙的旧工具搞得头昏脑胀,因为我们可以通过最熟悉、最喜爱的常规编程语言,以编程的方式声明基础设施。不再需要YAML!
最重要的是,Pulumi允许你以相同的方式在所有主流云服务(Amazon、Azure、Google)以及一切Kubernetes系统当中实现基础设施的配置与管理。Pulumi结合了云对象模型、运行时评估以及所需状态,允许用户跨云配置并管理各类资源,包括无服务器代码片段、静态网站以及各类常见的应用程序或应用模式。
你可以使用JavaScript、TypeScript、Python以及Go语言编写Pulumi代码,相信这些编程语言涵盖了绝大多数企业的使用。另外,项目的示例库中还包含多种能够直接使用或者扩展的常用模式。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/ddee9c3873cde6dc1cf470bb8ceab481.png)
Kubernetes与Cloud Foundry等云原生技术非常复杂。如果将微服务架构引入到这套组合,那么监控工作的难度将加剧。Sysdig为我们提供一组工具,不仅可以用于洞悉基于容器的应用程序的实际性能,同时还可以帮助用户发现各类异常状况与安全威胁。
Sysdig Inspect能够捕捉到内核级别的容器状态,帮助用户检测性能问题、跟踪趋势,并在发生严重性能瓶颈之前进行故障排查。你可以利用Sysdig Falco,为容器定义“常规”活动,而且还可以在检测到异常行为时,通过基于规则的Falco过滤引擎触发警报,甚至还可以触发预设操作。Sysdig Prometheus涵盖的检测功能几乎可以检测到所有指标,它通过简单的查询与实时可视化,汇总了来自分布式容器、应用以及服务运行时的数据。
在过去的一年中,Sysdig改进了警报自定义与触发器,同时还提升了仪表板的深度与控制详细程度(增加了CPU/内存使用率以及容量阈值等信息),此外还增强了安全策略编辑器中显示的重要规则。
容器化应用程序带来了独特的性能挑战与漏洞。Sysdig工具能够帮助我们更为严密地观察容器的性能与安全。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/a4a5cc5fd6dee365be0680799055c98a.png)
大规模容器部署需要大量Docker镜像传输,这意味着我们必须面对延迟峰值与扩展规模带来的挑战,特别是需要从跨多个区域的数据中心提取镜像的情况下。我们该如何应对这一难题呢?Uber的工程团队为此推出了Kraken。
Kraken是面向 Docker注册表的高可扩展性对等缓存与分发层,其能够在几秒钟之内完成TB级镜像数据的提取。Kraken的核心为包含三大主要组件的自我修复型torrent种子架构。首先,源种子节点缓存从可插拔的后端Blob存储(例如Amazon S3或者HDFS)中提取镜像数据。随后跟踪器节点创建所有可用对等方与发种方的内存全局视图。最后由对等方负责实现Docker注册表接口并自主执行镜像pull请求。
各对等节点并行工作,可在几秒钟之内组装出成千上万个GB级别大小的Blob,这样的速度比传统集中式注册表高出数个量级。此外,Kraken还提供良好的优化与调整参数,以避免造成网络过载。如果你已经用尽一切传统方法尝试缓解Docker启动延迟,那么Kraken可以为你带来新的希望。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/c72866e74e88ac53b1db70bd403b545f.png)
Anaconda Distribution是一套经过精心设计且完全开源的Python(与R)软件包集合,专门面向各类机器学习与数据科学需求。Anaconda最为突出的地方在于,用于启动应用程序与管理软件包的图形化桌面环境的Anaconda Navigator以及 Anaconda的本地软件包管理器Conda。
由于大多数软件包都包含对特定版本的依赖性,因此如果没有Conda,那么我们就很难避免安装冲突并保证所有软件包的及时更新。Conda负责管理Anaconda公开库以及第三方渠道当中所有的依赖关系与更新。Python的原生软件包管理器Pip为Python提供了强大的软件包安装与管理;但Conda不仅能够处理 Python 软件包,同时也能够承担起Python生态系统之外的各类依赖关系管理工作。
今年,Anaconda带来了用户期待已久的Conda性能提升。由于需要安装大量库,因此其更新的下载与安装变得异常缓慢。幸运的是,自今年夏季Conda 4.7发布以来,我们发现软件包的管理体验变得更轻更快。
Anaconda Distribution适用于Linux、Windows以及MacOS,是一套一流的机器学习与数据科学生态系统,其支持GPU训练并提供强大的作业调度程序。另外,对开发人员来说,遵循BSD许可也具有极大的吸引力。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/d5e7fda136fc100e7a482ca3ac36bde3.png)
号称为“完美版 Java”的Kotlin语言由JetBrans公司所创建。该公司还开发出面向Java的IntelliJ ID。Kotlin语言的beta版最初发布于 2011 年,它能够像Java一样在JVM上运行,而且还能够与Java库无缝实现互操作。此外,它还消除了Java中的大量冗余细节,增加了强大的函数编程能力,同时以更优雅的方式解决了空指针异常等安全问题。如今谷歌已经指定Kotlin为创建Android应用程序的首选语言,这意味着即使转投Kotlin的怀抱,各位Java开发人员也不用担心失去Android这一巨大的应用开发市场。
Kotlin的一大基本发展方向是只采用部分Java的实现思路,并将其作为语言与工具链中的主要部分。Kotlin 1.3于2018年末发布增加了直接将Kotlin编译为平台本机代码的功能,这也解决了长期以来Java一直未能实现的重大难题(只能通过商业插件实现)。另一项与之相关的功能是contracts,这是一种利用函数对编译器工作方式进行描述的方法。现在,Kotlin 标准库中的所有函数都使用了contracts。Kotlin项目的长期计划不再是照搬Java,而是全面超越。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/856c891b630279fddf8a3affe8e209d2.png)
随着数据科学的突飞猛进,市场对快速便捷数值计算工具的需求也在不断增长。而Julia语言正是为此而设计,其旨在兼顾Python的便捷性、C的速度、以及Fortran、R乃至Matlab的数学计算能力。因此,这款编程语言迅速吸引了各类数学以及统计学用户的关注,包括数据科学家、研究科学家、工程师以及金融分析师与量化专家。
经过9年的开发与7年的 beta 测试后,Julia 1.0于2018 年正式亮相。这一里程碑版本整合了核心功能与机器原生速度、面向数学的语法、多次分派、异步 I/O、并行性、软件包管理以及良好的语言整体稳定性等优势。自那以来,Julia的三大主要发行版带来了数十项新功能,旨在不断改善其数学、统计以及常规编程方面的实际表现。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/a081dd387264d407d5475d64e75c433c.png)
今年,以开源内存数据网格闻名的 Hazelcast发布了Hazelcast Jet的首个通用版本。Hazelcast Jet是一套面向Java的可嵌入分布式流处理引擎。尽管通用版本刚刚发布,但实际上Hazelcast Jet 3已拥有多年的实践应用经验,并表现出了强大的可靠性。(从 3.x版本开始,Jet与Hazelcast的旗舰IMDG产品版本保持一致。)
Hazelcast Jet的底层采用了java.util.stream API,创建出了一套多线程数据摄取网络,该网络能够在调频情况下高效运行。此外,连接器还能让用户轻松地利用Hazelcast IMDG、HDFS 以及 Kafka等数据源来丰富数据流。对于实时边缘应用程序(例如对物联网传感器网络的监控以及面向支付处理网络的欺诈检测)来说,Jet是一套理想的解决方案。
Hazelcast Jet的通用版本提供对Java 11的全面支持,从而增强对数据流诊断的分析能力、新的管理转换与聚合功能以及无损作业恢复(仅适用于企业版)。该版本提供了map、filter 以及 reduce 等概念,可以让Java开发人员感到并植入贵。如果你希望将分布式实时情报嵌入至流处理Java应用程序中,那么可以尝试一下Hazelcast Jet。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/a0c7e09f7cbc5399ed43fe47f7463bb1.png)
Apache Airflow是一套基于Python的平台,其可以通过编程实现工作流的编写、规划与监控。这些工作流属于任务的有向无环图(DAG),你可以在Python代码中编写流水线以实现 DAG 配置。
Airflow能够生成Web服务器充当其用户界面。该网站可以通过多种视图展示DAG,并对DAG进行操作。此外,Airflow还提供命令行界面,允许用户对DAG进行多种类型的操作,同时还能实现服务启动、开发与测试。
你可以定义自定义的操作程序与执行程序,还可扩展Airflow库以确保满足环境抽象级别的需求。你可以利用Jinja模板引擎指定脚本的参数。Airflow还具有可扩展的模块化架构,还可以通过消息队列编排任意数量的工作程序。Airflow背后有数据库的支持,所以你可以选择使用 SQLite(仅用于开发及测试)或者任何其他常见的关系数据库。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/199117e2046d78060923edf784fcb64f.png)
大约在五年前,GridGain将Ignite代码库交由 Apache 软件基金会开源。从那以后,该公司一直在为这套内存数据网格平台提供企业级功能、更新与功能增强。今年3月份,GridGain社区版首次发布,Apache Ignite包含了与GridGain同名的调整与补丁,且优化了性能与可靠性,同时还增强了安全性并简化关键任务部署的维护流程。
GridGain社区版提供可伸缩集群、本机复制以及良好的备份与恢复选项,因此非常适合从分布式数据中心为数据密集型应用程序提供服务。此外,GridGain还支持本地、云以及混合部署方式。虽然GridGain中的高级功能集仍然要求按需付费,但此次推出的GridGain社区版可以免费下载这套可靠的高容量、内存内流式传输与实时事件处理平台。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/00a65426c49bf42e78a10a45c05f28d5.png)
Apache Druid是一套面向列的时间序列数据库加分析引擎,可为事件驱动型高速数据带来实时可视化与低延迟查询功能。Druid结合了流式摄取、OLAP风格的批量摄取以及搜索技术,能够轻松对实时及历史数据进行切片、切块以及转换。Druid凭借出色的可伸缩性以及闪电般的即时查询响应速度,成为了超越传统数据仓库的交互式应用程序与高并发工作负载处理的首选。
Druid是一个规模巨大的开源项目。集群包含多个服务器与进程,负责各自独立地处理摄取、查询或工作负载协调任务。但是,这种复杂性并没有影响到出色的灵活性与可靠性。尽管目前Druid尚处于Apache孵化阶段,但其已经拥有良好的稳定性、容错能力并能够在本地或者云环境中支持生产流程。
如果你需要更高级的Druid工具,那么我建议你试试看Imply发行版,这套发行版添加了拖拽式 GUI、高级分析以及向导驱动型Kafka集成机制,还有其他多种监控与管理功能。为了将大量事件源与下游分析更可靠地耦合起来,你可以考虑将Apache Kafka也添加进来。在这里,我们推荐Confluent发行版。Kafka与Druid的结合将成为强大的事件驱动型实时分析搭档。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/61e8596fd82c697fccf147d068a39938.png)
在目前所有优秀的机器学习与深度学习框架当中,TensorFlow无疑是最成熟、在研究论文中引用次数最多(即使谷歌员工的引用之外也是如此)、且在实际生产中表现最亮眼的框架。虽然TensorFlow的学习曲线比较陡峭,但入门难度已经远低于2016年的版本。另外,TensorFlow也已经成为众多谷歌服务的实现基础。
TensorFlow 2.0专注于简单化与易用性,并迎来了急切执行、直观高级的API(Keras)以及适用于任意平台的灵活建模等重要更新。急切执行意味着TensorFlow代码能够在定义时立即运行,而不必等待将所有节点及边界添加到运行会话当中(后者正是TensorFlow原始的运行模式)。TensorFlow 2.0也会继续支持TensorBoard可视化与诊断功能。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/d57d07e97064cb30558dbb3823d0e950.png)
尽管TensorBoard成功降低了TensorFlow以及新型PyTorch程序的理解、调试与优化门槛,但其仍需要在训练完成后,记录日志文件,并使用自己的独立用户界面。事实上,TensorBoard的日志记录分析会带来巨大的资源开销。
TensorWatch是一套可用于深度学习模型调试与可视化的Python库,由微软研究院开发。其能够在训练模型的同时,实时显示可视化图形。此外,它还提供强大的训练前与训练后功能,包括模型图可视化、降维数据探索、模型统计以及用于卷积网络的多种预测解释器。
TensorWatch可以通过Jupyter Notebooks或Jupyter Lab提供交互式实时训练流程调试功能。除了TensorBoard使用的直接日志记录模式之外,TensorWatch还支持懒惰日志记录模式,负责以极低的资源开销观察变量。因此,你可以根据变量的上下文执行交互式查询,并返回相关数据流供进一步可视化处理。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/b6c30b856c4408d2ad1d16200dfb3844.png)
PyTorch于2018年进军深度学习领域,并随即成为研究人员的热门选择之后,又在2019年进一步针对生产需求做出了改进。随着PyTorch 1.0版本的到来以及TorchScript的出现(TorchScript是为JIT编译的Python子集,同时还结合了高速的C++运行时),该框架非常适用于生产应用。既然Facebook能够利用PyTorch处理好每天一万亿次的操作,那么它也绝对能够满足我们所有的日常需求。
除了生产方面的提升外,在过去的一年中,PyTorch的相关生态系统也快速发展成熟。如今,它有了自己的中枢平台PyTorch Hub,用于存储各类经过预先训练的PyTorch模型,以及相关文本、视觉与音频库。这些库包含最先进的技术成果,而且全部打包就绪供用户直接使用。毫也难怪PyTorch已经成为众多数据科学家的最爱,并有望在2020年以更低的入门难度在深度学习领域发挥重大作用。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/7d56d29f333ef6608b2c4bce6ac64061.png)
Hugging Face的开发人员们通过PyTorch-Transformers为PyTorch以及NLP(自然语言处理)社区提供了无价的服务。该库包含大量最新、最前沿的NLP研究模型实现成果,例如BERT、GPT-2以及XLNet 等等。这些实现通常会在一周之内进行更新,用以及时跟进新的模型或版本。
凭借着面向所有模型的统一API以及已训练模型(同时支持TensorFlow训练模型的转换)及新模型构建的完善文档,PyTorch-Transformers成为了急切希望探索建模新世界的所有人的最佳选择。除了学术研究之外,该库还具备充分的实用性,可用于Hugging Face自家的Talk To Transformer等产品。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/8324bf9162589dfe226dd8897311d41f.png)
Ludwig由Uber公司开发的Python工具箱,其基于TensorFlow,旨在降低神经网络编程的复杂度。Ludwig能够帮助数据科学新手在无需编写任何代码的前提下,完成对复杂深度学习模型的训练与测试。你只需要调整YAML配置声明文件的参数,即可轻松完成任务。当然,经验更为丰富的数据工程师也可以在后台调整更多其他参数。
你可以通过Ludwig定义数据源(目前支持CSV文件或Pandas DataFrame),同时还可以选择你需要的功能与编码器。接下来,Ludwig的预处理器开始工作,通过拆分数据集进行训练与测试、构建神经网络,并通过不同的模型优化方法进行迭代。内置的可视化工具允许用户检查模型的测试性能与预测值结果。此外,Ludwig提供的编程API还能够直接导入到Python,因此该工具包的实用性不仅限于命令行工具。
Ludwig支持大量的数据类型(包括文本、图像以及时间序列)以及多种神经网络编码器(包括多种CNN/RNN组合,以及用于较大图像处理网络的ResNet)。Ludwig能够与其他Uber工具(包括用于分布式GPU训练的Horovod)协同工作,而且很快还会增加对Amazon S3以及HDFS存储的支持。
如果你希望在深度学习领域获得更快的迭代实验能力,那么Ludwig应该能够满足你的需求。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/d742e232916e01f68615d55e4cd3f144.png)
通常,提升速度就意味着寻找全新的方式——只有放弃你所熟悉的固有解决方案,才能全面提升速度。但RAPIDS致力于打破这种局面,这是一套数据科学框架,能够在无需放弃已有知识与技术的前提下成功实现机器学习加速。
RAPIDS通过在内存内处理的方式,在GPU上直接训练机器学习模型,而且与其他GPU训练方法相比,其训练速度仍然会高出几个量级。它所使用的数据分析工具与Python相关的实现方案完全等效(主要是Pandas DataFrames)。在某些情况下,你只需要修改脚本中的import语句即可。
RAPIDS的一大致命缺陷在于平台支持能力有限。目前该框架只能在Ubuntu和CentOS系统之上运行,而且需要与Python Anaconda发行版配合才能实现最佳效果。另外,它也不具备利用pip在通用Python环境下进行安装的功能。但是,凭借着将数据准备与模型训练任务迁移至 GPU,它能够节约大量时间,这可以在一定程度上抵消上述种种不便。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/24706bed1d68dc9e1be47c5e1c4f7f25.png)
机器学习项目有自身的生命周期。实验很难跟踪,模型也很难推向生产,结果很难复现。MLflow的目标是让机器学习项目像其他软件开发项目一样容易管理,用一致、可重复的方式来准备数据、跟踪代码、配置并输出,可以共享模型和工作流,也可以将模型部署到生产环境。
MLflow为机器学习项目的每个主要部分和阶段提供了工具。对于机器学习实验,MLflow提供了API来跟踪并比较结果。对于复现生成结果的环境,MLflow提供了一种基于Conda和Docker的代码封装格式。对于将模型发布到不同的开发平台,MLflow提供了一种模型打包格式,可以让模型提供预测,同时还能保持创建该预测所需的数据和代码之间的关系。
MLflow是编程语言无关的,也是平台无关的,可以在Linux、Windows和MacOS上运行,适用于任何机器学习库(TensorFlow、PyTorch等)。MLflow用Python编写,所以与Python生态系统配合得最好,但也可以与R和Java配合使用,还提供REST API,因此适用于几乎任何语言。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/470a679adcff072d93c16836a2de5a81.png)
Kubeflow听上去似乎是将IT界两个最热门的东西——Kubernetes和机器学习——结合在了一起,但它实际上解决的是企业不得不反复处理的真实问题:怎样将机器学习研究从开发转向生成环境,怎样将生产环境中获得的遥测数据拿回开发环境来促进进一步的研究。
Kubeflow基于Google的TensorFlow Extended平台,它现在更加通用,支持多种不同的机器学习库,如PyTorch、MXNet和Chainer等,而且获得了来自Chase、微软、阿里巴巴等多家公司的支持和贡献。Kubeflow的目标是简化机器学习模型的开发、管理和规模伸缩,绝对是2019年以后值得关注的项目。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/bfeb199a839875abdfa24155bc4f1d04.png)
今年年初,Databricks开源了Delta Lake,震惊了所有人。该软件曾经是,而且现在也依然是该公司的商用软件中必不可少的一部分。Delta Lake是个数据存储曾,可以处理PB甚至EB级别的数据,并提供ACID特性,还有简单易用的数据版本管理,只需在Apache Spark的读取函数调用中传递时间戳,就能实现“时间旅行”功能。
尽管Delta Lake依然在开源开发过程的早期阶段(现在版本为六月份发布的0.2.0,增加了对AWS和Azure的云支持),它已在Viacom和McGraw Hill的产品中使用,所以你大可信赖它的数据湖。Delta Lake很可能在未来几个月内席卷各大企业。
原文:https://www.infoworld.com/article/3444198/the-best-open-source-software-of-2019.html#slide1
本文为 CSDN 翻译,转载请注明来源出处。
【END】
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/161069c6bfc37e92d4c4cf2744340a96.png)
热 文 推 荐
☞
☞
点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/af82729b6750d71f1102b847a172b5ea.png)