概述|快速安裝|亞麻是什麼樣的? |文件
Flax NNX於2024年發布,是一種新的簡化亞麻API,旨在使創建,檢查,調試和分析JAX中的神經網絡更容易。它通過添加對Python參考語義的一流支持來實現這一目標。這允許用戶使用常規的Python對象表達其模型,從而實現參考共享和變異性。
亞麻NNX源自亞麻亞麻API,該API於2020年由Google Brain與JAX團隊密切合作於2020年發布。
您可以在專用亞麻文檔網站上了解有關亞麻NNX的更多信息。確保您退房:
注意:亞麻亞麻的文檔具有自己的網站。
亞麻小組的使命是為不斷增長的JAX神經網絡研究生態系統服務 - 在字母內和更廣泛的社區,並探索JAX閃耀的用例。我們將GitHub用於幾乎所有的協調和計劃,以及我們討論即將進行的設計變化的地方。我們歡迎對我們的任何討論,發出和拉請求線程的反饋。
您可以提出功能請求,讓我們知道您在做什麼,報告問題,在我們的亞麻github討論論壇中提出問題。
我們期望改善亞麻,但我們預計核心API不會發生重大的破壞變化。如果可能,我們使用ChangElog條目和折舊警告。
如果您想直接與我們聯繫,我們訪問[email protected]。
亞麻是一個高性能的神經網絡庫和JAX的生態系統,是為靈活性而設計的:通過分叉示例和修改訓練環,而不是在框架中添加功能來嘗試新形式的培訓形式。
Flax正在與JAX團隊密切合作開發,並提供您開始研究所需的一切,包括:
神經網絡API ( flax.nnx
):包括Linear
, Conv
, BatchNorm
, LayerNorm
, GroupNorm
,注意力( MultiHeadAttention
), LSTMCell
,GRUCELL, GRUCell
, Dropout
。
實用程序和模式:複製的培訓,序列化和檢查點,指標,預取設備。
教育示例:使用Gemma語言模型(變壓器),Transformer LM1B進行推理/採樣。
亞麻使用JAX,因此請查看CPU,GPU和TPU上的JAX安裝說明。
您將需要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中使用,這一年對應於項目的開源版本。
亞麻是由Google DeepMind的專門團隊維護的開源項目,但不是官方的Google產品。