从DevOps视角梳理的AI/ML工具库,234次互动说明实用性;涵盖多工具链,对搭建开发环境有参考价值。
我来自 DevOps 领域,直到加入现在的公司 SingleStore 后,AI/ML 对我来说才是个新世界。我已经在这里工作了 8 个月,进展非常顺利。通过各种博客、教程和工具,我在不断学习 AI/ML 领域的新鲜事物。说实话,刚加入公司时,我发现我们公司在 AI/ML 领域投入巨大,我开始寻找一些能简化学习过程并让我动手实践的工具。虽然公司提供了大量的学习资料,但我还想了解业界外面在发生什么,自己做一些研究。
就像我说的,8 个月时间过去了。在这段时间里,我举办过线上研讨会、在各种会议上做过演讲、写过一些关于新兴技术趋势的博客,我逐渐积累了一套不可或缺的工具集合。在这篇文章中,我将分享这些工具——从新兴编程语言到 AI 框架,再到向量数据库和能简化 AI/ML 应用开发的开发工具。让我们开始吧。
我尝试过很多编程语言,发现其实大多数语言都被过度炒作了。就在那时,我发现社区里有人在讨论这门为云计算和 AI 应用设计的新语言。那是我第一次接触 Wing 编程语言,我觉得它相当令人印象深刻。
你可能会问——为什么选 Wing?Wing 提供了一个统一的编程模型,将基础设施和应用代码整合到一个一致的框架内。这种独特的方法使开发者能够简化工作流,消除频繁的上下文切换,显著提升生产力和创意。
这正是构建 AI/ML 应用时所需要的——专注于核心功能,而不是底层基础设施。我接触过他们的 Open AI Joker 应用,它能生成笑话并将其翻译成不同的语言。看到整个框架运作得如此流畅,我印象深刻。需要说明的是,Wing 仍在活跃开发中。
你可以用最少的代码构建任何 AI/ML 应用。我们来看看 Joker 应用是如何工作的。这个应用使用 OpenAI 生成笑话并将其翻译成不同的语言。其中有一个喜剧演员(Open AI 助手)来生成笑话,每当生成笑话时,笑话就会被放入/存储在一个存储桶中。还有两个翻译器——西班牙语和希伯来语翻译器。这些翻译器订阅某个主题。每当生成笑话时,他们就会收到它并进行翻译,然后将翻译后的笑话也放入存储桶中。非常简单。
下面是一张技术概览图,展示了如何在 Wing 中使用 OpenAI 的 API。
如果你还没有尝试过 Winglang,你可以用一个简单的命令轻松试用
npm install -g winglang
使用这个 git clone 命令将代码复制到本地
git clone https://github.com/winglang/wing.git
进入 examples 文件夹,然后在终端中运行以下命令:
npm install
wing it
调用"START HERE"函数,在"Joke Store"中查看结果。
SingleStore & Notebooks
对于 AI/ML 应用,你需要一个数据库来存储非结构化数据。我在 8 个月前加入 SingleStore,那时我对 AI/ML 和向量数据库还很陌生。在围绕向量数据库的大量讨论中,我开始学习向量数据库,并发现 SingleStore 是这个行业的一个了不起的补充。它不仅用来存储向量数据,公司还使用 SingleStore 进行实时分析。现在看看向量数据存储支持实时分析的威力——那是超能力。
让我给大家介绍 SingleStore;它是一个基于云的数据库管理系统(RDBMS),专为数据密集型应用设计。它以数据摄入、事务处理和查询处理的速度著称。SingleStore 早在 2017 年就开始支持向量存储。
SingleStore 的 Notebook 功能是基于流行的 Jupyter Notebook,在数据科学和机器学习社区广泛使用。SingleStore Notebook 扩展了 Jupyter Notebook 的功能,使数据专业人士能够轻松地与 SingleStore 的分布式 SQL 数据库一起工作,同时在语言和数据源方面提供了很好的可扩展性。
试用 SingleStore 并获得价值 $600 的免费额度。
我特别喜欢处理数据,用公开可用的数据集(如葡萄酒数据集、泰坦尼克数据集等)进行各种实验。看到 NumPy 和 Pandas 在数据探索和推出不同解决方案方面的能力,我印象深刻。
Pandas 和 NumPy 是 Python 生态中用于数据分析和科学计算的最流行的两个库。
任何 AI/ML 应用的核心都是数据。Pandas 和 NumPy 这样的工具是 Python 中数据操作和分析的基础。Pandas 提供了高级数据结构和操作,用于操作数值表和时间序列,使其非常适合在将数据用于训练模型前进行预处理和清理。NumPy 为大型多维数组和矩阵提供支持,以及大量用于对这些数组进行操作的数学函数,这对于数据预处理和模型训练中的性能密集型操作至关重要。
我使用过 TensorFlow 和 PyTorch,最近还接触到了 LangChain 和 LlamaIndex,对它们帮助 AI/ML 工程师提供所有必需工具包(如 API、向量存储功能、逻辑、推理等)来构建健壮应用的能力印象深刻。让我们逐个了解它们的超能力。
TensorFlow 和 PyTorch
TensorFlow(由 Google 开发)和 PyTorch(由 Facebook 开发)是构建和训练复杂机器学习模型的两个最流行的框架。TensorFlow 以其灵活性和健壮的可扩展性著称,适合研究原型和生产部署。PyTorch 因其易用性、简洁性和动态计算图而受到称赞,这使复杂 AI 模型的编码更加直观。这两个框架都支持广泛的 AI 模型,从简单的线性回归到复杂的深度神经网络。
LangChain
由 Harrison Chase 开发,并在 2022 年 10 月首次亮相,LangChain 是一个开源平台,用于构建由大型语言模型驱动的强大应用,例如 ChatGPT 这样的聊天机器人和各种定制应用。
LangChain 寻求为数据工程师配备全面的工具包,以便在各种用例中利用 LLM,例如聊天机器人、自动问答、文本摘要等。
LlamaIndex
LlamaIndex 是一个高级编排框架,旨在扩展 GPT-4 等 LLM 的功能。虽然 LLM 本质上很强大,经过了大规模公开数据的训练,但它们往往缺乏与私有或特定领域数据交互的方式。
LlamaIndex 弥补了这一空白,提供了一个结构化的方式来摄入、组织和利用各种数据源——包括 API、数据库和 PDF。通过将这些数据索引为对 LLM 优化的格式,LlamaIndex 促进了自然语言查询,使用户能够无缝地与其私有数据对话,而无需重新训练模型。
作为初学者,我在寻找一些简单灵活的深度学习模型开发工具,这时我发现了 Keras。许多 AI/ML 专业人士因其在原型和开发深度学习模型时的简洁性和效率而欣赏 Keras,使其成为首选,尤其是对初学者和需要快速开发的项目来说。
对于寻找高级神经网络 API 的开发者,现已集成到 TensorFlow 中的 Keras 为构建和训练深度学习模型提供了更简单的界面。Keras 抽象掉了构建神经网络的大部分复杂性,使初学者能够轻松使用,同时仍然足够强大以满足研究需求。
协作和版本控制在 AI/ML 开发项目中至关重要,因为模型开发具有迭代性,并且需要可重现性。GitHub 是源代码管理的领先平台,允许团队在代码上协作、追踪问题并管理项目里程碑。DVC(Data Version Control)通过处理 Git 无法有效管理的大型数据文件、数据集和机器学习模型来补充 Git,为 AI 项目中使用的数据和模型文件启用版本控制。
我构建了一些 AI/ML 应用,但如何以及在哪里部署它们呢?这时我的想法转向了这个类别中的两个主要工具:Docker 和 Kubernetes。就像我之前说的,我来自 DevOps 领域,已经使用过这些工具并了解它们如何工作。Docker 将你的应用容器化,而 Kubernetes 则用于大规模部署应用。
Docker 和 Kubernetes
将 AI 模型部署到生产环境需要能打包应用并大规模管理它们的工具。Docker 通过将 AI 应用容器化来简化部署,确保应用在任何环境中都能顺利运行。Kubernetes 是 Docker 容器的编排系统,允许容器化应用的自动部署、扩展和管理,这对于需要跨多个服务器或云环境扩展的 AI 应用至关重要。
没有像 AWS、Google 和 Azure 这样的云平台,你无法扩展任何东西。虽然 AWS 是我的最爱,但我也探索了其他选项,在这里列举了所有三个主要云提供商。
AWS、Google Cloud 和 Azure
Amazon Web Services(AWS)、Google Cloud Platform(GCP)和 Microsoft Azure 等云平台提供了一系列 AI 和机器学习服务,这些服务抽象掉了训练和部署 AI 模型所需的大部分基础设施。这些平台为机器学习模型训练、部署和监控提供了托管服务,以及大量可扩展的计算资源来满足任何 AI 项目的需求。
虽然我仍然偏好使用 SingleStore Notebook 功能,但我知道大多数人已经在使用 Jupyter Notebooks 进行数据探索和分析。我有时使用 Jupyter Notebooks,另一个有趣的工具是 MLflow,它将帮助你完成端到端的 ML 工作流。
对于探索性数据分析、模型开发和文档化,Jupyter Notebooks 是不可或缺的工具。它们允许开发者创建和共享包含实时代码、方程、可视化和叙述文本的文档,使其成为协作性 AI 研究和开发的绝佳工具。
MLflow 是一个用于管理端到端机器学习生命周期的开源平台。它包含实验追踪、模型版本控制和部署等功能,使开发者能够追踪和比较实验、将模型打包为可重现的运行,以及跨多个环境管理模型部署。
AI/ML 的前景正在像海洋一样不断扩大。我们每天都会看到一个或另一个语言模型以高期望的方式崭露头角。还有许多其他了不起的开发者工具可以加入这个列表,但根据我的个人经验,我认为这些工具是每个 AI/ML 工程师开始构建他们的 AI/ML 应用的一个好起点。
让我知道你当前在 AI/ML 领域最喜欢的工具是什么。
如果要进一步采取行动,你可以考虑屏蔽此人和/或举报滥用