Gretel اور Apache Airflow کا استعمال کرتے ہوئے ایک مصنوعی ڈیٹا پائپ لائن بنائیں

ماخذ نوڈ: 1068200

Gretel اور Apache Airflow کا استعمال کرتے ہوئے ایک مصنوعی ڈیٹا پائپ لائن بنائیں

اس بلاگ پوسٹ میں، ہم ایک ETL پائپ لائن بناتے ہیں جو Gretel کے Synthetic Data APIs اور Apache Airflow کا استعمال کرتے ہوئے PostgreSQL ڈیٹا بیس سے مصنوعی ڈیٹا تیار کرتی ہے۔


By ڈریو نیو بیری, Gretel.ai پر سافٹ ویئر انجینئر

Gretel اور Apache Airflow کا استعمال کرتے ہوئے ایک مصنوعی ڈیٹا پائپ لائن بنائیں

ارے لوگو، میرا نام Drew ہے، اور میں یہاں Gretel میں سافٹ ویئر انجینئر ہوں۔ میں حال ہی میں گریٹیل APIs کو موجودہ ٹولز میں ضم کرنے کے نمونوں کے بارے میں سوچ رہا ہوں تاکہ ڈیٹا پائپ لائنز بنانا آسان ہو جہاں سیکیورٹی اور کسٹمر پرائیویسی فرسٹ کلاس فیچرز ہیں، نہ کہ صرف سوچنے یا چیک کرنے کے لیے باکس۔

ایک ڈیٹا انجینئرنگ ٹول جو Gretel انجینئرز اور صارفین میں مقبول ہے وہ ہے Apache Airflow۔ یہ Gretel کے ساتھ بہت اچھا کام کرنے کے لئے بھی ہوتا ہے. اس بلاگ پوسٹ میں، ہم آپ کو دکھائیں گے کہ Airflow، Gretel اور PostgreSQL کا استعمال کرتے ہوئے ایک مصنوعی ڈیٹا پائپ لائن کیسے بنایا جائے۔ چلو اندر کودتے ہیں!

ہوا کا بہاؤ کیا ہے؟

 
 
ایئر بہاؤ ایک ورک فلو آٹومیشن ٹول ہے جو عام طور پر ڈیٹا پائپ لائنز بنانے کے لیے استعمال ہوتا ہے۔ یہ ڈیٹا انجینئرز یا ڈیٹا سائنسدانوں کو اس قابل بناتا ہے کہ وہ Python اور دیگر مانوس کنسٹرکٹس کا استعمال کرتے ہوئے ان پائپ لائنوں کو پروگرامی طور پر متعین اور تعینات کریں۔ ایئر فلو کے مرکز میں ڈی اے جی، یا ڈائریکٹڈ ایسکلک گراف کا تصور ہے۔ ایک ایئر فلو ڈی اے جی پائپ لائن کے اجزاء، ان کے انحصار اور عملدرآمد کے آرڈر کی وضاحت کے لیے APIs کا ایک ماڈل اور سیٹ فراہم کرتا ہے۔

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

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

Gretel کیسے فٹ بیٹھتا ہے؟

 
 
Gretel میں، ہمارا مشن ڈیٹا کے ساتھ کام کرنا آسان اور محفوظ بنانا ہے۔ صارفین سے بات کرتے ہوئے، ایک دردناک نقطہ جس کے بارے میں ہم اکثر سنتے ہیں وہ ہے ڈیٹا سائنسدانوں کو حساس ڈیٹا تک رسائی حاصل کرنے کے لیے درکار وقت اور محنت۔ استعمال کرنا Gretel Syntheticsہم ڈیٹاسیٹ کی مصنوعی کاپی بنا کر حساس ڈیٹا کے ساتھ کام کرنے کے خطرے کو کم کر سکتے ہیں۔ Gretel کو Airflow کے ساتھ ضم کر کے، خود خدمت کرنے والی پائپ لائنیں بنانا ممکن ہے جو ڈیٹا سائنسدانوں کے لیے ہر نئی ڈیٹا کی درخواست کے لیے ڈیٹا انجینئر کی ضرورت کے بغیر اپنی ضرورت کا ڈیٹا تیزی سے حاصل کرنا آسان بناتی ہے۔

