导读:知名技术媒体 InfoWorld 的 2023 年 Bossie 奖正式发布。它的目标是表彰2023年度领先的软件研发、数据管理、分析、人工智能和机器学习等方面的开源软件和工具。各位开发者,看看哪个你已经用上了,哪个还没有用,哪个用的已经过时?
背景
当树叶飘落,天空变灰,寒冷开始刺骨,甚至今天在北京的雪花开始飞扬。北方的人们都渴望一点阳光时,此时 InfoWorld 的最佳开源软件奖温暖地发布了。
17 年来,InfoWorld的 Bossies 奖项一直在褒奖最优秀和最具创新性的开源软件。
与往年类似,2023 年的首选产品又包含了不少令人惊讶又不拘一格的技术组合。
在 25 个获奖产品中,您会发现有编程语言、运行时、应用程序框架、数据库、分析引擎、机器学习库、大型语言模型 (LLM)、用于部署 LLM 的工具,还有一两个超出此类简单描述的项目。
如果软件中有一个重要的问题需要解决,我打赌你至少可以找出一个开源项目来解决它。
现在就让我们认识一下 2023 年最佳开源Boss们。
在我们构建开放数据湖或数据湖仓一体时,许多行业需要一个更具演进性和可变性的平台。
以出版商、广告商和媒体购买者的广告平台为典型例子,一般的快速分析软件是根本不够的。
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 数据库通信,并提供拖放构建器以及 SQL IDE。
如果想要实现可视化数据功能,Superset 肯定值得最先选择。
Bun
很多的开发者都认为 JavaScript 需要适应一个可预测与例程。此时,Bun 出现了。
这个似乎“略显轻浮”的名字掩盖了Bun的一个严肃目标:
将服务器端 JS 所需的一切:运行时、打包器、包管理器等都放在一个工具中。
这使Bun成为 Node.js 和 NPM 的直接替代品,但速度更快。
这个看似简单的目标,使 Bun 成为自 Node 翻转以来最具破坏性的 JavaScript 新工具。
Bun 的速度部分归功于 Zig,其创始人贾里德·萨姆纳(Jared Sumner)也对性能极其的“痴迷分子”。
不信,我们可以在命令行上立即感受到差异。
除了性能之外,开发者们只需将所有工具都集成在一个软件包中。现在 Bun 已经变成 Node 和 Deno 的替代品。
Anthropic 团队创造的 Claude 2 ,它在单个提示语中可接受多达 100K 个Token(约 70,000 个单词),并且可以生成多达几千个Token故事。
Claude 可以编辑、重写、总结、分类、提取结构化数据,根据内容进行问答等。它接受过最多的是英语训练,在一系列其他常用语言中也是表现地良好。
Claude 还对常见编程语言有广泛的数据训练。
Claude 已经被训练为乐于助人、诚实,并有更无害、更难产生攻击性或危险的内容输出。请放心,它不会根据你的私人数据进行训练,也不会在互联网上寻找答案。
Claude 目前以免费测试版的形式提供给美国与英国的用户,并已被 Jasper、Sourcegraph 和 AWS 等商业巨头和伙伴采用。
Cockroach DB
CockroachDB 是一个分布式 SQL 数据库,可实现高度一致的 ACID 事务,通过实现数据库读取和写入的水平可伸缩性,解决了高性能、事务密集型应用程序的关键可伸缩性问题。
CockroachDB 还支持多区域和多云部署,以减少延迟并遵守数据法规。示例部署包括 Netflix 的数据平台,其中包含 100 多个生产 CockroachDB 集群,支持媒体应用程序和设备管理。
其大客户包括Hard Rock Sportsbook、摩根大通、桑坦德银行和DoorDash等。
CPython
机器学习、数据科学、任务自动化、Web 开发......有无数的理由让开发者们喜欢 Python 这个编程语言。
咳,可但是呢,运行时性能是这个语言的弱点之一,但这种情况正在改变。
在最近两个版本(Python 3.11 和 Python 3.12)中,核心 Python 开发团队公布了对 CPython(Python 解释器的参考实现)的一系列变革性升级。
其结果这个 Python 运行时对每个人来说是个好消息。它的速度在加快,而不仅仅是以前少数选择使用新库或尖端语法的人。
CPython 新版本已经为更大的性能改进奠定了基础。它计划删除全局解释器锁,这是 Python 中真正的多线程并行性的长期障碍。
DuckDB
OLAP 数据库的尺寸都很大,对吧?比如,没有人会用“轻量级”来形容 IBM Cognos、Oracle OLAP、SAP Business Warehouse 或 ClickHouse。
但是,如果你只需要足够用的 OLAP(一个在进程内运行嵌入式、没有外部依赖关系的分析数据库),该怎么办?
DuckDB 就是这样的一个分析数据库,本着像 SQLite 这样微小但强大的项目的精神构建。
DuckDB 提供了所有熟悉的 RDBMS 功能——SQL 查询、ACID 事务、二级索引,但它增加了分析功能,如大型数据集的联接和聚合。它还可以引入和直接查询常见的大数据格式,如 Parquet。
HTMX与Hyperscript 脚本
我们可能认为 HTML 可能永远不会改变,而现实中 HTMX 出现了。
HTMX 采用你熟悉和喜爱的 HTML,并通过增强功能对其进行扩展,从而让你更轻松地编写现代级 Web 应用程序。
HTMX 消除了用于将 Web 前端连接到后端的大部分样板 JavaScript。相反,它使用直观的 HTML 属性来执行任务,例如发出 AJAX 请求和用数据填充元素。
它的姊妹项目是 Hyperscript ,其引入了类似 HyperCard 的语法,用以简化许多 JavaScript 任务,包括异步操作和 DOM 操作。
总而言之,HTMX 和 Hyperscript 为当前的一些响应式框架提供了一个大胆超前的替代愿景。
Istio
Istio 是一个服务网格,可简化基于容器的微服务的网络和通信,提供流量路由、监控、日志记录和可观测性,同时通过加密、身份验证和授权功能增强安全性。
Istio 将通信及其安全功能与应用程序和基础设施分开,从而实现更安全、更一致的配置。
该架构由部署在 Kubernetes 集群中的控制平面,以及用于控制通信策略的数据平面组成。
2023 年,Istio 从 CNCF 孵化中毕业,它在云原生社区中具有巨大的吸引力,包括来自 Google、IBM、Red Hat、Solo.io 等组织的支持与贡献。
Kata Containers
Kata Containers 结合了容器的速度与虚拟机的隔离能力,是一种安全的容器运行时。
Kata Containers 使用英特尔 Clear Containers 和 Hyper.sh runV(一种基于虚拟机管理程序的运行时)。
Kata Containers 可与 Kubernetes 和 Docker 配合使用,同时支持多种硬件架构,包括 x86_64、AMD64、Arm、IBM p 系列和 IBM z 系列。
一些巨头如Google Cloud、Microsoft、AWS 和阿里云是Kata Containers 基础设施的赞助商。还有其他支持 Kata Containers 的公司,包括 Cisco、Dell、Intel、Red Hat、SUSE 和 Ubuntu。
它最新的一个版本将机密容器引入 GPU 设备,并抽象化了设备管理,值得你看看。
LangChain是一个模块化框架,可简化由语言模型驱动的应用程序的开发。LangChain使语言模型能够连接到数据源并与其环境进行交互。
LangChain组件是模块化的抽象和抽象实现的集合。LangChain现成的链是用于完成特定更高级别任务的组件的结构化组件。您可以使用组件来自定义现有链和构建新链。
LangChain目前有支持三个语言的版本:一个是Python,一个是TypeScript/JavaScript,一个是Go。
我们在撰写本文时,大约有 160 个 LangChain 集成。
LM-Eval-Harness
当一个新的大型语言模型 (LLM) 发布时,人们通常会看到一系列评估分数,然后将该模型与某个基准上的 ChatGPT 进行比较。
现在更有可能的是,该模型背后的公司就是使用 lm-eval-harness 来生成的这些分数。
lm-eval-harness 由分布式人工智能研究机构 EleutherAI 创建,其包含 200 多个基准测试,并且易于扩展。该工具甚至被用于发现现有基准测试中的缺陷,以及为 Hugging Face 的 Open LLM 排行榜提供动力。
GitHub地址:https://github.com/EleutherAI/lm-evaluation-harness
Llama 2
Llama 2 是 Meta AI 的下一代大型语言模型,其训练的数据比上一代 Llama 1 多 40%(来自公开来源的 2 万亿个令牌),上下文长度是 Llama 1 的两倍(4096)。
Llama 2 是一种自回归语言模型,它使用优化的转换器架构。调整后的版本使用监督微调 (SFT) 和具有人类反馈的强化学习 (RLHF) 来符合人类对有用性和安全性的偏好。
Code Llama 是通过在特定于代码的数据集上微调 Llama 2 来训练的,可以从代码或自然语言提示中生成代码和有关代码的自然语言。
Ollama
Ollama 是一个命令行实用程序,可以在 macOS 和 Linux 上本地运行 Llama 2、Code Llama 以及其它模型,并计划支持 Windows 系统。
Ollama 目前支持近20个语言模型系列,每个模型系列都有许多“标签”。标签是使用不同的微调和在不同级别量化的不同大小训练的模型的变体,以便在本地运行良好。量化级别越高,模型越准确,但运行速度越慢,需要的内存就越多。
Ollama 支持的模型包括一些未经审查的变体。这些是使用埃里克·哈特福德(Eric Hartford)设计的程序构建的,该程序可以在没有防护栏的情况下训练模型。
例如,如果你问Llama2如何制造火药,它会警告你制造炸药是非法和危险的。如果你问一个未经审查的 Llama 2 模型同样的问题,它会直接告诉你制造配方。
Polars
你可能会问,为什么 Python 需要另一个数据帧整理库,我们已经有了“古老”的 Pandas。但如果更深入地看,你可能会发现 Polars 可能是你真正要找的东西。
当然,Polars 不能做 Pandas 能做的所有事情,但它能做的是快的——速度比 Pandas 快 10 倍,但只使用后者一半的内存。
来自 PySpark 的开发人员说,对 Polars API 感到更自由自在,而不是 Pandas 中更深奥复杂的操作。
如果正在处理大量数据,Polars 将让你更快地完成工作。
PostgreSQL
PostgreSQL 已经开发了超过 35 年,有 700 多个代码贡献者提供动力,它在关系数据库管理系统市场中估计占有 16.4% 的份额。
在最新的一项调查中,PostgreSQL是90,000名开发人员中超过45%的首选,这表明这种势头只会增加。
PostgreSQL 16 于2023年 9 月发布,提升了聚合和选择不同查询的性能,提高了查询并行度,带来了新的 I/O 监控功能,并添加了更细粒度的安全访问控制。
Amazon Aurora PostgreSQL 目前已经添加了 pgvector 以支持生成式 AI 嵌入,Google Cloud 为 AlloyDB PostgreSQL 发布了类似的功能。
QLoRA
Tim Dettmers 和团队正肩负着让大型语言模型在一切东西上运行的使命,甚至你的烤面包机。
去年,他们的 bitsandbytes 库将更大的 LLM 推理带到了消费类硬件中。今年,他们转向训练,缩小已经令人印象深刻的 LoRA 技术,以研究量化模型。
使用 QLoRA 意味着开发者可以在台式机上微调大量 30B 以上的参数模型,与跨多个 GPU 进行全面调整相比,精度损失非常小。
事实上,有时 QLoRA 做得更好。低字节推理和训练意味着 LLM 可以被更多的人使用。
然而,这就是开源的意义所在。
RAPIDS
RAPIDS 是用于常见数据科学和分析任务的 GPU 加速库的集合。
它的每个库都处理一个特定的任务,例如用于数据帧处理的 cuDF、用于图形分析的 cuGraph 和用于机器学习的 cuML。
其他库涵盖图像处理、信号处理和空间分析,而集成则将 RAPIDS 引入 Apache Spark、SQL 和其它工作负载。如果现有的库都不符合要求,RAPIDS 还包括 RAFT,这是一组用于构建自己的解决方案的 GPU 加速基元。
RAPIDS 还与 Dask 携手合作,跨多个节点进行扩展,并与 Slurm 在高性能计算环境中运行。
Spark NLP
Spark NLP 是一个自然语言处理库,可在支持 Python、Scala 和 Java 的 Apache Spark 上运行。
该库可帮助开发者和数据科学家试验大型语言模型,包括来自 Google、Meta、OpenAI 等公司的 transformer 模型。
Spark NLP 的模型中心有超过 20,000 个模型和管道可供下载,用于语言翻译、命名实体识别、文本分类、问答、情感分析以及其他用例。
2023 年,Spark NLP 发布了许多 LLM 集成,这是一种专为图像字幕而设计的新型图像到文本注释器,支持所有主要的公共云存储系统,以及 ONNX(开放神经网络交换)支持。
StarRocks
数据实时分析的产品已经在升级。如今,软件公司经常向数百万并发用户实时提供复杂的数据,即使是 PB 级的查询也必须在几秒钟内提供。
StarRocks 是一个查询引擎,它结合了原生代码 (C++)、基于成本的高效优化器、使用 SIMD 指令集的向量处理、缓存和物化视图,以高效地大规模处理连接。
StarRocks 甚至可以在直接从数据湖和数据湖仓一体(包括 Apache Hudi 和 Apache Iceberg)进行查询时提供接近原生的性能。
无论你是追求实时分析、提供面向客户的分析,还是只想在不可移动数据的情况下查询数据湖,StarRocks 都相当值得一看。
TensorFlow.js
TensorFlow.js 是将 Google 的 TensorFlow 机器学习框架的强大功能打包到 JavaScript 包中,以最小的学习曲线为 JavaScript 开发人员带来非凡的功能。
开发者可以在浏览器中运行 TensorFlow.js,在具有 WebGL 加速的纯 JavaScript 堆栈上运行,或者针对服务器上的 tfjs-node 库运行 TensorFlow。
Node 库为你提供了相同的 JavaScript API,但它在 C 二进制文件上运行,以实现最大速度和 CPU/GPU 使用率。
如果你是对机器学习感兴趣的 JS 开发人员,那么 TensorFlow.js 显然是一个不错的选择。这是对 JS 生态系统的一个受欢迎的贡献,它使 AI 更容易被广泛的开发者社区所覆盖。
vLLM
在生产环境中部署大型语言模型的热潮,它导致了专注于快速进行推理的框架激增。
vLLM 是最有前途的算法之一,它提供了 Hugging Face 模型支持、兼容 OpenAI 的 API 和 PagedAttention,该算法的吞吐量是 Hugging Face 转换器库的 20 倍。
vLLM 是当今在生产环境中为 LLM 提供服务的明确选择之一,并且正在快速添加 FlashAttention 2 支持等新功能。
Weaviate
生成式人工智能的热潮引发了对新型数据库的需求,该数据库需要支持大量复杂的非结构化数据。
这就是向量数据库。
Weaviate在部署模式、生态系统集成和数据隐私方面为开发者提供了极大的灵活性。
Weaviate将关键词搜索与矢量搜索相结合,可快速、可扩展地发现多模态数据(如文本、图像、音频与视频乖)。
它还具有用于检索增强生成 (RAG) 的开箱即用模块,可为聊天机器人和其他生成式 AI 应用程序提供特定于领域的数据,使它们更有用。
Zig
在所有开源项目中,Zig 可能是最重要的。
Zig 目标在创建一种通用编程语言,其程序级内存控制性能优于 C,同时提供更强大、更不容易出错的语法。
其目标是取代 C 作为编程生态系统的基线语言。由于 C 语言已经无处不在(即无处不在的系统和设备中最常见的组件),因此 Zig 想要成功,意味着性能和稳定性的更广泛改进。
当然,这是我们开发者都希望的。
而事实上,Zig 确是一个非常好的式的草根项目,有着巨大的市场信心与广博的开源精神。