Nel dicembre 2023, i rappresentanti di quasi 200 Paesi si sono riuniti a Dubai per la COP28, la conferenza delle Nazioni Unite sul cambiamento climatico. Hanno discusso dell’urgente necessità di ridurre le emissioni.
Nel frattempo, il sito web della COP28 ha prodotto 3,69 grammi di anidride carbonica (CO2) per caricamento di pagina, secondo lo strumento di valutazione della sostenibilità dei siti web Ecograder. Sembra un’infima quantità. Ma se il sito riceve 10.000 visualizzazioni al mese per un anno, le sue emissioni sarebbero di poco superiori a quelle di un volo di sola andata da San Francisco a Toronto.
Tuttavia si sarebbe potuto evitare questa gaffe. Secondo Ecograder, il codice inutilizzato, le immagini non correttamente dimensionate e gli script di terze parti, tra le altre cose, incidono sulle emissioni del sito web analizzato.
Tutti questi fattori incidono sull’energia utilizzata per il trasferimento, il caricamento e l’elaborazione dei dati, consumando molto sui dispositivi degli utenti. Correggendo e ottimizzando questi aspetti si potrebbe ridurre di ben il 93% le emissioni per caricamento del sito web.
Ma “quando si parla di sustainable coding, su cui la Fondazione ha pubblicato un manifesto tre anni fa”, commenta Stefano Epifani, Presidente della Fondazione per la Sostenibilità Digitale, “dobbiamo distinguere due dimensioni: quella del fatto che il codice sia sostenibile (ambientalmente, economicamente, socialmente) in sé, declinata sia nel processo con cui lo sviluppiamo che nel risultato dello sviluppo; la dimensione per cui il software può essere un attivatore o motore di sostenibilità“.
Ecco perché i programmatori dovrebbero preoccuparsi di rendere il loro software sostenibile, ma soprattutto cosa significa
Il movimento per il green software
Mentre il software di per sé non rilascia emissioni, viene eseguito sull’hardware dei centri di elaborazione dati e gestisce i dati attraverso le reti di trasmissione, che rappresentano circa l’1% delle emissioni di gas serra legate all’energia.
Il settore delle tecnologie dell’informazione e della comunicazione nel suo complesso è responsabile di una percentuale stimata tra il 2 e il 4% delle emissioni globali di gas serra. Entro il 2040, questa percentuale potrebbe raggiungere il 14%, quasi la stessa quantità di carbonio emessa dai trasporti aerei, terrestri e marittimi messi insieme.
Nell’ambito del software, l’intelligenza artificiale ha noti problemi di sostenibilità ovvero di emissioni. L’azienda di AI Hugging Face ha valutato l’impronta di carbonio del suo modello linguistico di grandi dimensioni Bloom lungo l’intero ciclo di vita, dalla produzione delle apparecchiature alla distribuzione. Ha così scoperto che l’addestramento finale di Bloom ha emesso 50 tonnellate di CO2, equivalenti a una dozzina di voli da New York a Sydney.
L’ingegneria del green software è una disciplina emergente che consiste in nuove best practice per costruire applicazioni per ridurre le emissioni di carbonio. Il movimento del software verde sta rapidamente guadagnando terreno.
Aziende come Salesforce hanno lanciato le proprie iniziative di sostenibilità del software. Invece la Green Software Foundation comprende oggi 64 organizzazioni associate, compresi i giganti come Google, Intel e Microsoft. Ma il settore dovrà adottare queste pratiche in modo più ampio per evitare un aumento delle emissioni a causa dello sviluppo e dell’utilizzo del software.
Il Green Software Engineering
Il percorso verso il software verde è iniziato più di 10 anni fa. Il Sustainable Web Design Community Group del World Wide Web Consortium (W3C) è stato istituito nel 2013, mentre la Green Web Foundation è nata nel 2006 come un modo per comprendere i tipi di energia che alimentano Internet.
Ora, la Green Web Foundation sta lavorando per raggiungere l’ambizioso obiettivo di una Rete senza fossili entro il 2030.
“Esiste già un ampio segmento dell’ecosistema di sviluppo del software che si preoccupa di questo spazio, solo che non sa cosa fare”, afferma Asim Hussain, presidente e direttore esecutivo della Green Software Foundation ed ex direttore del software ed ecosistemi verdi di Intel.
Secondo Hussain, le azioni da intraprendere rientrano in tre pilastri principali: l’efficienza energetica, ovvero l’utilizzo di meno energia; l’efficienza hardware, ovvero l’utilizzo di meno risorse fisiche; e il carbon-aware computing, ovvero l’utilizzo più intelligente dell’energia. L’informatica consapevole delle emissioni di anidride carbonica, aggiunge Hussain, consiste nel fare di più con le applicazioni nei periodi in cui l’elettricità proviene da fonti pulite o a basse emissioni di anidride carbonica, come quando l’energia eolica e solare sono disponibili, e fare di meno quando non lo sono.
Il caso del software sostenibile
Per prima cosa, il software verde è un software efficiente, che consente ai programmatori di creare sistemi più veloci e di qualità superiore, afferma Kaspar Kinsiveer, team leader e stratega del software sostenibile presso la società di sviluppo software Helmes.
Questi sistemi efficienti potrebbero anche significare costi inferiori per le aziende. “Una delle principali idee sbagliate sul software ecologico è che si debba fare qualcosa in più e che questo costi di più”, afferma Kinsiveer. “Non c’è nessun costo aggiuntivo, basta fare le cose per bene”.
Ma a favore del software sostenibile sono anche altri fattori: l’aspetto commerciale e quello legislativo, dove sono imminenti norme e normative relative alla sostenibilità. Nell’Unione Europea, per esempio, la direttiva Corporate Sustainability Reporting richiede alle aziende di fornire maggiori informazioni sulla loro impronta ambientale, sul consumo di energia e sulle emissioni, comprese quelle legate all’uso dei loro prodotti.
“Ma il problema è che l’Europa prende in considerazione solo la prima dimensione”, avverte Stefano Epifani, “quanto il software è sostenibile e non quanto produce sostenibilità. Infatti, lo strumento utilizzato a livello europeo, per misurare l’impatto delle tecnologie, è il DNSH acronimo di Do No Significant Harm: non arrecare cioè nessun impatto significativo all’ambiente. Ma il software deve avere un impatto significativo, anche se positivo (e non dannoso e negativo). Dobbiamo quindi capire come misurare anche l’impatto in positivo, ma nel frattempo si pone solo l’attenzione sul fatto che il software non abbia un impatto negativo”.
Altri sviluppatori, invece, possono essere motivati dalla crisi climatica stessa, volendo fare la loro parte nel favorire un pianeta abitabile per le prossime generazioni. Gli ingegneri del software hanno un’enorme influenza sull’effettivo scopo e sulle emissioni di ciò che costruiscono.
“Non si tratta solo di righe di codice. Quelle righe hanno un impatto sugli esseri umani”, afferma June Sallou, ricercatrice post-dottorato specializzata in ingegneria del software sostenibile presso la Delft University of Technology, nei Paesi Bassi. Anche a causa dell’impatto sociale dell’intelligenza artificiale, aggiunge, gli sviluppatori hanno la responsabilità di garantire che ciò che stanno creando non danneggi l’ambiente.
Ma il sustainable coding comprende due dimensioni, secondo Stefano Epifani: “Nel caso della sostenibilità ambientale, sto programmando con attenzione a questo aspetto. In ambito della sostenibilità sociale, sto prendendo in esame dinamiche di inclusione e diversità: la software house ha sviluppatori donne e con neurodiversità”.
“Nel processo di sviluppo lo sviluppatore può essere (o meno) sostenibile”, continua Epifani: “Ma poi il developer deve essere sostenibile anche nel risultato dello sviluppo, con un software orientato al risparmio energetico, alla parità di genere eccetera”.
“La sostenibilità dunque è qualcosa, rispetto alla quale il software può essere sviluppato (o meno), sia nel processo che nel risultato. Allo stesso tempo, il software può essere un attivatore o motore di sostenibilità“, precisa il presidente della Fondazione per la Sostenibilità Digitale.
Costruire siti web e app più verdi
I creatori del sito web della COP28 avrebbero potuto prendere spunto da elenchi come Lowwwcarbon, che mette in evidenza esempi di siti web esistenti a basse emissioni di carbonio. Il sito web dell’azienda olandese di web design e branding Tijgerbrood, per esempio, emette meno di 0,1 grammi di carbonio per pagina visualizzata.
La creazione di siti web sostenibili come quello di Tijgerbrood è un lavoro di squadra che coinvolge diversi ruoli, dagli analisti aziendali che definiscono i requisiti del software ai progettisti, agli architetti e ai responsabili delle operazioni, e comprende pratiche ecologiche che possono essere applicate in ogni fase del processo di sviluppo del software.
“Il software, da una parte deve rispettare dei criteri in fase di sviluppo e realizzazione”, spiega Stefano Epifani, “ma quello è un ‘piccolo pezzetto’ del percorso: il software deve rispettare criteri per non fare danni. Ma in realtà il software deve produrre un vantaggio. Importante è quanto questo software abilita la sostenibilità. Sia sul primo punto (quanto il software è sostenibile in sé) che sul secondo punto (quanto il software produce sostenibilità), la Fondazione ha sviluppato una Prassi di Riferimento UNI/PdR 147:2023, con requisiti e indicatori, per illustrare quanto i processi di trasformazione digitale sono fatti prendendo in considerazione i criteri di sostenibilità”.
Esempi
In primo luogo, gli analisti dovranno valutare se la funzione, l’applicazione o il software che stanno progettando debbano essere sviluppati. La tecnologia è spesso legata alla creazione della novità più recente, ma la sostenibilità del software comporta anche decisioni su cosa non costruire, e questo potrebbe richiedere un cambiamento di mentalità.
La fase di progettazione consiste nella scelta di algoritmi e architetture efficienti. “Pensate alla sostenibilità prima di arrivare alla soluzione, e non dopo”, dice Chiara Lanza, ricercatrice presso l’unità Sustainable AI del Centre Tecnològic de Telecomunicacions de Catalunya, a Barcellona.
Durante la fase di sviluppo, i programmatori devono concentrarsi sull’ottimizzazione del codice. “Abbiamo bisogno di ridurre la quantità complessiva di energia che utilizziamo per eseguire il software. Una parte di questo verrà dalla scrittura [del codice] in modo efficiente”, afferma Hannah Smith, consulente di tecnologia digitale sostenibile e direttore delle operazioni presso la Green Web Foundation.
Il sito web di Tijgerbrood ha ottimizzato il codice dell’azienda utilizzando immagini a bassa risoluzione e formati moderni, caricando le animazioni solo quando l’utente le fa scorrere e rimuovendo il codice non necessario. Queste tecniche contribuiscono a velocizzare il trasferimento, il caricamento e l’elaborazione dei dati sul dispositivo dell’utente. Il sito utilizza anche un minimo di JavaScript. “Quando un utente carica un sito web con molto JavaScript, consuma molta più energia sul proprio dispositivo, che deve fare tutto il lavoro per leggere il JavaScript ed eseguirlo”, spiega Smith.
Quando si tratta di operazioni, una delle azioni di maggior impatto che si possono intraprendere è quella di scegliere un provider di hosting Web o di cloud computing sostenibile.
La Green Web Foundation offre uno strumento per verificare se un sito web funziona con energia verde. Offre un elenco di fornitori di hosting alimentati da energie rinnovabili. Inoltre è possibile chiedere al fornitore di hosting se è possibile scalare il funzionamento del software nel cloud. In questo modo, i picchi di utilizzo potrebbero sfruttare energia verde. Oppure potrebbe avere senso mettere in pausa o spegnere alcuni servizi nelle ore non di punta.
Verso una green AI: la scelta di un algoritmo più ecologico
I programmatori possono applicare strategie di software ecologico anche nello sviluppo dell’AI. La riduzione dei dati di addestramento è uno dei modi principali per rendere i sistemi di AI più ecologici. A partire dalla raccolta e dalla pre-elaborazione dei dati, conviene riflettere. Non tutti i dati sono realmente necessari per svolgere il lavoro. Potrebbe essere utile ripulire il dataset per rimuovere i dati non necessari. O per selezionare solo un sottoinsieme del dataset per l’addestramento.
“Quanto più grande è il dataset, tanto più tempo e calcoli saranno necessari all’algoritmo per esaminare tutti i dati”, consumando così più energia, spiega Sallou.
Per esempio, in uno studio su sei diversi algoritmi di intelligenza artificiale che rilevano i messaggi di spam via SMS, Sallou e i suoi colleghi hanno scoperto che l’algoritmo della foresta casuale, che combina i risultati di un insieme di alberi decisionali per fare una previsione, era quello più avido di energia.
Ma, riducendo la dimensione del dataset di addestramento al 20% – solo 1.000 punti di dati su 5.000 ,- il consumo energetico dell’addestramento è diminuito di quasi il 75%. La perdita di accuratezza si è fermata appena allo 0,06%.
La scelta di un algoritmo più ecologico potrebbe anche far risparmiare carbonio. Strumenti come CodeCarbon e ML CO2 Impact possono aiutare a scegliere. Infatti stimano il consumo di energia e l’impronta di carbonio dell’addestramento di diversi modelli di intelligenza artificiale.
Green IT: come misurare il carbon footprint di un software
Per scrivere codice verde, gli sviluppatori hanno bisogno di un modo per misurare le emissioni effettive di carbonio durante l’intero ciclo di vita di un sistema. Si tratta di un’impresa complessa, data la miriade di processi coinvolti. Se prendiamo per esempio l’intelligenza artificiale, il suo ciclo di vita comprende l’estrazione delle materie prime, la produzione dei materiali, la produzione dell’hardware, l’addestramento dei modelli, la loro distribuzione e lo smaltimento. E ovviamente le finalità. Ma tutte queste fasi non hanno dati disponibili.
“Al momento non comprendiamo molte parti dell’ecosistema e l’accesso a dati affidabili è difficile”, afferma Smith. Il bisogno più grande, aggiunge, è quello di “dati aperti su cui possiamo fare affidamento e di cui possiamo fidarci”. Da parte degli operatori dei grandi centri dati tecnologici e dei fornitori di cloud come Amazon, Google e Microsoft.
In attesa di questi dati, un approccio più pratico sarebbe quello di misurare il consumo energetico del software. “Conoscere il consumo di energia per l’esecuzione di un software può avere un impatto sul modo in cui gli ingegneri del software possono migliorare il codice”, afferma Sallou.
Il futuro del software è green
Gli stessi sviluppatori stanno ascoltando la richiesta di maggiori misurazioni e stanno costruendo strumenti per soddisfare questa richiesta. Il Sustainable Web Design Community Group del W3C, per esempio, intende fornire una suite di test. Aiuta a misurare l’impatto dell’implementazione delle sue linee guida sulla sostenibilità del Web.
Analogamente, la Green Software Foundation ha scritto una specifica per calcolare l’intensità di carbonio dei sistemi software. Per ottenere misurazioni accurate, Lanza suggerisce di isolare l’hardware in cui viene eseguito un sistema da qualsiasi altra operazione. Inoltre occorre evitare di eseguire altri programmi che potrebbero influenzare le misurazioni.
Altri strumenti che gli sviluppatori possono utilizzare per misurare l’impatto delle pratiche di ingegneria del software ecologica sono i cruscotti. Essi forniscono una panoramica delle emissioni di anidride carbonica stimate associate ai carichi di lavoro del cloud.
Esempi sono:
- l’AWS Customer Carbon Footprint Tool e l’Azure Emissions Impact Dashboard di Microsoft;
- i profilatori di energia o i monitor di potenza come il Performance Counter Monitor di Intel;
- gli strumenti che aiutano a calcolare l’impronta di carbonio dei siti web, come Ecograder, Firefox Profiler e Website Carbon Calculator.
Conclusioni
L’ingegneria del software verde sta crescendo e si sta evolvendo, ma abbiamo bisogno di maggiore consapevolezza per aiutare la disciplina a diffondersi. Per questo motivo, oltre al corso Green Software for Practitioners, la Green Software Foundation intende creare altri corsi di formazione. Alcuni di questi potrebbero anche produrre certificazioni.
Inoltre Sallou è docente di un corso di laurea in ingegneria del software sostenibile. Il programma è aperto e può servire come base per chiunque voglia creare un corso simile. Secondo Sallou, fornire queste conoscenze agli studenti fin dall’inizio potrebbe garantire che le portino sul posto di lavoro come futuri ingegneri del software.
Nel campo dell’intelligenza artificiale, Navveen Balani, esperto di IA e Google Cloud Certified Fellow (parte del comitato direttivo della Green Software Foundation) osserva che nei prossimi anni l’IA potrebbe intrinsecamente includere i principi dell’IA verde. Proprio come le considerazioni sulla sicurezza sono ora parte integrante dello sviluppo del software. “Questo cambiamento allineerà l’innovazione dell’IA con la sostenibilità ambientale, rendendo l’IA verde non solo una specialità ma uno standard implicito nel settore”, afferma Smith.
Per quanto riguarda il Web, Smith spera che la Green Web Foundation cessi di esistere entro il 2030. “Il nostro sogno come organizzazione è che non siamo necessari, che raggiungiamo il nostro obiettivo e che Internet sia verde di default”, afferma.
Kinsiveer ha osservato che in passato il software doveva essere ottimizzato e costruito bene perché l’hardware era carente. Con l’aumento delle prestazioni e dell’innovazione dell’hardware, “la qualità della programmazione stessa è diminuita”, afferma. Ma ora il settore sta chiudendo il cerchio, tornando alle sue radici di efficienza e aggiungendo la sostenibilità al mix.
“Il futuro è il software verde”, afferma Kinsiveer. “Non riesco a immaginarlo in altro modo”.