نظرة عامة | تثبيت سريع | كيف يبدو الكتان؟ | الوثائق
تم إصدار Flax NNX في عام 2024 ، وهو واجهة برمجة تطبيقات جديدة للكتان مبسطة مصممة لتسهيل إنشاء الشبكات العصبية وتفتيشها وتصحيحها وتحليلها في JAX. إنه يحقق هذا عن طريق إضافة دعم من الدرجة الأولى لدلالات Python المرجعية. يتيح ذلك للمستخدمين التعبير عن نماذجهم باستخدام كائنات Python العادية ، مما يتيح المشاركة المرجعية وتغييرها.
تطورت Flax NNX من API الكتان الكتان ، الذي صدر في عام 2020 من قبل المهندسين والباحثين في Google Brain بالتعاون الوثيق مع فريق Jax.
يمكنك معرفة المزيد حول Flax NNX على موقع وثائق الكتان المخصصة. تأكد من مراجعة:
ملاحظة: وثائق الكتان الكتان لها موقع خاص بها.
تتمثل مهمة فريق الكتان في خدمة النظام الإيكولوجي لشبكة Jax Neural Research - سواء داخل الأبجدية أو مع المجتمع الأوسع ، واستكشاف حالات الاستخدام حيث يضيء Jax. نستخدم GitHub لجميع التنسيق والتخطيط لدينا تقريبًا ، وكذلك المكان الذي نناقش فيه تغييرات التصميم القادمة. نرحب بتعليقات على أي من مناقشتنا وإصدارها وسحب المواضيع.
يمكنك تقديم طلبات الميزات ، إخبارنا بما تعمل عليه ، والإبلاغ عن المشكلات ، وطرح الأسئلة في منتدى المناقشة GitHub
نتوقع تحسين الكتان ، لكننا لا نتوقع تغييرات كبيرة في API الأساسية. نستخدم إدخالات Changelog وتحذيرات الإهمال عند الإمكان.
في حال كنت ترغب في الوصول إلينا مباشرة ، نحن في [email protected].
Flax عبارة عن مكتبة شبكات عصبية عالية الأداء ونظام إيكولوجي لـ JAX مصممة للمرونة : جرب أشكالًا جديدة من التدريب عن طريق التقاط مثال وعن طريق تعديل حلقة التدريب ، وليس إضافة ميزات إلى إطار عمل.
يتم تطوير الكتان بالتعاون الوثيق مع فريق Jax ويأتي مع كل ما تحتاجه لبدء بحثك ، بما في ذلك:
API الشبكة العصبية ( flax.nnx
): بما في ذلك Linear
، Conv
، BatchNorm
، LayerNorm
، GroupNorm
، الانتباه ( MultiHeadAttention
) ، LSTMCell
، GRUCell
، Dropout
.
المرافق والأنماط : التدريب المتكرر ، التسلسل وتصوير الفحص ، المقاييس ، الجذاب المسبق على الجهاز.
أمثلة تعليمية : MNIST ، الاستدلال/أخذ العينات مع نموذج لغة GEMMA (Transformer) ، Transformer LM1B.
يستخدم Flax Jax ، لذا تحقق من تعليمات تثبيت Jax على وحدات المعالجة المركزية ووحدة معالجة الرسومات و TPUs.
ستحتاج Python 3.8 أو أحدث. تثبيت الكتان من Pypi:
pip install flax
للترقية إلى أحدث إصدار من الكتان ، يمكنك استخدام:
pip install --upgrade git+https://github.com/google/flax.git
لتثبيت بعض التبعيات الإضافية (مثل matplotlib
) المطلوبة ولكن غير مدرجة من قبل بعض التبعيات ، يمكنك استخدام:
pip install " flax[all] "
نحن نقدم ثلاثة أمثلة باستخدام Flax API: Perceptron بسيطة متعددة الطبقات ، 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 )
مثال على شبكة سي إن إن:
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 هو مشروع مفتوح المصدر يحتفظ به فريق مخصص في Google DeepMind ، لكنه ليس منتج Google رسميًا.