Skip to content
MeshojsPublic

About

Pibe — Production-Ready Automated Binary Classification Pipeline for Tabular Data

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Production Level ML Pipeline

بعد غياب لفتره كنت شغال على مشروع

View the post on LinkedIn

Production Level ML Pipeline

معظم الناس شاطرة تعمل موديل لبيانات معينه و خلاص.

image

مثلا لو هنتكلم dataset Titanic، فالموديل هيكون له:

Infeatures - outfeatures معينه.

فكذا الكود بتاع الموديل و تنضيف البيانات و reports كله Hardcoded.

ودا مش صح، مثلا انت لو شركة و عندك بيانات كتيرة يوميا، مش هتخلي المهندسين يقعدوا يبرمجوا كل دا لكل data.

هنا تيجي فكرة Pipeline.

فكرتها ان أكوادك تكون شغالة على كل أشكال البيانات الي هتكون بيها الموديل بتاعك.

أنا استخدمت:

  • Airflow
  • Docker
  • YAML

عشان اقدر اعمل trigger يوميا.


Fetch Data

بنبدأ ب Fetch Data:

لو عندك API، أو تعمل upload للبيانات بتاعتك.


1 — Ingestion

هي اول خطوة فعليا، بنبدأ نشوف البيانات بتاعتنا extension بتاعها شغال على pipeline ولا لا.

مثلا لو أنا شغال على CSV فقط، بتتأكد ان البيانات مش JSON او TXT.


2 — Validation

الخطوه دي هي الأهم بالنسبه لي.

ازاي تتاكد ان البيانات بتاعتك موجوده و ان لازم columns معينين يكونوا موجودين عشان نتمرن عليها.

Note:

الخطوه دي غريبة شوية، عشان انت متعرفش اسم columns، فمتقدرش تعمل:

df["column name"]

🥀 مثلا لو Tabular.

طب هنعملها ازاي؟

هيكون عندنا schema.yaml لكل dataset عندنا.

بيكون شكلها مثلا لكل col:

Pclass:
  type: categorical
  required: true
  allowed_values:
    - 1
    - 2
    - 3
  used_for_training: true

كدا أنا هعرف اتأكد من ان schema دي تنفع مع CSV بتاعي.

أي حاجه تانية مختلفه او زيادة او ممكن غلط في datatype، باستخدام Pydantic هيطلع error على طول!


3 — Preprocessing

الخطوه دي بتكون عن preprocessing.

لو اخدت بالك بيكون عندنا كذا نوع في CSV بالذات مثلا:

  • categorical
  • integer
  • string
  • numeric

كل واحده هيكون ليها preprocessing بطريقة مختلفه.

زي:

Male او Female

دا categorical ف هنعمل:

1-hot encoding

او زي:

Numeric

هنستخدم مثلا:

  • Standard Scalar
  • Robust Scalar
  • حاجه زي كذا

مثلا:

Age:
  type: numeric
  required: false
  min: 0
  max: 120
  used_for_training: true

و غيرهم بقى كتير.

بعد كدا بتجهز البيانات بتاعتك بتقسمهم، و تعملهم shuffle و تجهزهم في batches.


4 — Training

نوع الموديل الي هتختاره، أنا اختارت NN عادية.

و لكن خلي بالك من نوع Activation Function، و Loss اهم حاجه عشان البيانات بتاعتك.

مثلا أنا استخدمت:

  • SiLU
  • BCEWithLogits

عشان البيانات الي جاية كلها هتكون Binary Classification.

متنساش تسخدم MLflow او W&B عشان تقدر تشوف معلومات عن الموديل و هو بيتعلم.

هتقولي يا مشاري طيب…

كل موديل محتاج config معين، مثلا:

  • LR
  • عدد features مختلف

عشان كذا هنستخدم:

config.yaml

لكل ملف بردو.


5 — Evaluation

اعمل eval ب test و كدا انت خلصت.

مممم لا لسه 🫠

انت هتعمل endpoint للـ model دا.

BentoML, FastAPI كله شغال على حسب شغلك.

هترفع على السيرفر، Airflow هيعمل trigger يوميا ببيانات جديدة ب موديلات جديدة بس.

ب كود واحد!

كدا انت هتعدل على:

  • Config
  • Schema

و خلاص كدا!!


One More Thing

انت لازم تعمل حسابك بس ان ممكن الموديل بتاعك بيستقبل كذا نوع من البيانات، فبالتالي شكل preprocessing هيفرق.

زي TXT هتعمل Tokenization باستخدام BPE.


Near Future Updates

الـ pipeline rn هي فقط لـ binary classification tabular datasets.

but i would love to update this pipeline one for Transformers which handle:

  • Tokenization
  • Embedding
  • etc.

About

Pibe — Production-Ready Automated Binary Classification Pipeline for Tabular Data

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages