InfoWorld 公布了 2023 年最佳开源软件榜单,旨在表彰年度领先的软件开发、数据管理、分析、人工智能和机器学习开源工具。
InfoWorld 是致力于引领 IT 决策者走在科技前沿的国际科技媒体品牌,每年 InfoWorld 都会根据软件对开源界的贡献,以及在业界的影响力评选出当年的 “最佳开源软件” (InfoWorld's Best of Open Source Software Awards, Bossies),该奖项评选已经延续了十多年。
此次上榜的 25 个软件涵盖编程语言、运行时、应用程序框架、数据库、分析引擎、机器学习库、大型语言模型 (LLM)、用于部署 LLM 的工具等领域,具体如下(点击每个项目名可跳转进入项目介绍页面):
Apache Hudi
在构建开放式数据湖或湖仓一体时,许多行业都需要一个更可发展和可变化的平台。以出版商、广告商和媒体买家的广告平台为例,仅有快速分析是不够的。InfoWorld 认为,Apache Hudi 不仅提供了快速的数据格式、表格和 SQL,还使它们能够进行低延迟的实时分析。它与 Apache Spark、Apache Flink 以及 Presto、StarRocks 和 Amazon Athena 等工具集成。简而言之,如果你想在数据湖上进行实时分析,Hudi 是一个非常不错的选择。
Apache Iceberg
“HDFS 和 Hive 太慢了”。Apache Iceberg 不仅能与 Hive 协同工作,还能直接与 Apache Spark 和 Apache Flink 以及 ClickHouse、Dremio 和 StarRocks 等其他系统协同工作。Iceberg 可为所有这些系统提供高性能的表格式,同时支持完整的模式演进、数据压缩和版本回滚。Iceberg 是许多现代开放数据湖的关键组成部分。
Apache Superset
多年来,Apache Superset 一直是数据可视化领域的佼佼者。对于想要大规模部署自助服务、面向客户或面向用户的分析工具的人来说,Superset 几乎是唯一的选择。Superset 几乎可以为任何分析场景提供可视化功能,包括从饼状图到复杂的地理空间图表。它适用于大多数 SQL 数据库,并提供 drag-and-drop builder 和 SQL IDE。如果你要对数据进行可视化,Superset 值得一试。
Bun
Bun 是采用 Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-one JavaScript runtime"。Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (native bundler)、转译器、task runner、npm 客户端,以及 fetch
、WebSocket
等 Web API。
InfoWorld 评价称,当你以为 JavaScript 已经进入可预见的 routine 时,Bun 出现了。这个“轻佻”的名字掩盖了它严肃的目标:将服务器端 JS--运行时、捆绑程序、包管理器--所需的一切都集成到一个工具中。让它成为 Node.js 和 NPM 的直接替代品,但速度要快得多。这个简单的主张似乎让 Bun 成为了自 Node 颠覆 applecart 以来最具颠覆性的 JavaScript 工具。
Bun 的速度部分归功于 Zig,其余则归功于创始人 Jared Sumner 对性能的执着追求。除了性能之外,将所有工具集成在一个软件包中,也让 Bun 成为 Node 和 Deno 的有力替代品。
Claude 2
Anthropic 的 Claude 2 在单个提示中最多可接受 100K tokens(约 7 万字),并可生成多达数千个 tokens 的故事。Claude 可以编辑、改写、总结、分类、提取结构化数据、根据内容进行问答等。它在英语方面的训练最多,但在其他一系列常用语言方面也表现出色。Claude 还掌握了大量常用编程语言的知识。
Claude 从一开始就被训练成 helpful、honest 以及 harmless 的机器人,并经过广泛的重新训练,变得更加无害,更难产生攻击性或危险的输出。它不会根据你的数据进行训练,也不会在互联网上查询答案。
CockroachDB
CockroachDB 是一种分布式 SQL 数据库,可实现强一致性 ACID 事务,通过实现数据库读写的水平扩展性,解决了高性能、事务繁重型应用程序的关键扩展性问题。CockroachDB 还支持多区域和多云部署,以减少延迟并遵守数据法规。部署实例包括 Netflix 的数据平台,该平台拥有 100 多个 CockroachDB 生产集群,支持媒体应用和设备管理。主要客户包括 Hard Rock Sportsbook、摩根大通、桑坦德银行和 DoorDash。
CPython
在 Python 3.11 和 Python 3.12 这两个版本中,Python 核心开发团队对 Python 解释器的参考实现 CPython 进行了一系列变革性升级。其结果是,Python 运行时性能对所有人来说都实现了大幅提升,而不仅限于那些选择使用新库或 cutting-edge 语法的少数人。
InfoWorld 认为,全局解释器锁(Global Interpreter Lock)是阻碍 Python 真正实现多线程并行的一个长期障碍。
DuckDB
DuckDB 是一种分析数据库,它秉承了 SQLite 等小型但功能强大的项目的精神。DuckDB 提供所有熟悉的 RDBMS 功能--SQL 查询、ACID 事务、二级索引--但增加了分析功能,如大型数据集的连接和聚合。它还可以摄取和直接查询常见的大数据格式,如 Parquet。
HTMX 和 Hyperscript
HTMX 采用了大众所熟悉和喜爱的 HTML,并通过增强功能对其进行了扩展,使编写现代网络应用程序变得更加容易。HTMX 消除了用于连接网络前端和后端的大量模板 JavaScript。相反,它使用直观的 HTML 属性来执行任务,如发出 AJAX 请求和用数据填充元素。
同类项目 Hyperscript 引入了类似于 HyperCard 的语法,简化了许多 JavaScript 任务,包括异步操作和 DOM 操作。总之,HTMX 和 Hyperscript 为当前的反应式框架趋势提供了一个大胆的替代方案。
Istio
Istio 是一个服务网格,可为基于容器的微服务简化网络和通信,提供流量路由、监控、日志记录和可观测性,同时通过加密、身份验证和授权功能增强安全性。
Istio 将通信及其安全功能与应用程序和基础架构分离开来,从而实现了更安全、更一致的配置。该架构由部署在 Kubernetes 集群中的控制平面和用于控制通信策略的数据平面组成。2023年,Istio 从 CNCF 孵化项目中毕业,在云原生社区中获得包括谷歌、IBM、红帽、Solo.io 等公司在内的支持和贡献。
Kata Containers
Kata Containers 结合了容器的速度和虚拟机的隔离性,是一种安全的容器运行时,使用了英特尔 Clear Containers 和 Hyper.sh runV。Kata Containers 可与 Kubernetes 和 Docker 协同工作,同时支持多种硬件架构,包括 x86_64、AMD64、Arm、IBM p 系列和 IBM z 系列。
获得了谷歌云、微软、AWS、阿里云、思科、戴尔、英特尔、红帽、SUSE 和 Ubuntu 等企业的赞助。
LangChain
LangChain 是一个模块化框架,可简化由语言模型驱动的应用程序的开发。LangChain 使语言模型能够连接到数据源并与其环境交互。LangChain 组件是模块化抽象和抽象实现的集合。
LangChain off-the-shelf chains 是组件的结构化组合,用于完成特定的高级任务。你可以使用组件定制现有的链,也可以构建新的链。LangChain 目前有三个版本: 一个是 Python 版本,一个是 TypeScript/JavaScript 版本,还有一个是 Go 版本。截至目前,已有大约 160 个 LangChain 集成。
Language Model Evaluation Harness
当一个新的大语言模型(LLM)发布时,通常都会被进行评估,将该模型与 ChatGPT 在某个基准上进行比较,很多公司可能会使用 lm-eval-harness 来生成评估分数。lm-eval-harness 由分布式人工智能研究所 EleutherAI 创建,包含 200 多个基准,而且很容易扩展。该工具甚至被用来发现现有基准中的不足,以及为 Hugging Face 的开放式 LLM 排行榜提供支持。
Llama 2
Llama 2 是 Meta AI 的下一代大型语言模型,与 Llama 1 相比,其训练数据量增加了 40%(来自公开来源的 2 万亿个 tokens),上下文长度增加了一倍(4096)。
Llama 2 是一个使用优化的 Transformer 架构的 auto-regressive 语言模型。调整后的版本使用了监督微调(SFT)和人类反馈强化学习(RLHF),以符合人类对有用性和安全性的偏好。Code Llama 是通过在代码特定数据集上对 Llama 2 进行微调而训练出来的,它可以根据代码或自然语言提示生成代码和有关代码的自然语言。
Ollama
Ollama 是一款命令行工具,可在 macOS 和 Linux 上本地运行 Llama 2、Code Llama 和其他模型,并计划支持 Windows。Ollama 目前支持近二十多个语言模型系列,每个模型系列都有许多可用的"tags"。Tags 是模型的变体,这些模型使用不同的微调方法以不同的规模进行训练,并以不同的级别进行量化,以便在本地良好运行。量化级别越高,模型越精确,但运行速度越慢,所需的内存也越大。
Polars
Pandas 能做到的 Polars 不一定能做到,但它能做到的事情都能以极快的速度完成--比 Pandas 快 10 倍,使用的内存只有 Pandas 的一半。来自 PySpark 的开发人员会觉得 Polars API 比 Pandas 中的更易上手。如果你正在处理大量数据,Polars 会让你的工作速度更快。
PostgreSQL
PostgreSQL 已经有 35 年的历史,有 700 多位贡献者参与其中,在关系数据库管理系统中估计占有 16.4% 的市场份额。最近的一项调查显示,在 9 万名开发人员中,45% 的人首选 PostgreSQL。
9 月份发布的 PostgreSQL 16 提升了聚合和选择不同查询的性能,增加了查询并行性,带来了新的 I/O 监控功能,并增加了更细粒度的安全访问控制。同样在 2023 年,Amazon Aurora PostgreSQL 增加了 pgvector,以支持生成式 AI 嵌入,谷歌云也为 AlloyDB PostgreSQL 发布了类似的功能。
QLoRA
QLoRA 是华盛顿大学提出的一种有效的微调方法,可以减少内存使用量,足以在单个 48GB GPU 上微调 65B 参数模型,同时保留完整的 16 位微调任务性能。QLoRA 通过冻结的 4 位量化预训练语言模型将梯度反向传播到低阶适配器 (LoRA)。
使用 QLoRA 意味着你可以在台式机上微调 30B 以上的庞大参数模型,与在多个 GPU 上进行全面调整相比,精度损失很小。事实上,QLoRA 有时甚至做得更好。InfoWorld 评价称,“低位推理和训练意味着更多的人可以使用 LLM--这不正是开源的意义所在吗?”
RAPIDS
RAPIDS 是用于常见数据科学和分析任务的 GPU 加速库的集合。每个库处理特定的任务,例如用于数据帧处理的 cuDF、用于图形分析的 cuGraph 和用于机器学习的 cuML 。
其他库涵盖图像处理、信号处理和空间分析,而集成则将 RAPIDS 引入 Apache Spark、SQL 和其他工作负载。如果现有的库都不符合要求,RAPIDS 还包括 RAFT,这是用于构建自己的解决方案的 GPU-accelerated primitives 的集合。RRAPIDS 还可与 Dask 携手跨多个节点进行扩展,并与 Slurm 一起在高性能计算环境中运行。
Spark NLP
Spark NLP 是一个自然语言处理库,可在 Apache Spark 上运行,支持 Python、Scala 和 Java。该库可帮助开发人员和数据科学家尝试使用大型语言模型,包括来自 Google、Meta、OpenAI 等的 Transformer 模型。
Spark NLP 的模型中心有 2 万多个模型和管道可供下载,用于语言翻译、命名实体识别、文本分类、问题解答、情感分析和其他用例。2023 年,Spark NLP 发布了许多 LLM 集成、新的图像到文本注释器、对所有主要公共云存储系统的支持以及对 ONNX(开放神经网络交换)的支持。
StarRocks
分析技术已经发生了变化。如今的公司经常要向数百万并发用户实时提供复杂的数据,即使是 PB 级的查询也必须在数秒内完成。StarRocks 是一个查询引擎,它结合了 native code(C++)、高效的基于成本的优化器、使用 SIMD 指令集的矢量处理、缓存和物化视图,可高效处理大规模连接。
StarRocks 甚至能在直接查询数据湖和湖仓一体(包括 Apache Hudi 和 Apache Iceberg)时提供接近原生的性能。InfoWorld 认为,无论你是在追求实时分析、提供面向客户的分析服务,还是只是想在不移动数据的情况下查询数据湖,StarRocks 都值得一试。
TensorFlow.js
TensorFlow.js 将谷歌 TensorFlow 机器学习框架的强大功能打包到 JavaScript 软件包中,以最低的学习成本为 JavaScript 开发人员带来非凡的功能。你可以在浏览器、带有 WebGL 加速功能的纯 JavaScript 栈或服务器上的 tfjs-node 库中运行 TensorFlow.js。Node 库为你提供了相同的 JavaScript API,但运行于 C 二进制程序之上,可最大限度地提高速度和 CPU/GPU 使用率。
“就对机器学习感兴趣的 JS 开发人员而言,TensorFlow.js 显然是是一个不错的选择。它为 JS 生态系统做出了值得欢迎的贡献,让广大开发者更容易接触到人工智能。”
vLLM
由于急于在生产中部署大语言模型,导致出现了大量专注于尽可能快地进行推理的框架。vLLM 是最有前途的框架之一,它支持 Hugging Face 模型、兼容 OpenAI 的 API 和 PagedAttention 算法。
目前,它是在生产中为 LLM 提供服务的不二之选,并且 FlashAttention 2 支持等新功能也在快速添加中。
Weaviate
生成式 AI 的蓬勃发展激发了对新型数据库的需求,这种数据库可以支持海量复杂的非结构化数据。向量数据库应运而生。
Weaviate 在部署模式、生态系统集成和数据隐私方面为开发人员提供了大量灵活性。Weaviate 将关键词搜索与向量搜索相结合,可快速、可扩展地发现多模态数据(文本、图像、音频、视频)。它还有用于检索增强生成(RAG)的开箱即用模块,可为聊天机器人和其他生成式 AI 应用程序提供特定领域的数据,使其更加有用。
Zig
InfoWorld 称,Zig 可能是当今所有的开源项目中最重要的一个。
Zig 致力于创建一种具有程序级内存控制功能的通用编程语言,其性能优于 C 语言,同时提供更强大、更不易出错的语法。其目标是取代 C 语言,成为编程生态系统中的基准语言。由于 C 语言无处不在(即系统和设备中最常见的组件),Zig 的成功可能意味着性能和稳定性的广泛提升。
“这是我们都应该期待的。另外,Zig 是一个优秀的、老式的草根项目,拥有着巨大的抱负和开源精神。”
以上就是 2023 年度 InfoWorld Bossie Awards 项目,关于每个项目具体的入选评语等详细信息,可查看网站原文。