Java PlatoBlockchain Data Intelligence میں لکھا ہوا نیا اوپن سورس مشین لرننگ فریم ورک۔ عمودی تلاش۔ عی

جاوا میں لکھا ہوا نیا اوپن سورس مشین لرننگ فریم ورک

مجھے یہ اعلان کرتے ہوئے خوشی ہو رہی ہے کہ ڈیٹام باکس مشین لرننگ فریم ورک اب GPL 3.0 کے تحت اوپن سورس ہے اور آپ اس کا کوڈ یہاں سے ڈاؤن لوڈ کر سکتے ہیں۔ Github کے!

یہ فریم ورک کیا ہے؟

۔ ڈیٹام باکس مشین لرننگ فریم ورک جاوا میں لکھا ہوا ایک اوپن سورس فریم ورک ہے جو مشین لرننگ ماڈلز اور شماریاتی ایپلی کیشنز کی تیز رفتار ترقی کو قابل بناتا ہے۔ یہ وہ کوڈ ہے جو فی الحال Datumbox API کو طاقت دیتا ہے۔ فریم ورک کی بنیادی توجہ مشین لرننگ الگورتھم اور شماریاتی طریقوں کی ایک بڑی تعداد کو شامل کرنا اور چھوٹے درمیانے سائز کے ڈیٹاسیٹس کو سنبھالنے کے قابل ہونا ہے۔ اگرچہ فریم ورک کا ہدف مختلف شعبوں سے ماڈلز کی ترقی میں مدد کرنا ہے، یہ ایسے اوزار بھی فراہم کرتا ہے جو خاص طور پر نیچرل لینگویج پروسیسنگ اور ٹیکسٹ اینالیسس ایپلی کیشنز میں مفید ہیں۔

کس قسم کے ماڈلز/الگورتھمز سپورٹ ہیں؟

فریم ورک کو کئی پرتوں میں تقسیم کیا گیا ہے جیسے کہ مشین لرننگ، شماریات، ریاضی، الگورتھم اور افادیت۔ ان میں سے ہر ایک کلاسز کا ایک سلسلہ فراہم کرتا ہے جو مشین لرننگ ماڈلز کی تربیت کے لیے استعمال ہوتے ہیں۔ دو اہم ترین پرتیں شماریات اور مشین لرننگ پرت ہیں۔

اعداد و شمار کی پرت وضاحتی اعدادوشمار کا حساب لگانے، مختلف قسم کے نمونے لینے، عام طور پر استعمال ہونے والی امکانی تقسیم سے CDFs اور PDFs کا تخمینہ لگانے اور 35 سے زیادہ پیرامیٹرک اور نان پیرامیٹرک ٹیسٹ کرنے کے لیے کلاس فراہم کرتی ہے۔ وضاحتی ڈیٹا تجزیہ، نمونے لینے اور خصوصیت کے انتخاب کے دوران اس قسم کی کلاسیں عام طور پر ضروری ہوتی ہیں۔

مشین لرننگ پرت فراہم کرتی ہے کہ کلاسز کو بڑی تعداد میں مسائل میں استعمال کیا جا سکتا ہے جس میں درجہ بندی، رجعت، کلسٹر تجزیہ، موضوع کی ماڈلنگ، ڈائمینشنالٹی ریڈکشن، فیچر سلیکشن، انسمبل لرننگ اور ریکمنڈر سسٹم شامل ہیں۔ یہاں کچھ معاون الگورتھم ہیں: LDA، Max Entropy، Naive Bayes، SVM، Bootstrap Aggregating، Adaboost، Kmeans، Hierarchical Clustering، Dirichlet Process Mixture Models، Softmax Regression، Ordinal Regression، Linear Regression، Stepwise Regression اور PCA۔

Datumbox Framework VS Mahout VS Scikit-Learn

