Будущее дополнений TensorFlow

import tensorflow as tf
import tensorflow_addons as tfa
train,test = tf.keras.datasets.mnist.load_data()
x_train, y_train = train
x_train = x_train[..., tf.newaxis] / 255.0

# TFA layers and activations
model = tf.keras.Sequential([
  tf.keras.layers.Conv2D(filters=10, kernel_size=(3,3),
                         activation=tfa.activations.gelu),
  tfa.layers.GroupNormalization(groups=5, axis=3),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(10, activation='softmax')
])

# TFA optimizers, losses and metrics
model.compile(
    optimizer=tfa.optimizers.RectifiedAdam(0.001),
    loss=tfa.losses.TripletSemiHardLoss(),
    metrics=[tfa.metrics.MultiLabelConfusionMatrix(num_classes=10)])

history = model.fit(x_train, y_train, epochs=10)

TensorFlow Addons (TFA) — это репозиторий поддерживаемых и предоставленных сообществом расширений для TensorFlow, впервые созданных в 2018 году и поддерживаемых сообществом SIG-Addons . В течение 4 лет 200 участников превратили репозиторий TFA в управляемый и принадлежащий сообществу успех, который используется более чем 8000 репозиториев github в соответствии с нашим графиком зависимостей. Мы хотели бы воспользоваться моментом, чтобы искренне поблагодарить всех, кто участвовал в качестве участников или членов сообщества за их усилия.

В последнее время увеличилось совпадение вкладов и возможностей между TFA и библиотеками Keras-CV и Keras-NLP . Чтобы предотвратить дублирование в будущем, мы считаем, что новые и существующие дополнения к TensorFlow лучше всего поддерживать в репозиториях проектов Keras, где это возможно.

Решение свернуть надстройки TensorFlow

Мы считаем, что в интересах сообщества TensorFlow консолидировать области, в которых можно использовать, поддерживать и добавлять расширения TensorFlow. Из-за этого горько, что мы объявляем о наших планах перевести надстройки TensorFlow в режим минимального обслуживания и выпуска.

Надстройки TFA SIG завершат разработку и внедрение новых функций в этот проект. TFA перейдет в режим минимального обслуживания и выпуска в течение одного года (до мая 2024 г.), чтобы у вас было достаточно времени для настройки любых зависимостей от перекрывающихся репозиториев в нашем сообществе TensorFlow ( Keras , Keras-CV и Keras-NLP). ). В дальнейшем рассмотрите возможность участия в проектах Keras-CV и Keras-NLP.

Фон:

Первоначальное предложение RFC для TFA было датировано 14 декабря 2018 г. с заявленной целью создания управляемого сообществом репозитория для вкладов, которые соответствуют устоявшимся шаблонам API, но реализуют новые функции, недоступные в ядре TensorFlow, как определено в нашей специальной группе по интересам. (SIG) чартер .

С годами были созданы новые репозитории со здоровыми сообществами участников (Keras-CV, Keras-NLP и т. д.) с целями, схожими с нашими, и критерии принятия вклада значительно перекрываются (например, количество необходимых ссылок). Кроме того, с тех пор, как Keras отделился от основного TensorFlow в 2020 году , барьер для вклада сообщества был существенно снижен.

Понятно, что растет неопределенность в отношении того, куда должны поступать вклады и где их лучше всего поддерживать. Многие функции, доступные в TFA, одновременно доступны и в других репозиториях сообщества TensorFlow. В качестве нескольких примеров:

В рамках первоначального RFC наша специальная группа по интересам согласилась перенести код из репозиториев tf.contrib и keras.contrib . При этом TFA унаследовала пользовательские операции C++, что сделало TFA уникальным местом в сообществе TensorFlow для создания и распространения пользовательских операций C++. Однако недавно мы перенесли большую часть этой инфраструктуры в Keras-CV , чтобы они могли компилировать и распространять пользовательские операции по своему усмотрению.

Что дальше:

  • Отладочные выпуски будут продолжаться в течение 1 года (до мая 2024 г.).
  • Предупреждения об импорте в версии 0.20 TFA.
  • Эта информация также опубликована в выпуске отслеживания GitHub.
  • Перечень эквивалентных функций доступен здесь .