Czy AI może zużywać mniej energii?
| Gospodarka ZasilanieSztuczna inteligencja jest technologią, dla której nowych zastosowań przybywa praktycznie każdego dnia. Przewiduje się, że ma szansę zmienić wiele dziedzin naszego życia – niestety rosną obawy, że nie wszystkie na korzyść. Chociaż bowiem oczekuje się, że AI pomoże znaleźć lek na raka, z drugiej strony może wyeliminować z rynku pracy przedstawicieli niektórych zawodów. Na fali zachwytu nad jej potencjałem dotychczas nie wspominano również o tym, że zużywa ogromne ilości energii. W obliczu kryzysów energetycznego oraz klimatycznego, z którymi zmaga się świat, mówi się jednak o tym coraz częściej i coraz głośniej.
Prace nad rozwojem sztucznej inteligencji od zawsze nakierowane były na zwiększenie szybkości i dokładności rozwiązywania problemów. W tym celu zwiększa się ilość danych treningowych (OpenAI wyszkolił swój model GPT-3 na 45 terabajtach danych!) i rozbudowuje się strukturę sieci neuronowych. Generalnie im większa sieć, tym lepsze wyniki, ale... niestety proporcjonalnie do jej wielkości i stopnia skomplikowania rośnie też zużycie energii. Skalę tego problemu zaczęto sobie uświadamiać jednak dopiero niedawno, gdy zaczęto podsumowywać energochłonność rozwiązań opartych na SI.
Przykładowo ostateczną wersję MegatronLM, modelu językowego podobnego do GPT-3, ale o mniejszych możliwościach, Nvidia trenowała na 512 procesorach graficznych V100 aż przez dziewięć dni. Pojedynczy procesor graficzny V100 może zużywać od 250 do 300 watów. Jeśli przyjmiemy 250 W, to 512 procesorów graficznych V100 zużywa 128 kW. To z kolei oznacza, że na wytrenowanie modelu MegatronLM zużyto ponad 27 GWh energii. Jaka to ilość, uzmysławia odniesienie do zużycia energii przez przeciętne gospodarstwo domowe w Stanach Zjednoczonych, które rocznie wynosi prawie 11 MWh. MegatronLM zatem potrzebował w ciągu nieco ponad tygodnia tyle energii, ile trzy przeciętne rodziny w ciągu całego roku!
Ograniczenie zużycie energii staje się więc kwestią krytyczną. Dlatego szuka się alternatywnych, energooszczędnych sposobów implementacji algorytmów sztucznej inteligencji. Okazuje się bowiem, że praktycznie każda decyzja, która zostanie podjęta na etapie projektowania sieci neuronowych, ma swoje konsekwencje w ich ostatecznym bilansie energetycznym. Rozważa się w związku z tym rozmaite rozwiązania, które ograniczają zużycie energii, stosując je niezależnie albo łącznie w celu uzyskania jej większych oszczędności.
Co ważne, nie zawsze odbywa się to kosztem, jak można by się spodziewać, szybkości działania, a wręcz przeciwnie, niektóre sposoby na zmniejszenie zużycia energii mogą również zwiększać prędkość przetwarzania. Z drugiej jednak strony niestety część z nich może zmniejszać dokładność rozwiązań opartych na SI.
Jak ograniczyć zużycie energii przez AI?
Oczywistym sposobem na ograniczenie energochłonności AI jest zmniejszenie stopnia komplikacji sieci neuronowych – te z mniejszą liczbą warstw będą wymagały mniej obliczeń i mniej pamięci. Niestety, nie zawsze jest to możliwe. Chociaż bowiem czasem sieci neuronowe zoptymalizowane w ten sposób dostarczają wyników o porównywalnej dokładności jak te bardziej rozbudowane, w większości zadań jak największa precyzja jest priorytetem. Tę zaś zazwyczaj najłatwiej poprawić, dodając kolejne warstwy w modelu rozwiązującym dany problem. Dlatego w praktyce stopień uproszczenia struktury sieci neuronowej zawsze wymaga kompromisu pomiędzy zużyciem energii a precyzją.
Sztuczna inteligencja opiera się na danych – im wykorzystuje ich więcej, tym jest dokładniejsza i siłą rzeczy bardziej energochłonna. W tym zakresie trudno o oszczędności, co najwyżej zastosować można podejście, jak to opisane wyżej. Jeżeli jednak ilości danych nie można zmniejszyć, warto przynajmniej spróbować ograniczyć ich przepływ, co również pozytywnie przełoży się na bilans energetyczny. Do tego zagadnienia można podejść na dwa sposoby. Pierwszy z nich wymaga optymalizacji technik przetwarzania danych oraz uzyskiwania dostępu do pamięci na poziomie architektury procesora. Drugi sposób polega na rozdziale zadań w ramach przetwarzania danych pomiędzy różne lokalizacje i wykonywaniu jak największej liczby obliczeń jak najbliżej źródła danych. Przykładowo wyniki pomiarów powinny być poddawane wstępnej obróbce już w czujniku, a węzeł brzegowy może odpowiadać za dalsze zbiorcze przetwarzanie danych z wielu sensorów. Ograniczanie zużycia energii tymi sposobami nie wpływa na dokładność rozwiązania.
Warto również, jeżeli to tylko możliwe, grupować przetwarzane dane – to też nie pogarsza precyzji. Takie podejście sprawdza się szczególnie w centrach danych, które pracują na dużych zbiorach próbek, trudniej je natomiast wdrożyć w urządzeniach brzegowych, które przetwarzają pakiety danych sekwencyjnie.
Znaczenie ma także format danych – wybór reprezentacji zmiennoprzecinkowej i liczby bitów do zapisu liczb wpływa zarówno na zużycie energii, jak i dokładność. Ilość przesyłanych danych można też zmniejszyć, stosując kompresję – o ile jest bezstratna, nie zmniejsza precyzji. Sposobem na ograniczenie ilości danych jest oprócz tego przetwarzanie wyłącznie różnicy pomiędzy tymi sekwencyjnymi, jak na przykład klatki w filmie.
Optymalizować należy również obliczenia, tak by dla uzyskania wyniku potrzeba było jak najmniej operacji oraz zastępując te złożone prostszymi. W tym zakresie w dziedzinie sztucznej inteligencji wybierać można spośród różnych technik, na przykład szybkich algorytmów obliczania transformat i mniej obciążających obliczeniowo wersji funkcji aktywacji. Ponadto ponieważ konwersja A/C zużywa dużo energii, pozostanie w domenie analogowej, o ile jest to możliwe, też zapewnia oszczędności.
Poprawiając efektywność obliczeniową, warto wykorzystać specyfikę macierzy, na których opierają się sieci neuronowe. W ich przypadku liczba operacji jest uwarunkowana rozmiarami, chyba że jest to macierz rzadka, czyli taka, w której większość elementów ma wartość 0. W takim przypadku wynik mnożenia jest znany z góry, więc nie ma potrzeby wykonywać takiej operacji. Im więcej elementów macierzy ma zerową wartość, tym mniej obliczeń jest potrzebnych. Wykorzystuje się to w przypadku elementów macierzy o bardzo małych wartościach – przyjmując, że i tak miałyby one znikomy wpływ na ostateczny wynik, zaokrągla się je do 0. Niestety, im więcej danych się w ten sposób zaokrągli, tym większa będzie niedokładność, a jeżeli rozwiązanie to zostanie zastosowane dla wielu warstw sieci neuronowej, błędy będą się kumulować.
Podsumowanie
Czarne scenariusze przewidują, że jeżeli tempo rozwoju sztucznej inteligencji utrzyma się, przy jednoczesnym zachowaniu jej obecnego zapotrzebowania na energię, już za jakiś czas może ono przewyższyć jej światową produkcję. Wdrożenie mechanizmów pozwalających oszczędzać energię jest zatem koniecznością. Niestety, choć największe firmy branżowe zaczynają dostrzegać problem i podejmują działania, by go rozwiązać, nie wszystkim zależy na poprawie sprawności energetycznej implementacji algorytmów sztucznej inteligencji.
Wiele firm działających w branży AI jest bowiem przede wszystkim nakierowanych na poprawę szybkości i dokładności rozwiązywania problemów za pomocą sztucznej inteligencji, zwłaszcza w zakresie aplikacji docierających do szerokiego grona odbiorców, jak rozpoznawanie mowy, twarzy i silników rekomendacji. Oczywiście jeśli nie wiadomo, o co chodzi, chodzi o pieniądze – im większą szybkość i dokładność przetwarzania są w stanie uzyskać, tym więcej klientów mogą pozyskać. To zwiększa rentowność ich biznesu.
Ponieważ SI jest obecnie na topie i wiele firm stara się po prostu wykorzystać tę popularność sztucznej inteligencji dla doraźnych zysków, nie myśląc perspektywicznie, brak jest im motywacji, aby podejmować działania dla poprawy efektywności energetycznej swoich rozwiązań. Nadzieję na zmianę takiego podejścia pokłada się przede wszystkim w postawie odbiorców, którzy w miarę jak problem będzie nagłaśniany, będą naciskać na dostawców rozwiązań z zakresu AI, chętniej wybierając te z nich, które będą neutralne klimatycznie.
Monika Jaworowska