TensorFlow 2.0 – Google оновив платформу машинного навчання
TensorFlow 2.0 - Google оновив платформу машинного навчання
Представлений значний випуск платформи машинного навчання TensorFlow 2.0, що надає готові реалізації різних алгоритмів глибокого машинного навчання, простий програмний інтерфейс для побудови моделей мовою Python і низькорівневий інтерфейс для мови С++, що дозволяє керувати побудовою та виконанням обчислювальних графів. Код системи написаний мовами С++ та Python і розповсюджується під ліцензією Apache.
Платформа спочатку розроблена командою Google Brain і використовуються в сервісах Google для розпізнавання мови, виділення осіб на фотографіях, визначення схожості зображень, відсіювання спаму в Gmail, підбору новостей у Google News та організації перекладу з урахуванням сенсу. Розподілені системи машинного навчання можна створювати на типовому устаткуванні, завдяки вбудованій підтримці TensorFlow рознесення обчислень на кілька CPU або GPU.
TensorFlow надає бібліотеку готових алгоритмів чисельних обчислень, реалізованих через графи потоків даних (data flow graphs). Вузли у таких графах реалізують математичні операції чи точки входу/вывода, тоді як ребра графа представляють багатовимірні масиви даних (тензоры), які перетікають між вузлами. Вузли можуть бути закріплені за обчислювальними пристроями і виконуватися асинхронно, паралельно обробляючи разом всі тезори, що підходять до них, що дозволяє організувати одночасну роботу вузлів у нейронній мережі за аналогією з одночасною активацією нейронів у мозку.
Основна увага при підготовці нової версії була приділена спрощенню та простоті використання. Деякі нововведення:
- Для побудови та тренування моделей запропоновано новий високорівневий API Keras, що надає кілька варіантів інтерфейсів для побудови моделей (Sequential, Functional, Subclassing) з можливістю їх негайного виконання(без попередньої компіляції) і з простим механізмом налагодження;
- Додано API tf.distribute.Strategy для організації розподіленого навчання моделей з мінімальною зміною існуючого коду. Крім можливості рознесення обчислень на кілька GPU, доступна експериментальна підтримка рознесення процесу навчання на кілька незалежних обробників і можливість залучення хмарних TPU (Tensor processing unit);
- Замість декларативної моделі побудови графа з виконанням через tf.Session надано можливість написання звичайних функцій мовою Python, які за допомогою виклику tf.function можуть бути перетворені на графи та потім віддалено виконані, серіалізовані або оптимізовані для підвищення продуктивності;
- Додано транслятор AutoGraph, що перетворює потік команд Python у вирази TensorFlow, що дозволяє використовувати код на мові Python всередині функцій tf.function-decorated, tf.data, tf.distribute та tf.keras;
- У SavedModel уніфіковано формат обміну моделями та додано підтримку збереження та відновлення стану моделей. Зібрані для TensorFlow моделі тепер можуть бути використані в TensorFlow Lite (на мобільних пристроях), TensorFlow JS (у браузері або Node.js), TensorFlow Serving і TensorFlow Hub;
- Уніфіковані API tf.train.Optimizers та tf.keras.Optimizers, замість compute_gradients для обчислення градієнтів запропоновано новий клас GradientTape;
- Значно збільшена продуктивність при використання GPU. Швидкість навчання моделей на системах з GPU NVIDIA Volta та Turing зросла до трьох разів;
- Проведено велике чищення API, багато викликів перейменовано або видалено, припинено підтримку глобальних змінних у допоміжних методах. Замість tf.app, tf.flags, tf.logging запропоновано новий API absl-py. Для продовження використання старого API підготовлено модуль compat.v1.