Оптимизируйте для устойчивости с Amazon CodeWhisperer

Максимизируйте стабильность с помощью Amazon CodeWhisperer

В этом посте мы рассмотрим, как Amazon CodeWhisperer может помочь оптимизировать код для обеспечения устойчивости через повышенную эффективность использования ресурсов. Вычислительно ресурсоэффективное программирование – это техника, которая направлена на снижение количества энергии, необходимой для обработки строки кода, и, как следствие, помогает компаниям потреблять меньше энергии в целом. В эпоху облачных вычислений разработчики используют открытые библиотеки и современные вычислительные мощности для создания масштабных микросервисов, которые должны быть операционно эффективными, производительными и надежными. Однако современные приложения часто состоят из обширного кода, требующего значительных вычислительных ресурсов. Хотя прямые экологические последствия могут не быть очевидными, неоптимизированный код усиливает углеродный след современных приложений через такие факторы, как повышенное энергопотребление, продолжительное использование оборудования и устаревшие алгоритмы. В этом посте мы узнаем, как Amazon CodeWhisperer помогает решить эти проблемы и снизить экологический след вашего кода.

Amazon CodeWhisperer – это генеративный ИИ-помощник по программированию, который ускоряет разработку программного обеспечения, делая предложения на основе существующего кода и комментариев на естественном языке, уменьшая общие усилия в разработке и освобождая время для идей, решения сложных задач и создания отличного кода. Amazon CodeWhisperer помогает разработчикам оптимизировать свой рабочий процесс, повышать качество кода, обеспечивать более надежные системы безопасности, создавать надежные тестовые наборы и писать экологически дружественный код, что помогает оптимизировать использование ресурсов с точки зрения экологии. Он доступен как часть Набора инструментов для Visual Studio Code, AWS Cloud9, JupyterLab, Amazon SageMaker Studio, AWS Lambda, AWS Glue и JetBrains IntelliJ IDEA. Amazon CodeWhisperer в настоящее время поддерживает языки программирования Python, Java, JavaScript, TypeScript, C#, Go, Rust, PHP, Ruby, Kotlin, C, C++, сценарные языки оболочки, SQL и Scala.

Влияние неоптимизированного кода на облачные вычисления и углеродный след приложений

Инфраструктура AWS более чем в 3,6 раза энергоэффективнее, чем медиана американских предприятий, и до 5 раз энергоэффективнее, чем средний европейский предприятий. Поэтому AWS помогает снизить углеродный след нагрузки на 96%. Теперь вы можете использовать Amazon CodeWhisperer для написания качественного кода с пониженным потреблением ресурсов и энергии, а также для достижения целей масштабируемости, используя энергоэффективную инфраструктуру AWS.

Увеличение использования ресурсов

Неоптимизированный код может привести к неэффективному использованию ресурсов облачных вычислений. В результате может потребоваться больше виртуальных машин (ВМ) или контейнеров, что увеличивает выделение ресурсов, энергопотребление и связанный с этим углеродный след рабочей нагрузки. Вы можете столкнуться с увеличением следующих факторов:

  • Использование CPU – неоптимизированный код часто содержит неэффективные алгоритмы или методы программирования, требующие излишних циклов CPU для выполнения.
  • Потребление памяти – неэффективное управление памятью в неоптимизированном коде может привести к ненужному выделению, освобождению или дублированию данных.
  • Операции ввода-вывода на диске – неэффективный код может выполнять избыточные операции ввода-вывода на диске. Например, если данные считываются или записываются на диск чаще, чем необходимо, это может увеличить использование дисковой оперативной памяти и задержку.
  • Использование сети – из-за неэффективных техник передачи данных или дублирования коммуникации плохо оптимизированный код может вызывать избыточный объем сетевого трафика. Это может привести к большей задержке и увеличению использования пропускной способности сети. Увеличенное использование сети может привести к росту расходов и потребности в ресурсах в ситуациях, когда сетевые ресурсы облагаются на основе использования, например, в облачных вычислениях.

Больший расход энергии

Программы, поддерживающие инфраструктуру, с неэффективным кодом используют больше вычислительной мощности. Чрезмерное использование вычислительных ресурсов из-за неэффективного и избыточного кода может привести к повышенному энергопотреблению и выработке тепла, что требует дополнительной энергии для охлаждения. Вместе с серверами, системами охлаждения, инфраструктурой для распределения энергии и другими вспомогательными элементами также происходит потребление энергии.

Проблемы масштабируемости

В разработке приложений проблемы масштабируемости могут быть вызваны неоптимизированным кодом. Такой код может неэффективно масштабироваться при увеличении задачи, требуя больше ресурсов и потребляя больше энергии. Это увеличивает энергопотребление этих фрагментов кода. Как уже упоминалось ранее, неэффективный или расточительный код имеет усиливающийся эффект при масштабировании.

Совокупные энергосбережения от оптимизации кода, который клиенты выполняют на определенных центрах обработки данных, еще более усиливаются, если учесть, что у облачных провайдеров, таких как AWS, есть десятки центров обработки данных по всему миру.