ان صلاحیتوں کو ظاہر کرنے کے لیے، ہم ایک ETL پائپ لائن بنائیں گے جو صارف کی سرگرمی کی خصوصیات کو ڈیٹا بیس سے نکالے گی، ڈیٹاسیٹ کا مصنوعی ورژن تیار کرے گی، اور ڈیٹاسیٹ کو S3 میں محفوظ کرے گی۔ S3 میں محفوظ کردہ مصنوعی ڈیٹاسیٹ کے ساتھ، اس کے بعد اسے ڈیٹا سائنسدانوں کے ذریعے ڈاؤن اسٹریم ماڈلنگ یا تجزیہ کے لیے کسٹمر کی رازداری سے سمجھوتہ کیے بغیر استعمال کیا جا سکتا ہے۔

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



ایئر فلو پر گریٹیل مصنوعی پائپ لائن کی مثال۔

 

ہم پائپ لائن کو 3 مراحل میں توڑ سکتے ہیں، جیسا کہ آپ کو ETL پائپ لائن میں مل سکتا ہے:

  • باہر نکالیں - extract_features ٹاسک ایک ڈیٹا بیس سے استفسار کرے گا، اور ڈیٹا کو فیچرز کے ایک سیٹ میں تبدیل کرے گا جسے ڈیٹا سائنسدان ماڈل بنانے کے لیے استعمال کر سکتے ہیں۔
  • ترکیب کرنا – generate_synthetic_features نکالے گئے فیچرز کو بطور ان پٹ لے گا، ایک مصنوعی ماڈل کو تربیت دے گا، اور پھر Gretel APIs اور کلاؤڈ سروسز کا استعمال کرتے ہوئے فیچرز کا ایک مصنوعی سیٹ تیار کرے گا۔
  • لوڈ – upload_synthetic_features خصوصیات کے مصنوعی سیٹ کو S3 میں محفوظ کرتا ہے جہاں اسے کسی بھی بہاو والے ماڈل یا تجزیہ میں شامل کیا جا سکتا ہے۔

اگلے چند حصوں میں ہم ان تینوں مراحل میں سے ہر ایک کو مزید تفصیل سے دیکھیں گے۔ اگر آپ ہر کوڈ کے نمونے کے ساتھ عمل کرنا چاہتے ہیں، تو آپ اس پر جا سکتے ہیں۔ gretelai/gretel-airflow-pipelines اور اس بلاگ پوسٹ میں استعمال کردہ تمام کوڈ ڈاؤن لوڈ کریں۔ ریپو میں وہ ہدایات بھی شامل ہیں جن پر آپ ایئر فلو مثال شروع کرنے اور پائپ لائن کو آخر تک چلانے کے لیے عمل کر سکتے ہیں۔

مزید برآں، ایئر فلو پائپ لائن کو مکمل طور پر دیکھنا مددگار ثابت ہو سکتا ہے، اس سے پہلے کہ ہم ہر جزو کو الگ کر دیں، dags/airbnb_user_bookings.py. درج ذیل حصوں میں کوڈ کے ٹکڑوں کو منسلک صارف بکنگ پائپ لائن سے نکالا گیا ہے۔

خصوصیات کو نکالیں۔

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

ہماری مثال کے طور پر پائپ لائن میں ہم ایک PostgreSQL ڈیٹا بیس فراہم کریں گے اور اسے بکنگ ڈیٹا کے ساتھ لوڈ کریں گے۔ Airbnb Kaggle مقابلہ.

اس ڈیٹاسیٹ میں دو میزیں ہیں، یوزر اور سیشن۔ سیشنز میں ایک غیر ملکی کلیدی حوالہ ہوتا ہے، user_id۔ اس تعلق کو استعمال کرتے ہوئے، ہم خصوصیات کا ایک سیٹ بنائیں گے جس میں صارف کے ذریعہ جمع کردہ مختلف بکنگ میٹرکس شامل ہیں۔ درج ذیل اعداد و شمار ایس کیو ایل کے استفسار کی نمائندگی کرتا ہے جو خصوصیات کو بنانے کے لیے استعمال ہوتا ہے۔

WITH session_features_by_user AS ( SELECT user_id، count(*) AS number_of_actions_taken، شمار(DISTINCT action_type) AS number_of_unique_actions، round(avg(secs_elapsed)) AS avg_session_time_seconds، round(maxed_session_time_seconds)، round(maxed_session_sesse) min_session_time_seconds, ( SELECT count(*) FROM ssess s WHERE s.user_id = user_id AND s.action_type = 'booking_request') بطور کل_بکنگ سیشنز GROUP BY user_id ) u.id بطور user_id، u.gender، u.age منتخب کریں .language, u.signup_method, u.date_account_created, s.number_of_actions_taken, s.number_of_unique_actions, s.avg_session_time_seconds, s.min_session_time_seconds, s.max_session_time_seconds, s.max_session_time_seconds, s.max_session_time_seconds. s.max_session_time_seconds.


