Fairseq: ابزاری قدرتمند برای مدلسازی توالی
Fairseq یک جعبه ابزار مدلسازی دنباله منبع باز مبتنی بر پایتون است که به محققان و توسعهدهندگان اجازه میدهد تا مدلهای سفارشی را برای کارهایی مانند ترجمه، خلاصهسازی، مدلسازی زبان و سایر تولید متن آموزش دهند. جعبه ابزار مبتنی بر PyTorch امکان آموزش توزیع شده بر روی چندین پردازنده گرافیکی و رایانه را فراهم می کند.
Fairseq چیست
مدلسازی توالی نوعی مشکل یادگیری ماشینی است که شامل یادگیری پیوند بین مجموعهای از ورودیها و مجموعهای از خروجیها میشود. این یک کار متداول در پردازش زبان طبیعی (NLP) است، که در آن دنباله ورودی یک جمله است و دنباله خروجی ترجمه آن جمله به زبان دیگری است.
Fairseq یک جعبه ابزار مدلسازی دنباله منبع باز مبتنی بر پایتون است. این یک چارچوب همه کاره برای آموزش و ارزیابی مدلهای توالی ارائه میدهد و از طیف گستردهای از معماریهای مدل، از جمله LSTM، CNN و ترانسفورماتور پشتیبانی میکند. Fairseq همچنین از آموزش توزیع شده پشتیبانی میکند، که امکان آموزش مدلهای بزرگ را فراهم میکند که در غیر این صورت آموزش روی یک سیستم غیرممکن است.
Fairseq نتایج پیشرفتهای را در مورد طیف گستردهای از مشکلات مدلسازی دنبالهای، از جمله ترجمه ماشینی، خلاصهسازی متن، و مدلسازی زبان ارائه کرده است. این یک ابزار قوی برای آموزش مدل های سفارشی برای اهداف مختلف است.
چگونه Fairseq کار می کند
Fairseq یک باز است چارچوب مدلسازی دنباله منبع که به دانشگاهیان و توسعهدهندگان اجازه میدهد تا مدلهای سفارشی را برای کارهایی مانند ترجمه، خلاصهسازی و تولید متن آموزش دهند. این بر اساس چارچوب یادگیری عمیق PyTorch ساخته شده است و شامل تعدادی ویژگی است که آموزش و استقرار مدل ها را در طیف وسیعی از پلتفرم های سخت افزاری ساده می کند.

