你使用的軟體有多環保?

How Green Is Your Software?
桑傑.帕德 Sanjay Podder , 亞當.波登 Adam Burden , 夏拉巴.庫瑪.辛 Shalabah Kumar Singh , 雷吉娜.瑪魯卡 Regina Maruca
瀏覽人數:1039
我們以為高碳排放與環境破壞都是硬體的問題,實際上,軟體也是幫凶之一。問題出在開發及使用軟體的方式。軟體要在硬體上運作,而隨著軟體持續增加,對這些硬體的仰賴程度也升高。數據中心將在2030年時,消耗8%的全球能源。那麼,公司要如何讓自家的軟體變得環保?這是一個三階段流程。首先,是詳述一個設定明確界限的策略,再鎖定軟體開發的生命週期,最後,是要讓雲端服務也變得環保。

對於幾乎所有用來支持自然環境的智慧型解決方案來說,軟體無疑是骨幹。例如,對於解決森林濫墾及減少碳排放的行動,軟體非常重要。但在許多情況下,軟體也是碳排放快速增加的基本原因之一。其實,最近有愈來愈多的數位科技,導致原本要用它們來解決的環境問題變得更糟。不過,企業可以把軟體當成它們本身永續發展行動的一個重要部分,做法是考量到軟體在設計、開發及建置過程中產生的碳足跡,並且重新思考那些提供雲端服務的數據中心運作方式的一些層面。

我想先說明:軟體本身不會消耗能源,也不會排放有毒物質。問題出在開發和使用軟體的方式。軟體要在硬體上運作,而隨著軟體持續增加,對這些硬體的仰賴程度也升高。

舉例來說,區塊鏈(blockchain)驅動現有的一些最先進的環保解決方案,像是可讓居民交易環保能源的微電網。這個軟體創新也推動了加密貨幣的發展。2019年,劍橋大學(University of Cambridge)的研究人員估計,維持比特幣網路運作所需的能源,超過了瑞士全國的能源需求。

資訊及通訊產業也不遑多讓。到2040年,這個產業預計將占全球碳足跡的14%,高於2007年的1.5%。

軟體開發本身就相當耗能源。舉例來說,我們用小型且公開的鳶尾花數據集來訓練人工智慧模型,而花種的分類準確度達96.17% 時,只耗費964焦耳的能量。若要把準確度提升1.74個百分點,需要消耗2815焦耳的能量。到最後提升分類準確度0.08%,要比第一階段分類所耗的能源多了幾乎四倍。

現在以整體人工智慧的角度,來看看同樣這個例子的情況。現今訓練一個人工神經網路模型所產生的碳排放,相當於五輛汽車在整個使用年限裡的總碳排放量。大型人工智慧訓練模型運行所需的運算能力,持續呈指數成長,每3.4個月就成長一倍。

雖然如此,限制對軟體的依賴並不合理,因為軟體是推動工作的工具,尤其是在後新冠病毒的世界裡,居家工作或遠距工作可能成為許多人的常態。限制軟體驅動的創新,也不是可行的回應方式。

不過,公司可以讓軟體成為永續發展行動的一個重要部分,做法是根據軟體的能源效率來判斷它的績效,而不僅是根據傳統參數(例如功能、安全性、可擴充規模的程度,以及便利性),並將綠色節能措施和目標,列為資訊長績效評估的指標。

報酬最終會超過挑戰:開發綠色軟體時必須在早期就加強監督,這會造就更高品質的產品,也就是更精實、更乾淨,而且更符合產品的目的。這些特性也會抵消額外的前期成本。綠色軟體有助於大型公司達成環境、社會及公司治理(ESG)的各項目標,這是投資人日益重視的績效衡量指標。最後,我們即將發表的研究發現,新一代的電腦工程師在選擇雇主時,愈來愈看重公司對永續發展的專注程度;而公司對綠色軟體的投入,可以是很有說服力的吸引因素。

那麼,公司要如何讓自家的軟體變得環保?這是一個包含三部分的流程:首先是詳述一個設定明確界限的策略,然後鎖定軟體開發生命週期,最後是讓雲端服務也變得環保。我們知道的公司當中,沒有任何一家完整投入我們列出的這整個流程,因而沒有獲得綠色軟體的全部好處。然而,愈來愈多公司正運用下列做法和技巧,只是做法各自略有不同,例如Google、福斯(Volkswagen)及雨林(Rainforest,一家軟體測試公司)等。

明訂策略以引導進行權衡取捨,並帶來彈性。如此一來,就能讓資訊科技團隊思考,他們的軟體對環境的影響應設定在哪個容忍程度,才算適當。企業目標與環境目標之間,幾乎一定要做出權衡取捨,而軟體工程師必須要能決定取捨的界線。回到先前提過我們用鳶尾花資料集來訓練的那個人工智慧模型的例子。是否值得耗費所需的能源,去進行提高分類準確度的那個最終步驟?這個商業決定,必須根據最高管理階層的明確指示來制定。

