перед ними задачи с использование нейронных сетей и методы машинного обучения. Библиотеки позволяют аккумулировать опыт и небольшими силами создавать серьезные работающие системы из готовых блоков. Почти все библиотеки относятся к открытому ПО, в числе наиболее популярных: OpenCV, TensorFlow, CUDA, YOLO, MATLAB, Keras, SimpleCV, BoofCV, CAFFE, OpenVINO и DeepFace, но ими список не ограничивается, поскольку по своим возможностям они заметно различаются, выбор зависит от решаемой задачи.
В подавляющим большинстве рейтингов лидирует библиотека OpenCV, что заслуживает особого внимания. Хотя она относится к открытым продуктам и она развивается силами большого числа добровольцев, но у нее, что случается нечасто, российские корни. История OpenCV с создания сотрудниками Саровским ВНИИЭФ, работавшими по контракту с Intel, Нижегородской программной технологической лаборатории (NSTL, Nizhny Software Technology Lab). Одним из ее основателей стал Валерий Федорович Курякин, первыми разработчиками были Вадим Писаревский и Виктор Ерухимов, а американский участник проекта Гари Брадски инициировал развите в виде свободно распространяемой продукта с открытым исходным кодом. В 2000 году библиотека получила название OpenCV. Дальнейший путь развития OpenCV был непрост, однако он привел к успеху, библиотека скачана более 20 млн раз и ее элементы использовались при разработке Android и iOS.
Проблема умного железа
Используя метафору «души и тела» в приложении к AI, можно сказать, что в CV – это проблема «души», она решается давно и успешно, но проблема «тела» остается далека от решения, несмотря на кажущееся благополучие, обеспечиваемое графическими процессорами GPU и собранными из них кластерами с рекордными показателями производительности, измеренной в петафлопах, то есть в единицах, не имеющих непосредственного отношения к нагрузке, создаваемой AI-приложениями. История специализированных аппаратных технологий для CV и вообще задач машинного обучения только начинается.
Приходится признать, что для такого класса задач используемые ныне GPU и намного реже специализированные микросхемы (ASCI) и матричные массивы (FPGA) служат тем, что по-английски называют stopgap measures, то есть средствами, обеспечивающими временное решение, не более того. О степени несовершенства можно судить по тому, что мозг потребляет порядка 40 ватт, а если бы удалось создать компьютер, моделирующий равное число нейронов современными технологиями, его мощность оценивалась бы тысячами мегаватт, но есть на 7–9 порядков больше. Поэтому нынешнее положение можно сравнить с тем, что было в первые годы существования компьютеров, когда в ход шли любые доступные радиодетали – лампы, транзисторы, конденсаторы, сопротивления, магнитные сердечники. Это происходило до семидесятых, до тех пор пока не появились интегральные микросхемы, а позже и микропроцессоры.
Проблема железа для CV заключается в том, что до сих пор нет процессоров, полностью соответствующих задачам моделирования. нейронных сетей. Фон-неймановские CPU были задуманы для расчетов, то есть для последовательного выполнения одной программы, хотя за десятилетия их научились искусственными приемами адаптировать к распараллеливанию, или, как сейчас чаще говорят, к работе в многопоточном режиме, более соответствующим требованиям машинного обучения. Однако CPU, имея относительно небольшое число (десятки) производительных ядер, остаются способными обрабатывать ограниченное количество мощных потоков. Ограниченность обычных CPU для задач CV и других задач, связанных с машинным обучением, была осознана давно, чтобы с ней справиться в ход идут не только графические, карты (GPU), аудиокарты, сигнальные процессоры, программируемые матрицы FPGA и многое другое. Успешнее других оказалось внедрение GPU, задуманные для задач трехмерного рендеринга они отличаются большим числом ядер, но эти ядра существенно меньше и проще, чем CPU. Так уж случилось, что GPU, рожденные для компьютерных игр, смогли обеспечить прорыв в AI. Сегодня огромные кластеры, собранные из игровых в прошлом процессоров, обеспечивают всю индустрию AI.
Но GPU являются паллиативом, если посмотреть на проблему шире, то надо признать, что аппаратные средства, поддерживающие CV, NLP и другие решения из области machine intelligence, являющейся подмножеством AI, должны быть рассчитаны на совершенно иную нагрузку, чем традиционные. Во-первых, в их основе должен быть приближенный компьютинг (approximate computing), дающий удовлетворительно точный, но не гарантированно точный результат. Именно так, неточно, работает человеческое мышление. Исследования показывают, что снижение точности на 5–10 % может понизить энергопотребление на два порядка. Во-вторых, обучение должно стать органической частью архитектуры, идея обучения на основе программируемой архитектуры похоже на своего рода оксюморон. Пока удовлетворение этих требований возможно только в идеале. Тем, кого интересует проблема соотношения аппаратного обеспечения и машинного обучения, будет интересно данное в марте 2020 интервью Яна Лекуна «На экзотическом железе трудно добиться успеха». В нем он раскрывает проблему соотношения аппаратного обеспечения и машинного обучения, делая упор на том, что неэффективно использование матричного умножения для выполнения операций свертки – основы конволюционных сетей CNN. На данный момент альтернативу GPU, поставляемых компанией Nvidia, составляют несколько процессоров. Наиболее известно среди них существующее с 2016 года семейство тензорных процессоров Google (Tensor Processing Unit, TPU), представляющих собой специализированную интегральную схему, предназначенную для поддержки библиотеки машинного обучения TensorFlow. Возможно, подходящим решением проблемы железа для CV станут графовые модели, где вершины представляют вероятностные характеристики данных, а ребра – корреляцию между этими свойствами. Этим путем идёт британская компания Graphcore, производящая процессоры Colossus MK2 IPU (Intelligence Processor Unit), название которого адресует к электронно-механическому компьютеру Colossus, испробованному во время Второй Мировой Войны в операции Ultra. Другой многообещающий стартап Cerebras (Головной мозг) выбрал для себя в качестве руководящей идею использования специализированных процессоров на разреженных матрицах. К тому же ее процессор CS-1 изготовлен по необычной технологии Wafer-Scale Engine (WSE), то есть масштабирование на всю подложку. Он занимает всю поверхность кремниевой пластины размером 215 x 215 миллиметров, состоит из более чем 1,2 триллиона транзисторов, собранных примерно в 400 000 ядер.
Особый интерес вызывает деятельность компании Tachyum, созданной выходцем из Словакии Радославом Даниляком. Здесь была разработана процессорная архитектура под названием Prodigy, что переводится как чудо или виртуоз, она представляет собой универсальный 64-ядерный процессор, объединяющий в себе качества CPU и GPU и при этом потребляющий на порядок меньше энергии. Процессор уже выпускается, на его основе в Словацком национальном суперкомпьютерном центре будет построен самый мощный в мире AI-компьютер. Этот проект должен стать центром кристаллизации общеевропейских исследований в области AI, он привлекает к себе и административные, и деловые, но, главное, академические ресурсы. Показательно, что техническим консультантом Tachyum является Стив Фарбер, один из двух разработчиков архитектуры ARM и участник проекта по созданию неизоморфного компьютера SpiNNaker, способного эмулировать мозг.
Что же касается возникшего было энтузиазма, вызванного созданием нейроморфных, то есть подобных мозгу компьютеров, то он постепенно угасает. Причина очевидна – то, что делается на основе полупроводников, плохо соотносится с живым мозгом, или, как его называют, wetware,