Amazon CodeWhisperer использует машинное обучение (ML) и большие языковые модели для предоставления рекомендаций по коду в реальном времени на основе исходного кода и комментариев на естественном языке. Он предоставляет рекомендации по коду, которые могут быть более эффективными. Эффективность использования инфраструктуры программы может быть увеличена путем оптимизации кода с помощью таких стратегий, как алгоритмические улучшения, эффективное управление памятью и сокращение бесполезных операций ввода-вывода.

Генерация, завершение и предложение кода

Рассмотрим несколько ситуаций, в которых Amazon CodeWhisperer может быть полезен.

Автоматизируя разработку повторяющегося или сложного кода, инструменты генерации кода минимизируют возможность человеческой ошибки, сосредотачиваясь на оптимизации под конкретную платформу. Используя установленные шаблоны или образцы, эти программы могут создавать код, который более согласованно соблюдает лучшие практики устойчивости. Разработчики могут создавать код, соответствующий определенным стандартам кодирования, что помогает доставлять более последовательный и надежный код на протяжении всего проекта. Результирующий код может быть более эффективным и, поскольку он устраняет вариации кодирования человека, может быть более читаемым, улучшая скорость разработки. Он может автоматически реализовывать способы уменьшения размера и длины программы, такие как удаление избыточного кода, улучшение хранения переменных или использование методов сжатия. Такие оптимизации могут помочь в оптимизации потребления памяти и повысить общую эффективность системы путем уменьшения размера пакета.

Генеративный искусственный интеллект (AI) имеет потенциал сделать программирование более устойчивым путем оптимизации распределения ресурсов. Важно ganzheitlich рассматривать воздействие на окружающую среду приложения. Инструменты, такие как Amazon CodeGuru Profiler, могут собирать данные о производительности для оптимизации задержки между компонентами. Профайлер анализирует запуски кода и выявляет потенциальные улучшения. Затем разработчики могут вручную уточнять автоматически созданный код на основе этих результатов, чтобы дополнительно улучшить энергоэффективность. В сочетании с генеративным AI, профилированием и контролем со стороны человека создается обратная связь, которая может непрерывно улучшать эффективность кода и снижать экологическое воздействие.

На следующем снимке экрана показаны результаты, сгенерированные CodeGuru Profiler в режиме задержки, который включает сетевые и дисковые операции ввода-вывода. В данном случае приложение по-прежнему большую часть времени проводит в функции ImageProcessor.extractTasks (вторая строка снизу), и практически все время внутри этой функции является запускаемым, что означает, что оно не ждало ничего. Вы можете просмотреть эти состояния потоков, переключившись с режима CPU на режим задержки. Это может помочь вам получить представление о том, как это влияет на время работы приложения. Дополнительную информацию можно найти по адресу Снижение углеродного следа вашей организации с помощью профилировщика Amazon CodeGuru.

image

Генерация тестовых случаев

Amazon CodeWhisperer может помочь предложить тестовые случаи и проверить функциональность кода, учитывая граничные значения, крайние случаи и другие потенциальные проблемы, которые могут потребовать тестирования. Кроме того, Amazon CodeWhisperer может упростить создание повторяющегося кода для модульного тестирования. Например, если вам нужно создать образцовые данные с помощью операторов INSERT, Amazon CodeWhisperer может генерировать необходимые операторы INSERT на основе шаблона. Общие требования к ресурсам для тестирования программного обеспечения также могут быть снижены путем выявления и оптимизации тестовых случаев, требующих большого объема ресурсов, или удаления избыточных. Улучшенные наборы тестов имеют потенциал сделать приложение более экологически чистым, увеличивая энергоэффективность, уменьшая потребление ресурсов, минимизируя отходы и снижая углеродный след.

Для более практического опыта работы с CodeWhisperer от Amazon ознакомьтесь с Оптимизация разработки программного обеспечения с помощью CodeWhisperer от Amazon. В этой статье показаны рекомендации по коду от CodeWhisperer от Amazon в Amazon SageMaker Studio. Также демонстрируется предлагаемый код на основе комментариев для загрузки и анализа набора данных.

Вывод

В этой статье мы узнали, как CodeWhisperer от Amazon может помочь разработчикам писать оптимизированный и более устойчивый код. С использованием передовых моделей машинного обучения, CodeWhisperer от Amazon анализирует ваш код и предоставляет персонализированные рекомендации по улучшению эффективности, что может снизить затраты и помочь уменьшить углеродный след.

Предлагая незначительные изменения и альтернативные подходы, CodeWhisperer от Amazon позволяет разработчикам значительно сократить использование ресурсов и выбросы, не жертвуя функциональностью. Будь вы заинтересованы в оптимизации уже существующего кодовой базы или желаете обеспечить высокую ресурсоэффективность новых проектов, CodeWhisperer от Amazon может стать бесценной помощью. Чтобы узнать больше о CodeWhisperer от Amazon и ресурсах AWS для оптимизации кода с точки зрения устойчивости, ознакомьтесь со следующими шагами: