Обзор | Быстрая установка | Как выглядит льнь? | Документация
Выпущенный в 2024 году, Flax NNX - это новый упрощенный API льна, который предназначен для того, чтобы облегчить создание, осмотр, отладка и анализировать нейронные сети в JAX. Это достигает этого, добавив поддержку первого класса для справочной семантики Python. Это позволяет пользователям выражать свои модели, используя обычные объекты Python, что позволяет обмен ссылками и изменчивость.
Flax NNX эволюционировал из API льняного льна льна, который был выпущен в 2020 году инженерами и исследователями в Google Brain в тесном сотрудничестве с командой JAX.
Вы можете узнать больше о леневом NNX на специальном сайте документации льна. Убедитесь, что вы проверите:
Примечание. Документация Flax Linen имеет свой собственный сайт.
Миссия команды льна состоит в том, чтобы обслуживать растущую экосистему исследований нейронной сети JAX - как в алфавите, так и в более широком сообществе, так и для изучения случаев использования, где сияет JAX. Мы используем GitHub почти для всей нашей координации и планирования, а также то, где мы обсуждаем предстоящие изменения дизайна. Мы приветствуем отзывы о любом нашем обсуждении, выпускайте и вытаскивают потоки запросов.
Вы можете выполнять запросы на функции, сообщить нам, над чем вы работаете, сообщать о проблемах, задавайте вопросы на нашем дискуссионном форуме лента GitHub.
Мы рассчитываем на улучшение льна, но мы не ожидаем значительных нарушающих изменений в основном API. Мы используем записи изменений и предупреждения об испаке, когда это возможно.
В случае, если вы хотите связаться с нами напрямую, мы на [email protected].
Flax-это высокопроизводительная библиотека нейронной сети и экосистема JAX, которая предназначена для гибкости : попробуйте новые формы обучения, подняв пример и изменяя учебную цикл, не добавляя функции в структуру.
Лен разрабатывается в тесном сотрудничестве с командой JAX и поставляется со всем необходимым для начала исследования, включая:
API Neural Network ( flax.nnx
): включая Linear
, Conv
, BatchNorm
, LayerNorm
, GroupNorm
, внимание ( MultiHeadAttention
), LSTMCell
, GRUCell
, Dropout
.
Утилиты и шаблоны : реплицированные тренировки, сериализация и контрольная точка, метрики, предварительная выборка на устройстве.
Образовательные примеры : MNIST, вывод/выборка с моделью языка GEMMA (Transformer), Transformer LM1B.
FLAX использует JAX, так что проверьте инструкции JAX по установке на процессорах, графических процессорах и TPU.
Вам понадобится Python 3.8 или позже. Установите лен от PYPI:
pip install flax
Чтобы перейти на последнюю версию лена, вы можете использовать:
pip install --upgrade git+https://github.com/google/flax.git
Чтобы установить некоторые дополнительные зависимости (например, matplotlib
), которые требуются, но не включены некоторыми зависимостями, вы можете использовать:
pip install " flax[all] "
Мы предоставляем три примера, используя API лена: простой многослойный персептрон, CNN и автосодер.
Чтобы узнать больше об абстракции Module
, ознакомьтесь с нашими документами, нашим широким вступлением в абстракцию модуля. Для получения дополнительных конкретных демонстраций лучших практик обратитесь к нашим руководствам и примечаниям разработчика.
Пример MLP:
class MLP ( nnx . Module ):
def __init__ ( self , din : int , dmid : int , dout : int , * , rngs : nnx . Rngs ):
self . linear1 = Linear ( din , dmid , rngs = rngs )
self . dropout = nnx . Dropout ( rate = 0.1 , rngs = rngs )
self . bn = nnx . BatchNorm ( dmid , rngs = rngs )
self . linear2 = Linear ( dmid , dout , rngs = rngs )
def __call__ ( self , x : jax . Array ):
x = nnx . gelu ( self . dropout ( self . bn ( self . linear1 ( x ))))
return self . linear2 ( x )
Пример CNN:
class CNN ( nnx . Module ):
def __init__ ( self , * , rngs : nnx . Rngs ):
self . conv1 = nnx . Conv ( 1 , 32 , kernel_size = ( 3 , 3 ), rngs = rngs )
self . conv2 = nnx . Conv ( 32 , 64 , kernel_size = ( 3 , 3 ), rngs = rngs )
self . avg_pool = partial ( nnx . avg_pool , window_shape = ( 2 , 2 ), strides = ( 2 , 2 ))
self . linear1 = nnx . Linear ( 3136 , 256 , rngs = rngs )
self . linear2 = nnx . Linear ( 256 , 10 , rngs = rngs )
def __call__ ( self , x ):
x = self . avg_pool ( nnx . relu ( self . conv1 ( x )))
x = self . avg_pool ( nnx . relu ( self . conv2 ( x )))
x = x . reshape ( x . shape [ 0 ], - 1 ) # flatten
x = nnx . relu ( self . linear1 ( x ))
x = self . linear2 ( x )
return x
Пример автоэкодора:
Encoder = lambda rngs : nnx . Linear ( 2 , 10 , rngs = rngs )
Decoder = lambda rngs : nnx . Linear ( 10 , 2 , rngs = rngs )
class AutoEncoder ( nnx . Module ):
def __init__ ( self , rngs ):
self . encoder = Encoder ( rngs )
self . decoder = Decoder ( rngs )
def __call__ ( self , x ) -> jax . Array :
return self . decoder ( self . encoder ( x ))
def encode ( self , x ) -> jax . Array :
return self . encoder ( x )
При употреблении этого хранилища:
@software{flax2020github,
author = {Jonathan Heek and Anselm Levskaya and Avital Oliver and Marvin Ritter and Bertrand Rondepierre and Andreas Steiner and Marc van {Z}ee},
title = {{F}lax: A neural network library and ecosystem for {JAX}},
url = {http://github.com/google/flax},
version = {0.10.2},
year = {2024},
}
В приведенной выше записи Bibtex имена находятся в алфавитном порядке, номер версии предназначен для того, чтобы из Flax/version.py, а год соответствует выпуску с открытым исходным кодом проекта.
Flax - это проект с открытым исходным кодом, поддерживаемый специальной командой в Google DeepMind, но не является официальным продуктом Google.