Optymalizuj pod kątem zrównoważonego rozwoju dzięki Amazon CodeWhisperer | Usługi internetowe Amazona

Optymalizuj pod kątem zrównoważonego rozwoju dzięki Amazon CodeWhisperer | Usługi internetowe Amazona

W tym poście dowiesz się, jak to zrobić Zaklinacz kodów Amazon może pomóc w optymalizacji kodu pod kątem zrównoważonego rozwoju poprzez zwiększenie efektywności wykorzystania zasobów. Kodowanie zasobooszczędne obliczeniowo to jedna z technik, których celem jest zmniejszenie ilości energii wymaganej do przetworzenia wiersza kodu, a w rezultacie pomoc firmom w całkowitym zużyciu mniejszej ilości energii. W epoce przetwarzania w chmurze programiści wykorzystują obecnie biblioteki open source i dostępną im zaawansowaną moc obliczeniową do tworzenia mikrousług na dużą skalę, które muszą być wydajne, wydajne i odporne pod względem operacyjnym. Jednak nowoczesne aplikacje często składają się z rozbudowany kod, wymagający znacznych zasobów obliczeniowych. Chociaż bezpośredni wpływ na środowisko może nie być oczywisty, niedostatecznie zoptymalizowany kod zwiększa ślad węglowy nowoczesnych aplikacji ze względu na takie czynniki, jak zwiększone zużycie energii, długotrwałe użytkowanie sprzętu i przestarzałe algorytmy. W tym poście odkrywamy, jak Amazon CodeWhisperer pomaga rozwiązać te problemy i zmniejszyć wpływ Twojego kodu na środowisko.

Amazon CodeWhisperer to generatywne narzędzie do kodowania oparte na sztucznej inteligencji, które przyspiesza tworzenie oprogramowania, przedstawiając sugestie na podstawie istniejącego kodu i komentarzy w języku naturalnym, redukując ogólny wysiłek programistyczny i uwalniając czas na burzę mózgów, rozwiązywanie złożonych problemów i tworzenie zróżnicowanego kodu. Amazon CodeWhisperer może pomóc programistom usprawnić przepływ pracy, poprawić jakość kodu, zbudować silniejsze zabezpieczenia, wygenerować solidne zestawy testów i napisać kod przyjazny dla zasobów obliczeniowych, co może pomóc w optymalizacji pod kątem zrównoważonego rozwoju środowiskowego. Jest dostępny w ramach Zestaw narzędzi dla kodu Visual Studio, Chmura AWS9, JupyterLab, Studio Amazon SageMaker, AWS Lambda, Klej AWSi JetBrains IntelliJ IDEA. Amazon CodeWhisperer obsługuje obecnie Python, Java, JavaScript, TypeScript, C#, Go, Rust, PHP, Ruby, Kotlin, C, C++, skrypty Shell, SQL i Scala.

Wpływ niezoptymalizowanego kodu na przetwarzanie w chmurze i ślad węglowy aplikacji

Infrastruktura AWS jest 3.6 razy bardziej energooszczędna niż mediana badanych amerykańskich centrów danych dla przedsiębiorstw i do 5 razy bardziej energooszczędna niż przeciętne europejskie centrum danych dla przedsiębiorstw. Dlatego AWS może pomóc zmniejszyć ślad węglowy obciążenia pracą nawet o 96%. Możesz teraz używać Amazon CodeWhisperer do pisania wysokiej jakości kodu przy zmniejszonym zużyciu zasobów i energii, a także spełniać cele w zakresie skalowalności, korzystając jednocześnie z energooszczędnej infrastruktury AWS.

Zwiększone wykorzystanie zasobów

Niezoptymalizowany kod może skutkować nieefektywnym wykorzystaniem zasobów chmury obliczeniowej. W rezultacie może być wymaganych więcej maszyn wirtualnych (VM) lub kontenerów, co zwiększa alokację zasobów, zużycie energii i powiązany ślad węglowy obciążenia pracą. Mogą wystąpić następujące wzrosty:

  • Zużycie procesora – Niezoptymalizowany kod często zawiera nieefektywne algorytmy lub praktyki kodowania, które wymagają nadmiernych cykli procesora.
  • Zużycie pamięci – Nieefektywne zarządzanie pamięcią w niezoptymalizowanym kodzie może skutkować niepotrzebną alokacją pamięci, zwalnianiem jej lub duplikacją danych.
  • Operacje we/wy dysku – Nieefektywny kod może wykonywać nadmierne operacje wejścia/wyjścia (I/O). Na przykład, jeśli dane są odczytywane lub zapisywane na dysku częściej niż to konieczne, może to zwiększyć wykorzystanie operacji we/wy dysku i opóźnienia.
  • Wykorzystanie sieci – Ze względu na nieefektywne techniki transmisji danych lub zduplikowaną komunikację, źle zoptymalizowany kod może powodować nadmierne natężenie ruchu w sieci. Może to prowadzić do większych opóźnień i zwiększonego wykorzystania przepustowości sieci. Zwiększone wykorzystanie sieci może skutkować wyższymi wydatkami i zapotrzebowaniem na zasoby w sytuacjach, gdy zasoby sieciowe są opodatkowane na podstawie użycia, na przykład w przypadku przetwarzania w chmurze.

