الوحدة 9 — خطوط المعالجة والجدولة
الوحدات السابقة أعطتنا مكوّنات منفصلة: قراءة بيانات، تدريب، تسجيل، نشر. الوحدة الحالية تربطها في خطّ معالجة (pipeline) واحد، يعمل يوم الاثنين كلّ أسبوع، ويعيد إنتاج نموذج تنبّؤ الطلب على أحدث بيانات المبيعات لسلسلة المتاجر.
من المهمّة الواحدة إلى خطّ المعالجة
مهمّة الأمر من الوحدة 5 تنفّذ خطوة واحدة. خطّ المعالجة يُنسّق عدّة خطوات مع تبعيات وتدفّق بيانات بينها:
prepare_data → train_model → evaluate → register_if_better
كلّ خطوة مهمّة أمر مستقلّة (شفرة، بيئة، مدخلات، مخرجات). المخرَج من الخطوة السابقة يصير المدخَل للخطوة التالية.
الفائدة الحاسمة: إعادة استعمال المكوّنات. الخطوة evaluate نفسها تُستعمل في خطوط أخرى (تدريب دون توقّف مبكر مثلًا). كلّ تحسين على مكوّن يستفيد منه كلّ خطّ يستدعيه.
المكوّن (Component)
المكوّن مهمّة قابلة لإعادة الاستعمال، مسجَّلة في مساحة العمل. تُصرَّح في YAML:
# components/prepare.yml
$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: prepare_sales
version: 3
type: command
inputs:
raw:
type: uri_file
min_date:
type: string
outputs:
train:
type: mltable
val:
type: mltable
code: ../src
environment: azureml:forecast-env:3
command: >
python prepare.py
--raw ${{inputs.raw}}
--min-date ${{inputs.min_date}}
--train-out ${{outputs.train}}
--val-out ${{outputs.val}}
التسجيل:
az ml component create --file components/prepare.yml
كلّ إصدار جديد للمكوّن يعطي رقمًا. خطوط المعالجة القديمة تبقى مربوطة بإصدارها.
خطّ معالجة YAML
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
experiment_name: weekly-training
display_name: weekly-forecast-2026-w36
inputs:
weekly_raw:
type: uri_file
path: azureml:sales_weekly:2026.36
min_date: "2024-01-01"
jobs:
prepare:
type: command
component: azureml:prepare_sales:3
inputs:
raw: ${{parent.inputs.weekly_raw}}
min_date: ${{parent.inputs.min_date}}
train:
type: command
component: azureml:train_xgb:5
inputs:
train: ${{parent.jobs.prepare.outputs.train}}
val: ${{parent.jobs.prepare.outputs.val}}
alpha: 0.1
max_depth: 6
compute: azureml:cpu-cluster
evaluate:
type: command
component: azureml:evaluate_model:2
inputs:
model: ${{parent.jobs.train.outputs.model}}
val: ${{parent.jobs.prepare.outputs.val}}
mae_threshold: 2.0
register:
type: command
component: azureml:register_if_better:1
inputs:
model: ${{parent.jobs.train.outputs.model}}
metric: ${{parent.jobs.evaluate.outputs.mae}}
name: demand-forecast
الإطلاق:
az ml job create --file pipelines/weekly.yml
Azure يستنتج التبعيات من روابط ${{parent.jobs.X.outputs.Y}} ويشغّل الخطوات بالترتيب الصحيح، بالتوازي حيث يمكن.