افزونه های TensorFlow




افزونه های TensorFlow مخزن مشارکت هایی است که با الگوهای API به خوبی تثبیت شده مطابقت دارد، اما عملکرد جدیدی را اجرا می کند که در هسته TensorFlow موجود نیست. TensorFlow به صورت بومی از تعداد زیادی عملگر، لایه ها، معیارها، ضررها و بهینه سازها پشتیبانی می کند. با این حال، در زمینه‌ای در حال حرکت سریع مانند ML، بسیاری از پیشرفت‌های جالب جدید وجود دارد که نمی‌توان آنها را در هسته TensorFlow ادغام کرد (زیرا کاربرد گسترده آنها هنوز مشخص نیست، یا بیشتر توسط زیرمجموعه کوچک‌تری از جامعه استفاده می‌شود).

نصب و راه اندازی

ساختمان های پایدار

برای نصب آخرین نسخه، موارد زیر را اجرا کنید:

pip install tensorflow-addons

برای استفاده از افزونه ها:

import tensorflow as tf
import tensorflow_addons as tfa

ساختمان های شبانه

همچنین بیلدهای شبانه از افزونه های تنسورفلو تحت بسته پیپ tfa-nightly وجود دارد که بر اساس آخرین نسخه پایدار TensorFlow ساخته شده است. ساخت‌های شبانه دارای ویژگی‌های جدیدتری هستند، اما ممکن است نسبت به نسخه‌های نسخه‌شده پایدارتر باشند.

pip install tfa-nightly

نصب از منبع

شما همچنین می توانید از منبع نصب کنید. این به سیستم ساخت Bazel نیاز دارد.

git clone https://github.com/tensorflow/addons.git
cd addons

# If building GPU Ops (Requires CUDA 10.0 and CuDNN 7)
export TF_NEED_CUDA=1
export CUDA_TOOLKIT_PATH="/path/to/cuda10" (default: /usr/local/cuda)
export CUDNN_INSTALL_PATH="/path/to/cudnn" (default: /usr/lib/x86_64-linux-gnu)

# This script links project with TensorFlow dependency
python3 ./configure.py

bazel build build_pip_pkg
bazel-bin/build_pip_pkg artifacts

pip install artifacts/tensorflow_addons-*.whl

مفاهیم اصلی

API استاندارد در بسته‌های فرعی

تجربه کاربر و قابلیت نگهداری پروژه مفاهیم اصلی در TF-Addons هستند. برای دستیابی به این موارد، ما نیاز داریم که اضافات ما با الگوهای API تثبیت شده در TensorFlow اصلی مطابقت داشته باشد.

GPU/CPU Custom-Ops

یکی از مزایای اصلی افزونه های TensorFlow این است که عملیات از پیش کامپایل شده وجود دارد. اگر نصب CUDA 10 پیدا نشود، عملیات به طور خودکار به یک پیاده سازی CPU برمی گردد.

نگهداری پروکسی

افزونه‌ها برای تقسیم‌بندی بسته‌های فرعی و زیر ماژول‌ها طراحی شده‌اند تا بتوانند توسط کاربرانی که تخصص و علاقه خاصی به آن جزء دارند نگهداری شوند.

نگهداری از بسته فرعی تنها پس از مشارکت قابل توجه به منظور محدود کردن تعداد کاربران دارای مجوز نوشتن، اعطا خواهد شد. مشارکت ها می توانند به شکل بسته شدن مشکل، رفع اشکال، اسناد، کد جدید یا بهینه سازی کد موجود باشد. نگهداری زیر ماژول را می توان با یک مانع کمتر برای ورود اعطا کرد زیرا این شامل مجوزهای نوشتن به مخزن نمی شود.

برای اطلاعات بیشتر به RFC در مورد این موضوع مراجعه کنید.

ارزیابی دوره ای بسته های فرعی

با توجه به ماهیت این مخزن، بسته های فرعی و زیر ماژول ها ممکن است با گذشت زمان کمتر و کمتر برای جامعه مفید باشند. به منظور پایدار نگه داشتن مخزن، ما هر دو سال یکبار کد خود را بررسی خواهیم کرد تا مطمئن شویم که همه چیز همچنان در مخزن قرار دارد. عوامل مؤثر در این بررسی عبارتند از:

  1. تعداد نگهبانان فعال
  2. میزان استفاده از OSS
  3. تعداد مشکلات یا اشکالات منتسب به کد
  4. اگر اکنون راه حل بهتری در دسترس است

عملکرد در افزونه های TensorFlow را می توان به سه گروه طبقه بندی کرد:

  • پیشنهاد شده : API به خوبی حفظ شده. استفاده تشویق می شود.
  • دلسرد : جایگزین بهتری در دسترس است. API به دلایل تاریخی نگهداری می شود. یا API نیاز به نگهداری دارد و دوره انتظار منسوخ شدن است.
  • منسوخ شده : با مسئولیت خود استفاده کنید. موضوعی که باید حذف شود

تغییر وضعیت بین این سه گروه عبارت است از: پیشنهادی <-> دلسرد -> منسوخ شده.

فاصله زمانی بین علامت گذاری یک API به عنوان منسوخ و حذف 90 روز خواهد بود. منطق این است:

  1. در صورتی که TensorFlow Addons ماهانه منتشر شود، قبل از حذف یک API، 2 تا 3 نسخه وجود خواهد داشت. یادداشت های انتشار می تواند به کاربر هشدار کافی بدهد.

  2. 90 روز به نگهبانان زمان کافی برای اصلاح کد خود می دهد.

کمک کردن

TF-Addons یک پروژه منبع باز تحت رهبری جامعه است. به این ترتیب، پروژه به مشارکت عمومی، رفع اشکالات و مستندات بستگی دارد. لطفاً دستورالعمل‌های مشارکت را برای راهنمایی در مورد نحوه مشارکت ببینید. این پروژه به آیین نامه رفتار تنسورفلو پایبند است. با شرکت، از شما انتظار می رود که این کد را حفظ کنید.

انجمن

مجوز

مجوز آپاچی 2.0