Mahout اور Scit-Learn دونوں ہی عظیم منصوبے ہیں اور ان دونوں کے اہداف بالکل مختلف ہیں۔ مہوت صرف ایک بہت ہی محدود تعداد میں الگورتھم کو سپورٹ کرتا ہے جسے متوازی بنایا جا سکتا ہے اور اس طرح بگ ڈیٹا کو ہینڈل کرنے کے لیے ہڈوپ کے میپ-ریڈوس فریم ورک کا استعمال کرتا ہے۔ دوسری طرف Scikit-Learn بڑی تعداد میں الگورتھم کو سپورٹ کرتا ہے لیکن یہ ڈیٹا کی بڑی مقدار کو ہینڈل نہیں کر سکتا۔ مزید یہ کہ اسے Python میں تیار کیا گیا ہے، جو کہ پروٹو ٹائپنگ اور سائنٹفک کمپیوٹنگ کے لیے ایک بہترین زبان ہے لیکن سافٹ ویئر ڈویلپمنٹ کے لیے میری ذاتی پسندیدہ نہیں ہے۔

ڈیٹام باکس فریم ورک دو حلوں کے بیچ میں بیٹھا ہے۔ یہ الگورتھم کی ایک بڑی تعداد کو سپورٹ کرنے کی کوشش کرتا ہے اور یہ جاوا میں لکھا جاتا ہے۔ اس کا مطلب یہ ہے کہ اسے پروڈکشن کوڈ میں آسانی سے شامل کیا جا سکتا ہے، میموری کی کھپت کو کم کرنے کے لیے اسے آسان بنایا جا سکتا ہے اور اسے ریئل ٹائم سسٹمز میں استعمال کیا جا سکتا ہے۔ آخر کار اگرچہ فی الحال ڈیٹم باکس فریم ورک درمیانے درجے کے ڈیٹاسیٹس کو ہینڈل کرنے کی صلاحیت رکھتا ہے، لیکن بڑے سائز کے ڈیٹاسیٹس کو ہینڈل کرنے کے لیے اسے وسعت دینے کے میرے منصوبے میں شامل ہے۔

کتنا مستحکم ہے؟

فریم ورک کے ابتدائی ورژن (0.3.x تک) اگست اور ستمبر 2013 میں تیار کیے گئے تھے اور وہ پی ایچ پی (جی ہاں!) میں لکھے گئے تھے۔ مئی اور جون 2014 (ورژن 0.4.x) کے دوران، فریم ورک کو جاوا میں دوبارہ لکھا گیا اور اضافی خصوصیات کے ساتھ بڑھایا گیا۔ دونوں شاخوں کا تجارتی ایپلی کیشنز بشمول ڈیٹام باکس API میں بہت زیادہ تجربہ کیا گیا۔ موجودہ ورژن 0.5.0 ہے اور یہ اتنا پختہ لگتا ہے کہ فریم ورک کے پہلے عوامی الفا ورژن کے طور پر جاری کیا جائے۔ یہ کہنے کے بعد، یہ نوٹ کرنا ضروری ہے کہ فریم ورک کی کچھ خصوصیات کو دوسروں کے مقابلے میں زیادہ اچھی طرح سے جانچا جاتا ہے۔ مزید یہ کہ چونکہ یہ ورژن الفا ہے، اس لیے آپ کو مستقبل کی ریلیز میں زبردست تبدیلیوں کی توقع کرنی چاہیے۔

میں نے اسے کیوں لکھا اور میں اسے اوپن سورس کیوں کرتا ہوں؟

