مقاله ASpanFormer
آگوست 10, 2023آشنایی کامل با پایتورچ
آگوست 16, 2023پایتورچ چیست؟
PyTorch از زمان آغاز به کار توسط تیم تحقیقات هوش مصنوعی فیس بوک (FAIR) در سال 2017 تا کنون، به یک چارچوب بسیار محبوب و کارآمد برای ایجاد مدل یادگیری عمیق (DL) تبدیل شده است. این کتابخانه یک بسته محاسباتی علمی مبتنی بر پایتون است که دو هدف کلی دارد:
جایگزینی برای NumPy برای استفاده از قدرت پردازندههای گرافیکی و دیگر شتابدهندهها.
یک کتابخانه تمایز خودکار که برای پیاده سازی شبکه های عصبی مفید است.
pytorch یک چارچوب منبع باز یادگیری ماشین (ML) بر اساس زبان برنامه نویسی پایتون و کتابخانه Torch است. تورچ یک کتابخانه ML منبع باز است که برای ایجاد شبکه های عصبی عمیق استفاده می شود و به زبان اسکریپت Lua نوشته شده است. پای تورچ یکی از پلت فرم های ترجیحی برای تحقیقات یادگیری عمیق است. این چارچوب برای سرعت بخشیدن به فرایند بین نمونه سازی و استقرار تحقیق ساخته شده است.
چارچوب PyTorch از بیش از 200 عملیات مختلف ریاضی پشتیبانی می کند. محبوبیت PyTorch همچنان در حال افزایش است، زیرا ایجاد مدل های شبکه عصبی مصنوعی را ساده می کند. PyTorch عمدتا توسط دانشمندان داده برای تحقیقات و برنامه های کاربردی هوش مصنوعی (AI) استفاده می شود.
PyTorch در ابتدا یک پروژه کارآموزی برای Adam Paszke بود که در آن زمان شاگرد Soumith Chintala، یکی از توسعه دهندگان Torch بود. Paszke و چندین نفر دیگر با توسعه دهندگان از دانشگاه ها و شرکت های مختلف برای آزمایش PyTorch کار کردند. چینتالا در حال حاضر به عنوان محقق در Meta – سابقاً فیس بوک – کار می کند که از PyTorch به عنوان پلتفرم زیربنایی خود برای هدایت تمام کارهای هوش مصنوعی استفاده می کند.
PyTorch چگونه کار می کند؟
PyTorch ماهیت پایتونیک دارد، به این معنی که از سبک کدنویسی پیروی می کند که از ویژگی های منحصر به فرد پایتون برای نوشتن کد خوانا استفاده می کند. پایتون همچنین به دلیل استفاده از نمودارهای محاسباتی پویا محبوب است. توسعه دهندگان، دانشمندان و اشکال زدای شبکه های عصبی را قادر می سازد تا به جای منتظر ماندن برای نوشتن کل برنامه، بخشی از کد را در زمان واقعی اجرا و آزمایش کنند.
محاسبه تانسور مشابه آرایه NumPy -( یک کتابخانه منبع باز پایتون که پشتیبانی از آرایه های بزرگ و چند بعدی را اضافه می کند) :
تانسورها آرایه های n بعدی عمومی هستند که برای محاسبات عددی دلخواه استفاده می شوند و توسط واحدهای پردازش گرافیکی شتاب می گیرند. این ساختارهای چند بعدی را می توان با رابط های برنامه کاربردی (API) محاسبه و دستکاری کرد.
PyTorch ویژگی های کلیدی زیر را ارائه می دهد:
TorchScript. این محیط تولید PyTorch است که کاربران را قادر می سازد تا به طور یکپارچه بین حالت ها جابجا شوند. TorchScript عملکرد، سرعت، سهولت استفاده و انعطاف پذیری را بهینه می کند.
محاسبه گراف پویا . این ویژگی به کاربران این امکان را می دهد که رفتار شبکه را در لحظه تغییر دهند، نه اینکه منتظر اجرای همه کدها باشند.
تمایز خودکار. این تکنیک برای ایجاد و آموزش شبکه های عصبی استفاده می شود. به صورت عددی مشتق یک تابع را با ایجاد گذر های معکوس در شبکه های عصبی محاسبه می کند.
پشتیبانی از پایتون. از آنجایی که PyTorch مبتنی بر پایتون است، میتوان از آن با کتابخانهها و بستههای محبوبی مانند NumPy، SciPy، Numba و Cynthon استفاده کرد.
متغیر. متغیر خارج از تانسور محصور شده است تا گرادیان را نگه دارد. نشان دهنده یک گره در یک گراف است.
پارامتر. پارامترها حول یک متغیر پیچیده (warp) می شوند. آنها زمانی استفاده می شوند که استفاده از یک متغیر امکان پذیر نیست و در این صورت یک پارامتر باید به عنوان یک تانسور استفاده شود.
ماژول. ماژول ها شبکه های عصبی را نشان می دهند و بلوک های سازنده محاسبات حالت هستند. یک ماژول می تواند شامل ماژول ها و پارامترهای دیگری باشد.
توابع. روابط بین دو متغیر است. توابع حافظه ای برای ذخیره هیچ حالت یا بافری ندارند و از خود حافظه ندارند.
مزایای PyTorch
استفاده از PyTorch می تواند مزایای زیر را ارائه دهد:
- به توسعه دهندگان ساختاری با یادگیری آسان و کدنویسی ساده ارائه می دهد که مبتنی بر پایتون است.
- اشکال زدایی آسان با ابزارهای محبوب پایتون را فعال می کند.
- مقیاس پذیری را ارائه می دهد و در پلتفرم های ابری اصلی به خوبی پشتیبانی می شود.
- یک جامعه کوچک متمرکز بر منبع باز فراهم می کند.
- مدل های یادگیری را به فرمت استاندارد تبدیل شبکه عصبی باز (ONNX) صادر می کند.
- یک رابط کاربر پسند ارائه می دهد.
- گزینه front-end زبان c++ را ارائه می دهد.
- شامل مجموعه ای غنی از API های قدرتمند است که کتابخانه PyTorch را گسترش می دهد.
PyTorch را می توان با پایتون و همچنین ++C استفاده کرد. طبیعتاً رابط پایتون صیقلیتر است.
برخلاف سایر چارچوبهای یادگیری عمیق محبوب مانند TensorFlow که از نمودارهای محاسباتی استاتیک استفاده میکنند، PyTorch از محاسبات پویا استفاده میکند که انعطافپذیری بیشتری را در ساخت معماریهای پیچیده امکانپذیر میکند. Pytorch از مفاهیم اصلی پایتون مانند کلاسها، ساختارها و حلقههای شرطی استفاده میکند که برای چشمان ما بسیار آشنا هستند، بنابراین درک آن بسیار بصریتر است. این باعث می شود آن را بسیار ساده تر از سایر فریم ورک ها مانند TensorFlow که سبک برنامه نویسی خاص خود را ارائه می دهند.
تنسور چیست ؟؟
در یادگیری ماشینی، وقتی داده ها را نمایش می دهیم، باید این کار را به صورت عددی انجام دهیم. یک تانسور صرفاً ظرفی است که می تواند داده ها را در ابعاد مختلف نگهداری کند. با این حال، از نظر ریاضی، تانسور یک واحد اساسی از داده است که می تواند به عنوان پایه ای برای عملیات ریاضی پیشرفته استفاده شود. این می تواند یک عدد، بردار، ماتریس یا آرایه چند بعدی مانند آرایه های Numpy باشد. تانسورها همچنین می توانند توسط CPU یا GPU کنترل شوند تا عملیات سریعتر انجام شود. انواع مختلفی از تانسورها مانند Float Tensor، Double Tensor، Half Tensor، Int Tensor و Long Tensor وجود دارد، اما PyTorch از تانسور شناور 32 بیتی به عنوان نوع پیش فرض استفاده می کند.