当我们了解不断发展的Python开发环境时,是时候再次关注今年引起我们注意的杰出库和工具了。 1. Lite LLM — 调用任何使用OpenAI格式的 LLM 等 LiteLLM 直观且非侵入式的设计允许与各种模型无缝集成,为输入和输出提供统一的格式,而不管底层的LLM是什么。对于需要快速适应大型语言模型快速变化的环境的开发人员来说,这种灵活性是一个游戏规则改变者。 2. PyApp — 在任何地方部署自包含的Python应用程序 PyApp 是一个实用程序库,可简化Python应用程序的分发和安装。它通过将Python嵌入到与所有操作系统兼容的自安装包中来实现这一点。但它并不止于此!PyApp 还支持自我更新功能,并且可以进行定制以适应各种用例。 简而言之,PyApp 提供了一种简单而有效的解决方案,用于向用户交付Python应用程序。它简化了分发和安装程序,消除了通常与这些过程相关的障碍。 3. Taipy — 为数据应用程序构建 UI,即使是在生产环境中 Taipy 是一个低代码 Python库,使数据科学家能够为其机器学习产品构建交互式Web UI,而无需掌握 Web 堆栈工具。 Taipy 还提供了用于可视化构建机器学习管道的工具,加快了开发速度,同时提供了一种简单的方法来高级解释模型所采取的步骤。重要的是,数据节点(这些可视化管道的输入)可以动态更改,从而实现交互式探索和假设场景。 4. MLX — Apple芯片上的机器学习,具有类似 NumPy 的 API 这是一款专为Apple 芯片上的机器学习而设计的突破性阵列框架。 MLX 的设计是为了保持熟悉性:它的Python API 与NumPy的API 非常接近,并且它还提供了功能齐全的C++ API,反映了其Python对应项。 它引入了诸如可组合函数转换、自动微分、自动矢量化和计算图优化等创新功能。它还采用惰性计算、仅在需要时物化数组以及动态图构造,使调试更加直观,并避免由于函数参数形状的变化而导致编译缓慢。 MLX 的多设备功能允许操作在任何支持的处理单元上运行,无论是 CPU、GPU 还是NPU。这就是游戏规则的改变者:MLX 的统一内存模型。与其他框架不同,MLX 阵列存在于共享内存中,可以在任何支持的设备上进行操作,而无需进行耗时的数据传输。 这个用户友好且高效的框架是由机器学习研究人员为机器学习研究人员设计的。受到NumPy、PyTorch、Jax 和ArrayFire等工具的启发,MLX 旨在让研究人员能够轻松扩展和改进框架,促进对新想法的快速探索。 5.Unstructured——文本预处理的终极工具包 在人工智能的广阔领域中,模型的好坏取决于它所提供的数据。但是,当您的数据是一堆杂乱无章、分散在各种格式的原始文档时,会发生什么情况呢?Unstructured 是一款满足您所有文本预处理需求的综合解决方案。 Unstructured提供了多种功能,整齐地分为六种类型:
- 将原始文档转换为结构化和标准化格式的分区功能。
- 清理功能可以清除不需要的文本,只留下相关的信息。
- 暂存功能可格式化您的数据,为推理或标记等 ML 任务做好准备。
- 提取函数,用于挖掘文档中有价值的信息,例如电子邮件、IP 地址或模式匹配的文本。
- 分块功能可将文档分解为小部分,非常适合相似性搜索和 RAG。
- 嵌入函数将预处理的文本转换为向量,提供易于使用的界面。
Unstructured是您的首选Python库,可轻松从文档中提取文本。它简化了文本清理,处理从项目符号删除到表情符号管理和语言翻译的所有事务。它的提取器功能解析净化后的文本,检索有价值的信息。您可以使用内置提取器或自定义模板来获取结构化文本。 6. ZenML和Auto MLOps — 便携式、生产就绪的 MLOps 管道 MLOps是机器学习模型开发和操作之间的关键环节。 ZenML提供了一条快速通道,可以通过最少的更改从实验代码过渡到结构化、可用于生产的管道。这个与供应商无关的框架擅长将应用程序代码与基础设施工具解耦,允许您为基础设施的每个组件指定不同的服务提供商。 使用 ZenML,您的管道的步骤会被注释并链接在一起以形成实际的管道。然后,您配置Zen Stack,指定必要的工具和基础设施。该堆栈由两个主要组件组成:协调器和工件存储。编排器可以是云执行服务或简单的Python解释器,运行管道的代码。工件存储是您的数据所在的位置。最好的部分是什么?ZenML 支持多种集成,提供附加功能,如特征存储、数据验证和实验跟踪器。 Google 的AutoMLOps共享 ZenML 将模型开发代码注释为组件和管道的方法。然而,AutoMLOps 更进一步,它自动生成必要的代码来容器化您的组件,将它们提供给Google 的云,并将这些容器部署到分配的资源。所有这一切都遵循自动化、可重复的CI/CD 流程,有助于加速您迈向MLOps成熟度级别 2 的道路。 然后,部署的管道可以利用Google 的扩展MLOps功能套件,范围从数据处理和存储,到实验、训练和离线评估,再到具有可配置自动扩展功能的在线服务、测试以及输入漂移监控数据和模型的预测。这使得能够使用持续培训和部署等高级功能,提高应用程序的准确性并在错误对最终用户或业务产生真正影响之前捕获错误。 有了工具包中的这两个强大功能,您就可以很好地应对MLOps的复杂性,确保您的机器学习计划不仅成功,而且高效且易于管理。 7.WhisperX —具有字级时间戳和二值化的语音识别 WhisperX有一个秘密武器,称为语音活动检测预处理。它就像一个保镖,只允许包含语音活动的音频片段进入,而且它比让每个人都参加全自动语音识别派对要便宜得多。这种方法还确保音频被分割成整齐的块,避免语音中间出现任何尴尬的剪切,并提高整个单词检测的可靠性。另外,时间戳经过整理以匹配这些边界,使它们更加准确。最后的接触?音素分类器模型,根据固定的每种语言词典对齐单词边界。这就像你的团队里有一个语法严格者。 在他们的GitHub存储库上查看结果的英文样本。 WhisperX的优点在于可以并行处理块,就像一条运转良好的装配线,从而可以进行批量推理。由于切换到Faster Whisper 后端,大型耳语模型的 RAM 使用量已减少至8GB 以下。这意味着它现在可以与更广泛的显卡配合使用,同时在同一型号上还可以实现高达70 倍的加速。就像把你的语音识别放在高速跑步机上一样。 8. AutoGen——大模型会话协作套件 AutoGen 最简单的设置由两个关键角色组成:AssistantAgent和UserProxyAgent。
- AssistantAgent是您的人工智能助手,旨在独立执行任务。
- 同时,UserProxyAgent是您的数字替身,允许您在需要人工干预时介入,同时也能够代表您采取行动。
这就像既拥有蛋糕又吃掉它一样! 执行AssistantAgent 任务,同时向提供任务是否成功完成的UserProxyAgent 反馈。AssistantAgent一旦任务设定,这些代理就会立即采取行动,自主工作,直到它们需要人工监督或成功完成任务。该框架在代码生成等用例中表现出色。编写AssistantAgent代码,同时UserProxyAgent测试它。如果出现错误,则会UserProxyAgent提供反馈,然后重复该循环。这就像拥有一个个人代码工厂。 AutoGen 的优点在于它的可扩展性。您可以引入其他代理来履行各种角色,类似于构建您的软件开发团队。需要测试代理或产品经理吗?AutoGen 已经帮您解决了。如需灵感,请查看ChatDev,该项目使用类似的概念构建了整个软件团队。 AutoGen 还拥有多项增强推理功能,可增强您的工作流程。它统一了多个模型的API ,使您能够将多个法学硕士链接到单个代理后面:如果一个模型失败,下一个模型将接替,确保稳健性。此外,它还提供提示结果缓存,以实现更快、更具成本效益的推理、用于调试的聊天记录和提示模板,以便可以在多个任务中重复使用常见指令(例如逐步解释推理)。 但这还不是全部。您想通过RAG增强您的代理吗?只需添加Retrieve他们的类名并提供文档路径即可!您的代理现在可以利用自定义数据库来提供特定于上下文的信息。想要一个可以随时随地学习的代理吗?尝试通过提示向TeachableAgent解释一些内容,它会将您提供的信息存储在MemGPT 样式的嵌入数据库中,使其能够在未来的交互中回忆和推理此上下文。对此的一个非常强大的用法是让您的代理推理在他们的交互中哪些内容有效,并生成有效步骤的摘要配方,然后将该配方教授给 TeachableAgent,以便它知道下次如何执行。 最重要的是,AutoGen 提供了强大的安全措施。AutoGen 团队强烈建议在Docker容器中运行代理的代码。 9.Guardrails——照顾大模型,让他们按预期行事 Guardrails 的工作原理是定义.rail规范(一种XML风格),旨在便于人类阅读并允许定义所请求输出的结构、确保值满足给定质量标准的验证器以及重新请求等纠正措施LLM或在不满足验证的情况下过滤掉无效输出。 下面是一个在规范字段 中指定质量标准(生成的长度、URL可达性) 的示例 , 如果无效则重新请求 并过滤。formatRAILexplanationfollow_up_url <rail version='0.1'> <output> <object name='bank_run' format='length: 2'> <string name='explanation' description='A paragraph about what a bank run is.' format='length: 200 280' on-fail-length='reask' /> <url name='follow_up_url' description='A web URL where I can read more about bank runs.' format='valid-url' on-fail-valid-url='filter' /> </object> </output>
<prompt> Explain what a bank run is in a tweet.
${gr.xml_prefix_prompt}
${output_schema}
${gr.json_suffix_prompt_v2_wo_none} </prompt> </rail>
|
诸如此类的防护可以从RailSpec以及PyDantic类型定义进行初始化,甚至可以从不太复杂的用例的字符串进行初始化。然后,该结构可用于定义 LLM必须生成的字段及其类型,包括逻辑中定义的嵌套对象。提供了几个开箱即用的验证器,从简单的字符串最小/最大长度或正则表达式验证到语法无错误的 Python或SQL代码、无脏话的文本等等 ( https://docs./api_reference /验证器/)。 10. Temporian——为预处理时态数据而构建的“ Pandas ” 时间数据在大多数人类活动中无处不在,这就是为什么许多流行的库允许表示和操作时间序列数据:一系列之间具有相等时间间隔的值。 然而,经典的时间序列方法不足以表示多种不等距的现实世界时间数据,例如用户在网站上的点击或在几个零售商的商店中发生的销售。 这种情况下的首选方法始终是使用通用数据预处理工具,例如pandas,并通过重新采样和聚合将数据填充到表格格式中 -在整个特征工程过程中失去灵活性和粒度。 这就是 Tryolabs与Google合作开发最先进的时态数据操作库的原因。Temporian允许通过由C++实现支持的Python API对时态数据进行安全、简单且高效的 预处理和特征工程,从而实现极快的速度。Temporian 支持多元时间序列、多元时间序列、事件日志和跨源事件流。 Temporian 的核心是EventSet,其中包含称为“事件”的时间戳记录,这些记录保存特征值。EventSets可以包含具有统一或非统一时间戳的多元时间序列,以及属于不同实体的独立序列。滞后、重新采样和窗口函数等方便的运算符有助于填补算术运算的空白并对齐时间戳。 为了了解 API,这里有一个简单的 Temporian代码片段,它计算销售数据集中每个商店的每日收入,在每个工作日晚上 10 点采样: import temporian as tp
sales = tp.from_csv('sales.csv') sales_per_store = sales.add_index('store')
days = sales_per_store.tick_calendar(hour=22) work_days = (days.calendar_day_of_week() <= 5).filter()
daily_revenue = sales_per_store['revenue'].moving_sum(tp.duration.days(1), sampling=work_days)
|
Temporian 提出了一种处理时态数据的新范例。为其量身定制,加上其作为高度优化的C++代码运行的核心计算,使其能够使常见的时间操作更安全、更容易编写、执行速度更快 — 基准测试显示,与等效的 pandas 代码。
其他库包 以下库几乎成为我们的首选,我们认为它们值得特别认可:
- DataGradients — 向您的计算机视觉数据集分析私人助理问好。DataGradients 是Deci AI的创意,是一个开源Python库,其中包含视觉数据集管理中常见任务的解决方案。无论是识别损坏的图像、错误的标签、偏差、提取摘要以更深入地了解可用数据,还是提供超参数选择指导,DataGradients 都能满足您的需求。
- func time — 用于大型面板数据集上的时间序列预测和特征提取的综合库。提供独特的预处理选项和交叉验证拆分器。它以其令人难以置信的速度和效率而脱颖而出,能够在几秒钟内处理 100,000 个时间序列,这要归功于它巧妙地使用Polars进行并行特征工程。但 funtime 不仅仅是速度;它还包括速度。它是一个强大的盟友,配备了经过验证的机器学习算法,并支持所有预测器的外生功能。它也是自动化的,使用 FLAML 管理滞后和超参数调整。functime在其自定义命名空间中提供了100 多个时间序列特征提取器,提供了一个高效、用户友好的平台,正在改变我们处理时间序列数据的方式。ts
- LoRaX — Predibase推出的推理服务器,可扩展至 1000 个经过微调的LLM。LoRaX(“LoRA eXchange”)旨在在单个 GPU 上为多种微调模型提供服务,从而显着降低与服务相关的成本,同时保持令人印象深刻的吞吐量和延迟。主要功能包括动态适配器加载,允许及时加载任何经过微调的 LoRA 适配器,而不影响并发请求;异构连续批处理,结合不同的适配器请求以保持稳定的延迟和吞吐量;适配器交换调度,可有效管理 GPU 和 CPU 之间的适配器预取和卸载。它支持Llama和 Mistral等一系列大型语言模型作为基础模型,并与使用 PEFT 和 Ludwig 库训练的LoRA适配器兼容。
- outlines-法学硕士指导文本生成,特别关注受限文本生成。通过使用非常高效的正则表达式引导生成,允许模型引导,例如多项选择、类型约束和动态停止,与其他引导方法相比,推理速度更快。100%生成有效的JSON !查看他们的HN Launch博客文章,了解更多见解。
- Pearl — 来自Meta的应用强化学习(RL) 团队的礼物。它是一个可投入生产的AI 代理库,优先考虑累积的长期奖励而不是即时反馈。这些代理可以适应可观测性有限、反馈稀疏和高随机性的环境,使它们成为解决各种现实世界问题的合适选择。Pearl 对最先进的 RL 算法的模块化实现证明了其多功能性和前瞻性方法。
- PEFT — 由Hugging Face、PEFT 或参数高效微调方法为您提供为各种下游应用程序微调预训练语言模型的门票,而无需更改所有模型的参数,从而节省计算量资源,同时还保留更通用模型的良好属性并提高特定任务的性能。
- vLLM —用于LLM 的高吞吐量和内存高效的推理和服务引擎。与之前的 SOTA 相比,它在不改变模型架构的情况下将 LLM 服务性能提高了 3.5 倍。由于事先不知道输出大小, LLM通常会保留非常大且浪费的长连续内存块,其大小与模型输出大小一样大。秘密(实际上不是秘密,它是开源的)酱汁是一种称为 PagedAttention 的算法,其中他们将LLM使用的键值缓存物理分割成固定长度、短的和动态分配的块。动态分配可防止内存浪费,允许更多提示放入VRAM中,从而实现更快的吞吐量。在撰写本文时,vLLM 已被许多大公司采用作为服务解决方案,成为事实上的标准服务解决方案。
更多小众库包 分析了120 多个创新的Python库,每个库都有自己独特的功能和尖端功能,如果我们公正地对待每一个库,我们就能一直待到下一届冬季奥运会! 为了帮助您浏览这个宝库,我们对这些库进行了整齐的分类,并将它们的主要功能提炼成简洁的、一行行的摘要。 因果推理
CLI法学硕士工具
- Chatblade —命令行上的ChatGPT ,提供实用方法从ChatGPT响应中提取JSON或Markdown。
- Elia — 使用 Textual 构建的终端ChatGPT客户端。
- Gorilla CLI —通过以用户为中心的工具为您的命令行交互提供支持。只需陈述您的目标,Gorilla CLI 就会生成潜在的执行命令。
- LLM — 一个CLI实用程序和Python,用于通过远程 API 和可以在您自己的计算机上安装和运行的模型大型语言模型进行交互由Datasette的作者撰写。
代码工具
- Chainlit —“ ChatGPT的 Streamlit只需几分钟即可在任何Python 代码之上创建类似 ChatGPT 的 UI
- pydistcheck — Linter,用于查找Python包发行版(wheels 和 sdists)中的可移植性问题。
- pyxet — XetHub平台的轻量级接口,一个具有文件系统(如接口和git功能)的 blob 存储。
计算机视觉
数据和特点
数据可视化
- PyGWalker — 将 pandas DataFrame 转变为 Tableau 风格的用户界面以进行可视化分析。
- Vizro — 用于创建模块化数据可视化应用程序的工具包。麦肯锡。 _
嵌入和向量 DB
联邦学习
- Flower——一个友好的联邦学习框架。
- MetisFL -联合学习框架,允许开发人员轻松联合他们的机器学习工作 流程并跨分布式数据孤岛训练他们的模型,而无需在集中位置收集数据。
生成式人工智能
LLM 准确性增强
- AutoChain — AutoChain:构建轻量级、可扩展且可测试的 LLM 代理
- Auto- GPT — 一项让GPT-4完全自治的实验性开源尝试。
- Autotrain-Advanced — 更快、更轻松地训练和部署最先进的机器学习模型。
- DSPy — 使用语言模型(LM) 和检索模型 (RM)解决高级任务的框架。DSPy 统一了提示和微调 LM 的技术以及推理和工具/检索增强的方法。作者:斯坦福 自然语言处理。
- GPTCache — GPTCache 是一个用于创建语义缓存以存储 LLM 查询响应的库。
- Neural-Cherche — 在特定数据集上微调Splade、ColBERT 和 SparseEmbed 等神经搜索模型,并在微调的检索器或排名器上运行有效的推理。
- MemGPT — 教授法学硕士 无限上下文的内存管理。
- nano GPT — 用于训练/微调中型GPT的最简单、最快的存储库。
- Promptify——常见的提示,可以很好地利用LLM来应对各种场景。
- SymbolicAI — 组合可微分编程库。
- zep — LLM / Chatbot应用程序的长期内存存储。轻松将相关文档、聊天历史记录和丰富的用户数据添加到您的 LLM 应用程序的提示中。
大模型应用程序构建
- autollm — 在几秒钟内交付基于 RAG 的 LLM Web 应用程序。
- Chidoriv — 用于构建 AI 代理的反应式运行时。它提供了一个用于构建反应性、可观察性和鲁棒性的人工智能代理的框架。它支持使用Node.js、 Python和 Rust构建代理
- FastChat —用于训练、服务和评估基于大型语言模型的聊天机器人的开放平台。
- GPTRouter — 平滑管理多个LLM和图像模型,加快响应速度,并确保不间断的可靠性。类似于LiteLLM,我们的首选!
- guidance——用于控制大型语言模型的指导语言。
- haystack — 端到端NLP框架,使您能够构建由LLM、Transformer 模型、矢量搜索等NLP
- Instructor— 使用 Python 结构/对象,通过 Python 代码与OpenAI的函数调用API 进行交互。
- Jsonformer —从语言模型生成结构化JSON 的防弹方法
- Langroid — 轻松构建LLM支持的应用程序。设置代理,为它们配备可选组件(LLM、向量存储和方法),为它们分配任务,并让它们通过交换消息协作解决问题。
- LLM App — 根据数据源中可用的最新知识,为用户查询提供实时的类人响应,构建创新的人工智能应用程序。
- maccarone — Python中 AI 管理的代码块,可让您将Python 程序的各个部分委托给 AI 所有权。
- magentic —使用装饰器将LLM提示为简单的Python函数。
- Semantic Kernel- 将尖端的法学硕士技术快速轻松地集成到您的应用程序中。微软“版”LangChain。
LLM代码工具
大模型开发
- distilabel — 用于可扩展的 LLM 调整的 AI 反馈框架。
- 语言模型算术— 通过语言模型算术控制文本生成。
- Lit-GPT —基于 nanoGPT 的最先进的开源LLM的可破解实现。支持 flash 注意、 4 位和8 位 量化、LoRA 和 LLaMA-Adapter 微调、预训练。
- Lit-LLaMA —基于nanoGPT的LLaMA语言模型的实现。支持 Flash Attention、 Int8和 GPTQ 4bit量化、LoRA 和 LLaMA-Adapter 微调、预训练。
- LMQL — 一种用于编程(大型)语言模型的查询语言。
大模型实验
大模型指标
大模型服务
- Aviary — 一种 LLM 服务解决方案,可以轻松部署和管理各种开源 LLM。由雷的作者。
- GPT4A l l — 一个运行强大且定制的大型语言模型的生态系统,这些模型可以在消费级 CPU 和任何具有Python绑定的 GPU(例如 pygpt4all/pyllamacpp)上本地工作。
- LLM Engine — 用于微调和服务大型语言模型的引擎。通过规模人工智能。
- LLM Gateway — 与OpenAI和其他LLM提供商进行安全可靠通信的网关。
- punica — 为多个LoRA微调的LLM提供服务。
- Ollama — 在本地启动并运行Llama 2 和其他大型语言模型。
- OnPrem.LLM — 用于使用非公开数据运行本地 大型语言模型的工具。
- OpenLLM —用于在生产中操作大型语言模型( LLM ) 的开放平台。轻松微调、服务、部署和监控任何法学硕士。由BentoML提供。
- OpenLLMetry — 基于 OpenTelemetry 的 LLM 应用程序的开源可观测性。
- 私有GPT — 利用 GPT 的力量与您的文档进行私密交互,100% 私密,无数据泄露。
大模型工具
- IncarnaMind — 一分钟内通过GPT和 Claude LLM连接并聊天您的多个文档(pdf 和txt)。
- Puncia - 利用人工智能和其他工具,它将告诉您有关网络域或子域的所有信息,例如查找隐藏的子域。
- scrapeghost — 使用OpenAI 的 GPT API抓取网站的实验库。
MLOps、LLM Ops、DevOps
- phoenix — 笔记本中的 ML 可观察性 - 揭示见解、表面问题、监控和微调您的生成式 LLM、CV 和表格模型。
多模式人工智能工具
Python机器学习
- difflogic — Felix Petersen的可微分逻辑门网络库。
- TensorDic t — 一个类似字典的类,它继承了张量的属性,例如索引、形状操作、转换为设备等。TensorDict 的主要目的是通过抽象定制操作来使代码库更具可读性和模块化。
性能和可扩展性
- AITemplate —将神经网络渲染为高性能CUDA /HIP C++代码的Python框架。专门用于 FP16 TensorCore ( NVIDIA GPU) 和 MatrixCore ( AMD GPU) 推理。
- AutoGPTQ — 易于使用的LLM 量化包,具有用户友好的API,基于 GPTQ 算法。
- Composer — PyTorch库,使您能够以更低的成本更快地训练神经网络并获得更高的准确性。实现了两打以上的加速方法,只需几行代码即可将其应用于您的训练循环。
- fastLLaMa -使用C++运行 LLaMA 模型推理的Python 包装器。
- hidet — 开源深度学习编译器,用Python编写。它支持从PyTorch和 ONNX 到高效cuda内核的DNN模型的端到端编译。
- LPython——积极优化带类型注释的Python 代码的。它有多个后端,包括LLVM、C、C++和WASM。LPython 的主要原则是速度。发布博客文章。
- Petals —在家运行 100B+语言模型,BitTorrent 风格。微调和推理速度比卸载快 10 倍。
- TokenMonster — 确定在任何特定词汇量下最能代表数据集的标记
Python编程
优化/数学
强化学习
- Cheese——语言和嵌入模型的自适应人机循环 评估。
- imitation-模仿和奖励学习算法的干净PyTorch实现。
- RL4LMs — 模块化 RL 库,用于根据人类偏好微调语言模型。由AI2。
- trlX —通过人类反馈( RLHF )进行强化学习的语言模型的分布式训练。
时间序列
视频处理
|