بسم الله الرحمن الرحیم
بالاخره بعد از یکسال، مایکروسافت ساعاتی پیش نسخه پایتورچ مبتنی بر DirectML را منتشر کرد. این نسخه از backend DirectML بجای CUDA بهره میبرد و به کاربران اجازه train و test مدلهای عمیق را بر روی کارتهای گرافیک مختلف (چه گرافیک های جدا و چه گرافیک های آنبرد) میدهد.
یکی از مشکلات عدیده ای که بسیاری از کاربران با آن مواجه هستند نیاز به کارتهای گرافیک نسبتا به روز برای آموزش مدلهای عمیق اند. بعنوان مثال برای نصب پکیج پایتون پایتورچ کاربر بایستی حداقل از کارت گرافیکی که از compute capability 5.0 به بالا پشتیبانی میکند بهره ببرد. در غیراینصورت تنها راه استفاده از پایتورچ build آن از سورس کد است و حتی در این حالت نیز کارت گرافیک او بایستی از compute capability 3.0 بهره ببرد. (از سال ۲۰۱۸ پشتیبانی از cc 3.0 برداشته شد (نسخه ۰٫۳٫۱ پایتورچ). موارد مطرح شده مختص به کسانی بود که از کارت گرافیک انویدیا استفاده میکردند. پشتیبانی ازکارتهای گرافیک AMD بعد از معرفی RoCm میسر شد و تنها از نسخه ۱٫۸ پایتورچ بصورت رسمی پکیج های مبتنی بر RoCm تنها برای سیستم های مبتنی بر لینوکس ارائه شد و کاربران ویندوز کماکان در این زمینه با مشکل مواجه بودند.
طی سالهای اخیر Backend های مختلفی در این زمینه تولید و ارائه شده اند که از جمله آنها میتوان به DirectML اشاره نمود که تلاش مایکروسافت برای فراهم کردن زیرساخت مورد نیاز برای بهره بری گسترده از GPU-acceleration در فعالیت های مرتبط با یادگیری ماشین است. DirectML یک کتابخانه با کارایی بالا و مبتنی بر DirectX-12 است که برای کاربردهای مبتنی بر یادگیری ماشین توسعه داده شده است. هدف از ایجاد آن، فراهم سازی امکان استفاده از قابلیت GPU acceleration در فعالیت های یادگیری ماشین معمول بر روی گستره متنوعی از سخت افزارها و درایورهای مرتبط است که شامل تمامی GPU های پشتیبانی کننده از DirectX12 از سازندگان مختلف مثل AMD, Nvidia, Intel و Qualcomm میشود.
یکسال پیش مایکروسافت Tensorflow-DML را عرضه کرد و بعد از پیشنهاد پایتورچ، یکسال بعد (چند ساعت پیش!) نسخه پیش نمایش پایتورچ نیز عرضه شد. برخلاف برخی از بک اند ها، در Pytorch-DML شما محدود به حالت تست یا اینفرنس تنها نیستید و براحتی میتوانید اقدام به آموزش مدلهای خود کنید.
نصب :
برای استفاده از این پکیج در ویندوز ۱۰ و یا WSL شما (فعلا) باید از پایتون ۳٫۸ استفاده کنید.
قبل از نصب اگر پایتورچ و یا torchvision نصب است آنرا حذف کنید و بعد اقدام به نصب pytorch-dml کنید.
برای نصب هم از دستور زیر استفاده کنید :
1 2 3 4 |
pip install torchvision==0.9.0 pip install pytorch-directml |
بعد از نصب میتوان شروع به استفاده از پایتورچ کرد.(نکات انتها رو ببینید)
تنها تغییری که در کد پایتورچ شما نیاز است استفاده از dml بجای cuda است. یعنی بعنوان مثال
1 2 3 |
a = torch.tensor([[1, 2, 3], [1, 2, 3]]).to("cuda") |
تنها device رو به dml تغییر بدید و تمام:
1 2 3 |
a = torch.tensor([[1, 2, 3], [1, 2, 3]]).to("dml") |
نکته : نسخه ۱٫۱۰ پایتورچ هم امروز بصورت رسمی منتشر شد. اما نسخه DML که چند ساعت پیش منتشر شده مبتنی بر نسخه LTS پایتورچ (۱٫۸٫۰ ) هست. پس شما برای استفاده از نسخه DML باید نسخه فعلی پایتورچ خودتون رو به همراه torchvision حذف کنید. و بعد torchvision 0.9 رو نصب کنید.
دقت کنید ابتدا torchvision رو نصب کنید. به همراه اون نسخه torch 1.8 نصب میشه که باید حذفش کنید و بعد نسخه pytorch-dml رو نصب کنید. به غی راز این به مشکل میخورید.
نکته ۲: اگر چندتا کارت گرافیک روی سیستم دارید و یا میخوایید بین گرافیک آنبرد و کارت گرافیک سویچ کنید اون رو به فرم “dml:0” و یا “dml:1” و.. مشخص کنید. عدد مشخص کننده device انتخابی شما هست.
نکته ۲: شما از کارت گرافیک هایی که از directx12 پشتیبانی کنند میتونید استفاده کنید. همینطور گرافیک های آنبرد CPU های اینتل نسل ۴ ام به بعد (یعنی سری Haswell (از سال ۲۰۱۳) به بعد پشتیبانی میشن) .کارتهای گرافیک انویدیا هم از GTX600 به بعد پشتیبانی میشن کارتهای گرافیک AMD هم از سری ۷۰۰۰ به بعد پشتیبانی میشن. بطور خلاصه :
- AMD GCN 1st Gen (Radeon HD 7000 series) and above
- Intel Haswell (4th-gen core) HD Integrated Graphics and above
- NVIDIA Kepler (GTX 600 series) and above
- Qualcomm Adreno 600 and above
به عبارت دیگه تمام کارتهای گرافیک تقریبا از ۱۰ سال پیش تا الان پشتیبانی میشن!
نکته اخر:
بالا در مورد بک اندهای مختلف خیلی خلاصه توضیح دادم نمونه های دیگه ای که وجود داره PlaidML هست که توسط اینتل توسعه داده میشه ( نسورفلو/کراس/onnx پشتیبانی میشن) و یا openvino که بک اند دیگه ای هست برای Onnx ران تایم که باز توسط اینتل پشتیبانی میشه و موارد مختلف دیگه مثل Tvm و… که انشاءالله عمری باشه سر فرصت سعی میکنم توضیح بدم.
با سلام این نسخه دیگر پشتیبانی نمیشه؟؟!! جدید چی می تونیم استفاده کنیم؟
سلام. وقت شما بخیر
هنوز پشتیبانی میشه منتها با یکسری تغییراتی همراه بوده که از اون جمله میشه به تغییر نام و شیوه استفاده اون اشاره کرد.
برای نصب نسخه جدید باید از دستور
pip install torch-directml
استفاده کنید. (دقت کنید که نسخه cpuonly پایتورچ رو باید نصب کنید و بعد این ماجول رو بعنوان یک پلاگین نصب میکنید در کنارش و بعد از تورچ استفاده میکنید)برای توضیحات تکمیلی به اینجا مراجعه کنید
علاوه بر اون من torch-mlir رو پیشنهاد میکنم که فرصت نشد در موردش صحبت کنم (شاید بعدا یک پست در موردش منتشر کردم) اینجا رو ببینید https://github.com/llvm/torch-mlir/