هواوی اعلام کرد که میان افزار MensSpore Deep Learning به سبک TensorFlow و PyTorch خود اکنون منبع باز است. در این مقاله مهمترین ویژگی های آن را دریابید.
هواوی به تازگی اعلام کرده است که چارچوب MindSpore خود برای توسعه برنامه های هوش مصنوعی به منبع باز تبدیل شده و در GiHub و Gitee در دسترس است. MindSpore چارچوب Deep Learning دیگری برای آموزش مدل های شبکه عصبی ، مشابه TensorFlow یا PyTorch است که برای استفاده از Edge تا Cloud طراحی شده است ، که از هر دو پردازنده گرافیکی و بدیهی است پردازنده های Huawei Ascend پشتیبانی می کند.
در ماه اوت گذشته ، هنگامی که هواوی معرفی رسمی پردازنده Ascend خود را اعلام کرد ، MindSpore برای اولین بار معرفی شد و بیان داشت که در یک جلسه آموزشی مبتنی بر ResNet-50 ، ترکیب Ascend 910 و MindSpore تقریباً دو برابر سریعتر است. هنگام آموزش مدل های هوش مصنوعی در مقابل سایر کارت های یادگیری اصلی با استفاده از TensorFlow درست است که در سال های اخیر چارچوب های بسیاری ظهور کرده اند و شاید MindSpore چیزی بیشتر از یک گروه نباشد که حتی می تواند از راه دور با TensorFlow (با پشتیبانی Google) و PyTorch (پشتیبانی شده توسط Facebook) رقابت کند.)
معماری سیستم
وب سایت MindSpore توصیف می کند که این زیرساخت از سه لایه اصلی تشکیل شده است: عبارت frontend ، موتور گرافیکی و زمان اجرای backend. شکل زیر نمودار تصویری را نشان می دهد:
سطح اول MindSpore یک Python API برای برنامه نویسان ارائه می دهد. از آنجا که زبان شناسی زبان در جامعه ما عملاً پایتون است ، و در غیر این صورت MindSpore می خواهد با PyTorch و TensorFlow رقابت کند. با این API ، برنامه نویسان می توانند مدل ها (آموزش ، استنباط و غیره) را دستکاری کرده و داده ها را پردازش کنند. این سطح اول همچنین شامل پشتیبانی از نمایش موقت کد (MindSpore IR) است که بسیاری از بهینه سازی ها بر اساس آن انجام می شوند که می توانند به صورت موازی سازی و تمایز اتوماتیک (GHLO) انجام شوند.
در زیر لایه Graph Engine وجود دارد که قابلیت های لازم برای ایجاد و اجرای تمایز خودکار نمودار اجرا را فراهم می کند. با MindSpore ، آنها یک مدل تمایز خودکار را به غیر از PyTorch (که یک نمودار اجرای پویا ایجاد می کند) یا TensorFlow (هرچند گزینه ایجاد یک برنامه اجرای استاتیک کارآمد تر در ابتدا انتخاب شده بود) ، اکنون گزینه گرافیک اجرای پویا را نیز ارائه می دهد و اجازه می دهد تا یک نسخه ثابت از نمودار با استفاده از دکوراتور @ tf.function API سطح پایین آن).
انتخاب MindSpore تبدیل کد منبع به قالب کد میانی (MindSpore IR) برای استفاده از این دو مدل است (برای اطلاعات بیشتر ، به بخش "جداسازی خودکار" در وب سایت MindSpore مراجعه کنید).
لایه نهایی شامل کلیه کتابخانه ها و محیط های زمان اجرا است که برای پشتیبانی از معماری های مختلف سخت افزاری که کد در آنها پردازش می شود ، مورد نیاز است. به احتمال زیاد ، این یک باطن بسیار شبیه به سایر چارچوب ها است ، شاید با ویژگی های Huawei ، مانند کتابخانه هایی مانند HCCL (کتابخانه ارتباطات جمعی Huawei) ، معادل NVIDIA NCCL (کتابخانه ارتباطات جمعی NVIDIA).
پشتیبانی از تجسم آموزش
طبق آموزش MindSpore ، اگرچه نصب و استفاده از آنها غیرممکن بود ، اما آنها MindInsight را برای ایجاد تجسمهایی که تا حدودی یادآور TensorBoard ، TensorFlow هستند ، دارند. نگاهی به برخی از عکسهای صفحه نمایش آنها در وب سایت خود نشان می دهد:
طبق این کتابچه راهنما ، MindSpore در حال حاضر برای نوشتن (در یک پرونده ورود به سیستم) در فرآیند آموزش تمام پارامترهای مدل و ابرپارامترهای مورد نظر ما ، و همچنین برنامه زمان بندی محاسبه ، از مکانیزم پاسخگویی (یادآور نحوه کار با Keras) استفاده می کند کامپایل شبکه عصبی به کد میانی کامل است.
موازی کاری
آنها در آموزش خود ، در مورد دو حالت موازی سازی (DATA_PARALLEL و AUTO_PARALLEL) صحبت می کنند و کد نمونه ای را ارائه می دهند که ResNet-50 را با یک مجموعه داده CIFAR برای پردازنده Ascend 910 آموزش می دهد (که من قادر به آزمایش آن نبودم). DATA_PARALLEL به استراتژی ای اطلاق می شود که معمولاً تحت عنوان موازی سازی داده ها شناخته می شود و شامل تقسیم داده های آموزشی به چندین زیر مجموعه است که هر یک از آنها با همان نسخه از مدل اجرا می شوند ، اما در واحدهای پردازشی مختلف. پشتیبانی از Graph Engine برای موازی سازی کد و به ویژه برای موازی سازی AUTO_PARALLEL فراهم شده است.
حالت AUTO_PARALLEL به طور خودکار موازی سازی را با ترکیب استراتژی موازی سازی داده ها (که در بالا بحث شد) با استراتژی موازی سازی مدل ، که در آن مدل به قسمت های مختلف تقسیم می شود و هر قسمت به طور موازی در واحدهای پردازشی مختلف اجرا می شود ، بهینه می کند. این حالت اتوماتیک استراتژی موازی سازی را ارائه می دهد که بهترین مزایا را دارد ، که می توانید در بخش موازی خودکار در وب سایت MindSpore بخوانید (اگرچه آنها نحوه تخمین و تصمیم گیری را توصیف نمی کنند). باید منتظر بمانیم تا تیم فنی وقت خود را برای گسترش اسناد و درک جزئیات بیشتر در مورد استراتژی موازی سازی خودکار اختصاص دهیم. اما واضح است که این استراتژی موازی سازی اتوماتیک بسیار مهم است و این جایی است که آنها باید و می توانند با TensorFlow یا PyTorch رقابت کنند و با استفاده از پردازنده های Huawei عملکرد بهتری داشته باشند.
نقشه راه برنامه ریزی شده و نحوه مشارکت در آن
بدیهی است که کارهای زیادی باید انجام شود و در این مرحله آنها ایده های سال آینده خود را در نقشه راه گسترده ارائه شده در این صفحه ساده کرده اند ، اما آنها معتقدند که اولویت ها با توجه به کاربر تنظیم می شوند.
بازخورد. در حال حاضر می توانیم این خطوط اصلی را پیدا کنیم:
- پشتیبانی از مدلهای بیشتر (مدلهای کلاسیک معلق ، GAN ، RNN ، ترانسفورماتورها ، مدلهای یادگیری تقویت شده ، برنامه نویسی احتمالی ، AutoML و غیره).
- توسعه API ها و کتابخانه ها برای بهبود قابلیت استفاده و تجربه برنامه نویسی (اپراتورهای بیشتر ، بهینه سازهای بیشتر ، عملکردهای از دست دادن بیشتر و غیره)
- پشتیبانی و بهینه سازی عملکرد پردازنده Huawei Ascend جامع (بهینه سازی تلفیق ، بهبود استفاده از منابع و غیره)
- تکامل پشته نرم افزار و اجرای بهینه سازی نمودار محاسباتی (بهبود نمایش IR متوسط ، افزودن قابلیت های اضافی بهینه سازی و غیره).
- پشتیبانی از زبانهای برنامه نویسی بیشتر (نه فقط پایتون).
- بهبود یادگیری توزیع شده با بهینه سازی برنامه ریزی خودکار ، توزیع داده ها و غیره
- ابزار MindInsight را بهبود ببخشید تا "اشکال زدایی" برای برنامه نویس را آسان کند و تنظیم فرق پارامتر را در طی فرایند یادگیری بهبود بخشد.
- پیشرفت در ارائه قابلیت استنتاج به دستگاه های Edge (امنیت ، پشتیبانی از مدل های غیر پلت فرم از طریق ONNX و غیره)
در صفحه انجمن می بینید که MindSpore در خارج از هواوی و چین شرکایی مانند دانشگاه ادینبورگ ، کالج امپریال لندن ، دانشگاه مونستر (آلمان) یا دانشگاه پاریس-ساکلی دارد. آنها می گویند که آنها از یک الگوی حاکمیت باز پیروی می کنند و از کل جامعه دعوت می کنند تا هم به کد و هم به اسناد کمک کنند.
نتیجه
پس از یک نگاه سریع سریع ، به نظر می رسد تصمیمات صحیح طراحی و پیاده سازی (مانند همزمانی و تمایز اتوماتیک) می تواند جایی برای پیشرفت و بهینه سازی ایجاد کند که عملکرد بهتری نسبت به چارچوب هایی که می خواهند بهتر از آن باشند ، به دست آورد.اما هنوز کارهای زیادی برای گرفتن PyTorch و TensorFlow و بیش از همه ساختن یک جامعه پیش رو است ، نه فقط! با این حال ، همه ما قبلا می دانیم که با حمایت یک شرکت بزرگ در این بخش مانند Huawei ، همه چیز ممکن است ، یا این سه سال پیش آشکار بود که اولین نسخه PyTorch (فیس بوک) منتشر شد که می تواند نزدیک به پاشنه باشد از TensorFlow (Google)؟