Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Болваны для искусственного интеллекта

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

Болваны -- это commodity, биржевой товар, особенностью которых является "стандартность потребительских свойств, взаимозаменяемость, хранимость, транспортируемость, дробимость партий. Конкретные экземпляры таких товаров являются легко взаимозаменяемыми (или качественно однородными) и практически не имеет значения, кто, где и как их произвёл (нефть, бумага, молоко, медь и т.д.)". Это я шпарю прямо по статье в википедии -- https://ru.wikipedia.org/wiki/Биржевой_товар

Конечно, я немного передёргиваю. И нефть бывает разной, и медь, и тем более болваны для искусственного интеллекта. И необязательно речь идёт о товарах, потому как интеллект может существовать и в виде сервиса -- в далёких облаках или даже прямо у вас в телефоне, но с сервисной оплатой за каждое использование. Уж если IBM ухитряется разблокировать дополнительные хардверные процессоры в своих mainframe на время подготовки годового отчёта, то подобные бизнес-модели использования болванов явно не загорами.

В любом случае интеллект общего вида в варианте полностью необученном и неотёсанном (болван, Маугли, tabula rasa) будет массов, похож друг на друга, и крайне дёшев. Болван -- это платформа когнитивной архитектуры общего вида, которая способна относительно легко и задёшево выучиться чему угодно -- примерно так же, как относительно легко и задёшево чему угодно может выучиться человек. Думать нужно как об очередной Wintel, iOS и Android, только исполняться на этой когнитивной платформе будут не столько традиционные "приложения", сколько компетенции, skills. И стоить дорого будут уже эти skills.

Да, я помню, что skills уже торгуются для personal assistants, и они просто умеют нажать какую-то кнопку в приложении, услышав голосовую команду. И отнюдь не все skills нуждаются сейчас в тех самых болванах. Лиха беда начало, всё это будет.

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

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

Системный подход (модульный/технологический стек aka платформенная диаграмма -- это же диаграмма системных уровней) позволяет хоть как-то структурировать новости разработчиков искусственного интеллекта. Что же там новенького с их "двумя прорывами в неделю"?

