Core ML: ساده ترین راه اجرای شبکه های عصبی عمیق روی دستگاه های اپل

19 مرداد 1404 - خواندن 6 دقیقه - 25 بازدید

Core ML یکی از ساده ترین و کارآمدترین روش ها برای اجرای شبکه های عصبی عمیق در دستگاه های اپل — از جمله iPhone، iPad، MacBook، Apple TV و Apple Watch — است. این چارچوب نه تنها کاربرد آسانی دارد، بلکه بر اساس معماری سخت افزاری دستگاه های اپل به صورت عمیق بهینه سازی شده است. این بهینه سازی، امکان استفاده از CPU، GPU و حتی نورومورفیک موتور (Neural Engine) را فراهم می کند و عملکرد بالایی را در استنتاج مدل های یادگیری ماشین ممکن می سازد.

اگرچه در سال های اخیر چارچوب های جایگزینی برای اجرای مدل های هوش مصنوعی روی دستگاه های موبایل توسعه یافته اند، اما سادگی، یکپارچگی و عملکرد بالای Core ML، رقابت با آن را بسیار دشوار کرده است.

چالش های قبل از Core ML

در گذشته، اجرای شبکه های عصبی کانولوشنی (CNN) روی دستگاه های اپل نیازمند استفاده از کتابخانه Metal بود — کتابخانه ای که در ابتدا توسط اپل برای بهینه سازی عملکرد گرافیکی در بازی ها طراحی شده بود. این کار به معنای نوشتن کد پایین سطح و نزدیک به سخت افزار بود.

توسعه روی Metal شبیه به نوشتن کد اسمبلی یا CUDA برای GPUهای NVIDIA بود: فرآیندی خسته کننده، مستعد خطا و دشوار در اشکال زدایی. به همین دلیل، تنها تعداد محدودی از توسعه دهندگان جرات استفاده از این روش را داشتند.

تلاش های اولیه برای ساده سازی

در دسامبر ۲۰۱۵، آموند تیوت (Amund Tveit) با معرفی DeepLearningKit تلاش کرد تا لایه ای انتزاعی روی Metal ایجاد کند تا توسعه دهندگان بتوانند شبکه های عصبی را بدون نیاز به دانش عمیق از Metal پیاده سازی کنند. این یکی از اولین تلاش ها برای ایجاد سادگی در این حوزه بود، اما هنوز دور از یک راه حل جامع و کاربردی بود.

در کنفرانس جهانی توسعه دهندگان اپل (WWDC) سال ۲۰۱۶، اپل چارچوب Metal Performance Shaders (MPS) را معرفی کرد. این چارچوب بر پایه Metal ساخته شده و برای بهینه سازی عملیات گرافیکی و محاسباتی سنگین طراحی شده بود. MPS با ارائه ماژول های آماده برای عملیات پایه ای مانند:

  • کانولوشن (Convolution)
  • Pooling
  • ReLU

امکان ساخت شبکه های عصبی را با ترکیب این لایه ها فراهم کرد. برای توسعه دهندگانی که با چارچوب هایی مانند Keras آشنا بودند، این رویکرد آشنا و کمتر دلهره آور به نظر می رسید.

اما همچنان مشکلاتی وجود داشت: توسعه دهندگان مجبور بودند ابعاد ورودی و خروجی هر لایه را به صورت دستی مدیریت کنند. این موضوع منجر به نوشتن کدهای طولانی و پیچیده می شد.

به عنوان مثال، پیاده سازی مدل Inception-v3 برای تشخیص ۱۰۰۰ دسته تصویر، بیش از ۲۰۰۰ خط کد نیاز داشت که بیشتر آن صرف تعریف ساختار شبکه و مدیریت ابعاد داده می شد. حال تصور کنید که پس از آموزش مجدد مدل، یک لایه تغییر کند — در این صورت باید تمام این خطوط کد را دستی بازبینی و به روزرسانی کنید.

Forge: گامی به سوی ساده سازی

در آوریل ۲۰۱۷، ماتیس هولمنز (Matthijs Hollemans) کتابخانه Forge را معرفی کرد. این کتابخانه تلاشی برای ساده سازی توسعه روی MPS بود و با کاهش کدهای تکراری (boilerplate code) و افزایش سطح انتزاع، زمان توسعه را به طور چشمگیری کاهش داد. با این حال، Forge همچنان یک راه حل میانی بود و نیاز به یک راه حل یکپارچه و رسمی از سوی اپل احساس می شد.

معرفی Core ML: نقطه عطف در توسعه هوش مصنوعی روی دستگاه های اپل

همه این چالش ها و پیچیدگی ها زمانی پایان یافت که اپل در WWDC 2017، Core ML را معرفی کرد.

Core ML شامل دو بخش اصلی است:

  1. موتور استنتاج (Inference Engine): که درون iOS و سایر سیستم عامل های اپل اجرا می شود و به صورت بهینه از سخت افزار استفاده می کند.
  2. ابزار Core ML (Core ML Tools): یک بسته منبع باز پایتون که امکان تبدیل مدل های آموزش دیده از چارچوب های مختلف به فرمت mlmodel را فراهم می کند.

گردش کار Core ML

فرآیند توسعه با Core ML بسیار ساده است:

  1. مدل در چارچوب هایی مانند Keras، TensorFlow یا PyTorch آموزش داده می شود.
  2. با استفاده از Core ML Tools، مدل به فرمت mlmodel تبدیل می شود.
  3. فایل mlmodel به پروژه iOS اضافه می شود.
  4. تنها با چند خط کد Swift یا Objective-C، مدل در برنامه فعال می شود و استنتاج انجام می پذیرد.

پشتیبانی از چارچوب های مختلف

Core ML از طیف گسترده ای از چارچوب های یادگیری ماشین پشتیبانی می کند. از جمله:

  • TensorFlow
  • Keras
  • Caffe2
  • Scikit-learn
  • LIBSVM
  • TuriCreate و Create ML (ابزارهای داخلی اپل)

همچنین، از طریق فرمت ONNX (Open Neural Network Exchange)، امکان تبدیل مدل های PyTorch، MXNet، Cognitive Toolkit و PaddlePaddle نیز فراهم شده است. ONNX خود از چارچوب های بزرگی مانند:

  • PyTorch (فیسبوک)
  • MXNet (آمازون)
  • Cognitive Toolkit (مایکروسافت)
  • PaddlePaddle (بایدو)

پشتیبانی می کند. بنابراین، تقریبا هر مدلی که در هر چارچوب اصلی هوش مصنوعی آموزش داده شود، می تواند به راحتی به Core ML تبدیل و روی دستگاه های اپل اجرا شود.