Искусственный интеллект и машинное обучение взорвали информационную повестку в 2023-м году и продолжают удивлять. Бизнес стремится активно интегрировать максимально передовые нейросети в любые процессы, где ими можно эффективно заменить человека. При помощи Chat GPT и похожих продуктов создают контент, общаются с клиентами, рисуют дизайн и разрабатывают программное обеспечение. С 2021 первого года происходят попытки интеграции нейросетей в процесс создания промышленного кода и ускорения промышленного программирования.
Нейросетей, способных создавать программы по запросу пользователя, много: OpenAI Codex, CodeT5, Polycoder, Cogram, GitHub Copilot, DeepCode, Kite, TabNine, CodeWP, AskCodi, Codiga, PyCharm, AIXcoder, Ponicode, Jedi, Wing Pro. Это далеко не полный список ИИ, которые способны писать и улучшать код. Между тем, способность нейросети заменить программистов в промышленности и применимость там таких продуктов, как Chat GPT, требует анализа. В этой статье разбираемся с возможностями ИИ, рисками и перспективами применения нейросетей для промышленного программирования.
Проблема источников обучения
Кроме того, многие промышленные программы имеют жесткие ограничения по ресурсам, что совсем не соотносится с тем, как сегодня привыкли писать код. Например, когда пишут приложение, медленно работающее на восьмиядерном процессоре, скорее предложат взять двадцатиядерный, вместо того, чтобы оптимизировать код для меньших ресурсов. В промышленном программировании такой подход не сработает.
Есть контроллер, у него килобайты, максимум мегабайты памяти, ограниченная частота и катастрофически маленькая производительность. И там нужен “вылизанный” код. Его часто пишут на редком, малоизвестном языке. Такой код умеет эффективно работать с конкретным контроллером и способен это делать быстро без увеличения вычислительных ресурсов.
Контроллеров огромное множество, это гигантский зоопарк устройств.
Возникают логичные вопросы:
1. Умеют ли нейросети писать код для конкретных контроллеров?
2. Умеют ли они писать на конкретных языках программирования?
Например, сможет ли ИИ создать качественный код для широко распространенных ПЛК Siemens? Не исключено, что такие нейросети есть и используются внутри корпораций, но в открытом доступе о них нет информации.
Надежность и безопасность софта
Доверять нейросетям разработку промышленного кода полностью — преждевременно, на это, очевидно, никто не пойдет. Но использование нейросетей, как инструмента для подобных задач, уже оправдано, важно, чтобы контекст запросов задавал опытный и знающий программист, знакомый с тем, как разрабатываются и работают ИТ-системы для промышленности. Так можно снизить риски, но эту уже процесс в котором задействованы человеческие компетенции.
Ошибки, риски и тестирование
Даже если предположить, что в некой системе большую часть кода сгенерировала нейросеть, то перед запуском и внедрением необходимо проводить особенно тщательное тестирование. При этом использовать не только автотесты, но и живых тестировщиков. Будет ли такой способ дешевле и быстрее, зависит от конкретного проекта. Скорее всего — нет.
Важно понимать, что в промышленном коде не должно быть ошибок, значимо влияющих на производственные и критические процессы. Любые проблемы такого рода с ПО — это колоссальные риски, как убытков, так и аварийных ситуаций. Характер риска будет зависеть от системы, с которой будет работать ПО.
Поэтому промышленный код тестируется многократно, а разработчики стремятся свести вероятность любых ошибок к минимуму. В идеальной ситуации — полностью избежать багов. В других отраслях такой подход считается избыточным, нерациональным и расточительным, но для промышленности — нормой.
Известно, что нейросети ошибаются достаточно часто, т.к. обучаются на коде, который создали люди. Когда нейросети станут массово использоваться в разработке промышленного кода, результат потребует разработки специального тест-дизайна.
Краткосрочные перспективы нейросетей в промышленном ПО
Сегодня наиболее успешным применением того же Chat GPT может стать ассистирование в создании промышленных приложений. Нейросети уже берут на себя функцию инструмента в руках опытного программиста или архитектора ИТ-систем. Это заметно сократит время на простые рутинные процессы в создании продуктов. К сожалению, создать полноценное приложение для промышленности целиком, даже получив подробный запрос, нейросети на данный момент не способны.
Обучение нейросетей, в большинстве случаев, происходит на данных Open Source источников. Там, безусловно, есть некоторое количество кода промышленных приложений и функций. Также известно, что часть этого кода сомнительного качества, что увеличивает риски ошибок. Ещё один источник ошибок неверная интерпретация запросов, контекста или данных при обучении.
Юридические аспекты: авторское право и ответственность за риски
Проблема генерации чужого кода, который уже является собственностью человека или компании, стоит не настолько остро. Учитывая использование лишь открытых источников для обучения нейросетей, вероятность сгенерировать что-то защищённое лицензиями, авторским правом и патентами — призрачная. Опасения по этому поводу в большей степени — манипуляции радикальных скептиков, озабоченных соблюдением авторского права, но мало понимающих в том, какой код может писать нейросеть.
Большей юридической проблемой станет ответственность за ошибки программ, созданных с использованием нейросетей. Гипотетически возможна ситуация, когда промышленный код, написанный ИИ, актуализирует риск, приводящий к убыткам, авариям и даже жертвам.
На текущий момент ни в одной из юрисдикций не существует четких правовых норм и механизмов, которые будут возлагать ответственность на строго определенных участников процесса разработки. Вероятно, фактическую ответственность понесёт вендор ПО, а разработчики нейросети останутся в стороне. Однако гарантировать такой исход дела сложно, так как сфера в полном смысле не регулируется юридически и прецедентов такого рода пока не возникало.
Прогнозы и перспективы
Сегодня некоторые нейросети могут быть использованы в промышленном программировании, как инструменты опытных разработчиков, например, если речь идёт о таких языках как Assembler, например, Open AI Codex или Ponicode. При этом важно разработать протоколы тестирования, которые исключат ошибки и сбои в работе такого кода, т.к. нейросеть выполняет конкретную задачу и пока не способна учитывать не заданные в контексте вероятности и риски.
Массовое применение ИИ и фактическая замена специалистов, создающих промышленный код, нейросетями произойдет не раньше чем через 5-7 лет. Такие сроки можно прогнозировать при сохранении динамики развития ИИ, как технологии генерации кода по запросу.
Вероятно, со временем, компании, занимающиеся промышленным софтом, будут создавать и обучать собственные генеративные нейросети. Они будут создавать их под те языки, синтаксис и требования, которые используются в промышленных системах. Такие продукты будут либо закрытыми внутрикорпоративными разработками, либо коммерческими, доступными по лицензии.