1. Аппаратура ускорителей искусственного интеллекта. Поскольку мы говорим тут о выводе и массовости, то нужно смотреть прежде всего не на архитектуры обучения, а архитектуры вывода. В этих архитектурах начинает рулить фиксированная арифметика, ибо она даёт лучшую удельную производительность на ватт. Так, в ускорителях NVIDIA с архитектурой Pascal P4 и P40 имеем 22 и 48 TOPS на int8 при 50Вт и 250Вт соответственно (http://www.nvidia.ru/object/tesla-p4-p40-20160913-ru.html). У Volta появились tensor core с параллелизацией операций "F16*F16+F32", и производительность вывода на tensor core оказывается на F16 выше, чем на int8 -- но если нужно энергопотребление, а оно становится ведущей характеристикой, то опять нужно думать о фиксированной точке. В NVIDIA Xavier, похоже, хотят получить на фиксированной точке 1 DL TOPS-per-Watt (http://www.anandtech.com/show/10714/nvidia-teases-xavier-a-highperformance-arm-soc).

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

NVIDIA это мейстрим, и от следующей за Volta архитектуры наверняка можно ждать много интересного. Хотя и от Volta архитектуры ещё не всё объявлено. Например, можно будет ожидать каких-нибудь V4 и V40 с int8 tensor core для вывода – если у P4 и P40 будут хорошие продажи.

Другое событие прошлой недели в этой области -- это попытка создать суперкомпьютер на нейроморфной архитектуре TrueNorth, которая ни для чего больше не пригодна, кроме deep learning, https://www-03.ibm.com/press/us/en/pressrelease/52657.wss. The system’s advanced pattern recognition and sensory processing power will be the equivalent of 64 million neurons and 16 billion synapses, while the processor component will consume the energy equivalent of a dim light bulb – a mere 10 watts to power.

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

Но так и хочется добавить ещё уровень технологического стека: нулевой, чтобы описывать происходящее с самими чипами! Помним, что прорывы идут снизу. И если текущая технология полупроводников одинаковая по сути для всех конкурентов, то есть и другие технологии -- например, фотонная. Вот эксперимент с нанофотонным процессором: http://news.mit.edu/2017/new-system-allows-optical-deep-learning-0612. Traditional computer architectures are not very efficient when it comes to the kinds of calculations needed for certain important neural-network tasks. Such tasks typically involve repeated multiplications of matrices, which can be very computationally intensive in conventional CPU or GPU chips. After years of research, the MIT team has come up with a way of performing these operations optically instead. “This chip, once you tune it, can carry out matrix multiplication with, in principle, zero energy, almost instantly,” Soljačić says. “We’ve demonstrated the crucial building blocks but not yet the full system.” To demonstrate the concept, the team set the programmable nanophotonic processor to implement a neural network that recognizes four basic vowel sounds. Even with this rudimentary system, they were able to achieve a 77 percent accuracy level, compared to about 90 percent for conventional systems. There are “no substantial obstacles” to scaling up the system for greater accuracy.

2. Драйверы интеллект-ускорителей. Драйверы аппаратуры называют сейчас "оптимизаторами", хотя я бы по-старинке назвал их "компиляторами" -- просто маркетинговые люди хотят заметить, что это "оптимизирующие компиляторы". Тренд тут -- оптимизирующие компиляторы для вывода (inference). Это отличается от "просто драйверов" (библиотек типа CUDA -- которые позволяют из высокоуровневых языков программирования обращаться к ускорительной аппаратуре напрямую).

События тут редкие, но уж не реже выхода новых чипов.

Например, недавно у вышел Apple фреймворк Metal 2, который добавил deep learning при доступе к GPU на iPhone -- https://developer.apple.com/metal/.

Из аборигенов этой ниши TensorRT 2.1, https://developer.nvidia.com/tensorrt. Это компилятор NVIDIA (раньше он назывался GIE, GPU Inference Engine), который умеет компилировать готовые модели, получаемые на платформе/фреймворке учебных алгоритмов Caffe, подробности глядеть в http://www.highload.ru/2016/abstracts/2428.html. И уже анонсирован TensorRT 3, который будет работать с ещё и с TensorFlow, и компилировать сетки на аппаратуру NVIDIA Volta.

Нейроморфные чипы были бы полной экзотикой, если бы для них не было таких же компиляторов. Так, для TrueNorth тоже есть компилятор -- https://arxiv.org/abs/1603.08270, более того, на языке corelets можно описать и другие нейроморфные архитектуры, для которых потом компилировать нейросетки. Так что упомянутый в предыдущем пункте суперкомпьютер на TrueNorth в плане его программирования на вывод отнюдь не экзотичен. И как поменяется рынок при выпуске следующего поколения TrueNorth, пока непонятно: программировать эти процессоры может оказаться с использованием компиляторов даже легче, чем ускорители на FPGA, для которых компиляторов на момент их выхода по определению не будет.

Внимание к ускорителям сейчас довольно большое, их часто включают внутрь библиотек. Так, в релизе TensorFlow 1.2 реализовано ускорение для процессоров Intel Xeon Phi. Графики там интересные, но как-то по сравнению с графиками для GPU они не впечатляют: https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture. Из этой же серии ускорение deep learning на графических процессорах Intel -- https://software.intel.com/en-us/articles/accelerating-deep-learning-inference-with-intel-processor-graphics. Это всё майские 2017 работы, Intel очень долго запрягает, этих работ можно было бы ожидать год или даже два назад. А пока ждём, пока там переварят Nervana, и сколько ещё ждать -- непонятно.

3. С языками программирования и вычислительными библиотеками всё тоже бодро, хотя этот уровень практически незаметен сегодня в развитии -- выход новых версий языков и вычислительных библиотек перестал быть событием, тут уже рутина. Из относительных новинок всё-таки отмечу Julia, у которой на прошлой неделе закончилась ежегодная конференция (через месяц-другой ждём видео на https://www.youtube.com/channel/UC9IuUwwE2xdjQUT_LMLONoA) и как раз сегодня вышел релиз 0.6 -- https://julialang.org/blog/2017/06/julia-0.6-release, With a sweeping overhaul of the type system and numerous improvements to syntax and to the standard library, 0.6.0 is the most transformative release yet.

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

4. Никаких неожиданностей на уровне фреймворков глубокого обучения нет. Сегодняшняя новость о том, что даже Sony выпустила свой open source deep learning framework (https://nnabla.org/) уже вроде как и не новость -- одним фреймворком больше, одни фрейворком меньше, даже если это и Sony. Интерфейс? Питон, классика жанра. И ещё С++, но там the documentation is not available so far. We will make it available soon. И да, плагины к разным аппаратным ускорителям.

Конечно, время от времени появляются библиотеки типа Tensor2Tensor от Гугля, эдакая нахлобучка над TensorFlow -- и жизнь немного меняется, ибо в них реализуются самые свежие идеи и алгоритмы: https://research.googleblog.com/2017/06/accelerating-deep-learning-research.html. И ещё Гугль выпустил TensorFlow 1.2 (https://github.com/tensorflow/tensorflow/blob/r1.2/RELEASE.md), то это уже никто и не обсуждал. У фреймворков релиз за релизом, все привыкли. Вот и Microsoft выпустил версию 2 своего фреймворка -- Microsoft Cognitive Toolkit (бывший CNTK), и там поддержана библиотека Keras -- https://blogs.microsoft.com/next/2017/06/01/microsoft-releases-open-source-toolkit-to-accelerate-deep-learning/.

Keras (https://keras.io/, питон) стремительно становится самостоятельной платформой для быстрого прототипирования приложений deep learning, а все остальные платформы рады и счастливы её поддержать в части быстрых вычислений -- Keras становится поверх TensorFlow, Microsoft Cognitive Toolkit и Theano, из которых берёт платформу computational library в моей диаграмме.

Интересное тут не столько фреймворки и их расслоение на "вычислительные библиотеки" и "алгоритмы машинного обучения в целом и deep learning в частности", сколько разного сорта разбирательства со свежими идеями по архитектурам deep learning алгоритмов.

Из интересных свежих идей тут SEP-Nets, которые компилируют архитектуры известных сеток, бинаризуя их и добиваясь при этом резкого уменьшения размера сети и ускорения вычислений -- https://arxiv.org/abs/1706.03912. Ещё одна июньская идея -- Self-Normaizing Neural Network -- https://arxiv.org/abs/1706.02515. Всё это про производительность и память: уже понятно, что сетка побольше будет сеткой получше, только работать с ней становится нереально долго. Поэтому решают проблему резким разгоном сеток: сжимают и разгоняют, а потом опять наращивают размеры -- а потом опять сжимают и разгоняют на очередном поколении архитектуры, и опять наращивают сложность.

Вот ещё один вариант разгона на уровне архитектуры нейронной сети: фейсбук на Caffe2 обучил ImageNet за один час на 256 GPU -- https://code.facebook.com/posts/260115687797006/accelerating-machine-learning-for-computer-vision/. Оно понятно, что 256 GPU это экзотика, но тут просто топчется тропинка к бОльшей параллельности. Using commodity hardware, our implementation achieves ∼90% scaling efficiency when moving from 8 to 256 GPUs. И главное, что для богатеньких компаний (типа того же фейсбука или Гугля) this system enables to train visual recognition models on internet-scale data with high efficiency. Размер одного GPU больше не является определяющим фактором в архитектуре глубокого обучения.

И тем не менее, на этом уровне всё уже совсем commodity -- это всё доступно как open source библиотеки, это всё доступно как сервисы уже в облаке, воспроизводится в любой лаборатории, приоритет у первооткрывателей тут в славе и почёте, денег тут не заработаешь, а конкуренты наверняка обгонят через пару недель. Тут никаких "мыслей", "вывода" как рассуждений, reasoning (а не как inference), ничего умного, никакого интеллекта, много статистики. Просто есть какая-то функция, и она аппроксимируется более или менее точно, с бОльшими или меньшими затратами вычислительных ресурсов -- и это проверяется на каких-то простых задачах с обкатанными датасетами (вот эта парочка в лидерах: CIFAR-10 и CIFAR-100, https://www.cs.toronto.edu/~kriz/cifar.html).

5. Самое интересное происходит с когнитивными архитектурами: когда простые учебные алгоритмы типа "нейронной сетки" нужно как-то организовать на решение множества самых разных задач. Это уже сложней -- не просто сложить из нейронов какой-то отдел "мозга", а сложить из "отделов мозга" (разных нейронных сетей, оптимизированных под разные задачи) какой-то более-менее универсальный "целый мозг".

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

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

Всех новостей тут не описать, и каждая новость удивительна. Вот только несколько из них:
-- работа майкрософтовцев с их 150 агентами, которых они научили играть в Ms. Pac-Man (более непредсказуемая версия Pac-Man). Агенты играли так хорошо после обучения с подкреплением, что выбили там максимум возможных очков, 999990 -- https://blogs.microsoft.com/next/2017/06/14/divide-conquer-microsoft-researchers-used-ai-master-ms-pac-man/#sm.0001mkk2m0193of62q8j23agjll66. Оказалось, что специализированные агенты, которые индивидуалисты и не учитывают существование других агентов, управляемые одним принимающим решение агентом работают лучше, чем агенты, которые ориентируются друг на друга.
-- возможность человека ставить задачу для обучающейся машинной системы, https://deepmind.com/blog/learning-through-human-feedback/. Алгоритм обучается самостоятельно, но человек указывает, какие из результатов обучения ему больше нравятся. In some cases, as little as 30 minutes of feedback from a non-expert is enough to train our system, including teaching it entirely new complex behaviours, such as how to make a simulated robot do backflips.In the Atari game Enduro, which involves steering a car to overtake a line of others and is very difficult to learn by the trial and error techniques of a traditional RL network, human feedback eventually allowed our system to achieve superhuman results. И хотя в этой работе есть множество недостатков, о которых честно говорится, она ведёт к возможности необученным людям ставить агентам цели их поведения в сложных мирах.
-- одна из самых замечательных работ по рассуждениям об отношениях: https://deepmind.com/blog/neural-approach-relational-reasoning/. Предложен новый тип алгоритмов для задач, где требуется считать, сравнивать и отвечать на вопросы о довольно простом мире геометрических трёхмерных объектов разной формы, фактуры и цвета. И вот результат: State-of-the-art results on CLEVR using standard visual question answering architectures are 68.5%, compared to 92.5% for humans. But using our RN-augmented network, we were able to show super-human performance of 95.5%.
-- о вот этой работе не писал только ленивый: робота научили торговаться, причём ухитрились сделать так, чтобы он торговался по-английски: https://arxiv.org/abs/1706.05125. Это всё фейсбук, читайте попсовую объяснялку в https://code.facebook.com/posts/1686672014972296/deal-or-no-deal-training-ai-bots-to-negotiate/. Interestingly, in the FAIR experiments, most people did not realize they were talking to a bot rather than another person — showing that the bots had learned to hold fluent conversations in English in this domain. The performance of FAIR’s best negotiation agent, which makes use of reinforcement learning and dialog rollouts, matched that of human negotiators. It achieved better deals about as often as worse deals, demonstrating that FAIR's bots not only can speak English but also think intelligently about what to say.
-- новый способ играть в игры с попиксельным вводом экрана (классическая задача с играми Atari): попытка опереться на понимание происходящего в игре, дать какие-то возможности генерализации: https://www.vicarious.com/general-game-playing-with-schema-networks.html. What is the nature of the internal representations that leads to human-like generalization and transfer of prior experience (Lake et al., 2016)? We believe our work on Schema Networks sheds light on parts of this question. The modularity and compositionality of Schema Networks allow for wider flexibility and can accommodate changes in tasks without having to relearn the representations.
-- ... этих работ море (я перечислил отнюдь не все интересные), и будет их только больше.

Получить человеческие результаты от компьютера становится во многих задачах всё проще и проще, но на разных когнитивных архитектурах. Болваны пока явно не commodity, не биржевой товар, они не стандартизированы, у них нет своего интерфейса. На этом уровне нет своего Keras, нет TensorFlow, нет CUDA -- никаких стандартных API, никаких стандартных библиотек. Всё пока "руками", всё уникально.

Но я настаиваю, что уже через короткое время количество начнёт переходить в качество, и соответствующая платформа появится сначала над какой-то из библиотек обучающихся алгоритмов, а потом станет универсальной для всех них (примерно так, как это произошло с Keras). А потом всё одно когнитивная архитектура будет коммодитизирована, станет "биржевым товаром", очередной дешёвой платформой в виде библиотеки и облачного API. Это и будет болван, готовый к разработке на его основе каких-то приложений. Не удивлюсь, если этот болван "из коробки" будет видеть, слышать и поддерживать диалог на общие темы. Это будет почти бесплатно. Дорого будет его обучить решать какой-то определённый нужный вам класс задач.

Единственное что, так это время от времени появляющиеся какие-то "миры" для тренировки таких болванов: https://blog.aqnichol.com/2017/06/11/why-im-remaking-openai-universe/, где переделывается OpenAI Universe, I just mentioned, it seems that OpenAI has internally abandoned Universe. I’m Remaking OpenAI Universe. И таких проектов создания "учебных миров" множество. Я когда-то придумал слово КуМир как "комплект учебных миров" (https://www.niisi.ru/kumir/index.htm), чтобы детки на этом классе софта группы Аттик тренировались программировать роботов-исполнителей в различных мирах. Вот тут тот же подход, только не детки тренируются в этих мирах обучать роботов-агентов. Комплекты учебных миров становятся отдельной платформой на уровне когнитивной архитектуры, это не "просто ещё один набор данных", это "просто ещё один мир". Вот ещё один вариант платформы по "созданию миров": план Comma ai завоевать рынок безшофёрных авто путём краудсорсинга данных -- https://medium.com/@comma_ai/our-road-to-self-driving-victory-603a9ed20204, и они имеют все шансы преуспеть.

Больше болванов хороших и разных, больше когнитивных архитектур, больше миров для их обучения (если уж нашего физического мира не хватает с его медленно текущим временем и редко встречающимися задачами)! Темп "два прорыва в неделю" в этой области интересней всего. Но не забываем, что лидеры на верхних технологических уровнях обычно меняются, когда происходят резкие изменения в платформах нижнего уровня. Судя по сегодняшней ситуации, сюрпризов можно ждать отовсюду, в любой момент, никто не уйдёт соскучившись.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 16 comments