在这辞旧迎新的重要时刻,我们将共同回顾 2017 年年内那些最受欢迎的优步开源项目:
OpenTracing 兼容式分布追踪系统
受到 Daper 与 OpenZipkin 的启发,优步利用 Go 语言打造了自己的开源分布式追踪系统 Jaeger。Jaeger 能够帮助用户更轻松地通过对各独立服务 / 端点概率进行一致性前期采样以监控复杂且基于微服务的架构,且与 OpenTracing 全面兼容。其能够监控分布式上下文传递、分布式事务监控、根本原因分析、服务依赖性分析以及性能与延迟优化等。
2017 年 9 月,Jaeger 成为云原生计算基金会(简称 CNCF)旗下的第 12 个托管项目。
Pyro 是一款用于深度概率建模的工具,且对现代深度学习与贝叶斯建模机制的优势加以统一。Pyro 的目标在于加速这些技术的研究与应用,并确保其可供更为广泛的 AI 社区加以访问。该语言属于一套灵活且具备可扩展性的深度概率编程库(简称 PPL),构建于 PyTorch 基础之上。
Pyro 是一套通用型 PPL,可用于表示任何可计算的概率分布,且与手写代码相比能够在更低资源需求之下扩展至大型数据集。凭借着出色的敏捷性与可维护性,Pyro 实现了一套强大且可组合的小型抽象核心。此外,Pyro 还提供自动与手动两种功能,可通过高级抽象来表达创成式与推理模型,同时允许专家轻松定制推理方案。
跨平台移动架构框架
RIB 是一套跨平台架构框架,负责支持优步旗下的多款移动应用——其中亦包括我们的全新骑行应用。RIB 这一名称的全程为 Router、Interactor and Builder,即路由器、交互器与构建器,而三者亦是这套框架中的核心组件。
在这种新型架构模式当中,其逻辑被拆分为多个小型且可独立测试的片段,这些片段各自拥有单一目的且遵循单一责任原则。因此,RIB 框架适用于构建有大量工程师参与且涉及嵌套状态的移动应用。
面向 TensorFlow 的分布式训练框架
Horovod 这一名称源自一种传统俄罗斯民间舞蹈,表演者互相挽起手臂围成圆圈。Horovod 是一套独立 Python 软件包,构建于优步的 Michelangelo 机器学习即服务平台之上。Horovod 能够简化并加速分布式深度学习项目的启动与运行。通过利用消息传递接口(简称 MPI)实现应用环状规约,Horovod 能够显著提升 TensorFlow 模型的实用性与性能表现。
在优步内部,我们发现与使用参数服务器的分布式 TensorFlow 模型相比,MPI 模型更为直观且代码修改要求也更为亲民。
大规模 WebGL 支持型数据可视化方案
deck.gl 4.0 发布于 2017 年 4 月,可通过丰富的可视化层实现高级地理空间探索,而这些可视化层亦可实现即时数据聚合。在地图之外,其将 deck.gl 方案扩展至更为广阔的非地理空间可视化领域,具体包括机器学习与抽象数据可视化(包括图形与网络等)用例。
deck. gl 4.0 还通过提供更为全面的交互式文档、独立示例、新型高级演示以及 deck.gl 3.0 升级指南等资料进一步简化了这款工具的上手难度。
面向 Java 实现基于注释的快速 Null 检查
NullAway 是一款快速的实用性工具,旨在帮助消除 Android 应用当中的 NullPointerExceptions(简称 NPE)。从核心角度看,NullAway 其实是一款面向 Java 代码的基于类型的开源 NPE 检查器,其可以插件形式接入 Error Prone bug 查找框架。
自建立以来,NullAway 大幅提高了开发人员的生产力水平,同时保持着我们实现安全部署所需要的强大检查能力。在 2017 年,我们将这款工具贡献给开源社区,以确保更多人能够借此构建起更为可靠的应用成果。
原文链接:
https://eng.uber.com/2017-open-source/