全栈人工智能工程师:现代全才

The Full Stack AI Engineer: A Modern-Day Polymath

任何曾在团队环境中工作过的人都知道,每个成功的团队都有一个核心人物——这个特殊的人可以帮助你解决任何问题。在传统的软件开发团队中,这个人是一位经验丰富的程序员,并且还是另一项技术的专家,这可能是一种数据库技术,比如 Snowflake,或者是一个重要的框架,比如 Springboot。然而,让这个人与众不同的是,他们对组织基础设施和开发环境中的许多其他技术都有一定的了解。例如,他们了解 Kubernetes 的运作方式,理解网络,精通架构设计模式,甚至可能编写过一些用户界面。虽然他们可能不是这些其他技术的专家,但他们了解得足够多,能够解决难题,如果需要,他们也可以成为专家。 

跨学科技能带来的益处远不止于解决问题的能力。他们以及他们的团队还享受着许多其他益处。

  • 他们赚更多的钱,雇主也喜欢留住他们。他们也让技能水平较低的人员效率更高,并完成更多工作。
  • 他们更容易适应变化。如果他们想改变职业方向,他们可以很快地做到。如今,许多 AI/ML 工程师没有在大学接受过正规培训,而是自学成才。
  • 他们能领导团队。当他们的团队需要改变方向或解决难题时,他们可以带头,因为他们对团队需要前进的方向有扎实的了解。
  • 他们往往更有创新精神。这不是巧合。了解解决方案的整个技术栈,可以让你获得知识,让你看到狭隘的人无法看到的好的想法。
  • 他们通过弥合专业团队之间的差距来促进协作。

这篇文章建议了一些 AI/ML 相关主题,一旦学习这些主题,你就可以成为一名全栈 AI 工程师。但在介绍这些主题之前,让我们先了解一下跨学科技能的影响。事实证明,我上面描述的这种类型的人并不局限于软件行业。在科学、艺术和哲学领域,这样的人被称为博学家。为了好玩,让我们回顾一下历史上的一些博学家。 

历代博学家

莱昂纳多·达·芬奇 (1452 - 1519) 是最著名的博学家。他家喻户晓,他的生活和作品广为人知。他创作了《蒙娜丽莎》和《最后的晚餐》,通过解剖人体来加深我们对解剖学的理解,并设计了飞行器和机器人。 

艾达·洛夫莱斯 (1815 - 1852) 是一位英国数学家、作家,也是世界上第一位计算机程序员。她从小就擅长数学,这让她有机会与查尔斯·巴贝奇——另一位英国数学家——合作。她最出名的是她在 查尔斯·巴贝奇分析机 上的工作,这基本上是一台机械计算机。在翻译分析机的文档时,她自己添加了一些“注释”,其中一个注释,注释 G (有时被称为第七注释),被认为是有史以来第一个编写的程序。她也是第一个认识到机器在纯计算之外还有其他用途的人——她的“诗意科学”导致了她对如何将技术用作协作工具的思考。

乔治·华盛顿·卡弗 (1864 - 1943) 是一位农业科学家、植物学家、发明家和教育家。卡弗对农业和环境科学领域的贡献彻底改变了美国农业的面貌,并为现代可持续实践奠定了基础。在农民们苦苦挣扎的时候,他率先提出了轮作和土壤保护的概念。他的工作促进了土壤再生,使农民们能够提高生产力。作为一名发明家,他发明了花生酱,从而找到了充分利用花生资源的方法。(顺便说一下,花生不是坚果,而是豆类。)

现在我们已经了解了跨学科技能的影响,并从艺术和科学领域获得了博学家的历史例子,让我们将这些理念应用到现代社会,看看成为一名全栈 AI 工程师需要什么。 

AI 数据基础设施

AI 的核心是数据——因此,要成为一名全栈 AI 工程师,你需要了解 AI 数据基础设施。 

现代数据湖——如果你的雇主对 AI/ML 越来越重视,他们会向你征求有关如何现代化现有基础设施的建议。现代数据湖是一种存储解决方案,能够存储 AI/ML 所需的所有数据,包括结构化和非结构化数据。因此,现代数据湖一部分是用于非结构化数据的 Data Lake,另一部分是用于结构化数据的 Data Warehouse。现代数据湖之所以强大,是因为它在后台使用高速、可扩展的对象存储来存储所有数据类型——非结构化和结构化数据。

使用对象存储来存储 Data Lake 和 Data Warehouse 成为可能,这得益于 Apache Iceberg、Apache Hudi 和 Delta Lake 等开放式表格式 (OTF) 的兴起,这些格式是一些规范,一旦实施,就可以使对象存储无缝地用作数据仓库的基础存储解决方案。这些规范还提供了传统数据仓库可能不存在的功能——例如,快照(也称为时间旅行)、模式演变、分区、分区演变和零拷贝分支。

可以在 这里找到现代数据湖参考架构。一篇解释该架构如何支持所有 AI/ML 工作负载的配套论文可以在 这里找到。

机器学习运营 (MLOps) - MLOps 之于 AI/ML 就如同 DevOps 之于应用程序开发。要更好地理解 MLOps 的重要性,将模型创建与传统的应用程序开发进行比较是有帮助的。  

传统的应用程序开发,比如实现一个为应用程序添加新功能的新微服务,首先要从审查规范开始。任何新的数据结构或对现有数据结构的任何更改都需要首先进行设计。数据设计在编码开始后不应更改。然后实现服务,编码是此过程中的主要活动。单元测试和端到端测试也需要编码。这些测试证明代码没有缺陷,并且正确地实现了规范。在部署整个应用程序之前,它们可以通过 CI/CD 管道自动运行。  

