Вычислительному пакету Google, призванному упростить ИИ, TensorFlow, чуть больше года. Тем не менее, на саммите разработчиков TensorFlow он был признан достаточно взрослым, чтобы называться 1.0. Также есть несколько новых игрушек.
Нет сомнений в том, что TensorFlow изменил общее представление об ИИ. Нейронные сети были чем-то, что можно было использовать только в том случае, если вы были готовы выделить очень большие ресурсы. Вам все равно придется потратить довольно много времени и вычислительной мощности с помощью TensorFlow, но он кажется намного более доступным. Конечно, есть и другие фреймворки, которые позволят вам реализовать нейронную сеть, и некоторые из них имеют особые преимущества, но TensorFlow — универсальный инструмент, который непрофессиональные программисты пробуют в первую очередь.
Большой новой функцией в версии 1.0 является XLA — Accelerated Linear Algebra. Это ускоряет работу. В объявлении в блоге говорится:
Вскоре мы опубликуем обновленные реализации нескольких популярных моделей, чтобы показать, как в полной мере использовать TensorFlow 1.0, включая ускорение в 7,3 раза на 8 графических процессорах для Inception v3 и ускорение в 58 раз для распределенного обучения Inception v3 на 64 графических процессорах!
Если вы что-нибудь знаете о вычислении чисел, вам может быть интересно, что такое волшебный XLA. Чтение описания на самом деле не дает вам полного представления о том, что конкретно происходит. Он принимает описание вычислений в оптимизаторе высокого уровня (HLO) и сначала выполняет оптимизацию, не зависящую от цели, а затем оптимизацию с учетом конкретного оборудования.
На данный момент существует два бэкэнд-модуля. Один генерирует код для нескольких процессоров, а другой — для нескольких графических процессоров. Поддерживаются процессоры x86-64, а также графические процессоры ARM и NVIDIA.
В документации указано, что основными задачами являются:
Увеличьте скорость выполнения. Компилируйте подграфы, чтобы сократить время выполнения недолговечных операций, чтобы устранить накладные расходы из среды выполнения TensorFlow, объедините конвейерные операции, чтобы уменьшить накладные расходы на память, и специализироваться на известных тензорных формах, чтобы обеспечить более агрессивное распространение констант.
Улучшение использования памяти. Анализируйте и планируйте использование памяти, в принципе устраняя множество промежуточных буферов хранения.
Уменьшите зависимость от пользовательских операций. Устраните необходимость во многих пользовательских операциях, улучшив производительность автоматически слитых операций низкого уровня, чтобы соответствовать производительности пользовательских операций, которые были слиты вручную.
Уменьшите занимаемое мобильным устройством место. Исключите среду выполнения TensorFlow, заблаговременно скомпилировав подграф и выпустив пару объект / файл заголовка, которую можно связать напрямую с другим приложением. Результаты могут на несколько порядков сократить занимаемое мобильным устройством место.
Улучшение портативности. Упростите написание новой серверной части для нового оборудования, после чего большая часть программ TensorFlow будет работать на этом оборудовании без изменений. Это контрастирует с подходом к специализации отдельных монолитных операций для нового оборудования, который требует переписывания программ TensorFlow для использования этих операций.
На другом конце шкалы у нас есть набор новых API высокого уровня — tf.layers, tf.metrics и tf.losses, которые упрощают создание сетей. Например, в API слоев есть функция conv2d, которая устанавливает сверточный слой за один вызов. Точно так же APi потерь имеет множество мер того, насколько точна сеть — ложные срабатывания, косинусное расстояние, среднеквадратичная ошибка и так далее, а потери имеют более сложные меры, используемые при обучении, такие как перекрестная энтропия. Также есть новый модуль tf.keras, который обеспечивает совместимость с Keras, другой известной библиотекой нейронных сетей.
Новая версия также обещает стабильность Python API, что делает его более подходящим для производства. Обратите внимание, что API других языков — C, а также новые API Go и Java — не поддерживаются таким образом и могут быть изменены.
Если вы хотите посмотреть видео с Саммита 2017, то есть плейлист, за просмотром которого вы можете провести много счастливых часов: