Краткое содержание статьи
Статья на примере реальной ошибки в аппаратном обеспечении STM32 показывает, что искусственный интеллект (ИИ) превосходно справляется с задачами в чисто программном контексте, но сталкивается с серьезными препятствиями при переходе в реальный физический мир (аппаратура, роботы, автомобили и т. д.): многие важные параметры реальности не документированы в цифровом виде, и ИИ не может их обработать; кроме того, сам процесс наблюдения за системой может влиять на ее поведение, затрудняя выявление ошибок. Авторы считают, что для победы ИИ в физическом мире необходимо сначала решить инженерные проблемы, связанные с преобразованием реальности в цифровую форму («присоединить ИИ глаза и уши»), при этом роль человеческих инженеров сместится с написания программы на определение того, что не видит сама система.
I. ИИ — «отличник» в программном коде, но теряется в аппаратном мире
ИИ демонстрирует высокую эффективность при написании кода и устранении ошибок, но это не связано с его интеллектом, а с особенностями программного окружения: требования пользователей, код, логи ошибок — все это текстовые данные, а результаты тестов представлены в структурированной форме («прошло/не прошло»). ИИ может самостоятельно выполнять цикл «написание кода → компиляция → тестирование → корректировка кода» и считает задачу выполненной, если все тесты проходят успешно.
Однако в аппаратном мире ситуация иная. Например, в статье упоминается, что ИИ не смог выявить причину случайного отключения связи на плате STM32, потому что он видел только код, а не такие важные факторы, как мгновенные колебания напряжения питания, перекрытие адресов памяти, конфликты между каналами быстрого передачи данных (DMA) и кэшем. В реальности отсутствует стабильная связь между причинами и проявлениями ошибок, и ИИ не может их распознать без соответствующих данных.
II. Ошибки в реальности скрыты в «невидимых» для ИИ местах
В случае с ошибками в веб-сервисах сообщается о конкретных проблемах (например, отключение связи, выход за пределы массива), но в аппаратном обеспечении проблемы возникают случайно и непредсказуемо: иногда отключение связи происходит только летом, проблемы исчезают при подключении отладчика, добавление нового лога может устранить ошибку и т. д. Причины ошибок могут кроиться не в коде, а в следующих факторах:
- Аппаратные проблемы: колебания напряжения, высокая температура, различия между партиями чипов, проблемы с расположением элементов на печатной плате;
- Системные проблемы: перекрытие областей памяти, чтение данных из кэша, несоответствие между данными, переданными через DMA, и данными, хранящимися в памяти;
- Факторы окружающей среды: электромагнитные помехи, конкуренция за использование общих ресурсов (например, шин данных).
Большинство этих факторов не преобразовано в цифровую информацию, понятную для ИИ, поэтому даже самый умный ИИ не сможет найти ошибку без соответствующих данных.
III. Наблюдение за системой изменяет ее поведение
Одной из сложностей отладки аппаратного обеспечения является то, что сам процесс наблюдения может влиять на работу системы: добавление нового лога может изменить ход выполнения программы, что приводит к исчезновению ошибок; подключение отладчика может изменить скорость обработки сигналов; снижение уровня оптимизации кода (например, с -O2 на -O0) также может устранить ошибки. ИИ не понимает этого и делает выводы, основываясь только на коде и логах. Поэтому опытные инженеры могут быстро выявлять ошибки, поскольку знают, как влияют различные факторы на работу системы.
IV. Чтобы ИИ справился с реальностью, необходимо предоставить ему «глаза и уши»
Для вхождения в физический мир (роботы, автомобили, промышленное оборудование) ИИ должен получить возможность воспринимать реальные данные. Для этого необходимо выполнить ряд инженерных работ по преобразованию реальности в цифровую форму:
- Установка дополнительных датчиков для измерения напряжения, температуры, вибраций;
- Запись большего количества данных (состояния чиповых регистров, хода данных по шинам, формы сигналов на осциллографах);
- Оптимизация аппаратной архитектуры для проверки выполнения команд программы.
Роль человеческих инженеров также меняется: от написания кода к определению того, что не видит сама система (например, какие значения являются результатом программных вычислений, а не реальными данных, какие действия считаются успешными, но на самом деле не выполняются, какие параметры безопасности устарели). Когда ИИ сможет автоматически генерировать код, самой опасной ошибкой будет не неправильный код, а неправильное понимание реальности системы.
Вывод
ИИ прекрасно справляется с задачами в цифровом мире, но для победы в физическом мире необходимо преобразовать реальность в цифровую информацию. Для этого требуются не только более совершенные алгоритмы, но и дополнительные средства восприятия реальности («глаза, уши, нейронные сети»). Роль человеческих инженеров заключается в помощи ИИ в понимании тех аспектов реальности, которые он сам не может уловить.