Snowflake اور Dask کا استعمال کرتے ہوئے مشین لرننگ پائپ لائنز بنانا
اس پوسٹ میں، میں کچھ ایسے ٹولز کا اشتراک کرنا چاہتا ہوں جو میں حال ہی میں دریافت کر رہا ہوں اور آپ کو دکھانا چاہتا ہوں کہ میں انہیں کیسے استعمال کرتا ہوں اور انہوں نے میرے ورک فلو کی کارکردگی کو بہتر بنانے میں کس طرح مدد کی۔ جن دو کے بارے میں میں خاص طور پر بات کروں گا وہ ہیں Snowflake اور Dask۔ دو بہت مختلف ٹولز لیکن وہ جو ایک دوسرے کی تکمیل کرتے ہیں خاص طور پر ML لائف سائیکل کے حصے کے طور پر۔
By ڈینیئل فولی۔، ڈیٹا سائنسدان
تعارف
حال ہی میں میں ڈیٹا سائنسدان کے طور پر اپنے ورک فلو کو بہتر بنانے کے لیے بہتر طریقے تلاش کرنے کی کوشش کر رہا ہوں۔ میں اپنی ملازمت میں ماڈلنگ اور ای ٹی ایل بنانے میں اپنے وقت کا ایک معقول حصہ صرف کرتا ہوں۔ اس کا مطلب یہ ہے کہ بڑے ڈیٹاسیٹس کو قابل اعتماد اور موثر طریقے سے ہینڈل کرنے کے لیے مجھے زیادہ سے زیادہ ٹولز پر انحصار کرنے کی ضرورت ہے۔ میں نے جلدی سے محسوس کیا کہ ان ڈیٹاسیٹس کو ہیرا پھیری کرنے کے لیے پانڈوں کا استعمال ہمیشہ اچھا طریقہ نہیں ہوتا ہے اور اس نے مجھے دوسرے متبادلات پر غور کرنے کی ترغیب دی۔
اس پوسٹ میں، میں کچھ ایسے ٹولز کا اشتراک کرنا چاہتا ہوں جو میں حال ہی میں دریافت کر رہا ہوں اور آپ کو دکھانا چاہتا ہوں کہ میں انہیں کیسے استعمال کرتا ہوں اور انہوں نے میرے ورک فلو کی کارکردگی کو بہتر بنانے میں کس طرح مدد کی۔ جن دو کے بارے میں میں خاص طور پر بات کروں گا وہ ہیں Snowflake اور Dask۔ دو بہت مختلف ٹولز لیکن وہ جو ایک دوسرے کی تکمیل کرتے ہیں خاص طور پر ML لائف سائیکل کے حصے کے طور پر۔ میری امید ہے کہ اس پوسٹ کو پڑھنے کے بعد آپ کو اس بات کی اچھی طرح سمجھ آگئی ہو گی کہ سنو فلیک اور ڈاسک کیا ہیں، ان کا مؤثر طریقے سے استعمال کیسے کیا جا سکتا ہے اور آپ اپنے استعمال کے معاملات کے ساتھ اٹھنے اور چلانے کے قابل ہو سکتے ہیں۔
مزید خاص طور پر، میں آپ کو دکھانا چاہتا ہوں کہ آپ کس طرح مشین لرننگ کے کام کے لیے تربیتی ڈیٹا تیار کرنے کے لیے Snowflake اور Python کا استعمال کرتے ہوئے ETL پائپ لائن بنا سکتے ہیں۔ اس کے بعد میں Dask اور زحل کا بادل اور آپ کو دکھاتے ہیں کہ آپ ML ٹریننگ کے عمل کو واقعی تیز کرنے کے لیے کلاؤڈ میں متوازی پروسیسنگ کا فائدہ کیسے اٹھا سکتے ہیں تاکہ آپ ڈیٹا سائنسدان کے طور پر اپنی پیداواری صلاحیت کو بڑھا سکیں۔
Snowflake اور Python میں ETLs بنانا
اس سے پہلے کہ ہم کوڈنگ میں کودیں میں بہتر طور پر مختصر طور پر بتاؤں کہ سنو فلیک کیا ہے۔ یہ وہ سوال ہے جو میں نے حال ہی میں پوچھا تھا جب میری ٹیم نے اسے استعمال کرنے کا فیصلہ کیا تھا۔ اعلی سطح پر، یہ کلاؤڈ میں ڈیٹا گودام ہے۔ تھوڑی دیر اس کے ساتھ کھیلنے کے بعد مجھے احساس ہوا کہ یہ کتنا طاقتور تھا۔ میرے خیال میں میرے لیے سب سے زیادہ مفید خصوصیات میں سے ایک ورچوئل گودام ہیں جنہیں آپ استعمال کر سکتے ہیں۔ ایک ورچوئل گودام آپ کو اسی ڈیٹا تک رسائی فراہم کرتا ہے لیکن یہ دوسرے ورچوئل گوداموں سے مکمل طور پر آزاد ہے لہذا کمپیوٹ وسائل کو ٹیموں میں شیئر نہیں کیا جاتا ہے۔ یہ بہت کارآمد ثابت ہوا ہے کیونکہ یہ دوسرے صارفین کی طرف سے دن بھر سوالات کرنے کی وجہ سے کارکردگی کے مسائل کے کسی بھی امکان کو دور کرتا ہے۔ اس کے نتیجے میں کم مایوسی ہوئی ہے اور سوالات کے چلنے کے انتظار میں وقت کا ضیاع ہوا ہے۔
چونکہ ہم Snowflake استعمال کرنے جا رہے ہیں میں مختصر طور پر اس بات کا خاکہ پیش کروں گا کہ آپ اسے کیسے ترتیب دے سکتے ہیں اور خود اس کے ساتھ تجربہ کرنا شروع کر سکتے ہیں۔ ہمیں مندرجہ ذیل کام کرنے کی ضرورت ہے:
- Snowflake اکاؤنٹ حاصل کریں۔
- ہمارا ڈیٹا Snowflake میں حاصل کریں۔
- SQL اور Snowflake UI کا استعمال کرتے ہوئے ہمارے سوالات لکھیں اور جانچیں۔
- ایک Python کلاس لکھیں جو ماڈلنگ کے لیے ہمارا حتمی ڈیٹاسیٹ تیار کرنے کے لیے ہمارے سوالات کو انجام دے سکے۔
ایک اکاؤنٹ ترتیب دینا اتنا ہی آسان ہے جتنا ان پر مفت ٹرائل کے لیے سائن اپ کرنا ویب سائٹ. ایک بار جب آپ یہ کر لیں تو آپ snowsql CLI ڈاؤن لوڈ کر سکتے ہیں۔ یہاں. اس سے Snowflake میں ڈیٹا شامل کرنا آسان ہو جائے گا۔ ان اقدامات پر عمل کرنے کے بعد ہم اپنی اسناد اور کمانڈ لائن کا استعمال کرتے ہوئے Snowflake سے جڑنے کی کوشش کر سکتے ہیں۔
snowsql -a <account_name> -u <user_name>
جب آپ Snowflake UI میں لاگ ان ہوتے ہیں تو آپ URL میں اپنے اکاؤنٹ کا نام تلاش کر سکتے ہیں۔ اسے کچھ اس طرح نظر آنا چاہئے: xxxxx.europe-west2.gcp۔ ٹھیک ہے، آئیے اگلے مرحلے پر چلتے ہیں اور اپنا ڈیٹا Snowflake میں حاصل کرتے ہیں۔ ہمیں یہاں کچھ اقدامات کرنے کی ضرورت ہے یعنی:
- ہمارا ورچوئل گودام بنائیں
- ایک ڈیٹا بیس بنائیں
- ہمارے ٹیبلز کی وضاحت اور تخلیق کریں۔
- ہماری CSV فائلوں کے لیے ایک سٹیجنگ ٹیبل بنائیں
- ڈیٹا کو ہمارے ٹیبلز میں کاپی کرنا
خوش قسمتی سے یہ زیادہ مشکل نہیں ہے اور ہم اسے مکمل طور پر snowsql CLI استعمال کر سکتے ہیں۔ اس پروجیکٹ کے لیے، میں اپنی پسند سے چھوٹا ڈیٹاسیٹ استعمال کروں گا لیکن بدقسمتی سے، میں اپنی کمپنی کا کوئی بھی ڈیٹا استعمال نہیں کرسکتا اور آن لائن بڑے مناسب ڈیٹاسیٹ تلاش کرنا کافی مشکل ہوسکتا ہے۔ تاہم مجھے Dunnhumby سے کچھ لین دین کا ڈیٹا ملا جو آزادانہ طور پر دستیاب ہے۔ کاگل. صرف کِکس کے لیے اگرچہ میں اس ڈیٹا کا استعمال کرتے ہوئے ایک بہت بڑا مصنوعی ڈیٹاسیٹ بناتا ہوں تاکہ ٹیسٹ کیا جا سکے کہ سکلیرن کے مقابلے Dask چیلنج کو کتنی اچھی طرح سے ہینڈل کرتا ہے۔
سب سے پہلے، ہمیں Snowflake UI میں درج ذیل کمانڈز کا استعمال کرتے ہوئے ایک ورچوئل گودام اور ڈیٹا بیس قائم کرنے کی ضرورت ہے۔
تخلیق or کی جگہ گودام تجزیات_wh ساتھ
گودام_سائز = "X-SMALL"
auto_suspend=180
آٹو_ریزیوم = سچ
ابتدائی طور پر_ معطل = سچ؛
تخلیق or کی جگہ ڈیٹا بیس dunnhumby
ہمارا ڈیٹا 6 CSVs پر مشتمل ہے جسے ہم 6 جدولوں میں تبدیل کریں گے۔ میں ڈیٹاسیٹ پر جانے میں زیادہ وقت نہیں گزاروں گا کیونکہ یہ پوسٹ ڈیٹا کی تشریح کرنے کے بجائے Snowflake اور Dask کو استعمال کرنے کے بارے میں زیادہ ہے۔
ذیل میں وہ کمانڈز ہیں جنہیں ہم اپنی ٹیبل بنانے کے لیے استعمال کر سکتے ہیں۔ آپ کو صرف یہ جاننے کی ضرورت ہوگی کہ آپ کن کالموں اور ڈیٹا کی اقسام کے ساتھ کام کریں گے۔
create or replace table campaign_desc ( description string, campaign number,
start_day number,
end_day number ); create or replace table campaign_table ( description string, Household_key number, campaign number ); create or replace table coupon ( COUPON_UPC number, product_id number, campaign number ); create or replace table coupon_redempt ( household_key number, day number, coupon_upc number, campaign number ); create or replace table transactions ( household_key number, BASKET_ID number, day number, product_id number, quantity number, sales_value number, store_id number, retail_disc decimal, trans_time number, week_no number, coupon_disc decimal, coupon_match_disc decimal ); create or replace table demographic_data ( age_dec string, marital_status_code string, income_desc string, homeowner_desc string, hh_comp_desc string, household_size_desc string, kid_category_desc string, Household_key number);
اب جب کہ ہم نے اپنی میزیں بنائی ہیں ہم ان میں ڈیٹا حاصل کرنے کے بارے میں سوچنا شروع کر سکتے ہیں۔ اس کے لیے، ہمیں اپنی CSV فائلوں کو اسٹیج کرنے کی ضرورت ہوگی۔ یہ بنیادی طور پر صرف ایک درمیانی قدم ہے لہذا Snowflake فائلوں کو براہ راست ہمارے اسٹیج سے ہماری میزوں میں لوڈ کر سکتا ہے۔ ہم استعمال کر سکتے ہیں رکھ مقامی فائلوں کو ہمارے مرحلے میں ڈالنے کا حکم اور پھر میں کاپی کریں۔ سنو فلیک کو ہدایت دینے کے لئے کمانڈ کہ یہ ڈیٹا کہاں رکھنا ہے۔
use database dunnhumby; create or replace stage dunnhumby_stage; PUT file://campaigns_table.csv @dunnhumby.public.dunnhumby_stage; PUT file://campaigns_desc.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon_d=redempt.csv @dunnhumby.public.dunnhumby_stage; PUT file://transaction_data.csv @dunnhumby.public.dunnhumby_stage; PUT file://demographics.csv @dunnhumby.public.dunnhumby_stage;
فوری چیک کے طور پر، آپ اس کمانڈ کو یہ چیک کرنے کے لیے چلا سکتے ہیں کہ سٹیجنگ ایریا میں کیا ہے۔
ls @dunnhumby.public.dunnhumby_stage;
اب ہمیں نیچے دیے گئے سوالات کا استعمال کرتے ہوئے ڈیٹا کو اپنے ٹیبل میں کاپی کرنے کی ضرورت ہے۔ آپ اسے Snowflake UI میں یا Snowflake میں لاگ ان کرنے کے بعد کمانڈ لائن میں انجام دے سکتے ہیں۔
copy into campaign_table from @dunnhumby.public.dunnhumby_stage/campaigns_table.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into campaign_desc from @dunnhumby.public.dunnhumby_stage/campaign_desc.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon from @dunnhumby.public.dunnhumby_stage/coupon.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon_redempt from @dunnhumby.public.dunnhumby_stage/coupon_redempt.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into transactions from @dunnhumby.public.dunnhumby_stage/transaction_data.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into demographic_data from @dunnhumby.public.dunnhumby_stage/demographics.csv.gz file_format = ( type = csv skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’);
ٹھیک ہے، کسی بھی قسمت کے ساتھ ہمارے پاس ہمارے ٹیبلز میں ڈیٹا ہے پہلے کوشش کریں۔ اوہ، اگر یہ اتنا ہی آسان ہوتا، تو اس پورے عمل نے مجھے درست ہونے کی چند کوششیں کیں (چیزوں کو غلط لکھنے سے بچو)۔ امید ہے کہ، آپ اس کے ساتھ ساتھ چل سکتے ہیں اور جانے کے لئے اچھا ہو جائے گا. ہم دلچسپ چیزوں کے قریب جا رہے ہیں لیکن اوپر دیئے گئے اقدامات اس عمل کا ایک اہم حصہ ہیں لہذا یقینی بنائیں کہ آپ ان میں سے ہر ایک کو سمجھتے ہیں۔
ایس کیو ایل میں ہماری پائپ لائن لکھنا
اس اگلے مرحلے میں، ہم اپنا ہدف، اپنی خصوصیات پیدا کرنے کے لیے سوالات لکھیں گے اور پھر آخر میں ایک تربیتی ڈیٹا سیٹ تیار کریں گے۔ ماڈلنگ کے لیے ڈیٹاسیٹ بنانے کا ایک طریقہ یہ ہے کہ اس ڈیٹا کو میموری میں پڑھا جائے اور نئی خصوصیات بنانے کے لیے پانڈوں کا استعمال کریں اور تمام ڈیٹا فریموں کو ایک ساتھ جوائن کریں۔ یہ عام طور پر وہ طریقہ ہے جسے آپ Kaggle اور دیگر آن لائن ٹیوٹوریلز میں دیکھتے ہیں۔ اس کے ساتھ مسئلہ یہ ہے کہ یہ زیادہ موثر نہیں ہے، خاص طور پر جب آپ کسی بھی معقول سائز کے ڈیٹاسیٹس کے ساتھ کام کر رہے ہوں۔ اس وجہ سے، بھاری لفٹنگ کو Snowflake جیسی کسی چیز پر آؤٹ سورس کرنا ایک بہتر خیال ہے جو بڑے پیمانے پر ڈیٹا سیٹس کو بہت اچھی طرح سے ہینڈل کرتا ہے اور امکان ہے کہ آپ کا بہت زیادہ وقت بچ جائے گا۔ میں یہاں اپنے ڈیٹاسیٹ کی تفصیلات میں غوطہ لگانے میں زیادہ وقت نہیں گزاروں گا کیونکہ میں جو دکھانے کی کوشش کر رہا ہوں اس کے لیے یہ واقعی اہم نہیں ہے۔ عام طور پر، اگرچہ، آپ ماڈلنگ شروع کرنے سے پہلے اپنے ڈیٹا کو دریافت کرنے اور سمجھنے میں کافی وقت صرف کرنا چاہیں گے۔ ان استفسارات کا مقصد ڈیٹا کو پری پروسیس کرنا اور کچھ آسان فیچرز بنانا ہوں گے جنہیں ہم بعد میں اپنے ماڈلز میں استعمال کر سکتے ہیں۔
ہدف کی تعریف
ظاہر ہے، زیر نگرانی مشین لرننگ کا ایک اہم جزو پیشین گوئی کے لیے ایک مناسب ہدف کی وضاحت کر رہا ہے۔ ہمارے استعمال کے معاملے کے لیے، ہم یہ حساب لگا کر منتھن کی پیشین گوئی کریں گے کہ آیا صارف کٹ آف ہفتے کے بعد دو ہفتوں کے اندر دوسرا دورہ کرتا ہے یا نہیں۔ 2 ہفتوں کا انتخاب کافی صوابدیدی ہے اور اس کا انحصار اس مخصوص مسئلے پر ہوگا جسے ہم حل کرنے کی کوشش کر رہے ہیں لیکن آئیے صرف یہ مان لیں کہ یہ اس پروجیکٹ کے لیے ٹھیک ہے۔ عام طور پر، آپ اپنے گاہکوں کا بغور تجزیہ کرنا چاہیں گے تاکہ دوروں کے درمیان فرق کی تقسیم کو سمجھ سکیں تاکہ منتھن کی مناسب تعریف حاصل کی جا سکے۔
یہاں کا بنیادی خیال یہ ہے کہ ہر ٹیبل کے لیے ہم چاہتے ہیں کہ ایک قطار فی گھریلو_کلید ہو جس میں ہماری ہر ایک خصوصیت کی قدر ہو۔
مہم کی خصوصیات
لین دین کی خصوصیات
ذیل میں ہم مجموعی اعدادوشمار پر مبنی کچھ سادہ میٹرکس بناتے ہیں جیسے کہ اوسط، زیادہ سے زیادہ اور معیاری انحراف۔
آبادیاتی خصوصیات
اس ڈیٹاسیٹ میں بہت سا ڈیٹا غائب ہے اس لیے میں نے یہاں پر الزام لگانے کا فیصلہ کیا۔ لاپتہ ڈیٹا کو چھوڑنے سے لے کر اعلی درجے کی نقالی کے طریقوں تک بہت ساری تکنیکیں موجود ہیں۔ میں نے یہاں اپنے لیے زندگی کو آسان بنایا ہے اور گمشدہ اقدار کو موڈ سے بدل دیا ہے۔ میں ضروری طور پر اس نقطہ نظر کو اختیار کرنے کی سفارش نہیں کروں گا کیونکہ یہ سمجھنا کہ یہ ڈیٹا کیوں غائب ہے یہ فیصلہ کرنے میں واقعی اہم ہے کہ اس سے کیسے نمٹا جائے لیکن اس مثال کے مقاصد کے لئے، میں آگے بڑھوں گا اور آسان طریقہ اختیار کروں گا۔ ہم پہلے اپنی ہر فیچر کے لیے موڈ کا حساب لگاتے ہیں اور پھر ڈیٹا غائب ہونے کی صورت میں ہر قطار کو موڈ سے بدلنے کے لیے coalesce کا استعمال کرتے ہیں۔
ٹریننگ ڈیٹا۔
آخر میں، ہم اپنے مین ٹیبلز کو ایک ساتھ جوڑ کر اپنے ٹریننگ ڈیٹا کے لیے ایک استفسار تیار کرتے ہیں اور ایک ٹیبل کے ساتھ اختتام پذیر ہوتے ہیں جس میں ہمارا ہدف، ہماری مہم، لین دین اور آبادیاتی خصوصیات شامل ہوتی ہیں جنہیں ہم ایک ماڈل بنانے کے لیے استعمال کر سکتے ہیں۔
مختصراً، سنو فلیک کی خصوصیات اور باریکیوں کے بارے میں مزید جاننے میں دلچسپی رکھنے والوں کے لیے میں درج ذیل کتاب کی سفارش کروں گا: سنو فلیک کک بک. میں نے اس کتاب کو پڑھنا شروع کیا اور یہ واقعی مددگار معلومات سے بھری ہوئی ہے کہ Snowflake کو کیسے استعمال کیا جائے اور میں یہاں سے کہیں زیادہ تفصیل میں جاتا ہوں۔
ETL کے لیے ازگر کوڈ
اس ETL کے لیے ہمیں جس آخری ٹکڑے کی ضرورت ہے وہ اس پر عمل کرنے کے لیے اسکرپٹ لکھنا ہے۔ اب، یہ صرف اس صورت میں درکار ہے جب آپ باقاعدگی سے اس طرح کا ETL چلانے کا ارادہ رکھتے ہیں لیکن یہ ایک اچھا عمل ہے اور ضرورت کے مطابق ETL کو چلانا بہت آسان بنا دیتا ہے۔
آئیے اپنی EtlTraining کلاس کے اہم اجزاء پر مختصراً گفتگو کرتے ہیں۔ ہماری کلاس ایک ان پٹ لیتی ہے جو کٹ آف ہفتہ ہے۔ یہ ہمارے ڈیٹاسیٹ میں ڈیٹا کی وضاحت کے طریقے کی وجہ سے ہے لیکن عام طور پر، یہ تاریخ کی شکل میں ہوگا جو اس کٹ آف تاریخ کے مساوی ہے جسے ہم تربیتی ڈیٹا بنانے کے لیے منتخب کرنا چاہتے ہیں۔
ہم اپنے سوالات کی ایک فہرست شروع کرتے ہیں تاکہ ہم ان کو آسانی سے لوپ کر سکیں اور ان پر عمل درآمد کر سکیں۔ ہم اپنے پیرامیٹرز پر مشتمل ایک لغت بھی بناتے ہیں جسے ہم اپنے Snowflake کنکشن میں منتقل کرتے ہیں۔ یہاں ہم ماحولیاتی متغیرات کا استعمال کرتے ہیں جو ہم Saturn Cloud میں ترتیب دیتے ہیں۔ یہاں یہ کیسے کرنا ہے اس بارے میں ایک گائیڈ ہے۔ Snowflake سے جڑنا زیادہ مشکل نہیں ہے، ہمیں صرف Snowflake کنیکٹر کا استعمال کرنا ہے اور ہماری اسناد کی لغت میں پاس کرنا ہے۔ ہم اسے Snowflake کنیکٹ کے طریقہ کار میں لاگو کرتے ہیں اور اس کنکشن کو بطور وصف واپس کرتے ہیں۔
ان استفسارات کو چلانے میں تھوڑا سا آسان بنانے کے لیے میں ہر استفسار کو ml_query_pipeline.py فائل میں پائتھون سٹرنگ متغیر کے طور پر محفوظ کرتا ہوں۔ execute_etl طریقہ وہی کرتا ہے جو ٹن پر کہتا ہے۔ ہم ہر استفسار کو لوپ کرتے ہیں، اسے فارمیٹ کرتے ہیں، اس پر عمل کرتے ہیں اور Snowflake کنکشن کو بند کر کے ختم کرتے ہیں۔
اس ETL کو چلانے کے لیے ہم نیچے دی گئی کمانڈز کو ٹرمینل میں ٹائپ کر سکتے ہیں۔ (جہاں ml_pipeline اوپر اسکرپٹ کا نام ہے۔)
python -m ml_pipeline -w 102 -j ‘train’
مختصراً، آپ شاید باقاعدہ وقفوں پر اس طرح کا ETL چلانا چاہیں گے۔ مثال کے طور پر، اگر آپ روزانہ کی پیشین گوئیاں کرنا چاہتے ہیں تو آپ کو اپنے ماڈل کو منتقل کرنے کے لیے ہر روز اس طرح کا ڈیٹاسیٹ تیار کرنا ہوگا تاکہ آپ شناخت کر سکیں کہ آپ کے کون سے گاہک منڈلا سکتے ہیں۔ میں یہاں اس کی تفصیل میں نہیں جاؤں گا لیکن اپنے کام میں، ہم اپنے ای ٹی ایل کو آرکیسٹریٹ کرنے کے لیے ایئر فلو کا استعمال کرتے ہیں، اس لیے اگر آپ دلچسپی رکھتے ہیں تو میں اسے چیک کرنے کی سفارش کروں گا۔ اصل میں، میں نے حال ہی میں ایک کتاب خریدی ہے 'اپاچی ایئر فلو کے ساتھ ڈیٹا پائپ لائنز' جو میرے خیال میں بہت اچھا ہے اور واقعی میں ہوا کے بہاؤ کو استعمال کرنے کے بارے میں کچھ ٹھوس مثالیں اور مشورے دیتا ہے۔
ڈسک اور ماڈلنگ
اب جب کہ ہمارے پاس ڈیٹا پائپ لائن بن چکی ہے، ہم ماڈلنگ کے بارے میں سوچنا شروع کر سکتے ہیں۔ اس پوسٹ کا دوسرا اہم مقصد جو میرے پاس ہے وہ یہ ہے کہ ایم ایل ڈویلپمنٹ کے عمل کے حصے کے طور پر Dask کو استعمال کرنے کے فوائد کو اجاگر کرنا اور آپ لوگوں کو دکھانا ہے کہ اسے استعمال کرنا کتنا آسان ہے۔
منصوبے کے اس حصے کے لئے، میں نے بھی استعمال کیا زحل کا بادل جو کہ ایک بہت اچھا ٹول ہے جو میں نے حال ہی میں دیکھا ہے جو ہمیں کلاؤڈ میں موجود کمپیوٹرز کے کلسٹر میں Dask کی طاقت کو استعمال کرنے کی اجازت دیتا ہے۔ میرے لیے زحل کو استعمال کرنے کے اہم فوائد یہ ہیں کہ آپ کے کام کو شیئر کرنا واقعی آسان ہے، جب آپ کو ضرورت ہو تو اپنے کمپیوٹ کو بڑھانا بہت آسان ہے اور اس کے پاس مفت درجے کا آپشن ہے۔ عام طور پر ماڈل ڈیولپمنٹ Dask کے لیے واقعی ایک اچھا استعمال کیس ہے کیونکہ ہم عام طور پر مختلف ماڈلز کے ایک گروپ کو تربیت دینا چاہتے ہیں اور دیکھنا چاہتے ہیں کہ کون سا بہترین کام کرتا ہے۔ ہم جتنی تیزی سے یہ کام کر سکتے ہیں اتنا ہی بہتر ہے کیونکہ ہمارے پاس ماڈل کی ترقی کے دیگر اہم پہلوؤں پر توجہ مرکوز کرنے کے لیے زیادہ وقت ہے۔ Snowflake کی طرح آپ کو صرف سائن اپ کرنے کی ضرورت ہے۔ یہاں اور آپ بہت تیزی سے Jupyter لیب کی ایک مثال کو گھما سکتے ہیں اور خود اس کے ساتھ تجربہ کرنا شروع کر سکتے ہیں۔
اب، میں اس مقام پر محسوس کرتا ہوں کہ میں نے کئی بار ڈسک کا ذکر کیا ہے لیکن کبھی نہیں بتایا کہ یہ کیا ہے۔ تو میں آپ کو ڈسک کا ایک بہت ہی اعلیٰ سطحی جائزہ پیش کرنے کے لیے ایک لمحہ نکالتا ہوں اور مجھے کیوں لگتا ہے کہ یہ بہت اچھا ہے۔ بہت سادگی سے، Dask ایک ازگر کی لائبریری ہے جو متوازی کمپیوٹنگ کا فائدہ اٹھاتی ہے تاکہ آپ کو بہت بڑے ڈیٹا سیٹس پر کارروائی کرنے اور انجام دینے کی اجازت دی جا سکے۔ اور، سب سے اچھی بات یہ ہے کہ، اگر آپ ازگر سے پہلے ہی واقف ہیں، تو Dask بہت سیدھا ہونا چاہیے کیونکہ نحو بہت مماثل ہے۔
نیچے کا گراف Dask کے اہم اجزاء کو نمایاں کرتا ہے۔
ماخذ: Dask دستاویزی
مجموعے ہمیں کاموں کا ایک گراف بنانے کی اجازت دیتے ہیں جسے پھر متعدد کمپیوٹرز پر عمل میں لایا جا سکتا ہے۔ ان میں سے کچھ ڈیٹا ڈھانچے شاید کافی مانوس لگتے ہیں جیسے کہ ارے اور ڈیٹا فریم اور وہ اسی طرح کے ہیں جو آپ کو ازگر میں ملے گا لیکن کچھ اہم اختلافات کے ساتھ۔ مثال کے طور پر، آپ Dask ڈیٹا فریم کے بارے میں سوچ سکتے ہیں کہ پانڈا ڈیٹا فریموں کا ایک گروپ اس طرح بنایا گیا ہے جو ہمیں متوازی طور پر کام کرنے کی اجازت دیتا ہے۔
مجموعوں سے آگے بڑھتے ہوئے ہمارے پاس شیڈیولر ہے۔ ایک بار جب ہم ٹاسک گراف بناتے ہیں تو شیڈیولر ہمارے لیے باقی کو ہینڈل کرتا ہے۔ یہ ورک فلو کا انتظام کرتا ہے اور ان کاموں کو یا تو ایک مشین کو بھیجتا ہے یا انہیں کلسٹر میں تقسیم کرتا ہے۔ امید ہے کہ، اس سے آپ کو ڈسک کے کام کرنے کا ایک بہت ہی مختصر جائزہ ملتا ہے۔ مزید معلومات کے لیے، میں چیک کرنے کا مشورہ دیتا ہوں۔ دستاویزات یا اس کتاب. اس موضوع کی گہرائی میں جانے کے لیے دونوں بہت اچھے وسائل ہیں۔
ماڈلنگ کے لیے ازگر کوڈ
ماڈلنگ کرتے وقت، میرے پاس جانے والے الگورتھم کی ایک چھوٹی سی تعداد ہوتی ہے جسے میں ہمیشہ پہلے آزماؤں گا۔ اس سے عام طور پر مجھے اس بات کا اچھا اندازہ ہو جائے گا کہ میرے مخصوص مسئلے کے لیے کیا موزوں ہو سکتا ہے۔ یہ ماڈل لاجسٹک ریگریشن، رینڈم فارسٹ اور گریڈینٹ بوسٹنگ ہیں۔ میرے تجربے میں، ٹیبلر ڈیٹا کے ساتھ کام کرتے وقت یہ الگورتھم عام طور پر آپ کو بہت اچھے نتائج دیں گے۔ ذیل میں ہم ان 3 ماڈلز کا استعمال کرتے ہوئے ایک سکلیرن ماڈلنگ پائپ لائن بناتے ہیں۔ بالکل وہی ماڈل جو ہم یہاں استعمال کرتے ہیں وہ واقعی اہم نہیں ہیں کیونکہ پائپ لائن کو کسی بھی سکیلر کلاسیفیکیشن ماڈل کے لیے کام کرنا چاہیے، یہ صرف میری ترجیح ہے۔
مزید اڈو کے بغیر، آئیے کوڈ میں غوطہ لگائیں۔ خوش قسمتی سے ہم نے اپنی زیادہ تر پری پروسیسنگ کو Snowflake پر آؤٹ سورس کیا ہے لہذا ہمیں یہاں اپنے تربیتی ڈیٹا کے ساتھ زیادہ گڑبڑ کرنے کی ضرورت نہیں ہے لیکن ہم sklearn پائپ لائنوں کا استعمال کرتے ہوئے کچھ اضافی اقدامات شامل کریں گے۔
ذیل میں پہلا کوڈ کا ٹکڑا sklearn استعمال کرتے وقت پائپ لائن کو دکھاتا ہے۔ نوٹ کریں کہ ہمارا ڈیٹاسیٹ ایک سادہ پرانا پانڈا ڈیٹا فریم ہے اور ہمارے پری پروسیسنگ کے تمام اقدامات سکلیرن طریقوں سے کیے جاتے ہیں۔ یہاں کچھ بھی عام سے باہر نہیں ہو رہا ہے۔ ہم اپنے Snowflake ETL کی طرف سے تیار کردہ ٹیبل سے اپنے ڈیٹا میں پڑھ رہے ہیں اور اسے ایک سکلیرن پائپ لائن میں منتقل کر رہے ہیں۔ ماڈلنگ کے معمول کے مراحل یہاں لاگو ہوتے ہیں۔ ہم ڈیٹاسیٹ کو ٹرین اور ٹیسٹ میں تقسیم کرتے ہیں اور کچھ پری پروسیسنگ کرتے ہیں، یعنی میڈین کا استعمال کرتے ہوئے گمشدہ قدروں پر الزام لگاتے ہیں، ڈیٹا کو پیمانہ کرتے ہیں اور ہمارے واضح ڈیٹا کو ایک گرم انکوڈ کرتے ہیں۔ میں سکلیرن پائپ لائنز کا ایک بڑا پرستار ہوں اور بنیادی طور پر ان کا استعمال کرتا ہوں جب بھی میں آج کل ماڈل تیار کرتا ہوں، وہ واقعی صاف اور جامع کوڈ کی سہولت فراہم کرتے ہیں۔
یہ پائپ لائن تقریباً 2 ملین قطاروں والے ڈیٹاسیٹ پر کیسے کام کرتی ہے؟ ٹھیک ہے، بغیر کسی ہائپر پیرامیٹر ٹیوننگ کے اس ماڈل کو چلانے میں تقریباً 34 منٹ لگتے ہیں۔ اوہ، قدرے سست۔ آپ تصور کر سکتے ہیں کہ اگر ہم کسی بھی قسم کی ہائپر پیرامیٹر ٹیوننگ کرنا چاہتے ہیں تو اس میں کتنا وقت لگے گا۔ ٹھیک ہے، تو مثالی نہیں لیکن آئیے دیکھتے ہیں کہ Dask چیلنج کو کیسے ہینڈل کرتا ہے۔
Dask ML Python کوڈ
یہاں ہمارا مقصد یہ دیکھنا ہے کہ کیا ہم اوپر کی سکیلرن پائپ لائن کو شکست دے سکتے ہیں، سپوئلر الرٹ، ہم یقینی طور پر کر سکتے ہیں۔ Dask کے بارے میں اچھی بات یہ ہے کہ جب آپ ازگر سے پہلے ہی واقف ہوں تو داخلے میں رکاوٹ کافی کم ہوتی ہے۔ ہم اس پائپ لائن کو صرف چند تبدیلیوں کے ساتھ Dask میں شروع کر سکتے ہیں۔
پہلی تبدیلی جو آپ شاید دیکھیں گے وہ یہ ہے کہ ہمارے پاس کچھ مختلف درآمدات ہیں۔ اس پائپ لائن اور پچھلی پائپ لائن کے درمیان ایک اہم فرق یہ ہے کہ ہم اپنے ماڈل کو تربیت دینے کے لیے پانڈا ڈیٹا فریم کے بجائے ایک Dask ڈیٹا فریم استعمال کریں گے۔ آپ Dask ڈیٹا فریم کو پانڈوں کے ڈیٹا فریموں کے ایک گروپ کے طور پر سوچ سکتے ہیں جہاں ہم ایک ہی وقت میں ہر ایک پر کمپیوٹیشن کر سکتے ہیں۔ یہ ڈسک کے ہم آہنگی کا بنیادی حصہ ہے اور یہی اس پائپ لائن کے لیے تربیتی وقت کو کم کرنے والا ہے۔
نوٹ کریں کہ ہم استعمال کرتے ہیں۔ @dask.delayed ہمارے ڈیکوریٹر کے طور پر لوڈ_ٹریننگ_ڈیٹا فنکشن یہ ڈسک کو ہمارے لیے اس فنکشن کو متوازی کرنے کی ہدایت کرتا ہے۔
ہم Dask سے کچھ پری پروسیسنگ اور پائپ لائن کے طریقے بھی درآمد کرنے جا رہے ہیں اور سب سے اہم بات یہ ہے کہ ہمیں SaturnCluster درآمد کرنے کی ضرورت ہوگی جو ہمیں اپنے ماڈلز کی تربیت کے لیے ایک کلسٹر بنانے کی اجازت دے گا۔ اس کوڈ کے ساتھ ایک اور اہم فرق یہ ہے کہ ہم استعمال کرتے ہیں۔ dask. برقرار ہمارے ٹرین ٹیسٹ کی تقسیم کے بعد۔ اس نقطہ سے پہلے، Dask کی سست تشخیص کی وجہ سے ہمارے کسی بھی فنکشن کو اصل میں شمار نہیں کیا گیا ہے۔ ایک بار جب ہم پرسسٹ طریقہ استعمال کرتے ہیں حالانکہ ہم Dask کو کہہ رہے ہیں کہ وہ اپنا ڈیٹا ورکرز کو بھیجے اور ان کاموں کو انجام دے جو ہم نے اس وقت تک بنائے ہیں اور ان اشیاء کو کلسٹر پر چھوڑ دیں۔
آخر میں، ہم تاخیر کا طریقہ استعمال کرتے ہوئے اپنے ماڈلز کو تربیت دیتے ہیں۔ ایک بار پھر، یہ ہمیں اپنی پائپ لائن کو سست طریقے سے بنانے کے قابل بناتا ہے۔ جب تک ہم اس کوڈ تک نہیں پہنچ جاتے تب تک پائپ لائن پر عمل نہیں ہوتا:
fit_pipelines = dask.compute(*pipelines_)
اس بار بالکل اسی ڈیٹاسیٹ پر اس پائپ لائن کو چلانے میں ہمیں صرف 10 منٹ لگے۔ یہ 3.4 کے فیکٹر کی رفتار ہے، زیادہ گھٹیا نہیں۔ اب، اگر ہم چاہیں، تو ہم زحل میں ایک بٹن کے ٹچ پر اپنے کمپیوٹ وسائل کو بڑھا کر اس کو اور بھی تیز کر سکتے ہیں۔
ہماری پائپ لائن کی تعیناتی
میں نے پہلے ذکر کیا ہے کہ آپ شاید ایئر فلو جیسی کسی چیز کا استعمال کرتے ہوئے اس طرح کی پائپ لائن کو باقاعدگی سے چلانا چاہیں گے۔ ایسا ہوتا ہے کہ اگر آپ ایئر فلو کے لیے سب کچھ ترتیب دینے کی ابتدائی پریشانی نہیں چاہتے ہیں تو Saturn Cloud نوکریوں کے ساتھ ایک آسان متبادل پیش کرتا ہے۔ نوکریاں ہمیں اپنے کوڈ کو پیک کرنے اور اسے باقاعدہ وقفوں پر یا ضرورت کے مطابق چلانے کی اجازت دیتی ہیں۔ آپ کو صرف ایک موجودہ پروجیکٹ پر جانے کی ضرورت ہے اور ایک جاب بنائیں پر کلک کرنا ہے۔ ایک بار جب ہم ایسا کرتے ہیں، تو اسے مندرجہ ذیل کی طرح نظر آنا چاہئے:
ماخذ: زحل
یہاں سے، ہمیں صرف یہ یقینی بنانا ہے کہ اوپر ہماری python فائلیں تصویر میں موجود ڈائرکٹری میں ہیں اور ہم اوپر اپنی python کمانڈ درج کر سکتے ہیں۔
python -m ml_pipeline -w 102 -j 'train'
اگر ہم چاہیں تو روزانہ کی بنیاد پر ETL چلانے کے لیے کرون نحو کا استعمال کرتے ہوئے ایک شیڈول بھی ترتیب دے سکتے ہیں۔ دلچسپی رکھنے والوں کے لیے، یہاں ایک ہے۔ ٹیوٹوریل کہ تمام nitty-gritty میں جاتا ہے.
نتائج اور ٹیک ویز
ٹھیک ہے، ہم اس وقت اپنے منصوبے کے اختتام پر پہنچ چکے ہیں۔ اب ظاہر ہے کہ میں نے ایم ایل ڈویلپمنٹ سائیکل کے کچھ اہم حصوں کو چھوڑ دیا ہے جیسے کہ ہائپر پیرامیٹر ٹیوننگ اور اپنے ماڈل کو تعینات کرنا لیکن شاید میں اسے کسی اور دن کے لیے چھوڑ دوں گا۔ کیا مجھے لگتا ہے کہ آپ کو ڈسک کو آزمانا چاہئے؟ میں کسی بھی طرح سے ماہر نہیں ہوں لیکن جو کچھ میں نے اب تک دیکھا ہے اس سے یہ یقینی طور پر واقعی مفید معلوم ہوتا ہے اور میں اس کے ساتھ مزید تجربہ کرنے اور ڈیٹا سائنسدان کے طور پر اسے اپنے روزمرہ کے کام میں شامل کرنے کے مزید مواقع تلاش کرنے کے لیے بہت پرجوش ہوں۔ امید ہے کہ آپ کو یہ کارآمد معلوم ہوا ہے اور آپ بھی سنو فلیک اور ڈسک کے کچھ فائدے دیکھ سکتے ہیں اور آپ خود ان کے ساتھ تجربہ کرنا شروع کر دیں گے۔
وسائل
- اپاچی ایئر فلو کے ساتھ ڈیٹا پائپ لائنز
- سنو فلیک کک بک
- Python اور Dask کے ساتھ پیمانے پر ڈیٹا سائنس
- کورسیرا: ڈیٹا سائنس کے لیے SQL
میری کچھ دوسری پوسٹس آپ کو دلچسپ لگ سکتی ہیں۔
آئیے ایک اسٹریمنگ ڈیٹا پائپ لائن بنائیں
ٹائم سیریز کی پیشن گوئی کے لئے ایک Bayesian نقطہ نظر
نوٹ: اس پوسٹ کے کچھ لنکس ملحقہ لنکس ہیں۔
بیو: ڈینیئل فولی۔ موبائل گیمنگ انڈسٹری میں کام کرنے والے سابق ماہر معاشیات سے ڈیٹا سائنٹسٹ ہیں۔
حقیقی. اجازت کے ساتھ دوبارہ پوسٹ کیا۔
متعلقہ:
ماخذ: https://www.kdnuggets.com/2021/07/building-machine-learning-pipelines-snowflake-dask.html
- "
- &
- 102
- 2021
- تک رسائی حاصل
- اکاؤنٹ
- ایڈیشنل
- فائدہ
- مشورہ
- ملحق
- یلگوردمز
- تمام
- ایمیزون
- اپاچی
- رقبہ
- ارد گرد
- آٹو
- BEST
- بٹ
- تعمیر
- عمارت
- گچرچھا
- مہم
- مقدمات
- وجہ
- چیلنج
- تبدیل
- جانچ پڑتال
- درجہ بندی
- قریب
- بادل
- کوڈ
- کوڈنگ
- جزو
- کمپیوٹنگ
- کمپیوٹر
- کمپیوٹنگ
- Coursera
- تخلیق
- اسناد
- گاہکوں
- اعداد و شمار
- ڈیٹا سائنس
- ڈیٹا سائنسدان
- ڈیٹا سیٹ
- ڈیٹا گودام
- ڈیٹا بیس
- دن
- نمٹنے کے
- گہری سیکھنے
- آبادیاتی
- تفصیل
- ترقی
- ترقی
- DID
- ڈائریکٹر
- کارکردگی
- انجینئرز
- ماحولیات
- تجربہ
- خصوصیات
- آخر
- آخر
- پہلا
- توجہ مرکوز
- پر عمل کریں
- فارمیٹ
- مفت
- مکمل
- تقریب
- گیمنگ
- گیمنگ انڈسٹری
- جنرل
- اچھا
- GPUs
- عظیم
- رہنمائی
- یہاں
- ہائی
- نمایاں کریں
- کس طرح
- کیسے
- HTTPS
- بھاری
- خیال
- شناخت
- تصویر
- اضافہ
- صنعت
- معلومات
- معلومات
- مسائل
- IT
- ایوب
- نوکریاں
- میں شامل
- کودنے
- کلیدی
- بڑے
- جانیں
- سیکھنے
- سطح
- لائبریری
- لائن
- لنکڈ
- لسٹ
- لوڈ
- مقامی
- لانگ
- مشین لرننگ
- پیمائش کا معیار
- دس لاکھ
- ML
- موبائل
- موبائل گیمنگ
- ماڈل
- منتقل
- یعنی
- نئی خصوصیات
- تجویز
- آن لائن
- آپریشنز
- اختیار
- دیگر
- کارکردگی
- کافی مقدار
- مراسلات
- طاقت
- پیشن گوئی
- تیار
- پیداوری
- منصوبے
- عوامی
- ازگر
- پڑھنا
- کو کم
- رجعت
- وسائل
- باقی
- نتائج کی نمائش
- رن
- چل رہا ہے
- پیمانے
- سکیلنگ
- سائنس
- سائنسدانوں
- سیریز
- مقرر
- قائم کرنے
- سیکنڈ اور
- مشترکہ
- سادہ
- چھوٹے
- So
- حل
- تیزی
- خرچ
- خرچ کرنا۔
- سپن
- تقسیم
- SQL
- اسٹیج
- شروع کریں
- شروع
- کے اعداد و شمار
- خبریں
- محرومی
- ہدف
- ٹیسٹ
- سوچنا
- وقت
- سب سے اوپر
- چھو
- ٹریننگ
- ٹرانزیکشن
- معاملات
- مقدمے کی سماعت
- سبق
- ui
- us
- صارفین
- مجازی
- گودام
- ہفتے
- کیا ہے
- کے اندر
- کام
- کارکنوں
- کام کا بہاؤ
- کام کرتا ہے
- تحریری طور پر
- X
- سال