人工智能正在产生远超商业生产力和财务业绩的广泛影响。其中最容易被忽视的领域之一是什么?软件开发和编码实践如何与电力、水资源以及对额外IT资源的需求产生交集。
"随着硬件变得更加丰富和强大,软件可以实现过去无法做到的事情。低效率的上限变得更高了,"Gartner副总裁兼分析师Ed Anderson说道。"软件开发人员知道硬件可以填补空缺并弥补差距。"
这个资源丰富的时代导致了数据中心空间的浪费、不必要的复杂IT架构、过度的网络流量,以及一个将开发人员便利性置于性能之上的编码框架。虽然软件本身不直接消耗碳,但结果是成本更高,同时难以实现碳减排目标和其他可持续发展目标。
"许多组织在采用更高效硬件方面做得很好,但他们与软件的关系却缺乏了解,"埃森哲全球技术、可持续发展和创新董事总经理Sanjay Podder观察到。
因此,IT领导者越来越多地探索编写、管理和维护可持续软件的方法。他们转向指标和新兴工具——包括AI——这些工具能够检测冗余代码、跟踪能源和水消耗,并监控整体性能,比如能够减少浪费的能源感知库和调度器。
可持续软件发展趋势
可持续软件的理由正在增强。根据埃森哲的研究,该行业的碳足迹从2007年的1.5%上升到2022年的4%。而且没有结束的迹象。预测显示,到2040年,软件将产生14%或更多的所有排放。这种增长很大程度上来自GPU,它们的能耗是其他类型半导体的10倍。
然而,能源和碳减排并不是唯一的关注点。可持续软件还有强有力的商业理由。应用程序和其他形式的代码影响生产力、效率、客户体验等。低质量的软件会减慢系统速度,增加存储需求,并浪费软件开发人员的时间。
可以肯定的是,软件效率涉及许多领域,比如编写和测试代码、运行代码,以及何时淘汰代码,Anderson说。因此,关注整个软件开发生命周期至关重要。"你的编码方式是否导致不必要的任务发生?你是否在网络中发送不必要的数据?你是否将AI准确性推到了收益递减的程度?"他问道。
绿色软件基金会执行董事Asim Hussain说,一个常见问题是,虽然许多CIO认识到可持续软件策略的价值,但这项任务可能显得模糊和令人困惑。"你必须为事物分配一个数字来理解要解决什么、如何解决以及为此获得预算。否则,就无法确定什么产生最大影响,或者你是否使用了低效的硬件或使用了不清洁的能源。"
Podder观察到,CIO在推动可持续软件方面的角色正在发生变化。"五年前,CIO会说可持续发展不在他们的职责范围内,这是首席可持续发展官的工作。"随着技术进步、供应链和工作流程的发展,以及软件成为一切的中心,CIO在软件可持续性方面发挥更突出的作用变得至关重要。
建立测量框架
建立一个框架来测量软件堆栈中的基线能耗和排放至关重要。然而,这项任务可能令人望而却步,因为跨系统和行业不存在单一或一致的指标。不幸的是,许多工具测量单个组件或代码库,但不提供通用的可见性。
"有很多不同的信号需要捕捉,与财务会计不同,没有现成的标准或方法论,"Hussain说。绿色软件基金会正试图通过建立标准来解决这个问题,比如软件碳强度(SCI)规范,并将组织连接到促进软件可持续性的工具和课程。此外,像埃森哲这样的咨询公司以及各种供应商和云提供商都提供专有工具。也可以利用GitLab和Jenkins等开源资源。
Gartner的Anderson说,收集数据很重要,但有效分析数据同样重要。缺乏指标和数据就无法知道哪些项目提供最大的投资回报率,以及应该为某项任务投入什么类型的开发资源。AI可以进一步放大成本和收益。"你是否要投入50%的额外资源来获得1%或2%的模型准确性提升?额外的准确性是否值得在时间和能源上的投资?"他问道。
这种分析应该扩展到不同设备如何使用能源——服务器、云、PC、网络浏览器和智能手机。它还包括对软件开发语言的选择。"像Perl、Python和JavaScript这样的解释型语言的效率比C或Rust等传统语言低50倍,"他说。"可能有机会为某些任务使用能耗更低的语言。"
节能开发实践可以标记懒加载、缓存和服务器端渲染等问题。它还可以帮助组织采用减少碳影响和成本的模块化编码实践。还有涉及碳感知计算的机会。这包括在可再生能源广泛可用时安排某些工作负载,或将工作负载转移到其他系统或数据中心,以在一天中的某些时间利用清洁能源,Podder指出。
微小改变的巨大影响
即使是看似微小的变化——比如在黑色背景上显示浅色文本——当它在数万个屏幕上产生连锁反应时,也能产生显著差异。埃森哲发现,这种方法可以减少60%的碳排放。同样,以高清格式传输流媒体视频的碳排放量可能是标准清晰度的8倍。禁用视频自动播放可以将能源使用降低2倍或更多。
最终,成功需要组织平衡相互竞争的优先级,比如上市速度、功能需求、成本和可持续目标。它还需要专注于AI模型和算法优化。Podder说:"每个决策都有权衡。关键是在不影响构建和交付优秀软件能力的情况下实现更大的可持续性。"
Q&A
Q1:可持续软件开发面临的主要挑战是什么?
A:主要挑战包括缺乏统一的测量标准和指标、硬件资源丰富导致的开发效率意识淡薄,以及需要在开发速度、功能需求、成本和可持续发展目标之间找到平衡。
Q2:如何量化软件的能源消耗和碳排放?
A:可以通过建立软件碳强度规范、使用专有工具和开源资源如GitLab和Jenkins,以及采用能源感知库和调度器来监控整体性能,但目前缺乏跨系统和行业的统一标准。
Q3:哪些简单的编码实践能够显著降低能耗?
A:包括在黑色背景上使用浅色文本(可减少60%碳排放)、避免高清视频自动播放、使用更节能的编程语言如C或Rust替代Python等解释型语言,以及采用懒加载、缓存等优化技术。
热门跟贴