创建模型并训练它则不同。第一步是了解原始数据和所需的预测。ML 工程师确实需要编写一些代码来实现他们的神经网络或设置算法,但编码不是主要的活动。反复试验是主要活动。在实验过程中,数据的设计、模型的设计以及使用的参数都会发生变化。每次实验后,都会生成指标,显示模型在训练过程中的表现。还会针对验证集和测试集生成模型性能指标。这些指标用于证明模型的质量。你可以在每次实验后保存模型本身。一旦模型准备好被整合到应用程序中,它需要被打包和部署。 

MLOps 工具可以处理上面描述的核心功能。许多工具的功能更强大。三个值得你为项目考虑的知名 MLOps 工具是

分布式训练 - 分布式模型训练指的是在多个计算设备或节点上同时训练机器学习模型的过程。这种方法可以加快训练过程,特别是对于需要大量计算资源的大型数据集和复杂模型。

两个值得注意的分布式训练框架是

Ray - Ray 是一个用于所有分布式事物的开源框架。它运行在虚拟机和 Kubernetes 上。您也可以在本地开发机器上使用它进行原型设计,只要您不使用太多工作程序并且没有执行过于复杂的操作即可。它支持 TensorFlow 和 PyTorch。对于 Ray 的托管实例,请查看 Anyscale.

TorchDistributor 是一个用于在 Apache Spark 上分布式 PyTorch 基于机器学习工作负载的库。spark-tensorflow-distributor 可用于基于 TensorFlow 的机器学习。两者都可以在 Databricks 上的主机环境中运行。

向量数据库 - 所有模型都需要数字作为输入,并生成数字作为输出。如果您对生成式 AI 感兴趣,这个简单的事实对您的 AI 数据基础设施提出了几个额外的要求,在生成式 AI 中,单词必须转换为数字或向量。向量数据库索引、存储和提供对您的文档及其向量嵌入的访问,向量嵌入是您文档的数值表示。向量数据库有助于语义搜索,语义搜索是检索增强生成 (RAG) 所需的 - 一种由生成式 AI 使用的技术,用于将您自定义语料库中的信息与经过训练的 LLM 的参数化记忆结合起来。  

三个值得研究的向量数据库是

AI/ML 工程

有了对您的 AI 数据基础设施的工作知识,您接下来需要了解围绕模型构建的工具。这就是我所说的 AI/ML 工程。在生成式 AI 出现之前,有监督学习、无监督学习、强化学习和自然语言处理 (NLP)。  然而,随着 ChatGPT 的兴起,一个新的类别被创建,称为生成式 AI,所有其他类别现在被称为“传统 AI”。

在深入了解 AI 工程的工具之前,让我们看一下这两类 AI。

传统 AI

传统 AI 包括对您的业务来说与生成式 AI 一样有价值的模型类型。这包括通过无监督学习创建的模型,您可以在其中寻找未标记数据中的模式。强化学习是另一种类型的 AI,其中创建了与环境交互的模型。最后,传统 AI 包括监督学习,在监督学习中,输入数据和输出标签之间的关系在训练期间是已知的。使用监督学习,您将有一个测试集用于测试您的模型,以提出精确的准确性度量。

生成式 AI

顾名思义,生成式 AI 涉及生成新数据。用作聊天机器人的模型属于此类,被称为大型语言模型 (LLM)。使用生成式 AI,您将不会有正式的训练集、验证集和测试集。相反,您将有一个自定义语料库,您可以使用它来 微调 您的 LLM。 检索增强生成,由 Meta 首次提出,是另一种使用自定义语料库和向量数据库与 LLM 的技术。

机器学习框架

PyTorchTensorFlow 是当今构建神经网络的两个顶级机器学习框架。PyTorch 比 TensorFlow 更受欢迎。这些框架可用于传统 AI 和生成式 AI。但是,您选择学习的框架应基于您雇主使用的框架。它们之间的共同点多于差异。由于设计模型需要更多关于训练技术的知识,而不是编码技术,您会发现如果需要,在框架之间切换很容易。

如果您需要快速将某些内容投入生产,请考虑 scikit-learn。Scikit-learn 使用算法来创建模型。您不需要设计和编写神经网络。因此,使用 Scikit-learn,您可以快速构建一个性能足够好的模型,可以作为 AI 解决方案中的第一个版本模型。从那里,您可以使用 PyTorch 或 TensorFlow 构建性能更好的神经网络,这通常需要更多时间。 

开源社区和工具

开源 LLM 使生成式 AI 民主化。此外,使用像 HuggingFace 这样的平台,您可以访问为各种任务设计和训练的大量模型集合,例如摘要、问答、翻译和实体识别。HuggingFace 还提供了一个库,使您可以轻松使用 LLM。 

为了简化 LLM 在应用程序中的集成,您需要学习像 LangChain 这样的框架。LangChain 简化了诸如检索数据、创建代理、检索增强生成和创建提示等任务。

结论

全栈 AI 工程师拥有涵盖软件开发、机器学习和数据基础设施的技能。他们精通 MLOps 和分布式训练,可以使用 TensorFlow、PyTorch 或 Scikit-learn 等框架来设计和训练用于传统 AI 和生成式 AI 的模型。最后,全栈 AI 工程师应该有持续学习的心态,以跟上 AI 数据基础设施和 AI/ML 工程不断发展的技术。

如果您有任何问题,请务必在 Slack 上与我们联系!

© . This site is unofficial and not affiliated with MinIO, Inc.