Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

2021 год

Алгоритмика

Информатика, её поддисциплины и её инженерная практика
Дэвид Дойч считает информатику/computer science (https://en.wikipedia.org/wiki/Computer_science) одной из четырёх нитей, без которых не получается объяснить структуру нашей реальности (другие – это квантовая физика в интерпретации Эверетта, эволюционная эпистемология Поппера, эволюционная теория репликаторов Докинза).

Иногда информатику делят (https://cstheory.stackexchange.com/questions/1521/origins-and-applications-of-theory-a-vs-theory-b) на Theory A как алгоритмику, занимающуюся вопросами сложности алгоритмов и их эффективностью, и Theory B, занимающуюся вопросами теории информации, семантики и логики вычислений.

В интеллект-стеке мы рассматриваем SoTA информатики как научной практики в разных местах стека. Более того, мы встречаем в интеллект-стеке информатику не только как научную дисциплину/science (теорию и средства моделирования для теории), но и как опирающуюся на её теорию инженерную практику в составе труда (компьютерную и программную инженерию как виды инженерии: создание компьютеров как физических вычислителей и программного обеспечения к ним). Грамотный человек сегодня не только умеет сам умеет читать сложный текст и писать слепым десятипальцевым методом на клавиатуре, но и может сам отмоделировать какой-то кусок мира, и даже сам выполнить какие-то несложные вычисления с помощью компьютера -- как предки с трудом научились умножать "в столбик", как дедушки-бабушки научились это делать при помощи калькулятора, так любой школьник должен уметь сделать это на каком-то языке программирования, хотя бы программируя на языке электронных таблиц MS Excel или Google Tables.

Понятие алгоритма как некоторой последовательности вычислений, из входных данных получающих выходные данные, все знают ещё из школы. Сегодня понятно (первый доклад в https://vimeo.com/553810189, слайды https://yadi.sk/i/F6e33aVANX3J3g), как алгоритмику в объёме требований по программированию из текущего ЕГЭ дать уже к окончанию начальной школы, причём детям на это требуется решать задачи всего около 16 часов (да, так мало!), а взрослым около 8 часов (они всё-таки более организованы, чем дети). Удивителен сам факт, что дети и взрослые осваивают азы мастерства императивного/процедурного программирования за примерно одинаковое время, а для этого достигают понимания основных понятий: алгоритма, вычислителя/интерпретатора алгоритма, языка программирования, программиста (составляющего алгоритм), шага алгоритма, данных. Эта учебная программа уже преподаётся десяткам тысяч детей.

Но всё-таки компьютеры в массе своей в труде используются только как ручка-бумажка-на-стероидах. Не "вычислитель" (computer -- это вычислитель!), а просто "счёты с хорошей коллективной памятью". Память при при этом, конечно, структурированная -- она содержит не просто какие-то тексты и картинки, а описания мира/модели, обширные "базы данных" с довольно кучерявыми "моделями данных". Или даже неструктурированную информацию для полнотекстового поиска в корпоративных хранилищах документов. Как устроены эти описания мира разной степени формальности в computer science разбирается в рамках Theory B (теория информации, логика, семантика, далее мы будем ещё рассматривать онтологию с многоуровневым мета-моделированием, они все идут по этой линии Theory B): как мы думаем о мире, как записываем наши мысли, что означают знаки, как представлены знаки на физических носителях, как их интерпретировать.

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

Проблема в том, что в 21 веке алгоритмика (Theory A из computer science/информатики) поменялась, и нужно с ней разбираться заново.

Новая алгоритмика: изучение универсальных алгоритмов
В Theory A предметом заботы является алгоритмика, вычисления как таковые -- нахождение таких способов вычислений, которые как дают точный результат, так и укладываются в ресурсный бюджет. Проблема в том, что точность моделирования мира и потребность в вычислительных ресурсах в большинстве случаев увязаны между собой. Если вы хотите отмоделировать мир точно, то вам нужно много исходных данных и много вычислений. Иногда это удаётся обойти придумыванием нового способа моделирования, новых алгоритмов вычислений, но иногда теория говорит, что в общем случае это невозможно. Например, сегодня для многих и многих задач находится максимум какой-то функции методом градиентного спуска. В конце 2021 года выяснилось, что точность и вычислительная сложность (время вычисления) для таких задач связаны пропорционально . Если точность удвоить, то время нужно увеличить вчетверо (и это обычно приемлемо), но если для некоторых приложений нужна точность в квадрате, то время (число вычислительных шагов) нужно увеличивать тоже в квадрате – и это может оказаться за пределами разумного. Скажем, 1млрд шагов одинарной точности могут выполняться одну секунду, но вот миллиард секунд для квадрата этой точности – это 32 года работы вычислителя!

Похожие рассуждения по ресурсным (а не теоретическим!) ограничениям на вычисления есть и для многих других классов задач. Например, криптографические задачи основываются на том, что вы легко проверяете ключ на его правильность, за долю секунды. Но вот найти этот ключ, если вы его не знаете, может потребовать тысяч лет вычислений. Ситуация осложняется тем, что при переходе на другую физику (например, квантовый вычислитель/компьютер разбрасывает нужные для получения операции по бесконечному числу вселенных, а потом собирает их результаты для получения конечного ответа, подробно это рассказывается в книгах Дэвида Дойча) оценка сложности алгоритмов меняется. И ещё всё время придумываются новые алгоритмы, причём нахождение нового алгоритма – это творческий процесс, для многих классов задач до сих пор (2021) непонятно, можно ли вообще найти быстрый алгоритм получения решения (проблема перебора, https://ru.wikipedia.org/wiki/Равенство_классов_P_и_NP ): можно ли для задач, которые заведомо решаются методом перебора придумать алгоритм, который решает их не за экспоненциальное по отношению к объёму входных данных время, а за меньшее, полиномиальное или даже линейное. Алгоритмика до сих пор не даёт ответа на этот важный вопрос!).

Есть математический результат 1989 года (теорема Джоржа Цыбенко, https://ru.wikipedia.org/wiki/Теорема_Цыбенко ), который показывает, что нейронная сеть с одним скрытым слоем является универсальным аппроксиматором, то есть может отмоделировать с заданной точностью любую функцию, если в ней есть "достаточное количество нейронов". Любая функция -- это таки математически любая, например, "распознавание речи" это из входных бит огибающей сигнала на выходе аналого-цифрового преобразователя с сигнала микрофона вычислить по фукнции распознавания речи последовательность бит слов текста в подходящей символьной кодировке. Синтез речи -- это обратная функция, из букв в звуки. Диагноз -- это функция из входных данных множества анализов больного в выходные с текстом диагноза. Назначение лечения -- обратная функция.

Проблема только в том, что на существующих классических компьютерах моделирование даже простых функций занимает на такой нейронное сети огромное время, это математически очень крутой результат, но практически он бесполезен. Алгоритмика как раз наука о том, как получить практически полезные результаты. Так, если сделать глубокую нейронную сеть (несколько скрытых слоёв), то свойства универсального аппроксиматора остаются, но время моделирования оказывается вполне приемлемым -- хотя опыт показывает, что один расчёт по сегодняшним ценам может стоить несколько миллионов долларов за аренду вычислительных мощностей для этого (нейронная сеть GPT-3 была вычислена за примерно $4.6 миллиона долларов, а если на том же уровне цен обучать нейросеть GPT-4, то это обошлось бы в $8.6 миллиардов долларов, https://www.reddit.com/r/MachineLearning/comments/i49jf8/d_biggest_roadblock_in_making_gpt4_a_20_trillion/).

Интеллект компьютеров, похоже, зависит главным образом от вычислительной мощности -- это так называемый "горький урок" (http://incompleteideas.net/IncIdeas/BitterLesson.html), полученный анализом всех прошлых прорывов в области AI. Все эти прорывы оказывались прорывами не столько в хитрых конструкциях самого интеллекта как исполняемого на хитрых компьютерах хитрыми алгоритмами, сколько прорывами в не очень хитрой вычислительной мощности, которую отдавали относительно простым универсальным алгоритмам. То есть вы в конечном итоге терпите неудачу, когда пытаетесь сочинить сложный алгоритм, управляющий каким-нибудь автомобилем в поездке. Но если вы в автомобиль включаете суперкомпьютер, и этот суперкомпьютер выполняет относительно простые вычисления в нейросети, то вы получите такие результаты, какие не получите от специально разрабатываемого традиционного "алгоритма вождения автомобиля". Поэтому внимание исследователей искусственного интеллекта обращается к HPC, high performance computing и универсальным аппроксиматорам, вычисления с которыми ведутся на этих компьютерах.

Новые универсальные алгоритмы отличаются тем, что сами функции не программируются/моделируются/описываются вручную/аналитически, но познаются/выучиваются/learn/вычисляются компьютером при минимальном вмешательстве человека. Распознавание речи, изображений, поиск аномалий (тут нюанс: аномалия характеризуется тем, что нужно распознать не то, что компьютер уже видел, а наоборот -- то, чего он ещё не видел!) компьютер делает уже лучше, чем человек.

А алгоритмы творчества есть такие? Если вернуться к универсальным алгоритмам, которые работают с универсальными аппроксиматорами, могут ли они творить? Да, могут. Творчество идёт по тому же пути, что и эволюция: в шуме (например, шуме, получаемом при помощи генератора случайных чисел на тепловом шуме, чтобы надёжно этот шум был свободен от любых закономерностей) потенциально содержится всё новое, что может быть придумано в мире. И дальше можно просто модифицировать этот шум так, чтобы он попал под необходимые ограничения. Если немного поманипулировать со сжатием информации (схематизацией/моделированием) и последующим разжатием (демоделированием/рендерингом), то вычислительно это всё может быть вполне осмысленным. Если каждый алгоритм распознавания основывается на какой-то модели, сохраняющей знания о важном для распознавания аспекте входных сигналов, то можно всегда предложить алгоритм порождения, который в выходном сигнале сохранит это важное -- алгоритм распознавания признает творчески сгенерированный новый объект "своим". Алгоритм устроен примерно так: тренируют подалгоритм распознавания, и на вход ему подают шум от подалгоритма генератора -- распознаватель говорит "это не то" и сообщает генератору, что ему особо не понравилось. Генератор подстраивает свой выход, чтобы понравиться распознавателю -- и так много раз, пока ему не удаётся обмануть распознаватель. Если распознаватель умеет распознавать картины Ван Гога, то генератор в конце концов сумеет сделать картину, которую и человек и этот распознаватель (качество распознавателей сейчас уже не хуже, чем у людей) признают, как картину Ван Гога, но готовил эту картину не Ван Гог, а генератор. Это и есть алгоритмика: придумать такого сорта алгоритм!

В статье 2017 года "Software 2.0" (https://karpathy.medium.com/software-2-0-a64152b37c35) Andrej Kaprathy (сегодня он главный по искусственному интеллекту в Tesla) сделал пророчество, что при наличии достаточных вычислительных ресурсов качество алгоритма, которое даст оптимизация градиентным спуском (иногда это называют дифференцируемым программированием/differentiable programming, https://ailev.livejournal.com/1464563.html) будет выше качества алгоритма, которое разрабатывается программистами, и поэтому людям-программистам придётся заняться чем-нибудь ещё.

Уместна ли алгоритмика в интеллект-стеке?
Кому нужно знать про универсальные аппроксиматоры и алгоритмы, их реализующие? Нужно ли людям сегодня понимание того, как и зачем используются алгоритмы, какие они бывают, где используются вычисления по самым разным алгоритмам? Грубо говоря: нужна ли алгоритмика в интеллект-стеке?

Да, она нужна. Ибо мы не только запоминаем-вспоминаем информацию, но и как то над ней задумываемся, погружаемся в размышления/вычисления, которые требуют ресурсов. По большому счёту, вычисления нужны для:
-- познания/исследований: создание объяснительных моделей на основе восприятия окружающего мира и учёта уже имеющихся объяснений
-- деятельности на нескольких системных уровнях: в цикле/динамике вычисление/инференс/вывод/апдейт предсказаний по имеющимся моделям на основе восприятия/внешних данных, планирование действий, которые приведут предсказания к нас устраивающим, и действия/выполнение плана/актуация

Познание как построение всё более и более мощных объяснений/описаний/моделей мира, дающих всё более и более точные предсказания и деятельность по изменению мира в сторону благоприятных для нас предсказаний по имеющимся объяснениям -- это и есть жизнь.

Это всё не очень ново, так как в такой общей постановке вопроса не отличается от классических задач той области computer science, которая называлась artificial intelligence и занималась поиском решения отдельных проблем, имеющих большую вычислительную сложность, и поэтому не подвластную старым компьютерам: это как раз задачи представления знаний (моделирования/познания мира, и тут мы опять попадаем в семантику и логику), а также задачи планирования. Про человеческий "интеллект" говорили, но это всегда казалось далёкой целью. Почему же это была отдельная область знаний от всей остальной информатики? Потому как решения этих задач в общем виде никак не давалось алгоритмизировать, получающиеся в результате расчёта модели и планы были хуже тех, которые готовил человек. А сейчас за очень дорого (для самых интересных приложений это миллионы долларов за один расчёт, а этих расчётов нужно много!) модели и планы начинают быть лучше тех, которые могли бы приготовить люди.

Прежде всего это относится к таким расчётам, которые делаются для предобучения глубоких нейронных сетей, это лучшие универсальные аппроксиматоры (напомним, что речь идёт о свойстве с какой-то заданной точностью аппроксимировать любую функцию как преобразования из входных данных в выходные, под это можно подогнать практически любую задачу). Алгоритмы глубокого обучения -- это первый обнаруженный людьми класс алгоритмов, который показал удивительную особенность: качество полученных моделей растёт при добавлении вычислительных ресурсов. Уточнение решений для этих алгоритмов заканчивается не потому, что уже ничего там улучшить не удастся, сколько не вычисляй, а просто потому, что слишком дорого вычислять. Было бы дешевле, получили бы решение получше! Это очень, очень дорогие на сегодняшний день расчёты, их цена падает с годами экспоненциально, но и потребность в них растёт экспоненциально, потому как если потратить столько же денег завтра, сколько тратим сегодня, закупив на эту же сумму побольше вычислений, то получим результаты лучше! Этот класс алгоритмов был придуман в 1987 году, но другие алгоритмы этот класс алгоритмов смог обогнать только тогда, когда было использовано компьютерное "железо", особо подходящее под эти алгоритмы (GPU, https://towardsdatascience.com/what-is-a-gpu-and-do-you-need-one-in-deep-learning-718b9597aa0d), на обычных компьютерах эти алгоритмы не работают, ибо не хватает вычислительной мощности.

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

Получается такой разрыв: понимание, почему вычисления такие дорогие, и как их сделать дешевле -- это предмет алгоритмики, которая находится довольно низко по интеллект-стеку. А использование этого понимания должно быть в бизнесе. Вот идём в бизнес. Квантовые компьютеры обещают дать нам невиданную вычислительную мощность, которая явно избыточна для тех, кому компьютеры нужны как ручка-бумажка-на-стероидах. Кто уже сегодня интересуется квантовыми компьютерами, для каких расчётов будут использовать их головокружительные вычислительные возможности? Если посмотрим на разные предложения по использованию (https://www.idquantique.com/quantum-safe-security/quantum-computing/real-world-applications/, https://hbr.org/2021/07/quantum-computing-is-coming-what-can-it-do, https://builtin.com/hardware/quantum-computing-applications), то заметим там примеры того, о чём мы тут писали, наши догадки верны:
-- создание объяснительных теорий в естественных науках (физика, метеорология, химия, биология и медицина, криптография)
-- предсказания и обновления предсказаний (инженерия, медицина, трейдинг, компьютерная безопасность -- смотри все те прикладные практики, которые задействуют объяснительные теории из естественных наук)
-- планирование (всё те же прикладные практики, которые задействуют предсказания из предыдущего пункта)

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

Как отследить тренд на вычислительные модели в которых существенно задействована алгоритмика, а не просто использование компьютеров для накопления данных и их красивого показа? Цифровой двойник/digital twin как понятие сегодня быстро размывается в значении, но всё-таки его создание подразумевает создание какой-то модели физического двойника на стадии и эксплуатации тоже, для того, чтобы иметь предсказания и предупреждения (вот тут вычисления!) по поводу состояния физического двойника по состоянию отмоделированного цифрового двойника (https://ailev.livejournal.com/1546514.html, https://ailev.livejournal.com/1570630.html). На сегодняшний день в инженерии принимаются решения на основе традиционных алгоритмов физического моделирования, базирующихся на вручную составляемых людьми системах дифференциальных уравнений, которые потом решает компьютер (https://ailev.livejournal.com/1549559.html). Но и тут работает тот же тренд: физическое моделирование на универсальных аппроксиматорах оказывается надёжней, цифровые двойники тоже переходят на использование универсальных алгоритмов моделирования, сегодня это прежде всего алгоритмы на глубоких нейронных сетях.

А пока квантовых и иных с "новой физикой" дешёвых и мощных компьютеров нет, новые универсальные алгоритмы вычисляются на "обычных" компьютерах с кремниевыми чипами как центральных процессоров (CPU), так и ускорителей вычислений на базе GPU.

Как и где эти алгоритмы применяются? Как и естественный интеллект: везде, в самых неожиданных местах, которые только можно придумать!

Например, алгоритм NVIDIA на основе глубоких нейронных сетей сокращает требуемый для видеоконференций трафик вдесятеро, https://syncedreview.com/2020/12/02/nvidia-neural-talking-head-synthesis-makes-video-conferencing-10x-more-bandwidth-efficient/. Если вы занимаетесь видеоконференциями, и не знаете об этом прогрессе в алгоритмике, то вы покинете рынок. Главная тут мысль -- такое происходит сегодня повсеместно, универсальные алгоритмы появляются в самых неожиданных местах и дают самые неожиданные результаты. Если вы не знаете, как про эти алгоритмы говорить, сколько они стоят, как и кто их разрабатывает, отслеживают ли их появление айтишники вашей фирмы -- вашей фирме не жить. Алгоритмика важна. Первая волна компьютеризации "управления коллективным вниманием" в фирмах быстро переходит во вторую волну, где компьютер берёт на себя часть мышления/вычислений в двух ситуациях:
-- слишком дорого заказывать эти вычисления людям. Так, миллиарды переводов с самых разных одних естественных языков на самые разные другие, которые делают за сутки автоматические переводчики Гугля, Фейсбука, Яндекса и других технических гигантов, просто не были бы выполнены. Да, они пока ужасного качества, на уровне десятиклассника, едва знакомого с языком, но они есть -- и не были бы выполнены, если бы нужно было обращаться к людям. Переводчики не потеряли работу, но часть работы взяли на себя алгоритмы
-- алгоритмы выполняют работу, которая раньше людям была недоступна. Законы Кеплера компьютер уже может переоткрыть из данных наблюдения за планетой (https://arxiv.org/abs/2011.11981). А фирма Сони не стесняясь говорит о создании компьютера-учёного, которому выдадут нобелевскую премию, что ожидается к 2050 году, https://www.engadget.com/sonys-head-of-ai-research-wants-to-build-robots-that-can-win-a-nobel-prize-180059012.html. Это всё алгоритмика, эти алгоритмы нужно создать, и эти алгоритмы нужно использовать.

Куда развивается алгоритмика в части развития универсальных алгоритмов?
В этой универсальности нейросетей не хватает сегодня:
-- предсказания нейронных сетей, равно как их творечство необъяснимы на сегодняшний день. Этой проблемой занимаются, какие-то успехи тут уже есть. Нам нужно не просто аппроксимирование какой-то функции, нам нужно ещё и объяснение ситуации, объяснение решения!
-- выход из чисто вычислительной работы в реальность, то есть восприятие и актуация (extended/embodied cognition).
-- осознанности, которую связывают в том числе и с возможностью строить длинные цепочки рассуждений по поводу рассуждений (алгоритм выбора алгоритма, алгоритм управления вниманием как выделением ресурсов для вычислений)

Есть много разных подклассов универсальных алгоритмов. Об этой погоне за универсальностью, за Master Algorithm рассказывает книжка Pedro Domingos, но она выпущена аж в 2015 году, это уже хорошее историческое введение, за шесть прошедших лет в алгоритмике много чего произошло нового (и продолжает происходить со скоростью два прорыва в неделю, https://syncedreview.com/). Сейчас нужно было бы писать новую книгу, примерно той же направленности, но дополненную новыми знаниями, полученными за последние шесть лет.

Например, учёные из DeepMind заявили (https://www.sciencedirect.com/science/article/pii/S0004370221000862), что настоящую универсальность дают алгоритмы reinforcement learning, в которых алгоритм "дрессируется" как животное: за достижение цели (или хотя бы приближение к цели) выдаётся награда. Тут же развязалась широкая дискуссия о том, что никакой особо универсальности от этих алгоритмов ждать не приходится, ибо типичная ситуация в том, что мы избегаем неприятностей/выживаем, при этом понятия не имеем, что такое "награда" или даже какого сорта могут встретиться "неприятности". Интеллект сам выбирает, что у него награда, ибо осознанность включает в себя и свободу выбора! Эволюционные алгоритмы -- с ними всё в порядке насчёт универсальности (человека-то они сделали!), но для них никогда не хватит вычислительных ресурсов. Чтобы сделать человека, вся Земля несколько миллиардов лет была эдаким вычислителем! Ещё одна заявка на "безнаградные" алгоритмы -- это отсылка к понятиям predictive coding, active inference, а вместо "награды" агенты с такими алгоритмами стремятся к минимизации свободной энергии/free energy principle (помним, что "энергия" эта не из физики, а из математики для физики, как и "энтропия" в теории информации). Алгоритмы этого подхода (чаще всего его называют active inference, больше информации можно найти в общественной организации, координирующей самых разных исследователей этого класса алгоритма, Active Inference Lab/ActInfLab, https://www.activeinference.org/), крайне элегантны (кратки и универсальны), но пока не продемонстрировали каких-то впечатляющих практических результатов по сравнению с другими видами универсальных алгоритмов. Алгоритмы формального логического вывода (раньше это называли "экспертные системы", потом "системы представления знаний", теперь самый распространённый термин -- knowledge graphs) показали, что они сами по себе работают плохо, их неудача повлекла так называемую "зиму искусственного интеллекта", когда науку универсальных алгоритмов практически перестали финансировать, вплоть до 2012 года, когда обратили внимание на глубокое обучение. И так далее, по многим и многим классам претендующих на универсальность алгоритмов. И при этом работает теорема бесплатного обеда: что универсально для какого-то класса задач, будет ужасно для другого. Хотите решения для многих разных классов проблем -- имейте много разных алгоритмов, выполняющихся на вычислителях с разной физикой! Так что "самый универсальный алгоритм" будет, скорее всего, каким-то сочетанием идей изо всех этих подходов.

Алгоритмика не только про способы вычислений на компьютерах, она и про способы мышления людей!
Но это всё разнообразие подходов к универсальности вычислений и дороговизна универсальных расчётов не снимает факта, что люди перестают заниматься алгоритмикой как придумывание людьми специальных алгоритмов для отдельных частных прикладных вычислений и больше внимания уделяют универсальным алгоритмам, а уж прикладные вычисления потом делаются по итогам работы универсальных вычислителей. Классическая алгоритмика, конечно, останется (программирование самих универсальных вычислителей включает и классическую алгоритмику), но акценты меняются буквально на глазах: алгоритмика 2016 года и 2021 года существенно разная. Так, архитектура универсального алгоритма Transformer была опубликована в 2017 году впервые, https://arxiv.org/abs/1706.03762, её просто не существовало в 2015 году (году публикации книги Педро Домингоса), но сейчас она по факту основная архитектура для всех универсальных алгоритмов, большинство практических применений следует идеям этой архитектуры и её модификаций. Ограничения такой архитектуры тоже уже хорошо известны, поэтому активно идёт поиск новых и новых универсальных алгоритмов -- более универсальных, более скоростных, менее требовательных к памяти. В 2026 году будут уже вполне в ходу квантовые компьютеры, но есть и аналогово-фотонные идеи (https://scitechdaily.com/novel-nanophotonic-analog-processor-developed-for-high-performance-computing/), и множество других аппаратных идей, так что и алгоритмика будет для них другой: сложность алгоритмов существенно зависит от физики вычислителя, что трудно для одного вычислителя, то нетрудно и быстро для другого.

Компьютерные вычисления и человеческое мышление одинаковы в том смысле, что это вычисления. Физику нашего "мокрого вычислителя" в голове мы тоже ведь дополняем "ускорителями" в виде разных компьютеров, так что они не только одинаковы, но и по большей части неразделимы. Весь этот наш подход "образования для образованных" через предобучение универсального интеллекта на основе интеллект-стека из фундаментальных трансдисциплин -- это такой же сдвиг от человека как "опытного" в части владения многими-многими прикладными специализированными алгоритмами решения отдельных прикладных задач к "умному", который способен справиться с самыми разными проблемами при помощи своего универсального интеллекта. Хотя по классификации Chollet -- ещё не универсального для всех классов проблем во вселенной, но всё-таки уже "экстремального" интеллекта, в отличие от текущего компьютерного интеллекта. Ход тот же самый, что и в современной алгоритмике: один и тот же универсальный аппроксиматор, задействуемый для решения самых разных проблем.

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

В интеллект-стеке нужна алгоритмика как мыслительная практика рассуждений о вычислениях/мышлении в той части, как рационально расходовать свой человеческий вычислительный ресурс, а также ресурс вычислительной техники. Мышление людей дорого, мышление компьютеров тоже дорого. Через некоторое время окажется, что самые дорогие, самые умные люди озадачивают самые дорогие компьютеры (и озадачить эти компьютеры помогают не менее дорогие компьютеры!), и хорошо бы, чтобы эти люди понимали, что способ вычисления/алгоритм имеет значение!
2021 год

Моделирование/программирование/онтологизирование/документирование-в-большом: лаптем или coda.io?

Мой пост про наш фронтир в компьютерной революции (https://ailev.livejournal.com/1577769.html) мало кто понял, но это нормально. Мы ж там про то, как компьютерная революция вдруг начала помогать директорам по развитию в крупных фирмах. И тут появились программисты, которые сказали, что их текущих проблем это не решает. Да, компьютерная революция в том и состоит, что решается проблема превращения обычного человека в модельера! Компьютер разворачивается лицом к людям, а не к программистам!

Эта критика неинтересна, аргументы и тезисы ровно те, которые звучали лет десять-двадцать назад, когда я активно интересовался программистской частью задачи, инструментарием моделирования -- но не очень подробно копал в саму практику моделирования, поддерживаемую инструментарием. Моделирование aka познание aka исследование тоже ведь практика, мы берём её SoTA, документируем (ага, познаём познание, размышляем о мышлении) и оформляем дальше в виде учебных курсов. А дальше нам нужен инструментарий, чтобы это всё получило компьютерную поддержку. И вот тут приходит помощь со стороны вдруг побежавшей компьютерной революции: сред моделирования и AI.

Мне нравится вот это про критический рационализм (с неявным учётом праксиологии через "It’s good to choose what to work on at any given time. We don’t have time to work on everything", https://twitter.com/reasonisfun/status/975357650752933888. Вычисления дороги, думайте над тем, о чём думать -- планируйте время своей работы, занимайтесь важным, то есть не отвечайте на любую критику, а только на интересную! И помним, что понятие "интереса" и "любопытства" вполне себе формализуется, в эволюционной эпистемологии, критическом рационализме, да и в representations learning это не просто бытовое слово. А дальше -- интересностей много, а твои ресурсы конечны, вот и планируй!):
-- Criticism helps solve your problems
-- No need to respond to all criticism
-- Criticism can highlight interesting problems
-- You’re not required to take on these problems
-- Listen to criticism only when it’s interesting.

Тем временем coda.io получила инвестиции раунда D в размере $100 млн (оценка $1.4 млрд) и говорит, что за эти деньги переработает редактор и попробует привнести в экосистему мастеров ещё и написание программ: https://coda.io/@coda/all-in-on-all-in-one-docs. “Our viewpoint is that the lines between the different document formats are artificial and that anyone can make a doc as powerful as an app,” says Shishir Mehrotra, Coda’s cofounder and CEO (https://www.forbes.com/sites/rashishrivastava/2021/07/08/all-in-one-doc-startup-coda-reaches-14-billion-valuation-in-100-million-raise-from-a-major-pension-fund/ ). Если IDE для обычных языков (я считаю фронтиром там разные варианты notebooks, которые позволяют exploratory programming), а для электронных таблиц (так это раньше называлось) среды типа coda.io склеятся, причём с учётом многозадачности и многопользовательскости (раньше называлось "операционная система"), то это будет чудесно. Это среда редактирования_представлений/вёрстки_описаний/моделирования/программирования/онтологизирования (это всё одно!), которая даёт foundational ontology. А мы туда привносим системную upper ontology и идею её нестрогости как priors для платформенного вычислителя. И показываем, как использовать для поддержки развития предприятия, то есть показываем прикладное значение. Так что критики пусть говорят расхожие соображения типа "это ненастоящий искусственный интеллект" или "это ненастоящее программирование" (вот что на такую критику отвечать?), а мы делом займёмся. Критики решают проблемы предыдущего поколения предыдущими средствами, а мы будем решать проблемы текущего поколения текущими средствами. Они (в силу другой онтологии, то есть другого выделения фигур из фона, других объектов внимания) невидимы через онтологические фильтры прошлых поколений знания. Так что сначала покажем результаты, а потом будем отвечать на вопросы "как вы это сделали". Это более продуктивно. В чём ещё фишка? В модели coda.io каждый наш выпускник становится "мейкером", который разрабатывает для предприятия "документы". С нашей стороны -- ничем не отличается от типовой работы "опытных людей" (типа вот таких работ https://coda.io/@stinger/pmm-hub-template, тысячи их, типовые шаблоны дашбордов для самых расхожих ролей в предприятии), за исключением того, что предлагается мета-модель под управлением нашей мета-мета-модели, нашей upper ontology. И это гарантирует, что дальше работа идёт с реально важным в проекте, а не первым, что пришло в голову. Что в ходе работы придётся задумываться о причинно-следственных связях, когда будут заполняться все эти документы, а не просто это формы для удобной раскладки по полочкам того, что и так ясно-понятно. У нас технология усиления интеллекта для архитекторов предприятия и управляющих изменениями, а не технология использования прикладной практики. Сотрудники же потом используют прикладную практику, готовые документы. Секретный соус в том, как мы получаем эти документы!

В coda используют довольно специфичный язык (например, существенно опираются на понятие ritual, а про "документ", который "приложение" я уж молчу. И люди, которые кодят тамошние документы -- мейкеры). Надо будет специально поразбираться с тамошней онтологией, что там за практики в их экосистеме (упор прошлой недели был на персональных практиках, а вообще они ориентированы на компании). Записал в todo себе строчку про разбирательство. Это всё из middle ontology какой-то деятельности (хотя не удивлюсь, если там и об upper ontology думают), хотя на нижнем уровне там вполне себе местнопридуманный язык программирования ("язык формул", экселевский заход). Вперёд вырываются те, кто предлагает удачную upper ontology для описания проблем предметной области. Вольфрам с вольфрам языком, coda.io с языком формул. Есть внятное описание приложений и способа жизни с этими приложениями -- всё взлетает. Нету -- и не взлетает. Jensen Huang замечал: "чтобы иметь деньги, нужно существенно сузить сферу приложения" (это когда он говорил, что абсолютно недостаточно предложить миру GPU общего назначения. Нужно предлагать что-то более специальное, типа "GPU для автомобилей" или "GPU для обработки медицинских данных", и даже не GPU, а специализированные компьютеры вместе с софтом, чтобы уж никаких сомнений в специализированности!).

Скажем, система, которая копировала бы coda в части общего подхода (хороший редактор для встречающихся в корпоративной практике структурированных и неструктурированных данных и API для липкости к корпоративному айти-пейзажу), а языком бы имела Julia (это ж фронтир языка) могла бы иметь шанс на успех для data scientists. Но Julia это не язык для low code. Так что там ещё нужно что-то типа майкрософтовского голосового интерфейса к автоматизации, порождение кода из словесных запросов на естественном языке. И как у Вольфрама -- готовые обширные библиотеки, дающие не самые оптимальные, но работающие "из коробки" и согласованные друг с другом по интерфейсам типовые решения. Тут native Julia была бы более чем хороша. Лет двадцать назад меня грели идеи примерно такого сорта, я бы непременно затеял стартап на эту тему. Но не сегодня.

Сегодня я просто продолжу заниматься тем, чем и занимаюсь: буду делать людей умнее, но на другом уровне интеллект-стека. Доработаю SoTA upper ontology в классическом понимании этой upper ontology (ага, начиная с "возможных миров"), как-то покажу, как её двигать в middle ontology (деятельностные кругозоры, тоже вполне себе классическое понимание), доведу до изложения в виде учебных курсов и покажу, как использовать с SoTA версиями тех айтишных систем, которые уже вышли в production, а хоть и coda.io. Notion.so тут тоже сойдёт, и даже флипчарт с фломастером сойдёт, хотя они будут хуже coda.io. Наш продукт (я ж не один работаю!) -- это мастерство задействовать в качестве персонального и/или корпоративного экзокортекса всё что угодно, и при этом рационально понимать, что из этого "что угодно" лучше, а что хуже, и для каких именно целей.

Смею заверить, ответы на вопросы "а чем хуже notion или airtable или Google table" есть, это ж первый вопрос, который людям в голову приходит! Если такой вопрос у вас есть, то вы ещё не в теме. Приходите, когда этого вопроса у вас уже не будет. Но и не удивляйтесь, когда выяснится, что coda.io -- это только одно из возможных решений. Если вам нужно копать, то можно и лопатой, и экскаватором, и иногда даже ложкой. Главное, чтобы не голыми руками, и не в одиночку. Вот мы так же относимся к моделированию/программированию/онтологизированию/документированию-в-большом. А лаптем это делать или coda.io -- это уже неважно. Хотя постойте...

Ссылок опять не даю. У меня десяток лет назад было много постов про всё это программирование-в-большом. А пару лет назад и про мышление письмом/моделированием (и, конечно, программированием). И там более чем достаточно всё расписано. Сейчас просто все отдельные части этих рассказов, наконец, собраны вместе и работают даже не у нас, а у наших выпускников. Ровно как обсуждал Алан Кей: без излишней сложности, разворачивание оказывается дешёвым и быстрым, а применение развёрнутого (управление вниманием в компании) -- эффективным. Мы рекомендуем подобные продукты для поддержки деятельности директоров по развитию. Особенно хорошо получается, когда директора по развитию (они могут называться и CIO, дело ж не в названии должности) сами моделируют/программируют, как начальники сейчас сами пишут в чат, а не диктуют секретарю-машинистке.
2021 год

Мы на фронтире компьютерной революции, лето 2021

Свежий пост про Smalltak и ещё не совершившуюся компьютерную революцию от Rafael Luque, https://osoco.es/thoughts/2020/06/notes-about-a-new-software-world/. Тамошнее предложение:
-- Help programmers immerse themselves in the domain model and avoid any kind of distractions by working permanently within a “pure” conceptual modelling environment. This conceptual environment must provide a whole view of a software system, including all necessary aspects of its function (behaviour), interaction (system integrations and user interactions) and data (structure).
-- Build a domain-aware runtime environment —for instance, a kind of domain-aware virtual machine— able to interpret any valid conceptual model. This runtime environment should enable very fast feedback loops based on our incomplete and still work-in-progress models.
-- Experiment with new media for working with dynamic and powerful representations to think and learn about our software systems.

Ну да, я ровно об этом всё время и говорю. Только автор тамошнего текста примерно в том месте, в котором я был, тоже внимательно рассматривая DDD и тот же Smalltalk десяток лет назад. Потом я десяток лет долбился в поиски правильного хост-языка для SysMoLan, но кандидатом был уже не Smalltalk, а Julia. Увы, был неправ!

Сейчас мы вроде как докопались до некоторого прорыва, наши выпускники курсов онтологики (нужна работа с типами!) и "Системного менеджмента и стратегирования 2021" (там задаётся три уровня метамоделирования работы с какой-то деятельностью) начали выдавать на-гора actionable architecture (или она же architecture as a code) аккуратной работой с типами в средах программирования относительно нового типа: production tools (notion.so, coda.io — тысячи их). Это помесь редактора текстов, базы данных (моделирование и типы тут), hypercard/dynabook, экселя и просто программирования (есть API в произвольные программы и конверторы внешних структур в отображаемые форматы). Мечта Кея реализована: программы в таких средах верстаются, хотя это и не "объекты". Это оказалось ровно тем упрощением программирования, которое принёс эксель и которое хвалил Алан Кей, но дальше это усложнение экселя и баз данных, вводящее их вёрстку. В какой-то мере это продолжение линии МикроКалька (тоже была помесь редактора текстов с табличным процессором, проект заглох, ибо началась перестройка и все разработчики разбежались по разным странам и разным другим работам).

Прорыв характеризовался не одним, а несколькими разными моментами:
— основное моделирование ведётся не на уровне жёстко формального языка, формализм "как в базах данных" и меньше, "как в просто текстах". Вот это была засада: нужно было разобраться с языками архитектурного моделирования, и там отказаться от мета-мета-модели (сами они для мета-моделирования, это ж архитектура, она "в типах") и от визуального представления в пользу эээ... "богатого" (где таблички и реляции, где гипертекст, где аутлайны, где вёрстка этого всего вместе). Год был потрачен на SysArchi, это был тупик. Мы начали советовать делать архитектуру "в таблицах" (на самом деле, "в вёрстке разных представлений", в productivity tools вместо визуальных редакторов).
— рулить DDD нужно, имея в голове не только foundational ontology (язык представления "объектов и отношений"), но upper ontology. И она должна быть в голове модельера, а не в моделере (то есть мета-мета-модели в моделере по факту нет, она не слишком формальна!). Тут можно ещё обсуждать, но все ходы с явным кодированием в архитектурном моделере мета-мета-модели, которые мне известны, проваливались, по причине сложности трёхуровневого (мета-мета-модель для мышления и деятельности, мета-модель для практики какой-то деятельности и модель проекта с его экземплярами).

Мы сделали:
— более-менее тщательное мета-мета-моделирование SoTA для описания деятельности (онтологика, системное мышление и системный менеджмент). И там выскочило много неожиданного. Мета-мета-модель оказалась более-менее компактной и универсальной. Дальше мы показали примеры, что с этой мета-мета-моделью делать, как использовать для моделирования предприятия.
— взяли среду моделирования типа того же coda.io и там верстали "документы" как шаблоны/мета-модели. Грубо говоря, типы заголовков тамошних табличек аннотированы типами мета-мета-модели. Это делают наши выпускники, "системные модельеры/архитекторы".
— не обученные всем этим премудростям "просто сотрудники предприятий" становятся прикладными модельерами конечных объектов/экземпляров — операционных моделей предприятий. Просто заполняют строчки в табличках, чекают радиобаттоны, если это не табличка, а чеклист, а факты прочекивания и заполнения порождают потом задачи в issue tracker (и там стандартное программирование workflow, которое давно уже low code).

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

Так что пока мы на фронтире компьютерной революции, которую Алан Кей понимал по факту как "компьютер помогает человеку думать", то есть компьютер становится реальным экзокортексом, усиливающим мышление:
— вёрстка программ, domain-aware environment и т.д.. Всё как в предложениях статьи, с которых начинается этот текст.
— понимание, что conceptual modeling не должно проходить на строгом конце спектра формальности мышления (правильный ход тут — это подумать над вопросом "а что такое типы в псевдокодах?"). Концептуальное моделирование -- это псевдомодель данных (звучит подозрительно, но я просто хочу сказать, что это не формальная модель данных, а что-то типа псевдокода для компьютерного кода: менее формальное описание, не имеющее строгого синтаксиса и с более-менее вольно трактуемой семантикой).

Счастье в том, что у нас уже в нескольких фирмах такое пошло в production, то есть это не просто слова. Вот пара примеров такого моделирования (просто, чтобы показать, что всё это существует. Но наши студенты берут это как руководство к действию и начали успешно повторять, так что примеров больше, но на видео попала только парочка):
-- https://www.youtube.com/watch?v=JlXeQxAkDf0 — тут моделирование требований и софтверной архитектуры
-- https://www.youtube.com/watch?v=KAQzn5GvMNw — тут моделирование архитектуры предприятия с выходом на управление оргизменениями и операционный менеджмент

Что можно таким образом моделировать? Наши выпускники пробуют так "верстательно моделировать":
— целевую систему, которую нужно изменять (обычно техническая система, но отнюдь не всегда)
— enabling system как изменяющую эту целевую систему (это предприятие, и часто даже цепочка предприятий)

А почему мы говорим, что это исполняемые модели, исполняемые архитектуры? Исполнительные устройства тут — люди и компьютеры вместе. Экзокортекс, плюс extended cognition (то есть кроме традиционного представления что компьютер работает только с вычислением, можно думать о "роботе" с вычислителем, датчиками и актуаторами. Например, стадион при таком подходе — это робот, засасывающий в себя 40тыс. человек и перерабатывающий их безрадостных за пару часов в радостных).

А как мы убеждаемся, что всё это работает? У Дойча есть замечание, что computer science это естественная наука о доказательствах (доказательства того, что физический вычислитель в лице человека, классического электронного или квантового или ещё какого нибудь корректно моделирует поведение какого-то класса виртуальных объектов), и положения этой науки, как и всех остальных естественных проходят экспериментальную проверку. Так и тут, у нас эксперименты на живых предприятиях. У нас есть доклады по результатам на видео, но поскольку они для понимания требуют знания мета-мета-модели (а она в момент моделирования в головах, в моделере только мета-модель в виде заголовков таблиц и имён аутлайнов, и модель в виде содержания таблиц и аутлайнов), то разобраться с этими видео могут только выпускники наших курсов. Но это ничего необычного: если не прошёл какой-то курс (высшей алгебры, например), то решения задач (по высшей алгебре, например) будет тебе недоступным — хотя для прошедших курс всё будет понятным. Тут ровно то же самое, "научная эзотерика".

И да, вычислители могут изготавливать другие вычислители, а описания могут описывать другие описания (в том числе могут быть описания описаний вычислителей). Это уж как обычно, информатика такая информатика. Всё весьма контринтуитивно, и быстро с наскоку моделировать обычно не получается.

В жизни это выглядит как наш выпускник становится директором по развитию (то есть ему нужно навести порядок в организации, а потом научить организацию делать что-то новое) и ему нужен мощный инструмент моделирования, да ещё и с исполняемой моделью. А поскольку мета-мета-модель к этому моменту известна, они берут и моделируют (knowledge acquisition с прикладными сотрудниками предприятия, у которых есть прикладные знания. То же DDD, только под управлением мета-мета-модели, а "программные структуры, отражающие сущности (в том числе и типы) предметной области" — "модельные структуры, отражающие сущности (включая типы) предметной области". Модели исполняемы компьютером (automation) или людьми (всё-таки у нас workflow, определяемый по классике: часть работ в каком-то плане работ делают люди, часть работ делают компьютеры. План работ может верстаться on-the-fly после каждого шага работ).

Насчёт проверки, так тут онтологические проверки прежде всего: вкус арбуза выясняется его поеданием в реальной жизни, а не вычитыванием его многочисленных описаний. А перед поеданием, конечно, многочисленные review под управлением мета-мета-модели (там спрятаны эвристики, которые обращают внимание на важные объекты, задают вопросы, от ответов на которые нельзя уклониться — начиная с "убедитесь, что у вас в руках настоящий арбуз, а не его картинка. Бумажные картинки арбузов удивительно невкусны, вкус будет только у real thing", этот тест на "физичность системы" с огромным трудом люди проходят, в том числе и программисты).

Формальной валидации нет, но это не недостаток. Формальной валидации нет и у псевдокода, но это ведь тоже не недостаток! Её нет и у других систем подобного класса, которые создаются не за несколько часов, а за несколько месяцев в аналогичных масштабах. Вот этот уход от формальной валидации и строгости языка был ключевым. Мы искали DSL системного моделирования в неправильном месте на шкале формальности. Потом можно думать, чтобы брать какие-то узкие места и проводить там дополнительную формализацию. Но этого навалом, не хватало средств работы на уровне исполняемого псевдокода, не хватало средств не слишком строгой концептуализации. Вот тут была дыра! Повторюсь: её заполняли визуальные архитектурные языки с убогими мета-мета-моделями, цена моделера от двух до десяти тыс. баксов за рабочее место.

Мета-мета-модель даёт средства обсуждения того, как из фона вниманием выделять фигуры, существенно влияющие на причинно-следственные отношения в деятельности. Дальше должно быть много-много страниц текста, которые объясняли бы, что такое деятельность и как она связана с прагматизмом и агентностью (не путать с прагматикой) и как её описывать, контрфактуальность в описаниях причинно-следственных отношений, почему важно учитывать системные уровни в описаниях и отдельно обсуждать трансдисциплины и интеллект и т.д.

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

И да, там столько всего оказалось связанного, что мы и сами не ожидали. Мы назвали это интеллект-стек. Ведущие практики его уровней: понятизация, собранность (mind and body control), онтология, логика, физика, информатика, познание, обучение, методология, праксиология, системное мышление, деятельностные кругозоры (инженерия, включая системную информатику и системное образование, менеджмент, включая инженерию предприятия, предпринимательство). Если вот это всё не слишком уложено в голове, то моделирование идёт плохо. Если хорошо уложено, то должность становится "директор по развитию" (название может, конечно, варьироваться, но смысл понятен), и работа — ровно вот это мета-моделирование на основе мета-метамодели, с оставлением прикладного моделирования сотрудникам предприятия (они заполняют таблички, получают тем самым модель предприятия, описание важных объектов, которые нужно отслеживать своим вниманием в предприятиях).

Только сейчас становится понятно, что же такое мы сделали. Это результат как минимум трёх моих длинных (по нескольку лет каждый) проектов:
-- PraxOS (мета-мета-модель предприятия и деятельности)
-- SysMoLan (системное моделирование, которое оказалось на "верстательном языке")
-- вычислительное мышление (создание нового курса информатики).

Ссылки на всё упомянутое не ставлю (все ходы записаны, этот пост просто обобщение ранее сказанного). Кто следит за этим блогом, тот всё и так поймёт. Кто не следит, тот пусть погуглит по моему блогу, в гугле нужно для этого к поисковым словам добавить site:ailev.livejournal.com

UPDATE: продолжение в https://ailev.livejournal.com/1578058.html
2021 год

Видео моего доклада "Большие предпринимательские программы: Дженсен Хуанг, Элон Маск и все-все-все"

Опубликовано видео моего доклада "Большие предпринимательские программы: Дженсен Хуанг, Элон Маск и все-все-все" на 16 Лебедевских чтениях 22 мая 2021: https://vimeo.com/553887675 (первый из трёх докладов на видео), слайды https://yadi.sk/i/6UCRvQq51ngj5Q

Это продолжение двух моих докладов "Предпринимательство: кейс NVIDIA" Часть 1 (2017, третий доклад в https://vimeo.com/218291695, слайды http://g-l-memorial.ice.ru/files/574351/levenchuk_case_nvidia_2017.pptx) и Часть 2 (2018, третий доклад в https://vimeo.com/270892198, слайды в http://g-l-memorial.ice.ru/files/745636/levenchuk_2018.pptx). Это всё также можно рассматривать как дополнительный материал примеров к курсу "Стратегирование 2021" https://system-school.ru/strategy хотя из-за недостатка времени на чтениях рассказано было даже не всё, что было упомянуто на слайдах.

Из относительно новых идей, которые я там упоминаю:
-- текущая "большая предпринимательская программа" состоит из принятия решений по проектам от $4 млрд. (строительство гигафабрики батарей или завода по выпуску микросхем, работы по космическому проекту, работы по созданию компьютерного чипа). Надо сосредоточиться и принять решение о трате денег.
-- эти деньги будут потрачены главным образом на разворачивание проектов в ICT (рынок еды и рынок ICT уже почти сравнялись в объёме, но рынок ICT будет расти и расти: мозгов мало не бывает)
-- предприниматель это и роль, и человек. Но если роль играет несколько человек, то возникает проблема финансирования реально рисковых проектов (если вероятность принятия рискового решения по проекту кем-то 1%, то выбор случайных человек в комитет из троих таких людей даст вероятность шанса финансирования уже не один на сто, а один на миллион. А предпринимательские проекты реально рисковы!)
-- большая цитата Jensen Huang из его интервью: как он видел будущее, которое было совсем неочевидно, и вкладывался в это ("каждый человек станет игроком в видеоигры" в 1993, "видеокарты важны на быстро растущем рынке AI" в 2011, "единицей вычислительной мощности сегодня является датацентр" в 2021 -- это было интуицией, и дважды эта интуиция оправдалась, посмотрим, что будет в этот раз)
-- две архистратегии роста на базе схемы сути системного подхода: прихват системных уровней целевой системы (как у NVIDIA -- деньги с прикладных уровней, подрыв контролируемых нижних уровней), прихват звеньев цепочки обеспечения (как у SpaceX, Tesla -- экономия на координации и достижении договорённостей)
-- преувеличенность роли и доли государства в частном успехе (пример SpaceX, где госденьги не являются ведущими, пример Huawei -- после всех санкций она до сих пор в прибыли, и выбрала стратегию прихвата уровней целевой системы).
-- главная помощь государства -- это "не мешай" (льготы это просто отказ от грабежа, это и есть "не мешай"), но это дико искажает рыночные сигналы. А прямое финансирование? Это распил, это обычно не помогает, пока не будет коммерческого проекта на растущем рынке.

Вот я докладываю:
2021 год

NVIDIA как поставщик вычислительной инфраструктуры, 2021

Сегодня Jensen Huang выступил с очередными анонсами на GTC 2021, https://youtu.be/eAn_oiZwUXA (с этой презентации только всё началось, там будет ещё 1500 докладов до конца недели, включая и квантовый компьютинг, и цифровых двойников, и "просто AI"). Ровно три года назад я написал первый текст "NVIDIA как поставщик вычислительной инфраструктуры", и там начинало было такое: "NVIDIA замахнулась на то, чтобы сделать компьютерную инфраструктуру для всех. "Если б я была царицей, я б для батюшки царя обеспечила бы все вычисления в мире". Пинки, сегодня мы будем заниматься тем же, что вчера -- завоёвывать мир!" -- https://ailev.livejournal.com/1416697.html. Это был тот самый год, когда NVIDIA объявила себя компанией компьютерной и софтверной, а не компанией, которая делает чипы. А дальше пошла работа системных инженеров:
-- чтобы связать множество GPU в большой вычислительный под/pod, нужно было добавить DPU (data processing unit), сетевой чип. Купили Mellanox и сделали BlueField. Вот я писал в октябре 2020, "DPU (data processing unit) BlueField-2 на 6млрд. транзисторах берёт на себя шифрование и передачу данных в компьютерных сетях, включая кластеры в датацентрах. Выяснилось, что на эту передачу данных уходит до 30% компьютерной мощности датацентра в текущей архитектуре. Вот с дорогих CPU и GPU эти 30% нагрузки уходят в специализированные более дешёвые чипы (один чип DTU берёт на себя нагрузку по пересылке данных с примерно 125 CPU кластера). Примером тут стал выпуск NVIDIA EGX A100 -- чипа A100 или другого с архитектурой Ampere и BlueField-2 на одной плате, вычислительная мощь и секьюрное скоростное сетевое соединение через 6 сетевых адаптеров -- https://www.nvidia.com/en-us/data-center/products/egx-converged-accelerator/. Это всё серединка. Что это означает? Вот фраза из пресс-релиза: "Вместо 10 000 серверов в одном месте будущие корпоративные ЦОД будут иметь один или несколько серверов в 10 000 различных локациях, включая офисные здания, фабрики, склады, вышки сотовой связи, школы, магазины и банки"".
-- и тогда же я отметил, что и на CPU есть претензии: NVIDIA хотела купить ещё и ARM, но ей вряд ли дадут. Хотя никаких отмен не было, сделка в процессе (но вопросы к ней, конечно, есть -- https://www.cnbc.com/2021/04/19/nvidia-takeover-of-arm-faces-uk-government-intervention.html).

CPU для датацентра с GPU и TPU
Фирму ARM NVIDIA пока не купила, он пока "полукуплена", но можно взять и лицензировать процессор. NVIDIA от планов по CPU не отказалась, и от планов купить ARM не отказалась. CPU текущей архитектуры от Intel и AMD плохо работают с памятью. И NVIDIA объявила о создании собственного CPU на базе энергоэффективного процессора ядра ARM и памяти LPDDR5, который снимает эту проблему. Это CPU Grace, названный в честь Grace Hopper -- https://en.wikipedia.org/wiki/Grace_Hopper. И помним, что Hopper -- это название следующей архитектуры GPU. Будет Grace Hopper, СPU+GPU, хорошая шутка!

Основное препятствие нынешних CPU и GPU в распараллеливании вычислений -- это низкая скорость работы с памятью. Поэтому в новом процессоре на базе нового ядра ARM NEOVERSE (планируется в 2023 году) на LDDPR5 расшивается прежде всего канал от памяти в GPU, на пути которого стоит CPU -- и там получают на Grace Hopper 2000Gb/sec (при нынешней архитектуре CPU x86 и DDR4 это 64Gb/sec), что даст x10 ускорение в дообучении нейросетки с 1 триллионом параметров, а именно с 1 месяца до 3 дней. А если речь идёт о 0.5T параметров, то вывод такой огромной нейросетки в части обработки естественного языка можно будет делать в реальном времени на одиночном GPU. Триллионная сетка в 2023 году -- это будет расхожий размерчик, максимальная обученная сетка в текущем году уже 1.6 триллионов параметров, https://arxiv.org/abs/2101.03961. Конечно, все эти оценки -- маркетинг-маркетинг, но какое-то представление о масштабах всё-таки дают.

Вот тут roadmap этих чипов, программа развития одного из отнюдь не самых нижних уровней технологического стека NVIDIA (помните "многоуровневую программу развития танцора" из учебника системного мышления? вот это как раз программа развития одного из уровней развития для датацентра, который выпускает NVIDIA):


Самое интересное начинается потом: системная инженерия в действии. Целевая система NVIDIA -- "датацентр вместе с системным программным обеспечением".

Монтаж суперкомпьютера (он же -- "датацентр", ибо на нём можно выполнять множество самых разных программ одновременно) Christofari на 6.7PFLOPS для Сбера занял у NVIDIA меньше месяца -- вот это и есть целевая система для NVIDIA. Вот текущий стек для такого :
-- много-много уровней микропроцессорной архитектуры (самая разная IP в чипах -- вычислительные ядра, маршрутизация данных, виртуализация и т.д.)
-- CPU Grace, GPU Hopper, DPU BlueField -- чипы/микропроцессоры. Тут даже не волнует, что каждый год выходит чип с новой архитектурой и на новом техпроцессе, и каждый раз объявляется x10 по энергоэффективности и производительности на этом уровне. Так, сегодня был объявлен DPU BlueField-3 как "первая 400Gb/s инфраструктура датацентра на чипе".
-- плата, которая объединяет все чипы и память. Скажем, сегодня объявлена плата (автомобильный одноплатный компьютер) Atlan с CPU+GPU+DPU -- его можно будет найти в модельном ряду автомобилей 2025 года (а сам этот компьютер выйдет в 2024 году, год на встраивание в автомобили). Не скоро, да -- но там будет производительность 1 POPS (1000 TOPS, сегодня Xavier имеет производительность 30TOPS, а в 2022 году выйдет Orin на 254TOPS).
-- мини-эвм из нескольких одноплатных компьютеров с общим термопакетом, механикой (конструктив рэка в серверную стойку) и общим выходом в сеть, это серия DGX.
-- SuperPOD из нескольких серверных стоек с рэками DGX.
-- ждём-с датацентра "под ключ" со многими SupePOD. В речи Дженсена Хуанга он подчёркивает, что современная единица вычислительной мощности -- это как раз датацентр. Пока он считает, что датацентр это просто часть SuperPOD (датацентр -- это когда безопасность всех от всех, это не просто компьютеры с линиями связи между ними), или даже часть строительного блока для SuperPOD, ибо у этих станций DGX мощь достаточная для ой как много чего, а безопасность и виртуализация идёт "из коробки" (и софт, и хард для этого имеются). Но уже в EDX линейке (DGX -- это исследовательские суперкомпьютеры-датацентры, а EDX -- линейка для корпоративных вычислений) становится очевидным, что датацентр в представлении NVIDIA более распределённый.
-- операционный софт. И речь идёт не только о DOCA как похожей на классические операционные системы прослойки контейнеризации и безопасности между прикладным софтом и железом, но и всяческих программах современного стека искусственного интеллекта (Megatron, TAO, Jarvis, и т.д. -- это ж не прикладной софт, это полный аналог "системного софта" для Software 2.0 -- и Дженсен пару раз в презентации это упомянул. Всякие "компиляторы ваших прикладных знаний-умений для использования в составе датацентра" -- это системный софт, и NVIDIA им вполне озабочена).

Захват мира ступенька за ступенькой, на каждой ступеньке своя команда инженеров, своя архитектура, свой язык, свои модели, свои цены, свои интерфейсы, свои практики разработки. С каждой ступеньки можно идти вверх самыми разными путями (это не столько "стек", сколько дерево корнем вверх), можно торговать самой платформой, а можно торговать продуктами на базе платформы -- на сколько хватит денег для разработки этих продуктов, ведь нужно профинансировать каждую команду инженеров на каждом уровне (и не одну команду: под каждую часть системы нужна команда, и ещё команда для всей системы, и так на каждом уровне продукта). И обеспечить управление конфигурацией и изменениями, всё ж непрерывно меняется в этом стеке чуть не ежедневно!

Продадут ли NVIDIA их чипы, основу их могущества? Продадут! Радостно продадут! Я помню, что инженеры NVIDIA на мой вопрос, не боятся ли они продавать чипы компьютерщикам из Cray, которые выпускают серверы на этих чипах, конкурирующие с DGX, отвечали, что фишка даже не в том, что они продадут прошлое поколение чипов (что правда), а сами будут поставлять DGX на новом поколении, недоступном для Cray. Их главный козырь был в том, что они сформировали термопакет так, что людям из Cray придётся сильно помучаться, чтобы повторить их достижение. Инженерия на каждом системном уровне -- настоящая, не делается никаких скидок инженерам при использовании новейших архитектур на нижних уровнях для их архитектурных решений на более высоких уровнях. Вся инженерия должна быть первосортной, на всех системных уровнях, иначе не это не инженерия! Конкуренция идёт на каждом уровне!

Компьютер для DGX SuperPOD обновили, там теперь блоки A100 с 80Gb памяти, и вывод для GPT-3 эта штука делает 16 раз за 1 секунду. Если брать строительный блок DGX station A100 (дексктопная комплектация A100, а не рэковая на 4 раза по 80G), то можно арендовать её через интернет по цене $9000 в месяц (или купить за $149тыс). Для небольшой лаборатории это уже может быть посильной платой, и это чудовищная вычислительная мощь по нынешним временам.

Почему NVIDIA идёт на относительно дешёвую аренду DGX station 320G HBM2e с шиной 8ТB/s с производительностью до 2.5petaFLOPS TF32 или даже 5petaOPS INT8? Заявляемый тезис: демократизация AI. Исследователи должны иметь возможность задёшево и быстро получить адекватную их потребностям вычислительную мощность. А потом они обучатся, некоторым из них придёт аппетит во время еды -- и они уболтают каких-нибудь боссов купить им если не SuperPOD, то хотя бы арендовать его мощности "в облаке". NVIDIA использует аппаратуру BlueField для того, чтобы превратить SuperPOD в "суперкомпьютер в облаках" -- там встроена виртуализация и инфраструктура безопасности, поэтому всё будет "в облаке", но безопасно без потерь производительности. NVIDIA DGX SuperPOD with NVIDIA BlueField. Конкуренция с фирмами, которые занимаются безопасностью? Нет, не конкуренция: вычислительная инфраструктура для них! А всё вместе? Software defined datacenter -- откусываете себе кусок вычислительной мощности и объявляете его датацентром, а сисадмином всего этого откушенного куска выступает софт DOCA. И ещё всё это кладётся в VMWare, и вся корпоративная инфраструктура AI оказывается в привычной среде, железо NVIDIA закрывается привычными корпоративным сисадминам интерфейсами.

Альтернативные технологические стеки
Поскольку в NVIDIA сидят системные инженеры, то этот стек может собираться совсем по-другому. Например, берём одноплатный компьютер Orin и делаем на его основе полную систему автономного вождения Hyperion 8 AV platform -- там и Orin (три штуки в комплекте, из них два для вычислений автономного вождения, а один для интерфейсов и развлечений), и радары, и лидары, и камеры, и софт для всего этого и даже запись всего материала с камер и датчиков как Ground truth (комплект предлагается прежде всего для проведения разработок в части обучения систем автопилотирования). А если не автомобиль, а что поменьше -- какой-нибудь робот? Отлично, и туда тоже, https://developer.nvidia.com/aerial-sdk, ещё и связь по 5G будет обеспечена: https://developer.nvidia.com/blog/new-real-time-smartnic-technology-5t-for-5g/ (сегодня было объявлено, что в эту технологию играют уже Fujitsu, Google Cloud, Mavenir, Radisys and Wind River. Впрочем, во всё сегодня объявленное уже кто-то играет из больших и серьёзных игроков). И оркестрация всего это комьютерного флота, управление зоопарком вычислительной мощности: софт для этого тоже есть. Отличие от других инициатив по 5G? Безопасность, защита всех приложений от всех: строится промышленная сеть.

А продадут ли просто GPU в чужие руки? И геймерам продадут, и майнерам, и в датацентры (облачный сервис AWS Graviton2 с GPU от NVIDIA появится во второй половине 2021 года, NVIDIA объявляет это как "easiest way to move Android gaming to the cloud").

Продадут ли не SuperPOD, а прямо суперкомпьютер? Продадут! На базе технологий NVIDIA и Hewlett Packard (у них берётся главным образом инфраструктура памяти) строится суперкомпьютер ALPS мощностью 20 exaFLOPS of AI (операции с плавающими формата, используемого в AI -- https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/). Всё, пошли экзафлопы -- и сразу десятками.

И это просто хардвер. А над этим огромное количество софта, чтобы не нужно было тратить время на оживление железа (весь этот софт уже неоднократно объявлялся -- там и Omniverse как виртуальный мир с шикарным рендерингом и физическим движком, и рекомендальная система общего назначения, и голосовой ассистент, и движок для ботов и много чего ещё. Анонсированы новые версии, как же без этого). Ах, и очередные новости про корпоративные облака на базе уже не DGX, а EGX (то есть рэков не для разработчиков AI, а более скромных по характеристикам).

NVIDIA как хороший кейс по системному мышлению, инженерии, предпринимательству
Какие уроки из этого можно извлечь? Для меня это всё хороший набор примеров системного мышления в его связи с инженерией (ну, инженерия тут очевидна) и предпринимательством (предпринимательская стратегия -- disruption/подрыв на нижних уровнях технологического стека, а потом бегом-бегом вверх по стеку "к прикладным деньгам", насколько позволяют деньги и время, с огромным уважением к системной архитектуре, жёсткая привязка работы всей фирмы к работе над чётко прочерченными системными уровнями продукта, переход от продуктов к сервисам). Собственно, все мои материалы о NVIDIA именно об этом: она показывает, как системное мышление перевести в деньги. Про менеджмент я молчу: всей этой быстроразвивающейся махиной нужно управлять, но нам мало известно про то, как управляется NVIDIA, учебного примера тут не сделаешь (хотя можно восхищаться, что такая фирма работает и поставляет продукцию, хотя и немножко нервно, как мы знаем по рынку видеокарт -- но кто ж тут с этими форсмажорами работает не нервно!).

Второй тут пример -- это SpaceX, но про сами технологии SpaceX мы знаем мало, кроме того, что "оно летает!". А вот про технологический стек NVIDIA мы знаем предостаточно (хотя тоже не так много -- но побольше, чем про StarShip и StarLink), и как учебный пример это более чистый случай.

А в чём тут пример предпринимательства? Вы должны взять безумную инженерную идею и вложиться настоящими безумными деньгами. Так, разработка NVIDIA Grace CPU оценивается в 10тыс. инженерных лет (понятно, что эту цифру можно долго обсуждать -- включили ли сюда годы работы инженеров, которые разрабатывали технологию очистки кремния, или таки речь идёт только о тех инженерах, которые разрабатывали именно архитектуру Grace, включены ли сюда работы только инженеров NVIDIA, или и все годы работы инженеров ARM, но опять-таки -- цифра указывает на масштабы). Стоит ли овчинка выделки? NVIDIA говорит, что Grace даёт x10 по производительности по сравнению с текущими компьютерами на базе GPU и процессоров x86 -- явно стоит овчинка выделки! В Grace задействована LPDDR5 подсистема памяти, которая даёт удвоенную скорость канала к памяти и x10 энергоэффективность по сравнению с DDR4. И всё это с выполнением обещания, что программироваться будет по-прежнему через интерфейс CUDA, "все ваши вложения в софт сохранятся". Нравится?! Конечно! Если вы предприниматель, то готовы вы вложить деньги на те самые 10тыс. инженерных лет зарплаты инженеров, их оборудования, испорченных образцов (это электроника!), вложить свои нервы на их бесчисленные опоздания и исправление неизбежных ошибок? Кстати, поставка ожидается в 2023 году. Готовы вложиться сейчас, а потом ожидать, что в 2023 году этот Grace будет расходиться как горячие пирожки, и окупит все эти вложения и даже даст прибыль? Вот люди в NVIDIA готовы. Это и есть пример технологического предпринимательства.

На чём основываются эти предположения? Тезис Sutton: компьютерный интеллект определяется прежде всего просто мощностью вычислителя, а не хитростью алгоритма. Поэтому хотите стать умней -- запасайтесь вычислительной мощностью, What Jensen giveth, Jürgen taketh away (https://ailev.livejournal.com/1419891.html). А поскольку один вычислительный узел обладает весьма ограниченной скоростью вычислений, нужно как-то распараллелить эти вычисления. Так что архитектурно параллелим внутри чипа, внутри платы, внутри рэка, внутри серверной стойки, внутри пода, внутри датацентра. Кто лучше распараллелил, тот и в дамках -- это и есть суть перехода от "закона Мура" к "закону Хуанга".

Дженсен Хуанг закончил красиво, подпишусь под каждым словом: "двадцать лет назад это было фантастикой, десять лет назад мы об этом мечтали, а сейчас мы в этом живём". Банальность, конечно, но если честно, то я и не мечтал в таком жить, и в фантастике не всё встречал. Там много чего ещё было, но я бы ещё про Omniverse отдельно заметил -- виртуальный мир с физическим движком для digital twins.

На картинке иконки знаменитых учёных и инженеров, имена которых присваиваются архитектурам процессоров NVIDIA (Grace Hopper там тоже есть. А рядом пролетающий мотылёк -- это ж именно она первая придумала термин computer bug, после того как нашла реального мотылька, мешавшего работе компьютера Mark II Aiken Relay Calculator, и она провела первый debug/отладку путём удаления этого мотылька):

У меня тоже есть маечка с такими иконками (только прошлых поколений процессоров NVIDIA). И я использую её по назначению: https://www.youtube.com/watch?v=i2vFwjFmF8Y (у меня, как заведено издревле, "после лекции -- танцы").
2021 год

lytdybr

В доме появился ещё один компьютер, полностью отданный студиозусу в личное пользование и поставленный в его комнату. Для памяти: типичный компьютер сегодняшнего дня (ценой 99тыс.руб.) это вот такое -- AMD Ryzen 7 3700X, MSI B550M Pro-VDH WiFi, 32Gb DDR4, 2TB 7200rpm и 240Gb m.2 SSD, NVIDIA GeForce GTX 1650 SUPER 4 ГБ, питание Chieftec GPC-600S на 600Вт при 80% КПД. И 43" 4К матовый LG 43UN700 за 51тыс.руб.. За первые же полдня пыхтения на нём студиозусом в учебном T-FLEX (требование СТАНКИНа) был нарисован болт с резьбой и сдана какая-то работа по дискретной математике.

Но поначалу оказалось, что интернета по факту нет (неустойчивый 1Mbps на родной антенне из набора поставки материнской платы -- компьютер встал в самой удалённой от роутера точке квартиры, через множество стен). Пришлось съездить на Савёловский рынок и разжиться антенной 8dBi за 1000руб. плюс добавить пять метров антенного кабеля. Прикрутить антенну к роутеру не удалось (не понял, как отвинчивать родные антенны от ASUS AC-1200, они там намертво приделаны), поэтому вынес новую антенну на кабеле поближе к роутеру и повыше (конструктив: прилепил скотчем к дверному косяку в другом конце комнаты). Итог: скорость 20Mbps из доступных в квартире входных 100Mbps. Считаю, что этого студиозусу на его мультфильмы хватит. Если не хватит, куплю антенну 12dBi (или даже поменяю роутер на более современный и с антеннами побольше).

Образование там по-прежнему дистантное, и когда станет очным и начнутся лабораторки -- неизвестно. Так и выучится рисовать что-то дома на компьютере, а затем сдавать на заводы в Китае, ибо ни одной железки за время обучения так и не увидит. Но это ерунда. Он же ещё не зависает с одногруппниками после занятий, не встречается с девушками и не делает ничего такого, чем обычно и славится студенчество. Никаких плохих или хороших компаний, гуляний, гостей, застолий. Меня это сильно беспокоит, и таких "вроде как студентов" много в этом году. Страшно им отдавать Землю, но придётся ведь! Я надеюсь, что этот чёртов карантин в какой-то момент кончится, и всё наладится, но на танцевальный фестиваль приезжал знаменитый испанский танцор и говорил, что у нас тут заповедник здравого смысла, который давно уже утерян в Европе. И это меня очень, очень настораживает. Человеческое безумие заразно, и это "всё наладится" может запросто затянуться на семьдесят лет всепланетного террора.
* * *
Некоторое время уже думаю, как отвечать на простой вроде вопрос: как именно мне удалось прожить много разных жизней. Я ведь абсолютно осознанно менял каждые 5-6 лет область своих занятий, и весь мой кругозор и опыт происходят от этого разнообразия. Я выучился на химика, потом программировал, занимался медицинской информатикой, развивал рынок ценных бумаг, реформировал электроэнергетику, атомную энергетику, развивал интернет, а сейчас строю альтернативное образование. А ещё диджеил, всяко танцевал и играл на всём, что хоть как-то звучит (в том числе в духовом оркестре военной кафедры на духовом теноре и саксофоне, а на военных сборах был ротным барабанщиком, хотя я сам больше клавишник и дома у меня до сих пор пара клавишных есть). Знал стенографию (активно использовал в университете), участвовал в соревнованиях по морзянке и был старшим оператором школьной радиостанции, а за последних пару десятков лет насмотрел много аниме и манги -- всё ж доступно в этих ваших интернетах! Можно ещё и ещё перечислять, чем я был занят -- и обычно не по одному году, а как раз лет по пять. Про личную жизнь я тут вообще умолчу, но и тут какой-то был эээ... разнообразный опыт. Вопрос был в том, как я двигался между всеми этими занятиями, как выскакивал из жизненной колеи и протаптывал новую дорожку в жизни?

Я помню, как принимал решение о том, чтобы перейти от занятий химией к программированию: я за три месяца военных сборов ни разу не вспомнил ни одной химической формулы, зато на разных клочках бумажки ставил себе и решал разные программистские задачи. В первый же день после возврата на гражданку я осознал этот факт и честно сказал себе: какой же я химик, если по факту мой интерес лежит в программировании? И через месяц приключений с поиском работы я уже работал в ВЦ РГУ, так и не проработав ни одного дня по специальности. А в 1987 году я сказал, что больше не буду кодировать, ибо ни разу уже не программист. И перестал кодировать. Или рынок ценных бумаг: в ходе работы над каким-то очередным законом в конце 1997 года стало ясно, что рынок ценных бумах меньше всего отражает истинное состояние производства (как я говорил, "рынок ценных бумаг отъехал от реального сектора и цены там меняются сами по себе, а производство живёт само по себе"). Инфраструктура защиты прав собственников начала работать на защиту прав госрейдеров. Зачем было этим заниматься, вкладываться в это гниение? И я плюнул слюной на все свои знания, наработки, связи и просто перестал. Так же "просто перестал" работать с госорганами в 2007 (когда загнулась административная реформа, практически не начавшись), хотя до этого был там более чем активен. Но вот как сформулировать этот общий принцип? "Резко уходил откуда-то, а втягивался куда-то исподволь и не спеша"?

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

Литература: как-то поддался на флешмоб с фактописательством в 2002 году, 19 лет назад -- https://ailev.livejournal.com/39932.html (но это, понятно, не про крупные повороты в жизни), плюс производственная (неполная!) биография до 2013 года (без последних восьми лет) вот тут: http://libertarium.ru/ailev.
* * *
Моё отношение к разным вещам лучше всего иногда выражают другие люди. Вот, на злобу дня:
-- моё отношение к памятнику Дзержинского отлично выражено Григорием Саповым (https://www.minds.com/newsfeed/1208444917961572352): "Идея с восстановлением памятника Дзержинскому в центре Москвы весьма своевременна и заслуживает всяческой поддержки. Это будет прекрасным примером и символом для российской молодежи. Член законспирированной экстремистской организации, успешно совершившей переворот против режима, который они считали неприемлемым, несправедливым и прогнившим. Организовавший затем беспощадный террор в отношении прежних хозяев жизни, всяких там высокопоставленных государственных служащих, священников, работников силовых структур, придворных лже_предпринимателей, разжиревших на казенных подрядах, да и всех, кто был против нового порядка вещей. То, что доктор прописал!".
-- моё отношение к Clubhouse лучше всего (хотя и нецензурно, поэтому не цитирую, но полностью согласен) дал Лео Каганов: https://www.facebook.com/leo.kaganov/posts/536147237360624. Перестаньте меня туда приглашать, пустое это.

Caipirinha appreciation society выложило подборку 15 лет карнавальных выпусков, слушаю и наслаждаюсь -- https://www.mixcloud.com/caipirinhasociety/cas-oldie-carnival-3/.

UPDATE: обсуждение в фейсбуке: https://www.facebook.com/ailevenchuk/posts/10220530735352433, в чате блога с https://t.me/ailev_blog_discussion/6481
2021 год

SuperGLUE таки был взят в 2020

Тест SuperGLUE уже был пройден нейросетками T5 от Google и DeBERTa от Майкрософт лучше, чем людьми (https://super.gluebenchmark.com/leaderboard):



Это, кстати, произошло ещё в прошлом году (за 12 часов до нового года): https://twitter.com/sleepinyourhat/status/1344382025986437122.

Опять придётся делать новый набор тестов на понимание языка, старые "трудные для машины" тесты оказались трудней для людей, чем для машин. Вот небольшой обзор состояния понимания естественного языка (NLP/NLU) в 2020 -- https://medium.com/towards-artificial-intelligence/mini-nlp-cypher-mini-year-review-7917e12fb2e5

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

SuperGLUE создали в начале 2019, потому что тест GLUE перестал казаться трудным. Ожидали, что он продержится лет пять-шесть. Хватило двух лет.


UPDATE: пост майкрософт, https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/, общие комментарии -- https://venturebeat.com/2021/01/06/ai-models-from-microsoft-and-google-already-surpass-human-performance-on-the-superglue-language-benchmark/
UPDATE: обсуждение в фейсбук -- https://www.facebook.com/ailevenchuk/posts/10220137563443381
2021 год

СТАНКИН: исторический заповедник 80-х годов прошлого века

Вот цитата из курса информатики для робототехников СТАНКИНА, первый курс, лекция номер четыре, октябрь 2020: "Системы малой ёмкости состоят из одного пластмассового диска, покрытого с двух сторон тонким слоем специального магнитного материала. Такие накопители называют дискетами (гибкими дисками). Дискеты легко помещаются и извлекаются из соответствующих устройств чтения и записи и их легко хранить. Дискеты используют для автономного хранения информации". А есть ли какие-то замечания в лекции, что дискеты остались в далёком прошлом? А дают ли знать, что вместо дискет пришло? Нет этого!

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

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

И инженерная графика у них с карандашом и готовальней на листах формата А3. Какие такие даже дискеты! Карандаши, ластики и угольники! И чертёжные рамочки, которые нужно заполнять от руки чертёжным шрифтом!

СТАНКИН -- это прямо какой-то исторический заповедник 80-х годов прошлого века, когда и карандашами все чертили, и дискеты вокруг этих карандашей были разбросаны, и всё писалось в прошитые тетрадки чернильными авторучками. Закончится их период дистантного ковидного образования, нужно будет сходить туда поглядеть: у них там за последние 30 лет мхом всё по пояс заросло, или уже по самые уши?

UPDATE: обсуждение в чате блога с https://t.me/ailev_blog_discussion/5413. Первый же коммент там: "Интересно, управляющим механизмом для их роботов будет служить машина Бэббиджа? Или, хехе, Тьюринга. С очень длинной лентой, замечательным оптомеханическим перцептроном и высококлассными карандашом и резинкой".

Обсуждение в фейсбуке: https://www.facebook.com/ailevenchuk/posts/10219963241885451
2021 год

Алгоритмика-2020

Алгоритмика -- это сердце информатики/вычислительного мышления. Алгоритмы изобретаются, их вычислимость проверяется экспериментально (ибо вычисляют их физические вычислители, а физика -- естественная наука, тем самым computer science тоже оказывается экспериментальной, "естественной" наукой).

Мой тезис в том, что алгоритмы многоуровневы, алгоритмика системна "из коробки" (мой заход 2016 года на системную информатику в https://ailev.livejournal.com/1272169.html, а самое свежее рассуждение недельной давности про нахождение в интеллект-стеке выше системного мышления -- https://ailev.livejournal.com/1544639.html, обсуждения курса вычислительного мышления идёт в чате https://t.me/comp_thinking).

Алгоритм -- функциональное (время работы) описание вычислителя. Система определяется по её функции. Вычислитель определяется по его алгоритму работы. Код или инф.модель харда -- это описание вычислителя (включая его поведение: вычисления), его можно документировать. Вычислитель -- воплощение системы, описанной алгоритмом. Вычислитель физичен! Так что алгоритм -- это описание какой-то физической машины-вычислителя (или описание логической машины, которая описывает работу какой-то другой логической машины, и так по цепочке, пока не доходим до машинного кода физического вычислителя).

Исторически развитие compute science рассматривалось как развитие алгоритмики: всё более и более кучерявые вычислители над сравнительно простыми данными. Потом жизнь резко изменилась:
-- в компьютерах медленно, но верно победила концепция RISC (споры на эту тему по факту утихли), и это даже не самый нижний уровень, ибо ниже идёт физика вычислений (а RISC это уже "программирование физики" в предположении, что она у нас классическая "кремниевая").
-- на среднем уровне победили простые алгоритмы обработки десятков тысяч плотно связанных таблиц в корпоративных базах данных (кучерявые реляционные и далее графовые модели данных)
-- на уровне, когда появляется слово "интеллект" (общий вычислитель, который можно настроить для разных типов задач) всерьёз рассматривается "горький урок Sutton" ровно про то же самое: все прорывы связаны с простыми алгоритмами, работающими над всё более сложными и объёмными структурами данных, просто этим алгоритмам в самом низу алгоритмического стека дают достаточную вычислительную мощь.

Развитие многоуровнево: на каком уровне сейчас развивается алгоритмика? Ответ: на всех.

1. Физика вычислителя.
-- Уже заговорили о "квантовом пузыре" (имеется ввиду инвестиционный пузырь), в прошлом году не очень уверенно, а сегодня уже уверенно: https://www.pcmag.com/news/quantum-computing-a-bubble-ready-to-burst. Квантовое превосходство (и тут политика: слово "превосходство"/supremacy некоторым намекает расовое превосходство белых над чёрными -- и хотят это слово заменить!) уже подтверждено, вот вчерашнее сообщение о "квантовом преимуществе" (таки заменили слово!): https://science.sciencemag.org/content/early/2020/12/02/science.abe8770, там преимущество в скорости квантового вычисления -- 10**14 (за 200 секунд работы квантового вычислителя было выполнено вычисление, которое требует 2.5млрд лет работы суперкомпьютера Fugaku). Алгоритмика никогда уже не будет прежней. И деньги в квантовый софт уже пошли, вот Zapata raises $38 million for quantum machine learning, https://venturebeat.com/2020/11/19/zapata-raises-38-million-for-quantum-machine-learning/
-- оптика тоже рулит, вот свежий декабрьский 2020 обзор по оптике в AI, https://www.nature.com/articles/s41586-020-2973-6 (увы, там paywall), но там просто вал новых работ. Скажем, кремниевый оптический передатчик на 100Gbps https://phys.org/news/2020-11-world-all-silicon-optical-transmitter-100gbps.html -- кремний вроде тот же (совместимый техпроцесс с CMOS), но физика другая.
-- и даже питание имеет свои новации, "анти-лазеры" уже доказано, что возможны: https://www.livescience.com/anti-laser-wireless-charging.html. The new anti-laser demonstrated in this experiment accounts for all that, and it receives scattered energy beamed around a space in an unpredictable pattern — still receiving 99.996% of the sent power. The formal term for the method they used is "coherent perfect absorption" (CPA). CPA uses one machine to send power across the room, and another (the "anti-laser") to suck it back up.

2. На уровне "железа" классических машин (это просто "реализация алгоритмов в железе"):
-- побеждает классическая архитектура с RISC, засилье wintel потихоньку заканчивается (например, https://www.zdnet.com/article/risc-v-the-linux-of-the-chip-world-is-starting-to-produce-technological-breakthroughs/ -- As just one example, a recent microprocessor design using RISC-V has a clock speed of 5 gigahertz, well above a recent, top-of-the-line Intel Xeon server chip, E7, running at 3.2 gigahertz. Yet the novel RISC-V chip burns just 1 watt of power at 1.1 volts, less than one percent of the power burned by the Intel Xeon. ... "It's kind of amazing," said David Patterson, a professor at the University of California at Berkeley who helped create RISC-V. "I think IBM mainframes have a 5-gigahertz product that's liquid-cooled, and takes 100 watts" to run).
-- GPU это "новый CPU", тут просто гонка (попытки угадать алгоритмы следующего поколения в AI, и подстроиться именно под них. Хотя NVIDIA делает ставку на то, что не только нейросетями будет живо человечество). Обсуждение железа для задач AI на русском ведётся в чате "железячников" в телеграме, https://t.me/hw_ml. Всякие заметки типа "Амазон сделал кастом чип для обучения нейросетей для своего облака" (декабрь 2020, https://venturebeat.com/2020/12/01/amazon-debuts-trainium-a-custom-chip-for-machine-learning-training-workloads/), скорее всего, будут там.
-- средства выражения алгоритмов (языки программирования): там после десятилетия застоя в нулевых годах наметилась тихая революция: Rust, Go, Julia. Тренд: высокий уровень абстракции при высокой скорости исполнения этих абстракций (в Julia это описывается как "проблема двух языков": чтобы писать быстро и высокоуровнево, как на Python, а исполнять на железе быстро, как на C". Интересно, что лет тридцать назад тренд был "поддержать язык железом" (типа LISP-машины и PROLOG-машины). А сейчас LLVM в компиляторах идёт как отдельный абстрагирующий слой от железа! То есть "железный вычислитель", далее LLVM-вычислитель, далее уже язык как вычислитель.
-- с базами данных идёт сдвиг к GPU ускорителям, "типовые алгоритмы должны уходить в железо": The global GPU Database market size is expected to gain market growth in the forecast period of 2020 to 2025, with a CAGR of 16.0% in the forecast period of 2020 to 2025 and will expected to reach USD 279 million by 2025, from USD 153.8 million in 2019. Это из https://www.orbisresearch.com/reports/index/global-gpu-database-market-2020-by-company-regions-type-and-application-forecast-to-2025, эти алгоритмы уходят в железо, что очень похоже на "мейнфреймы, команды которых микропрограммируются" (тоже несколько уровней вычислителей)
-- Intel не прекратила баловаться с нейроморфными архитектурами, вот https://venturebeat.com/2020/12/03/intel-showcases-neuromorphic-computing-innovations-at-labs-day/, Loihi solutions required 75 times less power than conventional mobile graphics cards without perceivable losses in performance. In fact, in a study accepted to the 2020 Conference on Robot Learning, the Rutgers team concluded that Loihi could learn tasks with 140 times lower energy consumption compared with a mobile graphics chip. Основная проблема как раз с алгоритмикой для этой архитектуры, и софтом с этой алгоритмикой. Но тут трудно говорить о "другой физике". Архитектура другая, но вот физика (пока в нейроморфной архитектуре не задействуют мемристоры) та же, что и у классики -- и там тоже два уровня, используется микропрограммирование (https://en.wikichip.org/wiki/intel/loihi).

3. На уровне "обычных алгоритмов" -- это предыдущая алгоритмика. Думать тут нужно о томах Кнута: алгоритмы сортировок последовательностей, генерации случайных чисел, обхода графов, удаления невидимых линий в трёхмерной графике и т.д.. Тут полно результатов, только они сегодня не так интересны. Например, Гугль сказал, что его квантовый компьютер решает за 200 секунд задачу, которую суперкомпьютер IBM решает за 10тыс. лет. IBM предложила новый алгоритм, и он решает на суперкомпьютере эту задачу за 2.5 дня (https://www.ibm.com/blogs/research/2019/10/on-quantum-supremacy/). Но эти алгоритмы мало кого волнуют сегодня, это стало уделом узких спецов -- знание алгоритмики сегодня идёт в плюс программистам, но по большому счёту оно уже не считается фронтирным, рок-н-ролл ушёл в другие места. Да, кого-то ещё может взволновать крошечное (после 44 лет исследований!) улучшение алгоритма нахождения кратчайшего пути коммивояжёра -- https://www.quantamagazine.org/computer-scientists-break-traveling-salesperson-record-20201008/, но по большому счёту такие достижения вдруг перестали считаться интересными.

4. А вот "универсальные алгоритмы" (варианты The Master Algorithm, как он описан у Pedro Domingos в книжке https://yadi.sk/i/TxIe5tc1SWekdQ) как раз очень бурно развиваются. Именно про них был горький урок Sutton, именно им нужно добавлять вычислительную мощь. Вот только некоторые из результатов этой "новейшей алгоритмики":
-- по факту замена алгоритмов свёрточных нейронных сетей алгритмами архитектруры работы с вниманием -- трансформерами, впрямую использовали эту архитектуру для работы с изображениями и получили SoTA: https://ai.googleblog.com/2020/12/transformers-for-image-recognition-at.html. Теперь и CNN, и RNN заменены на трансформеры, появившиеся в 2017 (и появилось много вариантов, типа Reformer, эффективный вариант от января 2020 -- https://ai.googleblog.com/2020/01/reformer-efficient-transformer.html)/
-- алгоритмический прорыв в алгоритмах сворачивания белков, AlphaFold, 50 лет стояла эта задача в биологии, и оказалась решена (существенно раньше, чем в любых прогнозах. Так же, как задача победы человека в игре Го), https://deepmind.com/blog/article/alphafold-a-solution-to-a-50-year-old-grand-challenge-in-biology
-- алгоритмический прорыв в решении уравнения Шрёдингера, https://syncedreview.com/2019/09/18/quantum-chemistry-breakthrough-deepmind-uses-neural-networks-to-tackle-schrodinger-equation/
-- алгоритм NVIDIA, сокращающий требуемый для видеоконференций трафик вдесятеро, https://syncedreview.com/2020/12/02/nvidia-neural-talking-head-synthesis-makes-video-conferencing-10x-more-bandwidth-efficient/
-- ... и этот поток нескончаем. Универсальные алгоритмы -- это универсальные аппроксиматоры. Если их научиться обучать, то можно решить множество самых разных задач (в том числе, конечно, инженерные расчёты, химические расчёты, физические расчёты и т.д.). Вот, например, обзор расчётов турбулентности методами машинного обучения: https://www.tu-ilmenau.de/fileadmin/media/tsm/papers/Schumacher2020_3.pdf. Но рассчитывать этими методами можно очень много чего, практически всё! Можно ли из этих расчётов потом вынуть математическую модель, "физическую модель"? Да, таких алгоритмов тоже полно, этим не занимаются только ленивые. Вот пример: https://arxiv.org/abs/2009.11500, Discovery of Governing Equations with Recursive Deep Neural Networks или https://arxiv.org/abs/2012.00428 по попыткам подбирать уравнения покомпактнее -- таких работ множество, "перевести данные в какие-то короткие формулы" скоро будет уделом стандартных библиотек. Я бы выделил вот эту работу: https://arxiv.org/abs/2011.11981, там уравнения в частных производных открываются генетическим алгоритмом из редких и зашумленных данных. Законы Кеплера легко открываются из данных, не нужно ждать сотни лет. Неполноприводное движение тоже обеспечивается сегодня выучиванием алгоритмов этого движения, а не программированием.

Мой пойнт в том, что алгоритмика многоуровнева и стремительно развивается. И пока непонятно, чему учить в алгоритмике
-- "простых людей" (алгоритмика в составе трансдисциплины вычислительного мышления -- мой интерес. Думаем об абстрактном "директоре стадиона", который должен уметь поддержать разговор со своими айтишниками на уровне более детальном, чем "сделайте мне красиво", тьфу, "вычислите мне что-нибудь, и подешевле"),
-- прикладных специалистов (инженеров, которым нужно делать инженерные расчёты. Или учёным, которым нужно "открывать законы природы"),
-- программистов (которых разных сортов уже столько, что не факт, что их нужно учить одной и той же алгоритмике -- скажем, спецов по квантовым компьютерам какой алгоритмике учить? А спецов в data science? А спецов в AI? Или они все уже не "программисты"?

И спросить не у кого. Такой момент в истории, когда никто ничего про алгоритмику в целом не знает. Как в притче о слоне и семи мудрецах, один видит в алгоритмике продолжение дела Кнута, другой дифференцируемое программирование (differentiable programming, https://ailev.livejournal.com/1464563.html), третий рассуждения про применимость теоретических работ Тьюринга к нейроморфным компьютерам на мемристорах и квантовым компьютерам (computer science -- естественная наука), и алгоритмика как-то теряется как цельная дисциплина. И даже непонятно, нужно ли стремиться компактифицировать знание об алгоритмике, сделать его более универсальным, или плюнуть и считать алгоритмику разъехавшейся по каким-то частным дисциплинам?

И это даже не всё вычислительное мышление. Кроме алгоритмики в вычислительном мышлении что-то должно быть сказано и про моделирование данных. Ибо без данных алгоритмы не бывают. А там тоже всё чудесато. Ибо алгоритмы и данные -- это две стороны одной медали, и не только в классической информатике. Графы знаний и коннективистские модели данных (скажем, language models как те же нейросети), моделирование данных в ходе DDD (domain-driven development) -- и вот уже и моделирование данных оказывается весьма бурно развивающимся. Хотя результаты этого моделирования, скорее всего, мы узнаем как "вот открыли ещё один тип алгоритма, который эффективно работает с вот этим видом данных" -- и новизна вида данных потухнет перед новизной алгоритма. Эту ситуацию с недооценкой моделирования данных в информатике тоже нужно исправлять. Есть чат "Типы в языках программирования, моделирования, представления знаний", https://t.me/typeslife, там 439 интересующихся. И поддержать какой-то осмысленный разговор на тему связи структур данных (Arrays, Linked Lists, Stacks, Queues, Maps & Hash Tables, Graphs, Trees самых разных видов, Disjoint Set Union и т.д.), типов данных (целое, строка, плавающее и т.д. -- активно развиваются сейчас плавающие для ускорения вычислений универсальных алгоритмов AI, тех же нейронных сетей), типов (они ж необязательно "данных"), баз данных (где "модель данных" уже звучит вполне знакомо), баз знаний/онтологий/графов знаний и т.д. -- там это не получается почему-то. Разговор сразу рассыпается, увы. Но будем проблемы решать по очереди. Пока решим, что делать с алгоритмикой.

UPDATE: обсуждение в чате блога с https://t.me/ailev_blog_discussion/5058, в чате по типам -- https://t.me/typeslife/7958
2021 год

Только одна из компьютерных физик: заказан цифровой компьютер с 0.01 секстиллиона операций в секунду

NVIDIA получила заказ на изготовление цифрового компьютера Leonardo вычислительной мощностью 0.2экзафлопс, если замерять в FP64, стоить он будет примерно €0.24 миллиарда, строиться начнёт в следующем году летом, а в 2022 году вступит в строй -- нынешний экзафлопс FP64 идёт по цене миллиарда долларов, https://www.hpcwire.com/2020/10/15/nvidia-and-eurohpc-team-for-four-supercomputers-including-massive-leonardo-system/.

Но если брать AI вычисления, то речь в Leonardo уже идёт о мощности в 10 экзафлопс (10 квинтиллионов, то есть 10**18 операций половинной точности в секунду) -- https://venturebeat.com/2020/10/15/nvidia-will-supply-hardware-for-leonardo-a-10-exaflop-supercomputer/. Мы уже привыкли к классическим цифровым компьютерам, и вроде как шла борьба за экзафлопс, но она плавно перешла в борьбу за зетафлопс (это уже 0.01зетта -- начинаем учить новый префикс, секстиллионы). Ещё можно поспорить, о каких флопсах говорится, https://medium.com/@moocaholic/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407 (самым популярным становится TF32, который подразумевает 19 бит в умножении, но 32 бита в сложении -- https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/, у Intel это FP19. Скорее всего, речь идёт именно о 10экзафлопс с именно такими плавающими -- 32 бита в памяти, в сложении, но 19 бит в умножении). Если вы ухитряетесь делать умножения на калькуляторе за одну секунду, то чтобы выполнить 10экзафлоп операций с этой скоростью вам нужно будет потратить 316887650000 лет (т.е. почти 17 миллиардов лет, Земле всего 4.5 миллиарда лет, нужно было бы работать вчетвером, чтобы управиться за время от зарождения Земли до настоящего времени вычислить с дикой скоростью одного умножения в секунду столько умножений, сколько их будет делать Leonardo всего за секунду. Там ведь примерно 14тыс. NVIDIA A100GPU, да ещё на водяном охлаждении! Невероятная мощьность).

Вот я писал про квинтиллионы операций в секунду (и желание иметь нейросетки с тера/триллионом параметров) в сентябре -- https://ailev.livejournal.com/1536283.html, вот про ускорение и перестройку в айтишном мире по состоянию на осень 2020 -- https://ailev.livejournal.com/1540648.html, тут лишь добавлю несколько штрихов.

Computer science это естественная наука, ответ на вопрос о том, что может быть вычислено, а что не может быть вычислено даётся теориями computer science, а работающие теории выбираются экспериментами, а не математически. Ужас в том, что в евклидовой геометрии сумма углов треугольника 180 градусов, но если реально замерить сумму углов треугольника вблизи Земли, то это будет (искривление пространства-времени большой массой!) 180,0000002 градуса, и если эту поправочку "из физики" не учитывать, то нельзя построить GPS. То же самое относится к любым другим объектам: математическая точка и физическая точка (особенности с учётом особенностей квантовой физики) это очень разные объекты. И математическое понятие вычисления и физическое вычисление -- это разные объекты. Так, математическое вычисление прежде всего даёт нам легко имитируемые аналоговыми цепями классического цифрового компьютера операции логики (и, или, не) с нулями и единицами. А теперь поменяем физику компьютера с цифрового на квантовый, где ровно вот эти операции делаются с огромным трудом, но зато какое-нибудь разложение на множители -- раз плюнуть. Что теперь с computer science? Можем мы быть уверенными в результатах вычислений квантовых компьютеров? А если это оптический компьютер (например, https://venturebeat.com/2020/06/03/lighton-researchers-explain-how-they-trained-an-ai-model-on-an-optical-co-processor/) -- то что именно он считает, и насколько мы должны быть уверенными, что он считает именно это? Кто это должен сказать: математики или физики? Кто должен сопоставить "математические треугольники" и "физические треугольники" для тамошних вычислений?

Чтобы было понятней: классический компьютер имеет алгоритмы, которые при добавлении одного разряда к разлагаемому на множители числу утраивают время вычисления. Время вычисления растёт в геометрической прогрессии. Рекорд прошлого года -- 240 десятичных разрядов, и речь идёт о примерно четырёх тысячах лет работы одного компьютерного ядра (ну, или четырёх годах работы тысячи компьютерных ядер), https://listserv.nodak.edu/cgi-bin/wa.exe?A2=NMBRTHRY;fd743373.1912. Квантовый алгоритм Шора 250-значное число раскладывает на множители лишь за несколько тысяч операций, то есть практически мгновенно. Но этот алгоритм раскидывает вычисления по примерно 10**500 вселенных в мультиверсе (интерпретация Эверетта для квантовой механики -- самая понятная в части объяснений происходящего), собирая результаты этих вычислений через механизм интерференции. Во всей вселенной существует всего около 10**80 атомов, что существенно меньше по сравнению с 10**500. Для квантовых компьютеров таким образом открыты такие задачи, которые классические цифровые компьютеры вообще не могут решить. Это физика, математика тут отдыхает.

А есть ли квантовые алгоритмы обучения нейронных сетей? Да, есть. И вы попадаете в другой мир, где трудно вычислить 2*2, но легко вычислить разложение на множители 250-значного числа. Можно начинать computer science сначала, и мир ждёт квантового Дональда Кнута (https://en.wikipedia.org/wiki/Donald_Knuth): квантовые алгоритмики в новом мире будут самыми главными (как и в классическом IT "просто алгоритмики"), чтобы потом точно так же отойти в тень: алгоритмики (ну, или алгоритмисты, уж кому как нравится) всё-таки ближе к кодерам, а вот программисты, приходящие им на смену больше озабочены вопросами "зачем" и "почему", нежели "как", они больше инженеры, а не computer scientists. Но без знания алгоритмики, то есть что можно, а чего нельзя просить у компьютера -- классического, квантового, нейроморфного, оптического, мемристорного -- software engineering времени мультипарадигмальной компьютерной физики не взлетит.

А поскольку компьютеры по факту будут (как и люди!) во всех проектах, то компьютерный кругозор должен быть у всех -- software engineering как специализация systems engineering должна присутствовать в образовании. И базироваться должна на естественной науке computer science, а не на чистой математике.

Квантовая и оптическая революции в вычислениях уже начались, через пяток лет вычислительный пейзаж будет абсолютно другим: я считаю, что в этих областях экспоненты работают, так что всё будет дешёвым -- и быстро. Проблема будет только в том, чтобы люди изобрели killer application (за этим не заржавеет) и дальше появилось достаточное число людей, чтобы с этим работать.

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

No free lunch theorem можно переформулировать с математической постановки задачи (нет универсально хорошего алгоритма для оптимизации/обучения во всех классах задач) на физическую (нет универсально хорошего физического вычислителя для всех классов задач).

Computer science нужно переписывать, она перестаёт быть универсальной дисциплиной: computers оказываются более чем разными физически, и математики для них тоже оказываются разными! И только эксперимент даёт ответ: можем ли мы сопоставить с достаточной степенью надёжности эти разные математики этим разным компьютерным физикам. Это идёт физическая революция в computer science, революция физического разнообразия вычислительной мощности: для разных алгоритмов будем использовать разные физики в компьютерах, что трудно для одной физики -- раз плюнуть для другой, и наоборот.

И это, заметим, никак не отменяет тезис Alan Key: The Computer Revolution Hasn't Happened Yet -- https://ailev.livejournal.com/469995.html (мой текст ещё 2007 года с пересказом идей Алана от 2004 года) и более жёсткие формулировки в тексте 2017 года (https://ailev.livejournal.com/1363194.html): компьютер удивительный музыкальный инструмент, на котором люди не играют удивительную музыку, а пищат и шумят (грубо говоря, используют компьютер как микроскоп, которым заколачивают гвозди -- и ситуация с этим всё печальней и печальней). Даже плохие сегодняшние компьютеры не используются по назначению, на них никто не учится быть умнее, на них учатся быть глупее. И тут дело не в компьютерах, а в людях: не пианино виновато, что на нём играют "Чижика" одним пальцем вместо Шопена. Компьютерная революция будет не в тот момент, когда компьютер сумеет автоматизировать что-то ещё (разгрузит человека), а в тот момент, когда наоборот, компьютер сможет быть использован для того, чтобы человек смог выполнять более сложные задачки. Ну, типа компьютер из лестницы, ведущей мозг вниз, станет лестницей, ведущей мозг вверх. Конечно, для этого нужно будет дополнительно учиться, как учатся играть на скрипке (и тут я не могу не напомнить "Никто не хочет учиться играть на XYZ" -- http://ailev.livejournal.com/1158826.html, рынок такое не оплачивает). Но для этого нужно поменять всю систему образования, а для этого нужно осознать, что происходит развал цивилизации.

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

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10219608604139729