Wyższe zużycie energii

Aplikacje obsługujące infrastrukturę z nieefektywnym kodem zużywają więcej mocy obliczeniowej. Nadmierne wykorzystanie zasobów obliczeniowych z powodu niewydajnego, rozdętego kodu może skutkować większym zużyciem energii i produkcją ciepła, co w konsekwencji wymaga większej ilości energii do chłodzenia. Oprócz serwerów energię zużywają także systemy chłodzenia, infrastruktura dystrybucji energii i inne elementy pomocnicze.

Wyzwania związane ze skalowalnością

Podczas tworzenia aplikacji problemy ze skalowalnością mogą być spowodowane niezoptymalizowanym kodem. Taki kod może nie skalować się skutecznie w miarę wzrostu zadania, co wymaga większych zasobów i zużywa więcej energii. Zwiększa to energię zużywaną przez te fragmenty kodu. Jak wspomniano wcześniej, nieefektywny lub marnotrawny kod ma efekt złożony w skali.

Łączne oszczędności energii wynikające z optymalizacji kodu uruchamianego przez klientów w niektórych centrach danych są jeszcze bardziej złożone, gdy weźmiemy pod uwagę, że dostawcy usług w chmurze, tacy jak AWS, mają dziesiątki centrów danych na całym świecie.

Amazon CodeWhisperer wykorzystuje uczenie maszynowe (ML) i duże modele językowe, aby dostarczać rekomendacje dotyczące kodu w czasie rzeczywistym na podstawie oryginalnego kodu i komentarzy w języku naturalnym, a także zapewnia rekomendacje dotyczące kodu, które mogłyby być bardziej wydajne. Efektywność wykorzystania infrastruktury programu można zwiększyć poprzez optymalizację kodu przy użyciu strategii obejmujących ulepszenia algorytmów, efektywne zarządzanie pamięcią i redukcję bezsensownych operacji we/wy.

Generowanie, uzupełnianie i sugestie kodu

Przeanalizujmy kilka sytuacji, w których Amazon CodeWhisperer może być przydatny.

Automatyzując rozwój powtarzalnego lub złożonego kodu, narzędzia do generowania kodu minimalizują możliwość wystąpienia błędu ludzkiego, koncentrując się na optymalizacji specyficznej dla platformy. Korzystając z ustalonych wzorców lub szablonów, programy te mogą generować kod, który w bardziej spójny sposób jest zgodny z najlepszymi praktykami w zakresie zrównoważonego rozwoju. Programiści mogą tworzyć kod zgodny z określonymi standardami kodowania, pomagając w dostarczaniu bardziej spójnego i niezawodnego kodu w całym projekcie. Powstały kod może być bardziej wydajny, ponieważ usuwa różnice w kodzie wykonywanym przez człowieka, a także może być bardziej czytelny, co poprawia szybkość programowania. Może automatycznie wdrażać sposoby zmniejszania rozmiaru i długości programu aplikacji, takie jak usuwanie zbędnego kodu, ulepszanie przechowywania zmiennych lub stosowanie metod kompresji. Optymalizacje te mogą pomóc w optymalizacji zużycia pamięci i zwiększyć ogólną wydajność systemu poprzez zmniejszenie rozmiaru pakietu.

generatywna sztuczna inteligencja ma potencjał, aby uczynić programowanie bardziej zrównoważonym poprzez optymalizację alokacji zasobów. Ważne jest całościowe spojrzenie na ślad węglowy aplikacji. Narzędzia takie jak Profiler Amazon CodeGuru może zbierać dane dotyczące wydajności, aby zoptymalizować opóźnienia między komponentami. Usługa profilowania sprawdza przebieg kodu i identyfikuje potencjalne ulepszenia. Programiści mogą następnie ręcznie udoskonalić automatycznie wygenerowany kod na podstawie tych ustaleń, aby jeszcze bardziej poprawić efektywność energetyczną. Połączenie generatywnej sztucznej inteligencji, profilowania i nadzoru człowieka tworzy pętlę informacji zwrotnej, która może stale poprawiać wydajność kodu i zmniejszać wpływ na środowisko.

Poniższy zrzut ekranu przedstawia wyniki wygenerowane przez CodeGuru Profiler w trybie opóźnienia, który obejmuje we/wy sieci i dysku. W tym przypadku aplikacja nadal spędza większość czasu w ImageProcessor.extractTasks (drugi dolny rząd), a w środku prawie cały czas da się uruchomić, czyli na nic nie czekał. Możesz wyświetlić te stany wątków, przechodząc z trybu procesora na tryb opóźnienia. Może to pomóc w zorientowaniu się, co wpływa na czas zegara ściennego aplikacji. Aby uzyskać więcej informacji, zobacz Zmniejszanie śladu węglowego swojej organizacji dzięki Amazon CodeGuru Profiler.

obraz

Generowanie przypadków testowych

Zaklinacz kodów Amazon może pomóc w zasugerowaniu przypadków testowych i zweryfikowaniu funkcjonalności kodu, biorąc pod uwagę wartości graniczne, przypadki brzegowe i inne potencjalne problemy, które mogą wymagać przetestowania. Ponadto Amazon CodeWhisperer może uprościć tworzenie powtarzalnego kodu do testów jednostkowych. Na przykład, jeśli chcesz utworzyć przykładowe dane za pomocą instrukcji INSERT, Amazon CodeWhisperer może wygenerować niezbędne wstawki na podstawie wzorca. Ogólne wymagania dotyczące zasobów do testowania oprogramowania można również zmniejszyć, identyfikując i optymalizując przypadki testowe wymagające dużych zasobów lub usuwając zbędne. Ulepszone zestawy testów mogą sprawić, że aplikacja stanie się bardziej przyjazna dla środowiska poprzez zwiększenie efektywności energetycznej, zmniejszenie zużycia zasobów, minimalizację odpadów i zmniejszenie śladu węglowego obciążenia pracą.

Aby uzyskać bardziej praktyczne doświadczenia z Amazon CodeWhisperer, zobacz Zoptymalizuj rozwój oprogramowania dzięki Amazon CodeWhisperer. W poście przedstawiono zalecenia dotyczące kodu z Amazon CodeWhisperer w Studio Amazon SageMaker. Pokazuje również sugerowany kod oparty na komentarzach do ładowania i analizowania zbioru danych.

Wnioski

W tym poście dowiedzieliśmy się, jak Amazon CodeWhisperer może pomóc programistom w pisaniu zoptymalizowanego, bardziej zrównoważonego kodu. Korzystając z zaawansowanych modeli uczenia maszynowego, Amazon CodeWhisperer analizuje Twój kod i dostarcza spersonalizowanych rekomendacji dotyczących poprawy wydajności, co może obniżyć koszty i pomóc zmniejszyć ślad węglowy.

Sugerując drobne poprawki i alternatywne podejścia, Amazon CodeWhisperer umożliwia programistom znaczne ograniczenie zużycia zasobów i emisji bez poświęcania funkcjonalności. Niezależnie od tego, czy chcesz zoptymalizować istniejącą bazę kodu, czy zapewnić efektywne wykorzystanie zasobów nowych projektów, Amazon CodeWhisperer może być nieocenioną pomocą. Aby dowiedzieć się więcej o zasobach Amazon CodeWhisperer i AWS Sustainability w zakresie optymalizacji kodu, rozważ następujące kolejne kroki:


O autorach

Optymalizuj pod kątem zrównoważonego rozwoju dzięki Amazon CodeWhisperer | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Isza Dua jest starszym architektem rozwiązań z siedzibą w San Francisco Bay Area. Pomaga klientom korporacyjnym AWS rozwijać się, rozumiejąc ich cele i wyzwania oraz doradza im, w jaki sposób mogą zaprojektować swoje aplikacje w sposób natywny dla chmury, zapewniając jednocześnie odporność i skalowalność. Pasjonuje się technologiami uczenia maszynowego i zrównoważonym rozwojem środowiskowym.

Optymalizuj pod kątem zrównoważonego rozwoju dzięki Amazon CodeWhisperer | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Ajjay Govindaram jest starszym architektem rozwiązań w AWS. Pracuje ze strategicznymi klientami, którzy wykorzystują AI/ML do rozwiązywania złożonych problemów biznesowych. Jego doświadczenie polega na zapewnianiu wskazówek technicznych oraz pomocy projektowej w przypadku wdrożeń aplikacji AI/ML na niewielką lub dużą skalę. Jego wiedza obejmuje architekturę aplikacji, big data, analitykę i uczenie maszynowe. Lubi słuchać muzyki podczas odpoczynku, przebywania na świeżym powietrzu i spędzania czasu z najbliższymi.

Optymalizuj pod kątem zrównoważonego rozwoju dzięki Amazon CodeWhisperer | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Ericka Irigoyena jest architektem rozwiązań w Amazon Web Services, koncentrującym się na klientach z branży półprzewodników i elektroniki. Ściśle współpracuje z klientami, aby zrozumieć stojące przed nimi wyzwania biznesowe i określić, w jaki sposób można wykorzystać AWS do osiągnięcia ich celów strategicznych. Jego praca skupiała się przede wszystkim na projektach związanych ze sztuczną inteligencją i uczeniem maszynowym (AI/ML). Przed dołączeniem do AWS był starszym konsultantem w dziale Advanced Analytics Deloitte, gdzie kierował procesami roboczymi w kilku projektach na terenie Stanów Zjednoczonych, koncentrując się na analityki i sztucznej inteligencji/ML. Erick posiada tytuł licencjata z biznesu uzyskany na Uniwersytecie w San Francisco oraz tytuł magistra analityki na Uniwersytecie Stanowym Karoliny Północnej.

Znak czasu:

Więcej z Uczenie maszynowe AWS