同樣重要的是,這項策略必須要有彈性,也就是要讓工程師有空間能夠視當下情況即興發揮,並透過嘗試與錯誤來學習。綠色軟體仍是一個新興領域,大多局限在學術界。這個領域並沒有工程師可使用的指南。

最後,這個廣泛的策略應提出衡量進展的指標。對於軟體更新來說,並不難設定指標(例如,根據新版軟體比前版多耗費了多少能源來衡量)。但對新軟體而言,有用的衡量指標就較難界定。一開始可以採用的指標包括記憶體的使用效率、數據用量,以及每秒的浮點(數學)運算等。

檢討及改良軟體開發生命週期。首先應詢問:這個應用程式可能產生的最低環境足跡是什麼?根據這項預期來指導軟體開發週期的第一組階段。隨著你了解更多,這項預期可能會有變化,但它對於可行性研究與評估替代方案的取捨,有很大的參考價值。

接下來,要提出建議,例如,建議你可以運用哪些演算法、程式語言、應用程式介面及軟體程式庫,以便把碳排放降到最低。同時要持續評估各個替代方案是否更具效率。這些評估會測試軟體與不同能源消耗的硬體設計的相容性,像是手機、汽車及居家控制系統等硬體。

在部署軟體的階段,你應透過動態程式碼分析之類的技術,來即時監控電力消耗。你所收集的數據很重要,有助於了解各項設計選擇,與實際能源消耗概況之間的落差。

目前有些公司提供工具,來協助開發具有能源效率而且能持續提高效率的系統。例如,英特爾(Intel)提供開發人員一些工具及資源,以管理能源消耗。英特爾的「軟體開發助理系統」可讓工程師在系統執行特定應用程式工作之時,從那套系統取得能源衡量指標的數值,以判斷系統的效率。

不過,這類工具並不多。評估碳排放及企業目標(如彈性)之間的重要取捨,仍是費力的困難工作。

綠化雲端服務。現代的應用程式幾乎都透過雲端來部署。但是,高速成長的雲端服務,已造成電力密集的數據中心快速擴張。目前,數據中心約消耗全球2%的電力;到2030年,這個數字將提高到8%。

時至今日,讓數據中心更環保的大多數行動,都著重在優化硬體(做法是減少過熱的伺服器),以及減少碳排放(做法是增加伺服器電力來源的可再生能源組合)。這些技術目前都有助於處理這個問題,但是,採取永續的軟體介入措施,開啟了節省能源的新機會。

舉例來說,移除數據的複本,或者把數據壓縮為較小的數據包,都可以節省能源。另一個可節省能源的做法,是部署圖形處理器(GPU)來管理在「邊緣」執行的工作(邊緣是指靠近裝置或終端使用者之處),這樣就能把大型任務分成一些較小的任務,並分散給多個處理器來執行,因而產生效率。

採用較環保的伺服器架構,也可能對節省能源很重要。例如,採用虛擬伺服器,可協助公司視需要而擴充伺服器,節省企業數據中心的能源。虛擬化基本上促成由單一的實體硬體系統,創造出多重的模擬環境(或專用的資源)。容器化(containerization)是另一個選項,它基本上是虛擬系統的改善。無伺服器運算(serverless computing;編按:使用者不必建置及管理伺服器,而由雲端服務商來管理),是在硬體的層次把各項應用程式分開,而容器化是在作業系統的層次上,把各項應用程式分開。

較新的應用架構〔像是無伺服器運算,或功能即服務(Function-as-a-Service, FaaS)〕,讓企業能夠對處理容量有更多的控制權,因而也更能控制能源消耗。例如,無伺服器運算可以只在有需要時才執行各項功能,因而能夠有效率地分享基礎設施的資源。無伺服器運算的收費是按執行時間計算,因此會迫使程式設計師改善程式碼的效率。舉例來說,大型無伺服器運算服務供應商,像是AWS Lambda 及Microsoft Functions,採取按使用量付費的成本模式,來提供可持續擴大規模的運算能力。

不論是手機要更有效率地使用資源及運算能力,以節省能源,還是雲端數據中心必須優化本身的伺服器,以節省能源消耗,對綠色軟體的需求將會持續增加。現在就把軟體納入你的永續發展行動之中,你的公司就能在這個重要領域裡領先。

(潘東傑譯)



桑傑.帕德 Sanjay Podder

埃森哲顧問公司(Accenture)成長型市場技術創新領導人。


亞當.波登 Adam Burden

埃森哲顧問公司首席軟體工程師,以及智慧軟體工程服務實務領導人。


夏拉巴.庫瑪.辛 Shalabah Kumar Singh

埃森哲研究所(Accenture Research)資深高級顧問。


雷吉娜.瑪魯卡 Regina Maruca

埃森哲研究所資深主編。


本篇文章主題永續