构建可靠AI,离不开“枯燥”工程

53 阅读6分钟

AI项目失败多因被视作ML实验而非工程,缺乏工程思维。成功关键在于应用传统软件工程原则,重视数据、监控、部署与不确定性处理。

译自:Building Reliable AI Requires a Lot of 'Boring’ Engineering

作者:Andrew Prosikhin

在早期创业公司从iPhone应用到大型科技公司的医疗AI系统,我花费了十年时间进行构建,目睹了无数组织一头扎进AI的采用浪潮,却在现实面前步履维艰。数据讲述了一个发人深省的故事:74%的公司难以从AI中实现和扩展价值,而42%的公司在投入生产之前就放弃了他们的AI项目。问题不在于技术本身,而在于我们处理它的方式。

核心问题?大多数AI项目失败的原因在于它们被视为机器学习(ML)实验,而非工程项目。

工程思维差距

在我担任医疗科技公司高级生成式AI(GenAI)工程师以及现在作为创始人的这段时间里,我目睹了相同的模式反复出现:杰出的数据科学家构建了令人印象深刻的模型,但这些模型从未投入生产,因为没有人考虑过可靠性、可维护性或实际部署的限制。

传统软件工程在几十年前就解决了这些问题,然而我们却在AI领域重新造轮子。行业研究显示,在生产级ML系统中,ML模型代码仅占真实世界生产系统的5%。其余的95%是纯粹的工程:数据管道、监控、测试、部署基础设施和维护。

为什么软件工程原则在AI中仍然重要

成功扩展AI的公司并非拥有最花哨算法的公司。它们是那些将平淡无奇、行之有效的工程实践应用于AI系统的公司。

提示词需要与任何其他代码相同的严谨性。它们需要版本控制、测试、调试和性能监控。早期认识到这一点的团队能够避免不可避免的技术债务,这些债务会在后期扼杀AI项目。

传统单元测试检查函数是否返回预期输出,而AI系统需要测试模型漂移、数据质量和边缘情况。领先的AI团队已经认识到,ML系统需要持续监控,因为它们会以传统软件不会的方式退化。

我构建的最可靠的AI系统将不确定性视为头等公民。它们被设计成当模型产生意想不到的输出时能够优雅地失败,具有回退机制,并向用户提供关于置信水平的清晰反馈。

初创企业与大型企业的鸿沟

大型科技公司拥有庞大基础设施和专门的可靠性工程团队的优势,但大多数公司没有。对于许多初创公司来说,每一个工程决策都必须考虑有限的资源以及在保持质量的同时快速行动的需求。

关键的洞察是首先从工程基础开始,然后添加AI功能。太多公司反其道而行之,构建出色的演示,却无法经受真实用户和生产环境的考验。

那些在AI领域获胜的公司不一定是拥有最佳算法的公司。它们是将数十年的软件工程智慧应用于新问题领域的公司。

管理AI项目需要与传统软件项目不同的技能。数据依赖性会产生级联效应,比代码依赖性更难预测。特征工程通常需要工程团队之外的领域专业知识。模型训练可能需要数天或数周,这使得快速迭代具有挑战性。

解决方案不是放弃敏捷方法论,而是对其进行调整。我们围绕数据可用性而非仅仅功能完整性来规划冲刺。我们为模型再训练和验证预留时间。我们对待AI模型更新的态度与对待数据库模式更改一样谨慎。

传统工程师在AI中所需的技能

从传统软件工程到AI开发的转型并非学习复杂的数学或深度学习理论。它是关于调整工程纪律以处理不确定性和概率系统。

AI项目中最大的瓶颈不是模型架构,而是数据质量和可用性。理解数据管道、ETL过程和数据库优化的工程师比那些能实现最新Transformer架构的工程师更有价值。

传统应用程序监控跟踪正常运行时间和响应时间。AI系统需要监控模型准确性、数据漂移、偏差检测和业务指标关联。监控基础设施通常变得比AI模型本身更复杂。

部署AI模型需要考虑模型版本控制、A/B测试不同算法、渐进式发布和回滚策略。这些是具有AI特定约束的经典软件部署挑战。

使AI系统足够可靠和安全

AI系统中的可靠性意味着在设计时要考虑到模型在一定百分比的时间内会出错。这不是一个需要修复的bug,而是一个需要围绕其进行工程设计的根本特征。

在生产呼叫中心可靠运行的语音训练系统,需要设计以应对网络中断、音频质量变化和训练数据从未涵盖的边缘情况。AI模型只是一个旨在处理现实世界复杂情况的更大系统中的一个组件。

好消息是,如果你能够构建可靠的软件系统,你已经拥有构建可靠AI系统所需的大部分技能。

AI安全不仅仅是预防有害输出,更是关于构建故障可观测、可调试和可恢复的系统。这需要与我们传统系统中使用的错误处理、日志记录和事件响应相同的系统化方法。

那些在AI领域获胜的公司不一定是拥有最佳算法的公司。它们是将数十年的软件工程智慧应用于新问题领域的公司。随着AI变得越来越普及,竞争优势将属于那些能够弥合ML研究与生产工程之间鸿沟的团队。

好消息是,如果你能够构建可靠的软件系统,你已经拥有构建可靠AI系统所需的大部分技能。挑战在于认识到,每一个成功的AI产品背后,都有大量非常出色但却“枯燥”的工程工作。