مشین لرننگ اور NLP کے ساتھ میری شمولیت 2009 سے شروع ہوئی جب میں نے WebSEOAnalytics.com کی مشترکہ بنیاد رکھی۔ تب سے میں مختلف پراجیکٹس اور ایپلیکیشنز کے لیے مختلف مشین لرننگ الگورتھم کے نفاذ کو تیار کر رہا ہوں۔ بدقسمتی سے اصل نفاذ میں سے زیادہ تر مسائل کے لحاظ سے مخصوص تھے اور انہیں شاید ہی کسی دوسرے مسئلے میں استعمال کیا جا سکے۔ اگست 2013 میں میں نے ڈیٹام باکس کو ایک ذاتی پروجیکٹ کے طور پر شروع کرنے اور ایک ایسا فریم ورک تیار کرنے کا فیصلہ کیا جو NLP اور ٹیکسٹ کی درجہ بندی کے شعبے میں توجہ مرکوز کرنے والے مشین لرننگ ماڈلز کو تیار کرنے کے لیے ٹولز فراہم کرتا ہے۔ میرا ہدف ایک ایسا فریم ورک بنانا تھا جسے مستقبل میں فوری طور پر مشین لرننگ ماڈلز تیار کرنے کے لیے دوبارہ استعمال کیا جائے گا، اسے ایسے پروجیکٹس میں شامل کرنا ہے جن کے لیے مشین لرننگ کے اجزاء کی ضرورت ہوتی ہے یا اسے بطور سروس پیش کرتے ہیں (مشین لرننگ بطور سروس)۔

اور اب میں یہاں ہوں، کوڈ کی کئی سطریں بعد میں، پروجیکٹ کو اوپن سورس کر رہا ہوں۔ کیوں؟ ایماندارانہ جواب یہ ہے کہ اس وقت، "آئیے ایک نیا آغاز کریں" کے سفر سے گزرنا میرے منصوبے میں شامل نہیں ہے۔ اسی وقت میں نے محسوس کیا کہ کوڈ کو اپنی ہارڈ ڈسک پر رکھنے کی صورت میں مستقبل میں اس کی ضرورت نہیں ہے۔ تو صرف منطقی چیز اسے اوپن سورس کرنا تھی۔ 🙂

دستاویزی؟

اگر آپ پچھلے دو پیراگراف پڑھتے ہیں، تو آپ کو شاید یہ آتا ہوا نظر آنا چاہیے۔ چونکہ فریم ورک اس بات کو ذہن میں رکھتے ہوئے تیار نہیں کیا گیا تھا کہ میں اسے دوسروں کے ساتھ شیئر کروں گا، اس لیے دستاویزات ناقص/غیر موجود ہیں۔ زیادہ تر کلاسوں اور عوامی طریقوں پر صحیح تبصرہ نہیں کیا گیا ہے اور کوڈ کے فن تعمیر کو بیان کرنے والی کوئی دستاویز نہیں ہے۔ خوش قسمتی سے کلاس کے تمام نام خود وضاحتی ہیں اور فریم ورک ہر عوامی طریقہ اور الگورتھم کے لیے JUnit ٹیسٹ فراہم کرتا ہے اور ان کو کوڈ کو استعمال کرنے کے طریقے کی مثال کے طور پر استعمال کیا جا سکتا ہے۔ مجھے امید ہے کہ کمیونٹی کی مدد سے ہم ایک مناسب دستاویزات بنائیں گے، اس لیے میں آپ پر بھروسہ کر رہا ہوں!

موجودہ حدود اور مستقبل کی ترقی

