| name | training-pipelines |
| version | 2.0.0 |
| sasmp_version | 1.3.0 |
| description | Master training pipelines - orchestration, distributed training, hyperparameter tuning |
| bonded_agent | 04-training-pipelines |
| bond_type | PRIMARY_BOND |
| category | training |
| difficulty | intermediate_to_advanced |
| estimated_hours | 40 |
| prerequisites | ["mlops-basics","experiment-tracking"] |
| validation | {"pre_conditions":["Completed prerequisite skills","Access to GPU resources"],"post_conditions":["Can build Kubeflow pipelines","Can configure distributed training","Can run hyperparameter tuning"]} |
| observability | {"metrics":["pipelines_created","training_jobs_completed","gpu_utilization"]} |
Training Pipelines Skill
Learn: Build production training pipelines with orchestration and distributed training.
Skill Overview
| Attribute | Value |
|---|
| Bonded Agent | 04-training-pipelines |
| Difficulty | Intermediate to Advanced |
| Duration | 40 hours |
| Prerequisites | mlops-basics, experiment-tracking |
Learning Objectives
- Design end-to-end training pipelines
- Implement distributed training with PyTorch DDP
- Configure hyperparameter tuning with Optuna
- Deploy pipelines to Kubeflow
- Optimize GPU utilization and costs
Topics Covered
Module 1: Pipeline Design (10 hours)
Pipeline Architecture:
┌────────────────────────────────────────────────────────────────┐
│ TRAINING PIPELINE │
├────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌───────┐ │
│ │ Data │─▶│Preprocess│─▶│ Train │─▶│ Evaluate│─▶│Register│ │
│ │ Load │ │ │ │ │ │ │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └───────┘ │
│ ║ │
│ ▼ │
│ [Hyperparameter] │
│ [ Tuning ] │
│ │
└────────────────────────────────────────────────────────────────┘
Module 2: Distributed Training (12 hours)
PyTorch DDP Setup:
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
def setup_distributed():
dist.init_process_group(backend=)
local_rank = (os.environ[])
torch.cuda.set_device(local_rank)
local_rank
model = DDP(model, device_ids=[local_rank])
sampler = DistributedSampler(dataset)
loader = DataLoader(dataset, sampler=sampler)