اس کے بعد SQL استفسار ہماری ایئر فلو پائپ لائن سے کیا جاتا ہے اور درج ذیل ٹاسک ڈیفینیشن کا استعمال کرتے ہوئے انٹرمیڈیٹ S3 مقام پر لکھا جاتا ہے۔

@task() def extract_features(sql_file: str) -> str: context = get_current_context() sql_query = Path(sql_file).read_text() key = f"{context['dag_run'].run_id}_booking_features.csv" کے ساتھ NamedTemporary (mode="r+", suffix=".csv") بطور tmp_csv: postgres.copy_expert( f"copy ({sql_query}) csv ہیڈر کے ساتھ stdout میں، tmp_csv.name ) s3.load_file( filename=tmp_csv.name، key=key، ) واپسی کی کلید


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

ذیل کا اسکرین شاٹ اوپر سے نکالنے والے استفسار کا ایک نمونہ نتیجہ دکھاتا ہے۔ ہم اگلے سیکشن میں اس ڈیٹاسیٹ کا مصنوعی ورژن بنانے کا طریقہ بیان کریں گے۔



سوال کے نتیجے کا پیش نظارہ۔

Gretel APIs کا استعمال کرتے ہوئے خصوصیات کی ترکیب کریں۔

 
 
ہر خصوصیت کا مصنوعی ورژن تیار کرنے کے لیے، ہمیں پہلے ایک مصنوعی ماڈل کو تربیت دینا ہوگی، اور پھر مصنوعی ریکارڈ بنانے کے لیے ماڈل کو چلانا چاہیے۔ Gretel کے پاس Python SDKs کا ایک سیٹ ہے جو ایئر فلو کے کاموں میں ضم کرنا آسان بناتا ہے۔

Python کلائنٹ SDKs کے علاوہ، ہم نے ایک تخلیق کیا ہے۔ گریٹیل ایئر فلو ہک جو Gretel API کنکشنز اور رازوں کا انتظام کرتا ہے۔ Gretel Airflow کنکشن قائم کرنے کے بعد، Gretel API سے جڑنا اتنا ہی آسان ہے۔

hooks.gretel درآمد سے GretelHook gretel = GretelHook() پروجیکٹ = gretel.get_project()


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

اوپر دی گئی مثال میں پروجیکٹ متغیر کو Gretel's API کا استعمال کرتے ہوئے مصنوعی ماڈلز کی تربیت اور چلانے کے لیے مرکزی داخلے کے لیے استعمال کیا جا سکتا ہے۔ مزید تفصیلات کے لیے، آپ ہماری جانچ کر سکتے ہیں۔ Python API دستاویزات.

بکنگ پائپ لائن کا حوالہ دیتے ہوئے، اب ہم generate_synthetic_features کام کا جائزہ لیں گے۔ یہ مرحلہ پچھلے کام میں نکالی گئی خصوصیات کا استعمال کرتے ہوئے مصنوعی ماڈل کی تربیت کے لیے ذمہ دار ہے۔

@task() def generate_synthetic_features(data_source: str) -> str: project = gretel.get_project() model = project.create_model_obj( model_config="synthetics/default", data_source=s3.download_file(data_source) ) cloud_sub) ماڈل پول(ماڈل) واپسی model.get_artifact_link("data_preview")


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

پروجیکٹ.create_model_obj کا استعمال کرتے ہوئے ماڈل بناتے وقت، model_config param اس مصنوعی ماڈل کی تشکیل کی نمائندگی کرتا ہے جو ماڈل بنانے کے لیے استعمال ہوتا ہے۔ اس پائپ لائن میں، ہم اپنا استعمال کر رہے ہیں۔ پہلے سے طے شدہ ماڈل کی تشکیل، لیکن بہت سے دوسرے ترتیب کے اختیارات دستیاب ہیں.

ماڈل کے کنفیگر ہونے کے بعد، ہم model.submit_cloud() کہتے ہیں۔ یہ گریٹیل کلاؤڈ کا استعمال کرتے ہوئے تربیت اور ریکارڈ بنانے کے لیے ماڈل پیش کرے گا۔ پول (ماڈل) کو کال کرنا اس وقت تک کام کو روک دے گا جب تک کہ ماڈل ٹریننگ مکمل نہ کر لے۔

