Будущее дополнений 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 Addons прекратит разработку и внедрение новых функций в этот проект. 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.
  • Перечень эквивалентного функционала доступен здесь .