Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

Category:

Нижние уровни интеллект-стека как экспоненциальные технологии

Экспоненциальные технологии -- это которые при заданном уровне дешевеют вдвое (или около того) в год, https://michaelhaupt.com/exponential-technology-defined-374e2db882b0. Это же можно прочесть и наоборот -- которые увеличивают свои характеристики вдвое (или около того) в год.

Мой тезис в том, что ключевой момент в AI -- это его дешевизна. Переводчик уровня выпускника средней школы плох, но если он почти бесплатен, то им будут пользоваться. Переводы Гугля ругают, как и переводы школьника, но цифры говорят обратное: без него жизнь хуже, им пользуются -- им переводят 143 миллиарда слов в день, https://www.businessinsider.de/sundar-pichai-google-translate-143-billion-words-daily-2018-7. Неплохо для плохого переводчика? Если цена низкая, то и плохому продукту найдётся применение! А поскольку речь идёт об экспоненциальной технологии, то каждый год качество перевода будет существенно расти при той же относительной бесплатности. Это и есть подрыв. Disruptive innovations don’t catch on with mainstream customers until quality catches up to their standards. -- https://hbr.org/2015/12/what-is-disruptive-innovation.

На массовый рынок достижения теоретиков и инженеров искусственного интеллекта попадают, но не немедленно. Вот тут можно найти данные по state-of-the-art в обработке текстов: https://github.com/sebastianruder/NLP-progress, а перевод -- https://github.com/sebastianruder/NLP-progress/blob/master/machine_translation.md. В некоторых категориях текстов и парах языков качество перевода уже сравнимо с человеческим. Как сделать так, чтобы все эти и многие другие "лабораторные" достижения в искусственном интеллекте а) получались побыстрее, чем сегодня, и б) попадали из лабораторий на рынок быстрее? Вот так:

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

-- добавить вычислительной мощности. Введена метрика petaflops-day, https://blog.openai.com/ai-and-compute/. Появилась легенда, что прорывы в AI доступны только огромным компаниям. Эти компании просто увеличивают число операций, задействованных в их экспериментах. Эксперименты становятся золотыми: since 2012, the amount of compute used in the largest AI training runs has been increasing exponentially with a 3.5 month-doubling time (by comparison, Moore’s Law had an 18-month doubling period). Since 2012, this metric has grown by more than 300,000x (an 18-month doubling period would yield only a 12x increase). То есть крупные компании не ждут, пока что-то там подешевеет, а просто берут по текущей цене во всевозрастающих количествах.

-- улучшить качество алгоритмов и инфраструктуры, чтобы всё было не так плохо. Например, рекорд по тренингу ImageNet у гиганта Tecenet был 7 минут на специально сконфигурированных 2048 GPU, но fast.ai продемонстрировал, что может достичь тех же результатов за 18 минут на 128 GPU, арендованных в облаке Амазона за $40 -- http://www.fast.ai/2018/08/10/fastai-diu-imagenet/. А ведь ещё пару лет назад речь шла о неделе счёта! Не забываем при этом, что исследователь при этом получает зарплату за 18 минут, а если речь идёт о неделе счёта, то просто его зарплата обойдётся много больше $40 -- несмотря на все заверения, что "он в это время займётся чем-то другим". И выход продукта на неделю позже тоже обойдётся дороже $40. По этому же пути пошли при тренировке OpenAI Five агентов, выигрывающих в Dota. Если тренировка AlfaGo Zero потребовала 1900 petaflops-days (это легко читается на линейном графике в https://blog.openai.com/ai-and-compute/), то тренировка OpenAI-five потребовала вдесятеро меньше, при не менее (а даже более) впечатляющих результатах (на 5 августа 2018г.): 190 petaflops-days.

-- вообще плюнуть на deep learning и differentiable programming и перейти к альтернативным группам алгоритмов, например evolution strategy. Uber сделали именно это, и the time it takes to train deep neural networks to play Atari, which takes ~1 hour on 720 CPUs, now takes ~4 hours on a single modern desktop, https://eng.uber.com/accelerated-neuroevolution/. Вот перспективы: https://www.sentient.ai/labs/experts/

-- решить математические задачи в deep learning, и вместо инженерных "проб и ошибок" сразу получать оптимальные решения. Например, https://arxiv.org/abs/1806.05393 -- We demonstrate that it is possible to train vanilla CNNs with ten thousand layers or more simply by using an appropriate initialization scheme. We derive this initialization scheme theoretically by developing a mean field theory for signal propagation and by characterizing the conditions for dynamical isometry, the equilibration of singular values of the input-output Jacobian matrix. Да, они для примера натренировали свёрточную сеть из 10тыс. слоёв!

-- использовать один и тот же алгоритмический язык как для разработки алгоритма, так и для production. Сегодня алгоритмы разрабатываются на каком-нибудь высокоуровневом Python (он быстрей, в нём есть REPL), а для production это всё потом переписывается на языки низкого уровня. Единственный язык высокого уровня, который пускают сегодня на суперкомпьютеры -- это Julia, буквально вчера вышедший в своей первой версии (Julia ровесник deep learning, появилась как раз в 2012 году, году выигрыша deep learning в соревновании ImageNet). В сообществе Julia активно отрабатывается идея высокоуровневого и производительного одновременно differentiable computing, приходящему на смену deep learning. из тамошних новостей в этом направлении см. https://youtu.be/YVABTDrQ0eQ (хотя код ещё не опубликован: https://github.com/uripatish/Nili.jl), а некий манифест для differentiable DSL в Julia для deep learning был ещё в прошлом году в On Machine Learning and Programming Languages, https://julialang.org/blog/2017/12/ml&pl. Аналогичный ход -- это трансляция с высокоуровневого языка не в машинный код (LLVM), а сразу в Verilog, чтобы затем исполнять код аппаратно на FPGA. Вот тут приведена цепочка: код сетки для TensorFlow компилируют в LLVM, а LLVM в Verilog: https://arxiv.org/abs/1807.05317

-- использовать компьютер, чтобы он соптимизировал структуру нейронной сети, и дальше можно уж выбирать критерий оптимизации. Сейчас выбирают "чтобы лучше училась", но можно ведь выбирать и другие критерии -- чтобы быстрее училась при заданной точности, чтобы меньше была деградация при оптимизации на низкоразрядные устройства вывода/inference. Тут тоже пошла "гонка оптимизаторов", и тоже цель сделать эту оптимизацию дешёвой и тем самым доступной кому угодно. Из свежих новостей тут AutoKERAS, который буквально хочет убить коммерческое предложение Гугля AutoML, предназначенное для оптимизации нейронной сети, https://towardsdatascience.com/autokeras-the-killer-of-googles-automl-9e84c552a319. To use Google’s AutoML for computer vision, it will cost you USD $20 per hour. That’s crazy! AutoKeras uses ENAS, an efficient and most recent version of Neural Architecture Search. You can quickly and easily install the package with a pip install autokeras and voila, you’re ready to do your own architecture search on your own dataset … for free.

2. Уменьшить время вывода/inference, чтобы натренированная на дорогих компьютерах версия крутилась в production быстрее. Тут узким местом был стандарт передачи выученной нейронной сетки. Де-факто таким стандартом стал ONNX, http://onnx.ai/. И тут же появились оптимизирующие компиляторы, делающие разгон этих сеток при передаче на вывод в разы и разы. Это прежде всего TensorRT от NVIDIA, вот пример оптимизации вывода как раз для переводов с иностранных языков: https://devblogs.nvidia.com/neural-machine-translation-inference-tensorrt-4/, меряют ускорение там в попугаях, в данном случае это в x60 на Tesla GPU по сравнению с CPU-only, но фишка в том, что на GPU выполняется не оригинальная "выученная" сеть, а оптимизированная. Есть оптимизация и на самих CPU, например Intel NGRAPH разгоняет на CPU с 28 ядрами Caffe2 x28, а PyTorch x10 -- https://ai.intel.com/adaptable-deep-learning-solutions-with-ngraph-compiler-and-onnx/.

3. Поменять физику аппаратуры (ибо замена шила на мыло между разными вариантами аппаратных ускорителей и даже следующими поколениями GPU -- это не желаемые x10 за пару лет). Тут тоже много интересного происходит. Квантовые компьютеры пока за горизонтом, но вот на горизонте разные варианты мемристоров. Вот обзорчик -- http://iopscience.iop.org/article/10.1088/1361-6463/aac8a5/pdf (но там такой темп исследований, что он устарел уже, например появилось вот: https://www.nature.com/articles/s41467-018-04484-2). И уже есть оптика (и если не печатать слои, а использовать какие-нибудь продвинутые LCD или их аналоги, то всё неожиданно может стать жарким): https://habr.com/post/418847/. Про спайковые нейронные сети я молчу, там как-то всё не шибко бурно развивается. Спайковый махолёт явно уступает более универсальным GPU, в которых летят самые разные алгоритмы с понятным управлением и устойчивостью и заодно разгоняются другие операции (например, разгоняются и операции по модификации изображений, часто использующихся для тренировки распознавания объектов -- есть уже ускорители и для этого, см. NVIDIA DALI и NVIDIA nvJPEG, https://news.developer.nvidia.com/announcing-nvidia-dali-and-nvidia-nvjpeg/).

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

Это значит, что эксперименты с более высокими уровнями интеллект-стека -- когнитивной архитектурой и прикладным уровнем (см. "болваны для искусственного интеллекта", http://ailev.livejournal.com/1356016.html) будут идти дешевле, больше людей смогут ими заниматься. Помним, что в феврале-марте 2015 году deep learingn занимались 10тыс. человек, а сейчас в 2018 этих людей уже около миллиона -- https://www.pyimagesearch.com/2018/07/02/an-interview-with-francois-chollet/. И весь этот миллион человек не за очень дорого экспериментирует, участвует в технологической эволюции. И сама эволюция эта идёт быстро, наука-то в области искусственного интеллекта тоже перестроилась, чтобы стать побыстрей, я об этом рассказывал в "как организован прогресс в AI и почему там всё быстро".

Результаты этих занятий, то есть программы искусственного интеллекта, пока будут не самого лучшего качества, над ними все будут смеяться, но поскольку они будут дешевле грибов -- пользоваться ими будут все. А качество? При заданном уровне цены качество тоже будет расти экспоненциально. И смех вдруг закончится, едва начавшись. Но заплакать никто не успеет: не до того будет.

UPDATE: обсуждение в фейсбуке -- https://www.facebook.com/ailevenchuk/posts/10213543995368300 и https://www.facebook.com/groups/1505369016451458/permalink/2145736965747990/ и https://www.facebook.com/groups/nevronet/permalink/1130066300493023/
Subscribe

  • lytdybr

    Опубликовал новую версию руководства по системному мышлению (…

  • lytdybr

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

  • lytdybr

    Понимаю, что "научить учиться" -- это несколько совершенно разных умений, которые надо намазывать поверх совершенно разной генетической…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 6 comments