«Искусственный интеллект стремится предсказывать и устранять ошибки разработчиков кода, прежде чем наступит катастрофа»

«Искусственный интеллект стремится предсказать и исправить ошибки в коде разработчиков, прежде чем они приведут к катастрофе»

Сгенерированное ИИ сочетается с системами DevOps, которые могут одновременно определить причины сбоев приложения и предсказать сбой.

Сгенерированный искусственный интеллект сочетается с системами DevOps, которые могут одновременно определить причины сбоев приложения и предсказать сбой.

Слишком рано доверять Microsoft GitHub Copilot, чтобы автоматически исправлять ваш код программирования. Сама компания Microsoft заявила, что программа, продаваемая по цене дополнительной платы в $10 в месяц к GitHub, “не пишет идеальный код” и “может содержать уязвимые кодовые шаблоны, ошибки или ссылки на устаревшие API или термины”.

Специальная функция

Пересечение сферы Генеративного ИИ и Инженерии

Взрывной рост генеративного искусственного интеллекта может применяться с огромным потенциалом в сфере инженерии. Однако он может также сопровождаться определенными вызовами, поскольку как предприятия, так и инженеры пытаются понять влияние ИИ на свои роли, бизнес-стратегии, данные, решения и разработку продуктов. Какова перспектива внедрения генеративного ИИ в программные продукты? ENBLE осветляет этот вопрос со всех сторон.

Подробнее

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

Основу этого будущего можно увидеть в современных инструментах для DevOps и наблюдаемости. Компания, разрабатывающая инструменты для DevOps, Dynatrace, на протяжении нескольких лет разрабатывает то, что она называет “причинным ИИ” и “предсказательным ИИ” для определения причин сбоев программ и предсказания их будущих сбоев.

Также: ИИ изменит разработку программного обеспечения в значительной степени 

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

“Типичный запрос от CIO – пожалуйста, исправьте мою систему до того, как она реально выйдет из строя”, – говорит Бернд Грайфенедер, технический директор Dynatrace.

“Типичный запрос от CIO – пожалуйста, исправьте мою систему до того, как она реально выйдет из строя”, – говорит Бернд Грайфенедер, технический директор и сооснователь Dynatrace, в интервью с ENBLE. Dynatrace – коммерческий разработчик программного обеспечения в рынке DevOps и наблюдаемости, который продает инструменты для управления жизненным циклом приложений.

Рассмотрим типичную проблему систем: исчерпание дискового пространства в Amazon AWS. 

“Это совершенно иронично”, – отмечает Грайфенедер. “Даже в наши дни супер-высоких технологий возникает проблема с тем, что где-то в AWS заканчивается дисковое пространство, и нам приходится запускать API-вызовы, чтобы изменить его размер. Мы не хотим изменять его заранее, потому что это дорого, поэтому мы хотим оптимизировать его использование, но использование может меняться в зависимости от количества клиентов в наших кластерах и т. д.”

Необходимо создать код, который будет активироваться, когда возникает вероятность ошибки, связанной с нехваткой дискового пространства на основе предыдущего производительности. 

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

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

“Типичные статистические модели или модели обучения типа нейронной сети не работают для динамических ИТ-систем в большей области”, – сказал Грайфенедер, потому что переменные слишком часто меняются. “У наших клиентов может быть десятки тысяч или сотни тысяч подсистем, и многие из них связаны друг с другом, меняются во время маршрутизации трафика, масштабируются, есть разные версии и т. д.”

Чтобы создать то, что Грайфенедер называет “моделью в памяти в реальном времени” всей информационной системы клиента, причинные программы ИИ строят “многомерную модель, в которой имеется причинная направленная зависимость, похожую на многомерный граф” всех сущностей – от облачного сервиса до используемой версии Kubernetes или запускаемого приложения. Эта модель, названная Smartscape, используется при возникновении проблем в системе, вызывающих тревогу, “выводя корневую причину, основываясь на анализе этой модели Smartscape”.

Также: Бизнесу необходима ясность в ценообразовании по мере появления генеративных ИИ-сервисов на рынке

Однако такая причинная модель не учитывает изменения в бизнесе. “Она знает корневую причину”, – сказал Грайфенедер, “но она не знает такие вещи, как ваш паттерн бизнеса”, – например, “по понедельникам в 8:00 утра у вас происходит резкий скачок использования по какой-либо причине.”

Для таких отклонений “необходима история изучения”, – сказал Грайфенедер.

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

Причинные и прогностические системы искусственного интеллекта Dynatrace используют различные алгоритмические подходы, проверенные временем, для анализа сигналов о том, что происходит в производственном приложении.

Важно отметить, что прогностический ИИ не смотрит только на серверы и другие механизмы обработки данных, такие как сервер. Он также получает сигналы от конечных устройств в сети, такие как задержка или прерывание услуги, которые ощущают конечные пользователи.

“Смотреть только на серверные системы недостаточно”, – сказал Грайфенедер. “Мониторинг реальных пользователей или мониторинг служб API – это важные аспекты для понимания зависимостей.”

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

Также: Что говорят аналитики о будущем генеративного искусственного интеллекта

“Иногда мы встречаем людей, занимающихся только ИТ, которым забота вызывают только их серверы – ‘О, мой сервер работает’, – но на самом деле пользователи разочарованы”, – сказал он. “И наоборот: если один из этих процессоров начнет работать необычно активно, это не означает, что конечный пользователь пострадает”.

