Deployment Risk Assessment Using Diff-Aware Features: A Case Study at Prime Video
本文提出了一种用于预测 Prime Video 代码部署风险的隐私保护且语言无关的框架,该框架通过利用大语言模型提取差异感知特征,证明了结构化代码复杂度是比容量指标更可靠的风险指标,并在内部和公开数据集上均实现了高准确率。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你是一位大型现场电视转播的导演,比如超级碗或一场重大的足球赛事。数以百万计的人正在观看,演出必须在没有任何故障的情况下顺利进行。在这种高风险的环境中,你的工程师团队一直在试图修复运行节目的软件中的微小漏洞或添加新功能。
问题:“全或无”式的冻结
通常,为了防止灾难发生,导演会发布一个“代码冻结”(Code Freeze)。这就像是在比赛开始前的最后一个小时,告诉整个厨房停止烹饪。不再有新菜品,不再有配方调整,什么都不行。虽然这很安全,但也令人沮访。它阻碍了好的创意被呈现,造成了未完成工作的积压,并减慢了所有进度。现有的系统将一个微小的、无害的拼写错误与一个危险的、足以导致游戏崩溃的错误同等对待:两者都会被拦截。
解决方案:智能“风险雷达”
这篇论文的作者们(他们在 Amazon Prime Video 工作)想要一种更聪明的方法。他们构建了一个风险雷达(Risk Radar)。这个系统会在工程师进行的每一项更改投入上线之前观察它,并询问:“这项特定的更改危险吗?”
他们并不想监视工程师(比如检查他们的过往表现或工作年限),因为这涉及隐私问题,而且对新团队并不适用。相反,他们严格观察更改本身——即“差异”(diff)。
把“diff”想象成实际添加或删除的食谱配料清单。
- 旧方法: “不要烹饪任何东西,因为我们不知道是谁做的。”
- 新方法: “看看这个特定的食谱。它的步骤太复杂,格式也很奇怪。让我们仔细检查一下。但另外那个食谱简单又整洁?那就立即上菜吧。”
他们是如何构建这个雷达的
为了让这个雷达发挥作用,他们需要一种能够阅读多种不同语言(Java, Kotlin, TypeScript)的“食谱”(代码)的方法,而不需要为每种语言都准备一个不同的翻译器。
- AI 翻译器(大语言模型/LLMs): 他们使用了一个强大的 AI(大语言模型),不是用来编写代码,而是充当一个通用翻译器。它读取代码更改并统计以下内容:
- 逻辑有多复杂?(是一个简单的沙拉,还是一个十道菜的大餐?)
- 添加或删除了多少行代码?
- 是否存在格式错误?(比如忘记了大写字母或者使用了错误的字体)。
- 裁判(机器学习): AI 提取的这些数字和类别被输入到一个“裁判”(统计模型)中。这个“裁判”通过学习过去的错误(即节目实际出现故障的事件)来预测哪些新更改可能引发麻烦。
令人惊讶的发现
团队在 Amazon 的实时数据和开源项目的公开数据集上测试了这个系统。以下是他们的发现:
- 规模并非一切: 你可能会认为一个巨大的更改(增加 1,000 行代码)比一个小小的更改更危险。研究发现这是错误的。一个组织良好、结构清晰的大规模更改,通常比一个细小但混乱且复杂的更改更安全。更改的“容量”实际上是一个嘈杂且不可靠的信号。
- 复杂度才是真正的元凶: 最强烈的警告信号是结构复杂度。如果代码纠缠不清、嵌套过深或难以理解,那就是雷达应该发出“危险!”警报的时候。
- AI 翻译器行之有效: 使用 AI 来阅读代码在不同语言之间表现良好,这使得团队无需为每种编程语言都构建定制工具。
- 人类仍然掌控全局: 该系统并非旨在自动拦截更改。它是一个“护栏”。它会标记出有风险的更改供人类进行审查。系统的调优非常敏感:与其漏掉一个危险的更改,不如多标记一个安全的更改以进行快速检查(即误报)。
结果
通过使用这个“风险雷达”,Prime Video 可以停止“全或无”式的冻结。他们可以让安全、简单的更改立即通过,而只暂停那些复杂、有风险的更改,以便由人类进行二次检查。
简而言之,他们用一种精确的工具(分析更改的具体形状和复杂度)取代了笨拙的手段(冻结一切),从而在不停止整个厨房运作的情况下,让演出保持顺畅运行。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。