Выступление Андрея Карпаты про Software 3.0


Здесь уже была заметка про концепцию Software 2.0 от Andrej Karpathy и теперь он снова рассказывает о развитии программного обеспечения в сторону Software 3.0.

В концепции Андрея Карпаты: Software 1.0 — это традиционный код, Software 2.0 — это  нейронные сети (веса которых «программируются» данными), а Software 3.0 — это большие языковые модели (БЯМ, LLM), которые программируются при помощи инструкций (промптов) на естественным языке.

В этой эволюции ПО, LLM — играют роль операционной системы. При этом, в этой аналогии — сейчас 1960-е годы, когда LLM (вычисления) дороги и централизованы (в облаке), а взаимодействие с LLM осуществляется через текстовый интерфейс (терминал) и пока не имеет графической оболочки (GUI).

Однако, использование LLM требует учёта их «психологии» и особенностей. LLM — это стохастические «симуляции людей» (обучение на огромных объёмах текста, придаёт им «человекоподобную психологию»). При этом, хотя LLM могут демонстрировать суперспособности в обладании  энциклопедическими знаниями и памятью (подобно саванту из фильма «Человек дождя»), но они же демонстрируют различные примеры когнитивного дефицита: галлюцинации (LLM часто «выдумывают» информацию) и совершают элементарные ошибки (например, утверждают, что 9.11 больше, 9.9 или неправильно считают число букв «r»в слове «strawberry»).

Самый главный недостаток текущих БЯМ — это то, что они не обучаются в процессе работы и не приобретают новые знания. Каждое взаимодействие с ними — начинается «с чистого листа» в рамках контекстного окна, которое работает как «рабочая память» модели.

Так же, БЯМ уязвимы: они доверчивы и подвержены атакам типа «prompt injection».

Уже сейчас наблюдается переход от прямого взаимодействия с БЯМ к их использованию внутри приложений (например, Cursor (для программирования) или Perplexity (для поиска информации)).

Ключевые свойства LLM-приложений: управление контекстом, оркестрация множественных вызовов LLM (используются различные модели для разных задач).

Крайне важен специфический интерфейс (GUI), который позволяет понимать и взаимодействовать с выходными данными LLM (например, в Cursor — это просмотр различий в коде, выделяемый красным/зелёным).

Концепция «Слайдер автономности» (Autonomy Slider) — возможность регулировать степень автономности, которую пользователь предоставляет LLM (от простых дополнений до полной агентности (например, автодополнение, изменение фрагмента кода, изменение файла, изменение всего репозитория)).

Взаимодействие человека с БЯМ происходит в цикле генерации-верификации, где ИИ генерирует, а человек верифицирует. При этом, учитывая особенности работы БЯМ — важно «держать ИИ на поводке» (keep AI on the leash), чтобы избегать слишком больших, неконтролируемых выводов (например, тысяч строк кода), которые человек просто не сможет быстро проверить. Поэтом, нужно работать с небольшими, инкрементальными изменениями.

«Вайб-кодинг» (Vibe Coding) — позволяет непрограммистам создавать базовые приложения с помощью естественного языка и LLM, без необходимости глубокого изучения синтаксиса языка программирования. Возможно, станет распространённым путём разработки программного обеспечения для нового поколения.

БЯМ — это новый «потребитель» информации. Помимо людей (через GUI) и компьютеров (через API), теперь есть агенты (LLM), которым необходимо взаимодействовать с цифровой инфраструктурой (lm.txt — аналог robots.txt для LLM, предоставляющий машиночитаемую информацию о домене (например, в Markdown)).

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

По теме


Добавить комментарий

TotalCoin: безопасный обмен криптовалюты

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение