×

Схематическое изображение алгоритма: он готов к обнаружению аномалий после обучения данным из безошибочной версии.

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

Чтобы преодолеть это препятствие исследователи из TAMU (Texas A&M University) совместно с учеными-компьютерщиками из Intel Labs разработали полностью автоматизированный способ определения источника ошибок, вызванных обновлениями программного обеспечения. Их алгоритм, основанный на глубоком машинном обучении, представляет собой готовый и – что не менее важно – быстрый инструмент, обнаруживающий ошибки производительности софта в течение нескольких часов, а не дней.

«Обновление программного обеспечения может иногда досаждать вам, когда закрадываются ошибки и вызывают замедление. Эта проблема ещё более значительна для компаний, использующих крупномасштабные программные системы, которые постоянно развиваются», – сказал доктор Абдулла Музахид, доцент кафедры компьютерных наук и инженерии. «Мы разработали удобный инструмент для диагностики регрессий производительности, который совместим со всем спектром программ и языков программирования, значительно расширив его полезность».

Исследователи описали свои выводы в 32-м издании «Достижения в системах обработки нейронной информации», представленные на конференции «Системы обработки нейронной информации» в декабре.

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

«Если какая-то программа работает не так, как предполагалось, эти счетчики обычно будут иметь явный признак аномального поведения», – говорит Музахид. «Счетчики производительности дают представление о работоспособности программы».

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

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

Когда алгоритм был готов, исследователи проверили: сможет ли он диагностировать и тем более найти ошибку производительности? В тесте использовалось коммерчески доступное программное обеспечение для управления данными, используемое для отслеживания компаниями различных своих числовых показателей. Во-первых, алгоритм был обучен распознавать нормальные данные счётчика: для этого запустили версию программного обеспечения для управления данными, работавшую без сбоев. Затем, на обновленной версии программного обеспечения с намеренно пониженной производительностью, был запущен новый алгоритм. Обнаружилось, что для диагностики и локализации ошибки понадобилось всего нескольких часов. Музахид напоминает, что этот тип анализа, если сделать его вручную, может занять просто умопомрачительное количество времени.

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

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


По материалам EurekAlert!