Вернемся к примеру с дисковым пространством, причинная и прогностическая системы ИИ могут предвидеть проблему с диском в будущем. “Мы можем экстраполировать данные о длинных и коротких днях использования в кластере и увидеть, что у нас есть риск недостатка дискового пространства через неделю”, – сказал Грайфенедер. 

Это является импульсом для предпринятия проактивных шагов, таких как “давайте сейчас запустим автоматическое действие в рамках автоматического движка Dynatrace, чтобы вызвать API в AWS для изменения размера диска и тем самым автоматически предотвратить сбой, который у нас уже был в прошлом из-за этого”.

Именно здесь находит свое место генеративный ИИ. Программа-зонтик Dynatrace, Davis AI, в этом году добавила компонент, называемый Davis CoPilot, который работает поверх причинных и прогностических систем.

Также: 4 способа увеличить удобство использования искусственного интеллекта

Пользователь может ввести для CoPilot: “создайте для меня автоматизацию, которая фактически предотвращает это [проактивное отключение дисков]”. CoPilot может отправить запрос к причинно-предсказательному ИИ, чтобы узнать, о каких дисках идет речь в этой подсказке. В ответ программа Davis использует информацию Smartscape и предсказывающую информацию, чтобы создать подсказку со всеми контекстными деталями, необходимыми для понимания текущего состояния ИТ-системы.

Эта подсказка затем отправляется CoPilot, который, получив подробности, “предоставит вам шаблон рабочего процесса для автоматизации” изменения размера диска, как объяснил Грайфенедер. “Он предоставит вам, как пользователю, возможность проверить и сказать: Ок, это примерно правильно, спасибо, вы помогли мне достичь 90%,” что позволяет системным инженерам сэкономить время по сравнению с созданием рабочего процесса с нуля.

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

Одним из подходов является то, что Dynatrace называет “хранителем”. Специалист по разработке DevOps может попросить CoPilot на естественном языке создать хранителя, чтобы следить за конкретной целью производительности приложения до его ввода в эксплуатацию. Компания называет это “определение качественных целей в коде”. Затем причинно-предсказательные элементы используются для проверки соответствия кода определенным целям.

Также: Как я обманул ChatGPT, чтобы он говорил мне ложь

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

“Мы рассматриваем возможность с Davis CoPilot предоставлять рекомендации о том, как мы идентифицировали эту уязвимость в производстве на основе вашего технологического стека, и Davis CoPilot предоставляет вам эти рекомендации, которые вы должны проверить, чтобы исправить в своем коде”, – рассказал Грайфенедер.

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

“Надежным является то, что поступает от причинного ИИ, потому что это точное состояние системы”, – сказал он. “Таким образом, мы точно знаем, что здесь есть; ненадежным является потенциальная рекомендация о том, как изменить код, потому что это происходит из общедоступных моделей GPT-4”.

Также: Все любят разработку с низким кодом/без кода, но не все готовы к этому

Поэтому, предложения кода для исправления могут исходить от корректной предпосылки, но сталкиваются с той же проблемой, что и GitHub Co-pilot: отсутствие действительно строгого представления о том, какой код соответствует правильному. Необходимо более тесно интегрировать большие модели языка с инструментами, которые предоставляют Dynatrace и другие, чтобы дать некоторое обоснование предложениям генеративного ИИ.

Формальные исследования GPT-4 и их аналогов сообщают о очень разноплановых результатах в поиске и устранении уязвимостей кода. Техническая статья, опубликованная OpenAI с введением GPT-4 в марте, предостерегала от полаганиясь на программу. GPT-4, говорится в ней, “[…] плохо работал при создании эксплойтов для выявленных уязвимостей”.

Исследование в феврале предшественника GPT-4, GPT-3, исследователя из Университета Пенсильвании Криса Коха, было обнадеживающим. Оно показало, что GPT-3 смог найти 213 уязвимостей в наборе файлов репозитория GitHub, отобранных известными уязвимостями. Это число значительно превышало 99 ошибок, найденных популярным инструментом для оценки кода под названием Snyk, формой “Статического тестирования безопасности приложений” или SAST, обычно используемого для обнаружения уязвимостей программного обеспечения.

Однако, отметил Кох, GPT-3 и Snyk пропустили множество уязвимостей – у них было много “ложных отрицательных”, как они известны.

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

Однако в обоих исследованиях GPT-4 был протестирован на файлах, представляющих собой всего немногим больше 2000 строк кода. Это крошечное количество по сравнению с полноценными приложениями, которые могут содержать сотни тысячи до миллионов строк кода во множестве связанных файлов. Не ясно, что успехи в игрушечных задачах GitHub масштабируются до такой сложности.

Также: ChatGPT неверно отвечает на более половины вопросов по программной инженерии

Ведется гонка, чтобы попытаться усилить языковые модели для решения более сложных задач. Кроме Dynatrace, закрытая компания Snyk Ltd. из Великобритании, которая продает коммерческую версию открытого инструмента, предлагает то, что они называют “DeepCode AI”. Как заявляет Snyk, эта технология позволяет избежать проблем генеративной ИИ путем интеграции с другими инструментами. “Гибридный подход DeepCode AI использует несколько моделей и наборы тренировок, специализированные на безопасности, для одной цели – защиты приложений”, – заявила компания.

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

То, что находится на горизонте, с Davis Copilot и подобными усилиями, – использование генеративного ИИ в качестве нового интерфейса для помощи программистам более агрессивно анализировать свой собственный код как до, так и после его отправки.