Современный ИИ может в творчество?
В очередном чатике произошла адская заруба про способности нейросетей: всерьёз ли они способны к творчеству, а не к аналитике и комбинаторике на основе собранных данных. Делать вечером было нечего, и я решил проверить.
Начнём с определений. Под творчеством будем понимать создание чего-то качественно нового, уникального и оригинального.
То есть, для эксперимента точно не подходят задания вида нарисовать картину, написать рассказ, сделать видеоролик или повторить код очередного проекта с github.
При этом критерии оценки выберем максимально простые, исключающие личные симпатии/антипатии. Для начала достаточно будет “работает – не работает”.
Итого, была выбрана следующая простая задача: создать работающий код для переключения локального контекста исполнения, проще говоря, сделать корутины. В качестве образца были использованы 4 примера на ассемблере для 4 разных архитектур (arm32, arm64, i386, amd64). Сложность кода примеров – от 9 до 32 инструкций, в зависимости от архитектуры. То есть, ничего технически сложного нет, нужно лишь создать с нуля некий продукт. Для которого, к тому же, есть уже примеры решений.
В качестве писателя промптов я пригласил своего приятеля, который очень хорошо пишет на С и С++, но никогда этой темой не занимался. Как раз для того, чтобы он не подсказывал ИИ-шечке, что делать, но понимал, что она выдаёт. Далее он в нескольких промптах попросил написать корутины для архитектуры e2k. Эта архитектура была выбрана специально для того, чтобы не было готовых решений (это поделие импортозащемления никому не нужно, и под него практически не пишут, слитых общедоступных исходников нет, а значит тест на творчество достаточно чистый). Было так же проверено, что в ИИ уже есть справочная информация об архитектуре e2k.
В итоге ИИ-шечка после нескольких попыток разродилась простынёй пространных рассуждений, как это сделано на x86, как надо делать на e2k, и какие трудности там есть. Написать код не смогла, так как исходников libc под e2k в ИИ-шечке нет, а значит подсмотреть уже сделанное решение и выдать его как своё невозможно.
Собственно, результат предсказуем. Создать оно не в состоянии, хотя, повторяюсь, примеры того, что надо и документация по набору команд e2k есть. Да, дока неполная, это проблема закрытости архитектуры e2k, но для такой задачи полная и не нужна.
Далее - избранные цитаты из ответов.
ИИ изображает из себя Капитана Очевидность и цитирует документацию:
У Эльбруса состояние выполнения распределено между несколькими стеками:
пользовательский стек данных;
стек регистровых окон (procedure stack);
стек цепочек вызовов (chain stack);
управляющие регистры и параметры текущего окна.
ИИ демонстрирует эрудицию:
На x86 достаточно сохранить callee-saved регистры и RSP, поскольку адрес возврата лежит в обычном стеке. На e2k вызовы, регистровые окна и адрес возврата обслуживаются иначе. Перед переключением может понадобиться принудительно сбросить аппаратные стеки в память, сохранить их указатели и затем корректно восстановить контекст. Часть таких операций зависит от ABI и доступности соответствующих инструкций в непривилегированном режиме.
ИИ решает не ту задачу, что поставили:
Использовать штатные getcontext/setcontext/swapcontext либо setjmp/longjmp, если они имеются в вашей libc. Это лучший источник эталонной реализации для конкретной системы.
ИИ опять играет в Адмирала Ясен Хрен:
Написать собственный assembler context switch, изучив реализацию libc, ABI и то, какой код генерирует установленный компилятор.
ИИ не может решить проблему; хочет просто подсмотреть готовое решение и выдать его за своё:
Чтобы написать именно рабочий код, мне нужны:
заголовок/структура, где сейчас хранится контекст корутины;
желательно исходники или дизассемблирование setjmp, longjmp, swapcontext
В общем, это уровень болтливого джуна, копипастящего ответы с форумов.
Ещё раз для адептов торжества разума ИИ повторяю:
1) примеры того, что надо сделать, были даны в виде готовых и рабочих реализаций под 4 разные архитектуры. Человек заведомо способен понять, что требуется и куда направлять исследования.
2) Описание архитектуры e2k тоже было дано, и кроме того, эти материалы есть в свободном доступе в интернетиках.
Вывод: ИИ может генерировать рассуждения на уровне лекции научпопа, но не способно именно к акту творчества.
Можно до упора продолжать спорить про улучшение качества нейрослопа, обсуждать прогресс в пожирании ресурсов, рост капитализации игроков и т.п. Но суть остаётся та же: нет ранее залитого кода — нет генерации. Нейросеть ничего не может сделать сама с нуля. Все те возможности что приводят в восторг любителей нейросетей это лишь результат обработки очень больших объёмов данных, аналитика на их основе и выдача различных комбинаций. К творческой деятельности это не имеет, как видим, никакого отношения.
Всем спасибо.
4 обучающих варианта кода корутин доступны по ссылке. Промпта и прочих технических подробностей не будет; кто хочет, пусть пытается повторить эксперимент максимально чисто, без подсказок и дообучения ИИ.
https://dev.communico.pro/open-source/iris/-/tree/master/src...
Автор статьи Андрей Шетухин.
© https://vk.ru/id8771637?w=wall8771637_8083




































