Найти тему
Грант Пайпер

Конец программирования!?

Оглавление

Приближается конец классической информатики, и большинство из нас - динозавры, ожидающие падения метеорита.

Я достиг совершеннолетия в 1980-х годах, программируя персональные компьютеры, такие как Commodore VIC-20 и Apple ] [e дома. Продолжая изучать информатику в колледже и в конечном итоге получив докторскую степень в Беркли, основная часть моей профессиональной подготовки была основана на том, что я буду называть “классической” CS: программирование, алгоритмы, структуры данных, системы, языки программирования. В классической информатике конечной целью является сведение идеи к программе, написанной человеком с исходным кодом на таких языках, как Java, C ++ или Python. Каждая идея в классическом CS — независимо от того, насколько она сложна - от алгоритма объединения базы данных до умопомрачительно тупого консенсусного протокола Paxos — может быть выражена в виде программы, понятной человеку.

Когда я учился в колледже в начале 90-х, мы все еще были в разгаре зимы искусственного интеллекта, и в области искусственного интеллекта также доминировали классические алгоритмы. Моей первой исследовательской работой в Корнелле была работа с Дэном Хаттенлочером, лидером в области компьютерного зрения (а ныне деканом вычислительной школы Массачусетского технологического института). На курсе Дэна по компьютерному зрению для докторантов примерно в 1995 году мы ни разу не обсуждали что—либо похожее на глубокое обучение или нейронные сети - все это были классические алгоритмы, такие как точное обнаружение границ, оптический поток и хаусдорфовы расстояния. Глубокое обучение находилось в зачаточном состоянии, еще не считалось мейнстримом искусственного интеллекта, не говоря уже о мейнстриме CS.

Конечно, это было 30 лет назад, и с тех пор многое изменилось, но одна вещь, которая на самом деле не изменилась, - это то, что информатика преподается как дисциплина, в основе которой лежат структуры данных, алгоритмы и программирование. Я буду поражен, если через 30 или даже 10 лет мы все еще будем подходить к CS таким образом. Действительно, я думаю, что CS как область ожидает довольно серьезный переворот, к которому мало кто из нас действительно готов.

-2

Программирование устареет

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

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

Помощники по программированию с искусственным интеллектом, такие как второй пилот, лишь скользят по поверхности того, о чем я говорю. Мне кажется совершенно очевидным, что конечно, все программы в будущем в конечном итоге будут написаны ИИ, а людям будет отведена, в лучшем случае, надзорная роль. Любому, кто сомневается в этом предсказании, стоит только взглянуть на очень быстрый прогресс, достигнутый в других аспектах создания контента ИИ, таких как генерация изображений. Разница в качестве и сложности между DALL-E v1 и DALL-E v2, анонсированными всего 15 месяцев спустя, ошеломляет. Если я чему-то и научился за последние несколько лет работы в сфере искусственного интеллекта, так это тому, что очень легко недооценить мощь все более крупных моделей искусственного интеллекта. Вещи, которые всего несколько месяцев назад казались научной фантастикой, быстро становятся реальностью.

-3

Итак, я говорю не только о замене программистов вторым пилотом. Я говорю о замене всей концепции написания программ обучающими моделями. В будущем студентам CS не нужно будет осваивать такие обыденные навыки, как добавление узла в двоичное дерево или кодирование на C ++. Такой вид образования устареет, как обучение студентов-инженеров использованию логарифмической линейки.

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

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

-4

Как все это меняет наше представление о области компьютерных наук?

Как все это меняет наше представление о области компьютерных наук?

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

Этот сдвиг подчеркивается тем фактом, что никто на самом деле не понимает, как работают большие модели искусственного интеллекта. Люди публикуют исследовательские статьи, фактически открывающие новое поведение существующих больших моделей, даже несмотря на то, что эти системы были “спроектированы” людьми. Большие модели ИИ способны делать то, чему их явно не обучали, что должно до смерти напугать Ника Бострома и всех остальных, кто (по праву) беспокоится о том, что сверхразумный ИИ сошел с ума. В настоящее время у нас нет способа, кроме эмпирического исследования, определить пределы существующих систем искусственного интеллекта. Что касается будущих моделей искусственного интеллекта, которые на порядки больше и сложнее — удачи, черт возьми!

Смещение акцента с программ на модели должно быть очевидным для любого, кто читал какие-либо современные статьи по машинному обучению. В этих статьях почти не упоминается код или системы, лежащие в основе их инноваций; строительными блоками систем искусственного интеллекта являются абстракции гораздо более высокого уровня, такие как уровни внимания, токенизаторы и наборы данных. Путешественнику во времени, жившему даже 20 лет назад, было бы трудно понять три предложения в (75-страничном!) Документ GPT-3, описывающий реальное программное обеспечение, созданное для модели:

Мы используем ту же модель и архитектуру, что и GPT-2 [RWC + 19], включая модифицированную инициализацию, предварительную нормализацию и обратимую токенизацию, описанные в нем, за исключением того, что мы используем чередующиеся плотные и локально полосчатые шаблоны разреженного внимания в слоях transformer, аналогичные Sparse Transformer [CGRS19]. Для изучения зависимости производительности ML от размера модели мы обучаем модели 8 различных размеров, варьирующихся на три порядка величины от 125 миллионов параметров до 175 миллиардов параметров, причем последней является модель, которую мы называем GPT-3. Предыдущая работа [KMH + 20] предполагает, что при достаточном количестве обучающих данных масштабирование потерь при проверке должно быть приблизительно плавным степенным законом в зависимости от размера; обучающие модели многих различных размеров позволяют нам проверить эту гипотезу как на потери при проверке, так и на последующие языковые задачи.

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

Боковая панель: чем я занимался в последнее время?

Мои давние читатели, наверное, заметили, что в последнее время я мало веду блог. Извините за это! Я был немного занят.

Около трех лет назад я ушел из Google ради стартапа, который был приобретен Apple. Впоследствии я ушел из Apple, чтобы пару лет руководить разработкой в другом стартапе. За это время я многое узнал о жизни стартапов, создании систем искусственного интеллекта и создании команд. Это было здорово.

Пару месяцев назад я соскочил с корабля, чтобы основать собственную компанию. Теперь я соучредитель и генеральный директор Fixie.ai, стартапа-невидимки в сфере искусственного интеллекта, и сообщение в блоге выше может отражать, а может и не отражать некоторые идеи, заложенные в это новое предприятие. У нас фантастическая команда основателей, и я действительно взволнован тем, чего мы сможем достичь. В течение следующих нескольких месяцев я надеюсь рассказать больше о том, чем мы занимаемся. А пока держитесь крепче!