اب جب کہ ماڈل کو تربیت دے دی گئی ہے، ہم get_artifact_link استعمال کریں گے تاکہ پیدا کردہ مصنوعی خصوصیات کو ڈاؤن لوڈ کرنے کے لیے ایک لنک واپس کر سکیں۔



خصوصیات کے مصنوعی سیٹ کا ڈیٹا پیش نظارہ۔

 

اس آرٹفیکٹ لنک کو حتمی upload_synthetic_features مرحلے میں بطور ان پٹ استعمال کیا جائے گا۔

مصنوعی خصوصیات لوڈ کریں۔

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

@task() def upload_synthetic_features(data_set: str): context = get_current_context() open(data_set, "rb") کے ساتھ synth_features کے طور پر: s3.load_file_obj( file_obj=synth_features, key=f"{..._booking_features", thincs_features. )


یہ کام کافی سیدھا ہے۔ ڈیٹا_سیٹ ان پٹ ویلیو میں Gretel's API سے مصنوعی ڈیٹاسیٹ ڈاؤن لوڈ کرنے کے لیے ایک دستخط شدہ HTTP لنک ہوتا ہے۔ ٹاسک اس فائل کو ایئر فلو ورکر میں پڑھے گا، اور پھر مصنوعی فیچر فائل کو S3 بالٹی میں اپ لوڈ کرنے کے لیے پہلے سے ترتیب شدہ S3 ہک کا استعمال کرے گا جہاں نیچے دھارے کے صارفین یا ماڈل اس تک رسائی حاصل کر سکتے ہیں۔

پائپ لائن کی آرکیسٹریٹنگ

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

اگر آپ اس پوسٹ کے شروع میں واپس یاد کریں گے، تو ہم نے مختصراً ڈی اے جی کے تصور کا ذکر کیا۔ Airflow کے TaskFlow API کا استعمال کرتے ہوئے ہم ان تینوں Python طریقوں کو ایک DAG میں مرتب کر سکتے ہیں جو ان پٹ، آؤٹ پٹ اور آرڈر کی وضاحت کرتا ہے کہ ہر قدم چلایا جائے گا۔

feature_path = extract_features( "/opt/airflow/dags/sql/session_rollups__by_user.sql" ) synthetic_data = generate_synthetic_features(feature_path) upload_synthetic_features(synthetic_data)


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



ایئر فلو پر Gretel synthetics پائپ لائن۔

 

اگر آپ اس پائپ لائن کو چلانا چاہتے ہیں، اور اسے عمل میں دیکھنا چاہتے ہیں، تو اس کی طرف جائیں۔ Github ذخیرہ کے ساتھ. وہاں آپ کو ایئر فلو مثال شروع کرنے اور پائپ لائن کو آخر تک چلانے کے بارے میں ہدایات ملیں گی۔

لپیٹ چیزیں

 
 
اگر آپ نے اسے اب تک بنایا ہے، تو آپ نے دیکھا ہے کہ Gretel کو Airflow پر بنی ڈیٹا پائپ لائن میں کیسے ضم کیا جا سکتا ہے۔ Gretel کے ڈویلپر دوستانہ APIs، اور Airflow کے ہکس اور آپریٹرز کے طاقتور نظام کو ملا کر ETL پائپ لائنز بنانا آسان ہے جو ڈیٹا کو زیادہ قابل رسائی اور استعمال میں محفوظ بناتی ہے۔

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

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

پڑھنے کا شکریہ

 
 
ہمیں ای میل پر بھیجیں hi@gretel.ai یا ہمارے ساتھ آئیں ناپختہ اگر آپ کے کوئی سوالات یا تبصرے ہیں۔ ہمیں یہ جاننا اچھا لگے گا کہ آپ ایئر فلو کو کس طرح استعمال کر رہے ہیں اور ہم آپ کی موجودہ ڈیٹا پائپ لائنز کے ساتھ کس طرح بہتر طریقے سے ضم کر سکتے ہیں۔

 
بیو: ڈریو نیو بیری Gretel.ai میں سافٹ ویئر انجینئر ہے۔

حقیقی. اجازت کے ساتھ دوبارہ پوسٹ کیا۔

متعلقہ:

ماخذ: https://www.kdnuggets.com/2021/09/build-synthetic-data-pipeline-gretel-apache-airflow.html

ٹائم اسٹیمپ:

سے زیادہ KDnuggets