人们对基础模型的热情和创造力前所未有,但构建应用的原则并未改变。
上一篇文,我们从需求和产品角度分析了要不要构建一个应用。
本篇文章,解决接下来要面对的问题,为大家解释一些最常见的技术概念究竟什么意思,可以为开发过程提供什么帮助。
工程技术栈
任何AI应用的技术栈都包含三层:应用开发层、模型开发层和基础设施层。
开发时通常从最上层开始,根据需要向下推进。
应用开发层: 涉及为模型设计优质的提示词并提供必要的上下文。这一层需要根据业务需求做严格的评估。往往还要做界面设计。
模型开发层: 模型开发工具,包括建模、训练、微调和推理优化框架。由于数据在模型开发中占据核心地位,因此这一层也包含数据集工程。
基础设施层: 位于技术栈最底层,包括用于模型服务、数据和计算管理以及监控的工具。
在Stable Diffusion和ChatGPT推出后的2023年,AI工具的数量出现了大幅增长,增长最快的类别是应用开发层。基础设施层也有一定增长,但远低于其他层的增长幅度。
尽管人们对基础模型的热情和创造力达到了前所未有的高度,但构建应用的许多原则并未因此改变。对于企业级应用而言,仍然需要解决业务问题,所以,将业务指标映射到ML(机器学习)指标依然重要,反之亦然。
当下的重点
当下的AI工程中,我们很少需要自行开发模型,而是使用别人训练好的模型。这意味着更少关注建模和训练,更多关注模型的适配 和评估。
模型适配技术分为两类。
提示词:这类方案无须更新模型权重,通过给模型提供指令和上下文即可实现适配,而不是修改模型本身。
提示工程更容易上手,所需数据也更少。许多成功的应用仅通过提示工程就能实现。它的易用性使你能够尝试更多模型,从而增加找到适合的模型的机会。
然而,对于复杂任务或性能要求严格的应用就不够了。
微调:微调则需要更新模型权重,即需要修改模型本身。
通常来说,微调技术更复杂,也需要更多的数据,但它们能够显著提升模型的质量,降低模型的延迟和成本。很多任务如果不修改模型权重是无法实现的,比如模型训练时未接触过的新任务。
下面,我们将深入应用开发层和模型开发层,看看在AI工程的背景下,每层分别发生了怎样的变化。
模型开发
模型开发是传统ML工程中最常见的一层,主要包含三个职责:建模与训练、数据集工程、推理优化。
建模与训练
建模与训练是指设计模型架构、训练模型并对其进行微调的过程。
开发者熟知的谷歌的TensorFlow 、Hugging Face的Transformers 和Meta的PyTorch,都属于这类工具。
预训练、微调和后训练
训练必然改变模型权重,但并非所有对模型权重的改变都属于训练。
预训练: 是指从头训练一个模型,其权重通常是随机初始化的。对于LLM而言,预训练通常涉及文本补全。
在所有训练步骤中,预训练最耗费资源,是少数人的游戏,但正因如此,具备大模型预训练专业知识的人才非常抢手。
微调: 是指在已经训练好的模型基础上继续训练------模型权重继承自之前的训练过程。由于模型已经具备一定的知识,因此微调通常比预训练所需的资源更少。
后训练: 很多人使用"后训练"一词来表示在预训练阶段之后继续训练模型的过程。
模型开发者进行的训练通常称为后训练。应用开发者进行的训练则称为微调。
数据集工程
数据集工程是指为训练和适配模型而进行的数据收集 、生成 和标注工作。
数据处理更多涉及去重、分词、上下文检索和质量控制,包括剔除敏感信息和有害数据。对AI工程来说是一个更大的挑战。
许多人认为,随着模型的商品化程度越来越高,数据将成为主要的差异化因素,这使得数据集工程比以往任何时候都更加重要。
你需要多少数据取决于所用的适配技术。从头训练模型通常比微调需要更多数据,而微调又比提示工程需要更多数据。
推理优化
推理优化是指让模型运行得更快 、更经济。这一直是ML工程的重要内容。
用户永远不会拒绝更快的模型,公司也总能从更低成本的推理中获益。然而,随着基础模型规模的扩大,推理成本和延迟也随之增加,推理优化变得越来越重要。
基础模型的一个挑战是,它们通常逐个生成token,如果生成一个token需要10毫秒,那么生成100个token就需要1秒,更长的输出耗时更久。
随着用户的耐心消耗殆尽,将AI应用的延迟降低到典型互联网应用所期望的100毫秒,就是巨大的挑战。因此,推理优化已成为业界一个活跃的子领域。
应用开发
在传统ML工程中,团队使用自研模型构建应用,模型质量是差异化的关键。而在基础模型时代,许多团队使用相同的模型,因此必须通过开发过程来实现差异化。
应用开发层包括以下职责:评估、提示工程、AI界面。
评估
评估旨在降低风险并发现机会。通常用于选择模型、对进展进行基准测试、确定应用是否准备好部署,以及在生产环境中发现问题和改进空间。
评估的挑战主要源于基础模型的开放性和生成能力。
大量适配技术的存在也使评估变得更加困难。一个系统在使用某种技术时表现不佳,但在使用另一种技术时可能表现得很好。
提示工程
前面的模型适配已经提到过"提示工程",应用开发的过程就可以理解为在做适配,所以同样属于这个范畴。
恰当的提示词可以让模型按照期望的方式完成任务,并以指定的格式输出结果。
提示工程不仅告诉模型做什么,还为模型提供完成特定任务所需的上下文和工具。
AI界面
AI界面为用户提供了与AI交互的桥梁。在基础模型问世之前,只有具备足够资源开发AI模型的组织才能开发AI应用,这些应用通常嵌入在组织已有的产品中。
得益于基础模型,任何人都可以构建AI应用,选择和可能性就变多。
流行的界面形式:
- 独立的网页、桌面和移动应用。
- 浏览器扩展,允许用户在浏览网页时快速向AI模型发送查询。
- 集成到Slack、Discord、微信和WhatsApp等应用中的聊天机器人。
许多产品(包括VS Code、Shopify和Microsoft 365)提供了API。开发者可以利用这些API将AI作为插件或附加组件集成到自己的产品中;AI智能体也可以利用这些API与外界交互。
尽管聊天界面最为常用,但交互方式也可以是语音 形式(如语音助手)或具身形式(如用于增强现实和虚拟现实)。这些新型AI界面也为收集和提取用户反馈带来了新途径。
AI与全栈
很多人都在思考,AI时代该如何做职业规划和抉择。
要求每个人都去做模型研究是不现实的,但可以往别的方向倾斜。比如,随着人们对交互界面重视程度的提高,AI工程与全栈开发的距离日益缩小。界面重要性的提升促使AI工具的设计发生演变,旨在吸引更多前端工程师加入。
传统ML工程以Python 为中心,在基础模型出现之前,最流行的ML框架大多只支持Python API。如今,虽然Python仍然流行,但对JavaScript API的支持也在不断完善,例如LangChain.js、Transformers.js、OpenAI的Node库以及Vercel的AI SDK。
新的AI工程工作流青睐那些能够快速迭代的人,全栈工程师的优势就体现出来,他们能够参与产品决策,快速将想法转化为演示产品,获取反馈并快速进行迭代。
更多好文章第一时间接收,关注公众号:"前端说书匠"