Как стать автором
Обновить
2623.28
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Классическое программирование на грани вымирания

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров96K
Автор оригинала: Matt Welsh
Все изображения в этой статье сгенерированы нейросетью DALL-E 2

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

Период моего юношества пришёлся на 80-е годы. Тогда я занимался программированием ПК вроде Commodore VIC-20 и Apple IIe дома. Во время обучения в Калифорнийском университете, где я в итоге получил свою докторскую степень, основная часть моей учебной программы была посвящена «классическим» компьютерным наукам: программирование, алгоритмы, структуры данных, системы и различные языки. В классической форме задача компьютерных наук заключается в представлении некой идеи в виде программы, написанной человеком на языке вроде Java, C++ или Python. Причём, какой бы сложной ни была эта идея — начиная от алгоритма объединения баз данных и заканчивая крайне сложным протоколом консенсуса Paxos — её можно выразить в виде понятной для человека программы.

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

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



▍ Программирование утратит актуальность


На мой взгляд, общепринятая концепция «написания программы» обречена на забвение. Серьёзно. В большинстве сфер, за исключением узкоспециализированных, программное обеспечение вскоре будет заменено системами ИИ, которые не программируются, а обучаются. В случаях, когда нам будет требоваться «простая» программа (не для всего же нужна модель, включающая сотни миллиардов параметров и выполняющаяся на кластере графических ускорителей), такая программа будет генерироваться искусственным интеллектом, а не писаться вручную.

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

ИИ-помощники в написании кода вроде CoPilot представляют лишь вершину того айсберга, о котором я говорю. Для меня абсолютно очевидно, что все программы будущего в конечном итоге будут писаться с помощью искусственного интеллекта, и человеку в этом процессе в лучшем случае будет отведена роль контролирующего. Любому, кто сомневается в этом прогнозе, достаточно взглянуть на стремительный прогресс в сфере генерации контента с помощью ИИ, например изображений. Отличие в качестве и сложности результатов, генерируемых DALL-E v1 и DALL-E v2, вышедшей всего через 15 месяцев, поражает. За последние несколько лет работы с ИИ я однозначно понял, что очень легко недооценить потенциал всё более масштабных моделей искусственного интеллекта. То, что ещё несколько месяцев назад казалось научной фантастикой, сегодня уже воплощается в реальность.



Поэтому я говорю не только о том, что программы вроде CoPilot заменят программистов. Речь идёт о замене самого принципа написания программ на обучение моделей. В будущем студентам факультетов компьютерных наук не потребуется осваивать такие заурядные навыки, как добавление узла в двоичное дерево или написание кода на С++. Обучение подобным вещам утратит актуальность, как обучение работе с логарифмической линейкой.

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

Достаточно мощным моделям, способным обобщаться посредством небольшого обучения, потребуется лишь несколько хороших примеров задачи, которую им нужно выполнить. В большинстве случаев уже не будут нужны массивные, курируемые человеком датасеты, как и выполнение циклов градиентного спуска с помощью PyTorch и подобных инструментов. Обучение будет происходить на примерах, оставляя всё остальное самой модели.

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



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


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

И этот переход подчёркивается тем фактом, что никто не понимает конкретно, как именно работают масштабные модели ИИ. Люди публикуют исследования, в которых раскрывают всё новые схемы поведения таких моделей несмотря на то, что эти системы были разработаны людьми. Масштабные модели ИИ способны выполнять задачи, которым их напрямую не обучали, что должно до чёртиков пугать Ника Бострома и всех тех, кто (небезосновательно) боится, что искусственный сверхинтеллект вдруг выйдет из-под контроля и начнёт диктовать свои правила.

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

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

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

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

Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале ?
Теги:
Хабы:
Всего голосов 98: ↑56 и ↓42+31
Комментарии322

Публикации

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds