TensorFlow 1.0 с моделью нейросети нового поколения Inception поддерживает аппаратное ускорение на DSP Hexagon в мобильных процессорах Qualcomm Snapdradon 820. Скорость работы приложений вроде Prism и программ машинного зрения увеличится в 8 и более раз, а энергопотребление снизится в 4 раза. Фильтры от нейросетей можно будет накладывать на видео почти в реальном времени

На первой конференции для разработчиков TensorFlow Dev Summit компания Google объявила о выходе мажорного релиза библиотеки TensorFlow 1.0, обратно несовместимого с предыдущими версиями. Это значит, что программы, работавшие на версиях TensorFlow 0.n, могут не работать на версии TensorFlow 1.0. Разработчики из Google говорят, что изменения в API были необходимы «для обеспечения внутренне согласованных программных интерфейсов», и больше такого не повторится: ломающих обратную совместимость изменений в будущих версиях 1.x не планируется. Сейчас разработчикам рекомендуется изучить руководство по миграции и использовать скрипт для преобразования.

TensorFlow — свободная программная библиотека для машинного обучения в применении к различным видам задач на восприятие и понимание языка. В данный момент она используется в научно-исследовательской работе и в десятках коммерческих продуктов Google, в том числе в Google Search, Gmail, Photos, Youtube, Translate, Assistant, а так же всевозможных системах распознавания, в том числе распознавания речи.

Другие нововведения с выпуском TensorFlow 1.0:

  • Интерфейсы Python API изменились для большего сходства с NumPy. Это одно из тех изменений, с которыми связана ломка обратной совместимости.
  • Экспериментальные интерфейсы для Java и Go.
  • Высокоуровневые модули программных интерфейсов tf.layers, tf.metrics и tf.losses поверх tf.contrib.learn после объединения со skflow и TF Slim.
  • Экспериментальный релиз XLA, проблемно-зависимого компилятора для графов TensorFlow, работающего для CPU и GPU. Этот компилятор быстро развивается, так что скоро можно ожидать новых релизов.
  • Появление дебаггера TensorFlow (tfdbg) с интерфейсом командной строки и API для дебаггинга работающих программ TensorFlow.
  • Новые демо для Android с примерами Android-приложений, использующих TensorFlow.
  • Улучшения в процедуре установки: добавлены docker-образы Python 3, а pip-пакеты TensorFlow теперь совместимы с PyPI, то есть TensorFlow сейчас устанавливается простой командой pip install tensorflow.

Теперь фреймворк для машинного обучения TensorFlow выходит на новый уровень: он официально готов к использованию в производстве. Google заявила, что программные интерфейсы теперь «больше, чем когда-либо» имеют статус "production-ready".


Использование нейросети в Gmail для составления автоматического краткого ответа на письмо с анализом контекста (текста входящего письма, на которое нужно составить ответ)

Изначально библиотека TensorFlow разработана специалистами научно-исследовательского подразделения Google Brain для внутренних нужд компании, но в ноябре 2015 года её выпустили под свободной лицензией Apache 2.0. Непосредственным предшественником TensorFlow в компании Google была система DistBelief — проприетарная система первого поколения. Позже над рефакторингом и упрощением кодовой базы DistBelief работали известные специалисты, в том числе Джефф Дин и Джеффри Хинтон. Им поставили задачу подготовить более быструю и надёжную библиотеку, готовую для использования во многих реальных приложениях. Результатом этой работы стала TensorFlow.



В 2016 году разработчики сконцентрировались на повышении производительности TensorFlow, например, многомерный граф стал занимать меньше места в памяти.

Эталонная реализация TensorFlow от компании Google работает на CPU и GPU. На графических процессорах видеокарт возможны расчёты в приложениях для общих вычислений с помощью дополнительного расширения CUDA для GPGPU. TensorFlow работает на 64-битных серверах и настольных компьютерах Linux, Windows и Mac OS X, а также на мобильных платформах, в том числе Android и iOS.

Вычисления TensorFlow выражаются как графы потоков данных с сохранением состояния (stateful). Библиотека алгоритмов от Google инструктирует нейронные сети воспринимать информацию и рассуждать подобно человеку, так что новые приложения изначально обладают такими «человеческими» качествами. Само название TensorFlow происходит от названия операций, которые эти нейросети осуществляют над многомерными массивами данных. Эти многомерные массивы именуются «тензорами», как одноимённые математические объекты, линейно преобразующие элементы одного линейного пространства в элементы другого. Задача TensorFlow — учить нейросети обнаруживать и распознавать паттерны и корреляции в массивах данных.

Визуализация многомерного пространства и техники t-SNE для нелинейного снижения размерности и визуализации многомерных переменных (t-distributed stochastic neighbor embedding)


С такими исходными данными неудивительно, что открытая библиотека TensorFlow быстро стала стандартом де-факто в машинном обучении, судя по статистике Github.



Всё самое интересное в машинном обучении только начинается. Скоро Google обещает выложить в открытый доступ новую модель архитектуры нейросети Inception. Эта революционная разработка многократно ускорит работу TensorFlow.

А ещё TensorFlow теперь поддерживает аппаратное ускорение на цифровом сигнальном процессоре Hexagon. Этот DSP — часть системы на кристалле Qualcomm Snapdradon 820, которой оснащаются современные топовые смартфоны.

Вместе с Java API, дебаггером и другими инструментами библиотека TensorFlow 1.0 действительно превращается в мощную продвинутую платформу для разработки современного ПО.
Поделиться с друзьями
-->