جیسا کہ سافٹ ویئر کے ہر ٹکڑے میں (اور خاص طور پر الفا ورژن میں اوپن سورس پروجیکٹس)، ڈیٹام باکس مشین لرننگ فریم ورک اپنی منفرد اور دلکش حدود کے ساتھ آتا ہے۔ آئیے ان میں کھودتے ہیں:

  1. دستاویزی: جیسا کہ پہلے ذکر کیا گیا ہے، دستاویزات ناقص ہیں۔
  2. کوئی ملٹی تھریڈنگ نہیں: بدقسمتی سے فریم ورک فی الحال ملٹی تھریڈنگ کو سپورٹ نہیں کرتا ہے۔ یقیناً ہمیں نوٹ کرنا چاہیے کہ تمام مشین لرننگ الگورتھم متوازی نہیں ہو سکتے۔
  3. کوڈ کی مثالیں: چونکہ فریم ورک ابھی شائع ہوا ہے، اس لیے آپ کو ویب پر کوڈ کی کوئی مثال نہیں مل سکتی سوائے فریم ورک کی طرف سے JUnit ٹیسٹ کی شکل میں فراہم کردہ مثالوں کے۔
  4. کوڈ کی ساخت: کسی بھی بڑے پراجیکٹ کے لیے ٹھوس فن تعمیر کرنا ہمیشہ مشکل ہوتا ہے، جب آپ کو مشین لرننگ الگورتھم سے نمٹنا ہو جو نمایاں طور پر مختلف ہوں (سپروائزڈ لرننگ، غیر زیر نگرانی لرننگ، ڈائمینشنلٹی ریڈکشن الگورتھم وغیرہ)۔
  5. ماڈل استقامت اور بڑے ڈیٹا کے مجموعے: فی الحال ماڈلز کو تربیت دی جا سکتی ہے اور یا تو ڈسک پر موجود فائلوں میں یا MongoDB ڈیٹا بیس میں محفوظ کی جا سکتی ہے۔ ڈیٹا کی بڑی مقدار کو سنبھالنے کے قابل ہونے کے لیے، دیگر حلوں کی چھان بین ضروری ہے۔ مثال کے طور پر میپ ڈی بی تربیت کے دوران ڈیٹا اور پیرامیٹرز کو ذخیرہ کرنے کے لیے ایک اچھے امیدوار کی طرح لگتا ہے۔ مزید یہ کہ کسی بھی 3 کو ہٹانا ضروری ہے۔rd پارٹی لائبریریاں جو فی الحال ماڈلز کی استقامت کو سنبھالتی ہیں اور ایک بہتر خشک اور ماڈیولر حل تیار کرتی ہیں۔
  6. نئے الگورتھم/ٹیسٹ / ماڈل: بہت ساری عمدہ تکنیکیں ہیں جو فی الحال تعاون یافتہ نہیں ہیں (خاص طور پر ٹائم سیریز کے تجزیہ کے لیے)۔

بدقسمتی سے مذکورہ بالا تمام کام بہت زیادہ ہیں اور وقت بہت کم ہے۔ یہی وجہ ہے کہ اگر آپ اس منصوبے میں دلچسپی رکھتے ہیں، تو آگے بڑھیں اور مندرجہ بالا میں سے کسی کے ساتھ میرا ہاتھ دیں۔ مزید یہ کہ میں ان لوگوں سے سننا پسند کروں گا جو اوپن سورسنگ درمیانے بڑے پروجیکٹس میں تجربہ رکھتے ہیں اور ان کا انتظام کرنے کے بارے میں کوئی تجاویز فراہم کرسکتے ہیں۔ مزید برآں میں کسی بھی بہادر روح کا شکر گزار ہوں گا جو کوڈ کو دیکھنے اور کچھ کلاسوں یا عوامی طریقوں کو دستاویز کرنے کی ہمت کرے گا۔ آخری لیکن کم از کم اگر آپ کسی بھی دلچسپ چیز کے لیے فریم ورک استعمال کرتے ہیں، تو براہ کرم مجھے ایک سطر چھوڑیں یا بلاگ پوسٹ کے ساتھ اس کا اشتراک کریں۔

آخر میں میں اپنے دوست اور سپر ننجا جاوا ڈویلپر، اس پروجیکٹ کو لکھتے ہوئے مجھے برداشت کرنے کے لیے اپنی محبت کیریاکی کا شکریہ ادا کرنا چاہوں گا۔ Eleftherios Bampaletakis جاوا کے اہم مسائل میں مدد کرنے کے لیے اور آپ کو پروجیکٹ میں شامل ہونے کے لیے۔ میں آپ کے تبصروں کا منتظر ہوں۔

ٹائم اسٹیمپ:

سے زیادہ ڈیٹا باکس