Автоматизированная оптимизация кода искусственного интеллекта позволит снизить нагрузку на разработчиков и DevOps-персонал, что высвободит их время для более творческой работы, пишет на портале Information Age диптех-партнер SpeedInvest Рик Хао.

Еще много лет назад стало ясно, что ИИ станет одним из крупнейших, если не самым крупным, технологическим и экономическим драйвером. По оценкам PwC, к 2030 г. ИИ увеличит мировую экономику почти на 16 трлн. долл. Мы привыкли к заявлениям СМИ о том, что эта технология станет преобразующей. Однако специалистам по работе с ИИ очевидно, что этот оптимизм несколько преувеличен. Это связано с тем, что в настоящее время многие процессы разработки, тестирования, внедрения и мониторинга моделей ИИ не настолько эффективны, как могли бы быть.

На практике большинство людей, работавших с ИИ или машинным обучением (МО), знают, что для бесперебойной работы технологии в производственной среде требуется большое количество ручного вмешательства. Например, специалисты по анализу данных, которые помогают разрабатывать и обучать модели, около 45% своего рабочего времени в итоге тратят на ручные и повторяющиеся задачи по подготовке данных. В отличие от этого, реально ценная часть работы — обучение, оценка и развертывание моделей — занимает всего 12% их рабочего времени.

Одной из самой сложных точек для коммерциализации ИИ является оптимизация кода. Скорость — это не то слово, которое регулярно ассоциируется с командами МО. Когда говорится о достижениях в этой области, часто акцент делается на проблеме, алгоритмическом подходе и результатах, но не упоминается время, которое потребовалось для достижения цели. Будь то удаление лишних строк кода или изменение порядка процессов для более эффективного использования вычислительных ресурсов или ресурсов хранения данных, масштабирование развертывания ИИ требует от инженеров-программистов огромного количества времени для анализа моделей и внесения сотен или тысяч отдельных изменений.

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

В связи с этим возникают вопросы: почему сохраняется такой большой объем ручного труда и почему мы не нашли способ автоматизировать оптимизацию кода?

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

Чтобы проиллюстрировать это, давайте рассмотрим несколько примеров.

1. Рассмотрим модель ИИ, которая различает одежду на фотографии. Оптимизация этой модели для обеспечения максимальной точности определения изображенного на фотографии предмета одежды может означать создание большой библиотеки категорий одежды, что, в свою очередь, означает, что она потребует гораздо большего объема вычислительных ресурсов и ресурсов хранения. С другой стороны, оптимизация этой модели для экономии ресурсов процессора и объема памяти может означать необходимость сокращения категорий и снижения точности модели (например, она может объединить рубашки-поло и футболки в одну категорию «рубашки»).

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

3. Многие команды биржевых трейдеров при принятии решений используют модели ИИ. Несмотря на то, что точность модели очень важна, медленные модели непрактичны для сделок, которые происходят в течение нескольких миллисекунд, поскольку из-за задержек они могут упустить торговую возможность. Следовательно, командам приходится идти на компромисс между точностью модели и скоростью.

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

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

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

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