Комментарии (17)


  1. rPman
    16.02.2017 12:45

    Есть добрые люди, которые ткнут меня (а мне кажется и все собщество пользователей-нубов) в примеры использования тензоров (если я правильно понимаю, это когда вместо работы со всем массивом векторов, создается на его основе на порядок меньшее множество, в виде дерева, и обучение идет уже с этими весами, а затем с помощью какой то магии получаются обратно веса нейронной сети?), как я понимаю поддержку тензоров в открытых проектах имеет только tensorflow и theano?


    1. rkfg
      16.02.2017 14:07
      +4

      У deeplearning4j есть неплохие объяснения про тензоры для не-математиков: раз и два.


    1. eiennohito
      16.02.2017 15:22
      +2

      Я не понял что вы имеете в виду.

      Tensorflow и Theano работают в символьном режиме, когда сначала создаётся граф вычислений, а потом он «запускается» и происходит работа нейросети.

      Есть и другие подходы.
      Иногда процесс вычислений задаётся линейно, как например сделано в dl4j.

      DyNet создаёт граф вычислений на каждый вызов и исполняет его.
      Chainer производит «ход вперёд» без создания графа, однако запоминает историю для последующего вычисления градиентов и оптимизации.

      Веса модели есть везде и их количество будет одинаковым для сети одинаковой конфигурации вне зависимости от фреймворка. Иначе сети не были бы одинаковой конфигурации.


  1. Kaiser
    16.02.2017 13:32
    -1

    Расскажите пожалуйста почему Inception до сих пор не на свалке истории, когда есть DenseNet? Какие у него плюсы? Вроде у DenseNet и качество выше и весов меньше. Из недостатков разве что ResNet MS Research опубликовали.

    Ну и сравнение по GitHub popularity как-то не самый сильный аргумент в свете того, что MS явно заявляет, что их CNTK быстрее: https://github.com/Microsoft/CNTK
    К тому же они мерятся звездочками с Keras. Keras мало похож на конкурента. Зачем он вообще в этом сравнении?


    1. terixoid
      16.02.2017 15:22

      MS этот график составлял в прошлом году, когда tf ещё работал на cudnn4, сейчас tf на 5 и скорость стала значительно выше


      1. Kaiser
        17.02.2017 12:43

        Ок, выше, но где же полноценное сравнение актуальной версии типа как сделали MS:
        > https://arxiv.org/pdf/1608.07249.pdf

        И в чем смысл сравнивать количество звездочек с Keras и в 2017 называть Inception революционной архитектурой?


    1. ZlodeiBaal
      16.02.2017 19:11
      +1

      Этож Ализар. Что вы от него хотите?:)
      Тут же каждая вторая фраза веет тем что человеку лень разобраться было.

      Пардон, про DenseNet интересно. А сколько она по сравнению с ResNet будет весить после развертывания в памяти?
      Веса и объем памяти не обязательно одинаковые понятия.


      1. BelBES
        16.02.2017 22:25
        +1

        Да и про число флопсов у DenseNet было бы интересно узнать.


  1. Tikson
    16.02.2017 15:00

    Получается Google будет развивать свою библиотеку только для python и Go, ну и во вторую очередь для Java и C++?
    Будет что-то ли что-то для php и javascript?


    1. eiennohito
      16.02.2017 15:29

      Создавать и обучать сетки в Tensorflow сейчас все равно можно практически только в питоне.
      Обученные же легко запускаются в виде микросервисов с помощью https://github.com/tensorflow/serving. Нужно только чтобы был grpc.

      Интегрировать tensorflow в своё серверное приложение библиотекой я бы не стал. Оно весьма тяжёлое. Заморачиваться с тем, что делается для мобильных приложений для сервера имхо оверкилл, когда есть решение на микросервисах.


  1. mephistopheies
    16.02.2017 15:27

    вот ждешь нормального поста про тензорфлоу 1.0, а пишет ализар, :but_why:


  1. UndeadDragon
    16.02.2017 17:52
    -1

    Снова игнорируют С++?
    Надоел умышленный геноцид С++ для продвижения своих языков. Это сейчас практикуют почти все крупные компании.
    При этом у TF есть интерфейс на С++, но документации — нуль, и нет высокоуровневых оберток (даже и среднеуровневых).


    1. rPman
      16.02.2017 17:59

      Если я верно понимаю DeepCL это оно, с поддержкой OpenCL и т.п.
      Особенно это меня интересовало, так как поддержка видеокарт в библиотеках deep learning обычно nvidia или cpu, а amd откладывают на неопределенный срок.


    1. charypopper
      17.02.2017 11:10

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


  1. BelBES
    16.02.2017 22:22

    Накатил CPU-only версию… при старте выдает: "на вашем пк есть SSE3/SSE4.1/AVX/etc. но чет меня забыли с ними собрать, а так я бы мог и пошустрее ворочаться на CPU"… вот это я понимаю, магия Google )


    1. BelBES
      17.02.2017 01:21

      В общем, если ручками собрать tensorflow из исходников, руками выставив все флаги для CPU-оптимизаций, то 1.0 начинает работать драматично быстрее предыдущих версий.


  1. Georg
    17.02.2017 10:18
    +2

    Использование нейросети в Gmail для составления автоматического краткого ответа на письмо с анализом контекста (текста входящего письма, на которое нужно составить ответ)

    Посоветуйте литературу, хочу узнать поподробнее как делать такие штуки