2023 年最佳开源软件

InfoWorld 公布了 2023 年最佳开源软件榜单,旨在表彰年度领先的软件开发、数据管理、分析、人工智能和机器学习开源工具。

上榜的 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 的成功可能意味着性能和稳定性的广泛提升

 

参考:https://www.infoworld.com/article/3709196/the-best-open-source-software-of-2023.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/105318.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

李沐——论文阅读——VIT(VIsionTransformer)

一、终极结论: 如果在足够多的数据上面去做预训练,那么,我们也可以不用 卷积神经网络,而是直接用 自然语言处理那边搬过来的 Transformer,也能够把视觉问题解决的很好 (tips:paperswithcode.co…

【保姆级教程】:docker搭建MongoDB三节点副本集

容器可以理解为一个进程,镜像是把环境,组件等都配置好,运行成容器的,容器里面运行服务,也可以说是一个进程。镜像是模板,镜像是实例。 一个镜像可以创建多个实例。也就是多个容器,容器之间相互…

18.1 Socket 原生套接字抓包

原生套接字抓包的实现原理依赖于Windows系统中提供的ioctlsocket函数,该函数可将指定的网卡设置为混杂模式,网卡混杂模式(Promiscuous Mode)是常用于计算机网络抓包的一种模式,也称为监听模式。在混杂模式下&#xff0…

ThinkPHP8学习笔记

ThinkPHP8官方文档地址:ThinkPHP官方手册 一、composer换源 1、查看 composer 配置的命令composer config -g -l 2、禁用默认源镜像命令composer config -g secure-http false 3、修改为阿里云镜像源composer config -g repo.packagist composer https://mirror…

Ubuntu环境下DOSBOX的配置

【步骤一】 先打开命令行,进入root模式,输入如下语句: sudo apt-get install dosbox 该语句的作用主要是安装dosbox 【步骤二】 安装完成之后,命令行输入dosbox 会进入dosbox页面: 【步骤三】 在你的主机中&…

使用pycharm远程连接到Linux服务器进行开发

预计达到的效果 本地的 PyCharm 能达到和远程服务器之间的文件同步;本地的 PyCharm 能够使用远程服务器的开发环境; 环境配置 PyCharm:PyCharm 2021.3 (Professional Edition)Linux服务器:Ubuntu20.04 步骤 1.进入配置项 配…

p5.js 变换操作

本文简介 带尬猴,我嗨德育处主任 在 canvas 里,变换是基础功能。很多基于 canvas 封装的库都有这功能,比如 《Fabric.js 变换视窗》。 变换是针对画布进行全局调整的一种能力,它可以对画布进行全局移动、缩放、旋转等操作。 p5…

一键同步,无处不在的书签体验:探索多电脑Chrome书签同步插件

说在前面 平时大家都是怎么管理自己的浏览器书签数据的呢?有没有过公司和家里的电脑浏览器书签不同步的情况?有没有过电脑突然坏了但书签数据没有导出,导致书签数据丢失了?解决这些问题的方法有很多,我选择自己写个chr…

Server Name Indication(SNI),HTTP/TLS握手过程解析

Server Name Indication(SNI)是一种TLS扩展,用于在TLS握手过程中传递服务器的域名信息。在未使用SNI之前,客户端在建立TLS连接时只能发送单个IP地址,并且服务器无法知道客户端请求的具体域名。这导致服务器需要使用默认…

uniapp把文件中的内复制到另一个文件中

使用的是Html 5的plus.io.resolveLocalFileSystemURL方法,文档:HTML5 API Reference var soursePath file:///storage/emulated/0/a/;//用于读取var removePath file:///storage/emulated/0/w/;//用于移除w这个文件夹var targetPath file:///storage/…

Redis 主从

目录 ​编辑一、构建主从架构 1、集群结构 2、准备实例和配置 (1)创建目录 (2)修改原始配置 (3)拷贝配置文件到每个实例目录 (4)修改每个实例的端口,工作目录 &a…

【Android Studio】工程中文件Annotate with Git Blame 不能点击

问题描述 工程文件中想要查看代码提交信息但是相关按钮不可点击 解决方法 Android Studio -> Preferences -> Version Control-> 在Unregistered roots里找到你想要的工程文件 点击左上角➕号 然后右下角Apply即可

Django viewsets 视图集与 router 路由实现评论接口开发

正常来说遵循restful风格编写接口,定义一个类包含了 get post delete put 四种请求方式,这四种请求方式是不能重复的 例如:获取单条记录和多条记录使用的方式都是get,如果两个都要实现的话那么得定义两个类,因为在同一个类中不能有…

金融领域:怎么保持电力系统连续供应?

银行作为金融领域的关键机构,依赖于高度可靠的电力供应,以保持银行操作的连续性。在电力中断或电力质量问题的情况下,银行可能面临严重的风险,包括数据丢失、交易中断和客户满意度下降。 UPS监控系统在这一背景下变得至关重要&…

解决msvcp120.dll丢失的问题的5个方法,修复系统dll问题

在使用计算机的过程中,我们经常会遇到各种各样的动态链接库(DLL)文件。其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,我们需要找到合适的方法来修复丢失的msvcp120.dll文件。…

【单例模式】饿汉式,懒汉式?JAVA如何实现单例?线程安全吗?

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 单例设计模式 Java单例设计模式 Java单例设计模…

达芬奇MacOS最新中文版 DaVinci Resolve Studio 18中文注册秘钥

DaVinci Resolve Studio 18是一款专业的视频编辑软件,它具有多种强大的功能。首先,它提供了丰富的视频剪辑工具,如剪切、复制、粘贴、剪辑、缩放和移动等,使用户可以轻松地剪辑和组合视频素材。其次,该软件还支持多个轨…

Redis和Memcached网络模型详解

1. Redis单线程单Reactor网络模型 1.1 redis单线程里不能执行十分耗时的流程,不然会客户端响应不及时 解决方法一: beforesleep里删除过期键操作若存在大量过期键时,会耗费大量时间,redis采用的策略之一就是采用timelimit方案超过…

Spring Boot整合OAuth2实现GitHub第三方登录

Spring Boot整合OAuth2,实现GitHub第三方登录 1、第三方登录原理 第三方登录的原理是借助OAuth授权来实现,首先用户先向客户端提供第三方网站的数据证明自己的身份获取授权码,然后客户端拿着授权码与授权服务器建立连接获得一个Access Token…

搞定蓝牙——第四章(GATT协议)

搞定蓝牙——第四章(GATT协议) 原理介绍层次结构server和client端Attribute ESP32代码 文章下面用的英文表示: server和client:服务端和客户端 char.:characteristic缩写,特征 Attribute:属性 ATT:Attribut…