Fairseq ابتدا با توکن کردن متن ورودی به یک دنباله عدد صحیح کار می کند. کلمات یا زیر کلمات در متن ورودی با این اعداد نشان داده می شوند. با توجه به نشانههای قبلی، مدل یاد میگیرد که توکن بعدی را در دنباله پیشبینی کند. یک شبکه عصبی برای ایجاد یک توزیع احتمال بر روی تمام نشانه های ممکن استفاده می شود. سپس نشانه ای با بیشترین احتمال به عنوان نشانه بعدی در دنباله انتخاب می شود.
Fairseq از طیف وسیعی از توپولوژی های شبکه عصبی مانند شبکه های عصبی بازگشتی (RNN) و شبکه های عصبی کانولوشنال (CNN) پشتیبانی می کند. RNN ها برای مشاغلی که به وابستگی های طولانی مدت نیاز دارند، مانند ترجمه ماشینی، ایده آل هستند. CNN ها در مشاغلی که به وابستگی های محلی نیاز دارند، مانند خلاصه سازی متن، برتری دارند.
Fairseq همچنین از طیف گسترده ای از روش های آموزشی مانند یادگیری تحت نظارت، یادگیری نیمه نظارتی و یادگیری تقویتی پشتیبانی می کند. محبوب ترین رویکرد آموزشی، یادگیری تحت نظارت است که شامل آموزش مدل با استفاده از مجموعه ای از داده های برچسب گذاری شده است. یادگیری نیمه نظارتی مستلزم آموزش مدل بر روی مجموعه داده های برچسب دار و بدون برچسب است. یادگیری تقویتی مستلزم آموزش مدل برای تولید متنی است که توسط یک ارزیاب انسانی پاداش می گیرد.
Fairseq ابزاری قدرتمند برای آموزش مدلهای سفارشی برای طیف وسیعی از برنامههای تولید متن است. استفاده از آن ساده است و با طیف گسترده ای از پلتفرم های سخت افزاری کار می کند. Fairseq یک گزینه عالی برای دانشگاهیان و توسعه دهندگانی است که به دنبال آموزش مدل های منحصر به فرد برای مشاغل ایجاد متن هستند.
همچنین DB GPT را بخوانید: ابزاری جدید برای پردازش زبان طبیعی.
نیازمندی ها
- نسخه PyTorch >= 1.10.0
- نسخه پایتون >= 3.8
- NVIDIA GPU و NCCL برای آموزش مدلهای جدید
نحوه نصب Fairseq
مخزن fairseq را از GitHub کلون کنید:
git clone https://github.com/pytorch/fairseq
سی دی fairseq
fairseq و وابستگیهای آن را با استفاده از pip با گزینه --editable
برای توسعه محلی نصب کنید:
نصب پیپ --editable ./
توجه: اگر از macOS استفاده میکنید، ممکن است لازم باشد قبل از اجرای دستور نصب، متغیر محیطی CFLAGS
را تنظیم کنید:
CFLAGS="-stdlib=libc++" نصب پیپ --editable ./
از طرف دیگر، میتوانید آخرین نسخه پایدار (0.10.x) را مستقیماً نصب کنید:
نصب pip fairseq
برای آموزش سریعتر، میتوانید کتابخانه apex NVIDIA را نصب کنید. مخزن را شبیه سازی کنید:
git clone https://github.com/NVIDIA/apex
سی دی آپکس
اپکس را با گزینه های لازم برای فعال کردن آموزش سریعتر نصب کنید:
pip install -v --no-cache-dir --global-option="--cpp_ext" - -global-option="--cuda_ext"
--global-option="--deprecated_fused_adam" --global-option="--xentropy"
--global-option="--fast_multihead_attn" ./
اگر با مجموعه داده های بزرگ کار می کنید، توصیه می شود PyArrow:
pip install pyarrow
اگر از Docker استفاده می کنید، مطمئن شوید که اندازه حافظه مشترک را افزایش داده اید. می توانید این کار را با افزودن --ipc=host
یا --shm-size
به عنوان گزینه های خط فرمان به nvidia-docker run
انجام دهید.
مزایای استفاده از Fairseq
- Fairseq ابزاری قدرتمند برای آموزش مدلهای سفارشی برای طیف وسیعی از برنامههای تولید متن است.
- استفاده از Fairseq آسان است و با طیف وسیعی از پلتفرمهای سختافزاری کار میکند.
- Fairseq یک پروژه منبع باز است، به این معنی که استفاده و تغییر آن رایگان است.
محدودیت های Fairseq
- از آنجایی که Fairseq یک ابزار جدیدتر است، ممکن است به اندازه سایر ابزارهای مدلسازی دنباله توسعه نیافته باشد.
- آموزش Fairseq ممکن است از نظر محاسباتی پرهزینه باشد، به خصوص برای مدل های بزرگ.
- Fairseq به اندازه برخی از ابزارهای مدلسازی توالی دیگر مستندات ندارد.
ویژگی ها
- آموزش چند GPU: این ویژگی به شما امکان میدهد یک مدل یادگیری ماشینی را روی یک کامپیوتر یا در چندین ماشین با استفاده از چندین GPU آموزش دهید. پردازش موازی را فعال می کند و می تواند آموزش را به میزان قابل توجهی تسریع کند.
- تولید سریع در CPU و GPU: این ویژگی بر تولید کارآمد خروجی از یک مدل آموزش دیده تمرکز دارد. از پردازش CPU و GPU پشتیبانی می کند و انواع روش های جستجو را برای ارائه نتایج لازم ارائه می دهد.
- الگوریتمهای جستجو: الگوریتمهای جستجوی مورد بحث در بالا رویکردهایی هستند که در طول فرآیند تولید برای تعیین بهترین خروجی بسته به مدل آموزشدیده استفاده میشوند. راههای مختلف برای کاوش در امکانات مدل و تولید خروجیهای مختلف عبارتند از جستجوی پرتو، جستجوی پرتوی مختلف، نمونهبرداری (غیر محدود، top-k، top-p/nucleus)، و رمزگشایی محدود واژگانی.
- تجمع گرادیان: این ویژگی آموزش با میکرو دستههای بزرگ را حتی زمانی که تنها از یک GPU استفاده میشود، امکانپذیر میسازد. به جای به روز رسانی پارامترهای مدل پس از هر دسته کوچک، گرادیان ها بر روی تعدادی از مینی دسته جمع آوری می شوند و سپس برای به روز رسانی پارامترها استفاده می شوند. این استراتژی می تواند به غلبه بر محدودیت های حافظه و افزایش کارایی تمرین کمک کند.
- آموزش دقیق ترکیبی: این عملکرد از قابلیتهای هسته تانسور NVIDIA برای آموزش سریعتر و با حافظه GPU کمتر مدلها استفاده میکند. تمرین با دقت ترکیبی با ترکیب محاسبات با دقت کمتر (به عنوان مثال، نیم دقت) و دقت بالاتر (مانند دقت تک) فرآیند تمرین را بهینه میکند.
- توسعه پذیری: با اجازه ثبت مدل های اضافی، معیارها (توابع از دست دادن)، مشاغل، بهینه سازها، و زمانبندی نرخ یادگیری، معماری ارائه شده شما امکان اصلاح آسان را می دهد. این سازگاری به محققان و توسعهدهندگان اجازه میدهد تا با اجزای مختلف آزمایش کنند و چارچوب را با نیازهای فردی خود تنظیم کنند.
- انعطاف پذیری پیکربندی: Hydra، یک ابزار مدیریت پیکربندی، توسط چارچوب برای ارائه امکانات پیکربندی همه کاره استفاده میشود. با ادغام گزینههای مبتنی بر کد، خط فرمان و فایلها، سفارشیسازی و آزمایش ساده را امکانپذیر میکند.
- Shareding وضعیت پارامتر و بهینه ساز: پارامترهای مدل و وضعیت بهینه ساز در بسیاری از دستگاه ها (مانند GPU) دارای این ویژگی توزیع می شوند. با کاهش مقدار حافظه و محاسبات مورد نیاز در هر دستگاه، عملکرد تمرین را بهبود می بخشد.
- تخلیه پارامترها به CPU: در مرحله آموزش، پارامترهای مدل از GPU به CPU منتقل میشوند. با ذخیره موقت پارامترها در CPU و ارسال مجدد آنها به GPU در صورت لزوم، بارگذاری پارامترها در CPU می تواند به کاهش محدودیت های حافظه GPU، به خصوص برای مدل های بزرگ کمک کند.
این مقاله برای کمک به یادگیری Fairseq است. ما اطمینان داریم که برای شما مفید بوده است. لطفاً نظرات و بازخورد خود را در بخش نظرات زیر به اشتراک بگذارید.
ادامه خواندن