مایکروسافت اولین نسخه سازگار با دات نت SynapseML را معرفی کرد، یک کتابخانه جدید یادگیری ماشینی (ML) برای پلتفرم پردازش توزیع شده Apache Spark. نسخه 0.1.0 کتابخانه SynapseML پشتیبانی از اتصالات دات نت را اضافه می کند و به توسعه دهندگان دات نت این امکان را می دهد که pipelines ML را به زبان دلخواه خود بنویسند.
SynapseML که قبلاً با نام MMLSpark (یادگیری ماشین مایکروسافت برای Apache Spark) شناخته میشد، کتابخانهای است که چندین الگوریتم ML را در یک API منسجم برای ساخت راهحلهای یادگیری ماشینی ناهمگن که در بالای پلتفرم Apache Spark اجرا میشود، ادغام میکند. به عنوان مثال، به توسعه دهندگان اجازه می دهد تا از کتابخانه های قدرتمند دیگری مانند OpenCV (برای بینایی کامپیوتر)، VowpalWabbit (الگوریتم یادگیری تقویتی سریع)، یا LightGBM (برای مدل های یادگیری درخت تصمیم) استفاده کنند. این یک ابتکار در حال انجام برای مایکروسافت است که توسط مقاله ای که در سال 2019 توسط مارک همیلتون، یکی از مهندسان مایکروسافت در پروژه SynapseML منتشر شد، مشخص شده است.
SynapseML بر روی Apache Spark اجرا می شود و به نصب جاوا نیاز دارد، زیرا Spark از JVM برای اجرای Scala استفاده می کند. با این حال، برای زبانهای دیگر مانند پایتون یا R پیوندهایی دارد. نسخه فعلی 0.10.0 اتصالهایی را برای زبانهای داتنت اضافه میکند.پشتیبانی دات نت برای SynapseML در بالای دات نت برای کتابخانه Apache Spark اجرا می شود. این در مجموعهای از بستههای SynapseML NuGet موجود است. بسته ها در فید اصلی NuGet منتشر نشده اند و منبع آنها باید به صورت دستی اضافه شود. پس از نصب، SynapseML API برای فراخوانی از برنامه های دات نت در دسترس است.
قطعه کد زیر نشان می دهد که چگونه می توان SynapseML API را از یک برنامه سی شارپ فراخوانی کرد.
// Create LightGBMClassifier var lightGBMClassifier = new LightGBMClassifier() .SetFeaturesCol("features") .SetRawPredictionCol("rawPrediction") .SetObjective("binary") .SetNumLeaves(30) .SetNumIterations(200) .SetLabelCol("label") .SetLeafPredictionCol("leafPrediction") .SetFeaturesShapCol("featuresShap"); // Fit the model var lightGBMClassificationModel = lightGBMClassifier.Fit(trainDf); // Apply transformation and displayresults lightGBMClassificationModel.Transform(testDf).Show(50);
SynapseML به توسعه دهندگان این امکان را می دهد که سایر خدمات را در pipeline خود فراخوانی کنند. این کتابخانه از خدمات شناختی خود مایکروسافت پشتیبانی می کند، مجموعه ای از سرویس های هوش مصنوعی همه منظوره که توسط مدل های آموزش دیده توسط مایکروسافت پشتیبانی می شود. علاوه بر این، نسخه فعلی SynapseML به توسعه دهندگان این امکان را می دهد که از مدل های OpenAI از پیش آموزش دیده در راه حل های خود استفاده کنند، مانند GPT-3 برای درک و تولید زبان طبیعی و Codex برای تولید کد. استفاده از مدل های OpenAI در حال حاضر نیاز به دسترسی به Azure OpenAI Service دارد.
در نهایت، نسخه فعلی پشتیبانی از MLflowرا اضافه می کند، یک پلت فرم برای مدیریت چرخه حیات ML. توسعه دهندگان می توانند از آن برای بارگیری و ذخیره مدل ها و ثبت پیام ها در طول اجرای مدل ها استفاده کنند.
واضح است که مایکروسافت نام کتابخانه SynapseML را برای مطابقت با نام Azure Synapse Analytics موجود خود تغییر داده است، که طبق توضیحات محصول:
“تجربه ای یکپارچه برای جذب، کاوش، آماده سازی، تغییر شکل، مدیریت و ارائه داده ها برای نیازهای فوری BI و یادگیری ماشین.”
SynapseML به جامعه کتابخانه های یادگیری ماشین دات نت می پیوندد:
- ML.NET یک کتابخانه دات نت برای اجرای بارهای کاری تک ماشینی با استفاده از زبان های دات نت است.
- Microsoft Cognitive Toolkit (CNTK) یک کتابخانه Microsoft ML است که ماه گذشته توسعه آن متوقف شد. همچنین دارای API دات نت است.
- Accord.NET یک کتابخانه ML برای دات نت است که برای پردازش بینایی و صدا طراحی شده است.
- سایر کتابخانه های عمومی محبوب ML دارای نسخه های دات نت هستند:
در جامعه دات نت، سردرگمی در میان توسعه دهندگان در مورد اینکه چگونه همه این کتابخانه ها با یکدیگر مقایسه می شوند یا اینکه آیا آنها جایگزین یکدیگر می شوند وجود دارد. به نظر می رسد اعضای پروژه SynapseML به طور فعال به این سؤالات در Reddit پاسخ می دهند.