AWS SageMaker MLOps සිංහලෙන් | Pipelines, CI/CD, Model Monitoring

AWS SageMaker MLOps සිංහලෙන් | Pipelines, CI/CD, Model Monitoring

කොහොමද යාලුවනේ, Machine Learning ලෝකයට සාදරයෙන් පිළිගන්නවා!

අද කාලේ Machine Learning (ML) කියන්නේ අපේ ජීවිතේ හැමතැනම තියෙන දෙයක්නේ. Facebook එකේ යාළුවෝ Suggest කරන එකේ ඉඳන්, Netflix එකේ අපිට බලන්න Movies Recommend කරන එක දක්වා මේක පැතිරිලා තියෙනවා. හැබැයි, අපි Lab එකක හරි Local පරිසරයක හරි හදන Machine Learning Model එකක්, ඇත්තටම Production එකකට අරන් යන එකයි, ඒක නිරන්තරයෙන් නඩත්තු කරන එකයි, අළුත් කරන එකයි කියන්නේ පොඩි Challenge එකක් නෙවෙයි.

ඔන්න ඔය Challenge එකට විසඳුමක් තමයි MLOps කියන්නේ. Machine Learning Operations කියන එක තමයි කෙටියෙන් MLOps කියලා කියන්නේ. හරියට Software Development වලට DevOps තියෙනවා වගේම, ML Models වලට MLOps කියන එක අත්‍යවශ්‍යයි. අද අපි කතා කරන්න යන්නේ AWS SageMaker කියන Powerful Service එක පාවිච්චි කරලා, MLOps හරියටම ක්‍රියාත්මක කරන්නේ කොහොමද කියලා. මේකෙන් අපේ ML Models Production වලට ගෙනියන එක, නඩත්තු කරන එක, Update කරන එක ගොඩක් ලේසි වෙනවා.

මේ Guide එක අවසානය වෙනකොට, ඔයාට AWS SageMaker Pipelines, Model Registry, CI/CD integration, Model Monitoring, Automated Retraining strategies වගේ දේවල් ගැන හොඳ අවබෝධයක් ලැබෙයි. එහෙනම්, අපි පටන් ගමු!

MLOps කියන්නේ මොකක්ද? ඇයි අපිට මේක ඕනේ?

නිකමට හිතන්න, ඔයා Data Science Project එකක් කරනවා. සුපිරි Model එකක් හදනවා, Accuracy එහෙම ගොඩක් හොඳයි. දැන් මේක Production එකකට දාලා, මිනිස්සුන්ට පාවිච්චි කරන්න දෙන්න ඕනේ. සාමාන්‍යයෙන් මේ වෙලාවේදී තමයි ප්‍රශ්න එන්න පටන් ගන්නේ.

  • Model එක Deploy කරන්නේ කොහොමද?
  • Deploy කරපු Model එක කාලයත් එක්ක Accuracy අඩු වුණොත් මොකද කරන්නේ?
  • අළුත් Data ආවම Model එක Retrain කරන්නේ කොහොමද?
  • Model එකේ Performance එක අපි Monitor කරන්නේ කොහොමද?
  • අපි Model එකේ Version කිහිපයක් හදනවා නම්, ඒවා Manage කරන්නේ කොහොමද?

මෙන්න මේ වගේ ප්‍රශ්න ගොඩකට පිළිතුරු තමයි MLOps කියන්නේ. සරලවම කිව්වොත්, MLOps කියන්නේ Machine Learning Systems වල Lifecycle එක සම්පූර්ණයෙන්ම Automate කරලා, Manage කරලා, Monitor කරන එකයි. Data Collection එකේ ඉඳන්, Model Training, Deployment, Monitoring, සහ Retraining දක්වා මේ හැමදේම Continuous Flow එකක් විදිහට පවත්වාගෙන යන එක තමයි මෙහිදී වෙන්නේ.

MLOps අපිට වැදගත් වෙන්නේ ඇයි? ගොඩක් වෙලාවට Data Scientists ලා models හදනවා, Engineers ලා ඒවා deploy කරනවා. මේ දෙගොල්ලෝ අතර coordination එකක් නැති වුණොත්, Project එක delay වෙන්න පුළුවන්, Errors එන්න පුළුවන්. MLOps හරහා මේ හැමදේම එකට සම්බන්ධ කරලා, Process එක smooth කරන්න පුළුවන්. මේකෙන් Model Reliability එක වැඩි වෙනවා, Time-to-market එක අඩු වෙනවා, ඒ වගේම Resources Save වෙනවා.

SageMaker MLOps හි ප්‍රධාන අංග

හරි එහෙනම්, අපි බලමු AWS SageMaker මේ MLOps Journey එකට අපිට උදව් කරන්නේ කොහොමද කියලා. SageMaker කියන්නේ Machine Learning workflow එකේ හැම Step එකකටම පහසුකම් සලසන Comprehensive Service එකක්.

1. SageMaker Pipelines: Workflow Orchestration

ඔයා ML Model එකක් හදනකොට, Data Prepare කරනවා, Model එක Train කරනවා, Evaluate කරනවා, ඊටපස්සේ deploy කරනවා. මේ හැම Step එකක්ම එකිනෙකට සම්බන්ධ වෙලා තියෙන්නේ. SageMaker Pipelines කියන්නේ මේ හැම Step එකක්ම automate කරන්න පුළුවන් Powerful Tool එකක්. Pipeline එකක් කියන්නේ Steps ගොඩක එකතුවක්.

උදාහරණයක් විදිහට:

  1. Data Preprocessing Step: Raw Data අරගෙන, Clean කරලා, Feature Engineering කරලා, Training/Validation Sets වලට බෙදනවා.
  2. Model Training Step: Process කරපු Data අරගෙන, Model එක Train කරනවා.
  3. Model Evaluation Step: Train කරපු Model එකේ Performance එක Check කරනවා.
  4. Model Registration Step: Model එක හොඳයි නම්, Model Registry එකට Register කරනවා.

මේ Pipeline එක Run කරාම, මේ හැම Step එකක්ම පිළිවෙලට Automatically සිද්ධ වෙනවා. මේකෙන් Process එක Reproducible වෙනවා, Errors අඩු වෙනවා, ඒ වගේම කාලය ඉතිරි වෙනවා. අළුත් Data Set එකක් ආවොත්, Pipeline එක ආයෙත් Run කරන්න විතරයි තියෙන්නේ.

සරල Python කෝඩ් එකක් මගින් SageMaker Pipeline එකක සංකල්පය:

from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import ProcessingStep, TrainingStep
from sagemaker.processing import ScriptProcessor
from sagemaker.estimator import Estimator
from sagemaker.workflow.parameters import ParameterString

# Pipeline එකට අවශ්‍ය Parameters define කරමු
# මේවා Pipeline එක Run කරනකොට අපිට වෙනස් කරන්න පුළුවන්
input_data_uri = ParameterString(name="InputDataUri", default_value="s3://your-bucket/your-raw-data/")
instance_type_param = ParameterString(name="InstanceType", default_value="ml.m5.xlarge")

# 1. Data Processing Step එක define කරමු
# මෙහිදී අපේ data_preprocessing.py script එකක් run වෙනවා යැයි සිතමු.
processor_script = ScriptProcessor(
    image_uri="<your-sagemaker-processing-image-uri>", # E.g., '683313688378.dkr.ecr.us-east-1.amazonaws.com/sagemaker-sklearn-processing:1.2-1'
    command=["python3", "data_preprocessing.py"],
    instance_type=instance_type_param, # Pipeline parameter එක භාවිතා කරනවා
    instance_count=1,
    role="<your-sagemaker-execution-role-arn>"
)

processing_step = ProcessingStep(
    name="DataPreprocessing",
    processor=processor_script,
    inputs=[input_data_data_uri], # Raw data S3 path එක
    outputs=[
        sagemaker.processing.ProcessingOutput(source='/opt/ml/processing/train', destination='s3://your-bucket/processed-data/train'),
        sagemaker.processing.ProcessingOutput(source='/opt/ml/processing/validation', destination='s3://your-bucket/processed-data/validation')
    ] # Process කරපු data වල S3 output paths
)

# 2. Model Training Step එක define කරමු
# මෙහිදී අපේ model_training.py script එකක් run වෙනවා යැයි සිතමු.
estimator = Estimator(
    image_uri="<your-sagemaker-training-image-uri>", # E.g., '683313688378.dkr.ecr.us-east-1.amazonaws.com/sagemaker-sklearn:1.2-1'
    instance_type=instance_type_param,
    instance_count=1,
    role="<your-sagemaker-execution-role-arn>",
    hyperparameters={
        "epochs": 10,
        "learning_rate": 0.01
    }
)

training_step = TrainingStep(
    name="ModelTraining",
    estimator=estimator,
    inputs={
        "train": processing_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri,
        "validation": processing_step.properties.ProcessingOutputConfig.Outputs["validation"].S3Output.S3Uri
    }
    # Process කරපු data training input විදිහට දෙනවා
)

# දැන් මේ Steps ටික එකතු කරලා Pipeline එක හදමු
pipeline = Pipeline(
    name="MyMLOpsPipeline",
    parameters=[input_data_uri, instance_type_param],
    steps=[processing_step, training_step] # Steps ටික පිළිවෙලට
)

# Pipeline එක AWS SageMaker මතට deploy කිරීම (Upserting)
# pipeline.upsert(role_arn="<your-sagemaker-execution-role-arn>")

# Pipeline එක Run කිරීම
# execution = pipeline.start()
# execution.wait_for_completion()

මේ Code එකෙන් පෙන්නන්නේ Pipeline එකක් ඇතුලේ Steps දෙකක් (Preprocessing, Training) කොහොමද define කරන්නේ සහ ඒවා එකිනෙක සම්බන්ධ කරන්නේ කොහොමද කියන එකයි. 'processing_step.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri' වගේ දේවල් වලින් කලින් Step එකේ Output එක ඊළඟ Step එකේ Input එක විදිහට ගන්න පුළුවන්.

2. Model Registry: Your Model එකේ Library එක

ඔයා Model එකක් Train කරලා ඒක හොඳට වැඩ කරනවා කියලා දැනගත්තම, ඒක Production වලට යවන්න කලින්, ඒක ලියාපදිංචි (Register) කරන්න පුළුවන් තැනක් තමයි SageMaker Model Registry කියන්නේ. මේක හරියට ඔයාගේ ML Models වලට තියෙන Version Control System එකක් වගේ.

Model Registry එකේ වාසි:

  • Model Versioning: ඔයා හදන හැම Model එකකම Version එකක් තියාගන්න පුළුවන්. ඒකෙන් Model එකක් Revert කරන්න හරි, අළුත් Version එකක් deploy කරන්න හරි ලේසියි.
  • Metadata Tracking: Model එක train කරපු Data Set එක, Hyperparameters, Performance Metrics, Training Job Details වගේ දේවල් මේ Model එකත් එක්කම Save වෙනවා.
  • Approval Workflows: Production එකට deploy කරන්න කලින්, Model එකක් Review කරලා Approve කරන්න පුළුවන්. මේක Quality Assurance වලට ගොඩක් වැදගත්.
  • Deployment History: Model එකක් කීපාරක් deploy කරලා තියෙනවද, කොයි Version එකද දැනට Production වල තියෙන්නේ වගේ දේවල් බලාගන්න පුළුවන්.

SageMaker Pipelines වලදී, Model Evaluation Step එකෙන් පස්සේ, Model එක Register කරන්න පුළුවන්. ඒකෙන් මුළු Process එකම Automate වෙනවා.

3. CI/CD for ML: CodePipeline සමඟ ඒකාබද්ධ කිරීම

Software Development වලදී CI/CD (Continuous Integration/Continuous Delivery) කියන්නේ අත්‍යවශ්‍ය දෙයක්. ඒකෙන් Code Changes Detect කරලා, Automate විදිහට Test කරලා, Deploy කරනවා. MLOps වලදීත් මේක ඒ විදිහටම වැදගත්. AWS CodePipeline වගේ Services පාවිච්චි කරලා, ඔයාගේ ML Workflows වලටත් CI/CD එකතු කරන්න පුළුවන්.

ML සඳහා CI/CD වලදී වෙන්නේ:

  • Code Changes: ඔයා Model Training Script එකේ හරි Data Preprocessing Script එකේ හරි වෙනසක් කරලා Git Repository එකකට Push කරාම, Pipeline එක Trigger වෙනවා.
  • Data Changes: අළුත් Data Set එකක් S3 Bucket එකකට ආවම, ඒකෙන් Pipeline එකක් Trigger කරන්න පුළුවන්.
  • Automated Pipeline Execution: මේ Changes Detect වුණාම, SageMaker Pipeline එක Automatically Run වෙනවා.
  • Model Re-registration: Pipeline එක successful වුණොත්, අළුත් Model Version එක Model Registry එකට යනවා.
  • Automated Deployment: Model Registry එකේ Approve වුණාම, ඒක Staging/Production Environment එකට deploy කරන්න පුළුවන්.

මේකෙන් Model Updates සහ Deployments ගොඩක් ඉක්මන් වෙනවා, Error අඩු වෙනවා. Developer කෙනෙක්ට Code එක Push කරාම, ඉතුරු වැඩ ටික System එකෙන් Automate විදිහට සිද්ධ වෙනවා.

4. Model Monitoring: ඔබේ Model එක හොඳට වැඩ කරනවද කියලා බලමු

ඔයාගේ ML Model එක Production එකේ හොඳට වැඩ කරනවා කියලා හිතමු. හැබැයි, කාලයත් එක්ක Data Patterns වෙනස් වෙන්න පුළුවන්. මේකට Data Drift, Concept Drift කියලා කියනවා. Model එක train කරපු Data වගේ නෙවෙයි, Production එකට එන Data නම්, Model එකේ Accuracy එක අඩු වෙන්න පුළුවන්. මේ වගේ වෙලාවක Model එක Monitor කරන එක අත්‍යවශ්‍යයි.

SageMaker Model Monitor කියන්නේ මේකට තියෙන නියම Solution එක. මේකෙන් පුළුවන්:

  • Data Drift Detection: Production එකට එන Input Data, Model එක Train කරපු Data වගේද කියලා නිරන්තරයෙන් Check කරනවා. වෙනසක් තියෙනවා නම් Alert කරනවා.
  • Concept Drift Detection: Model එක Prediction කරන විදිහ කාලයත් එක්ක වෙනස් වෙනවා නම් Detect කරනවා.
  • Model Quality Monitoring: Model එකේ Accuracy, Precision, Recall වගේ Metrics Monitor කරනවා.
  • Bias Detection: Model එකේ Bias එකක් ඇති වෙනවා නම් Detect කරනවා.

මේ Monitoring Tools මගින් Model එකක Performance එක අඩු වෙනවා නම්, ඒ බව ඉක්මනින්ම දැනුම් දෙනවා. ඒ වගේම මේවා Automated Retraining Strategies එක්ක සම්බන්ධ කරලා, Model එකේ Performance එක අඩු වුණාම, ඒක Automatically Retrain කරන්න පුළුවන්.

5. Automated Retraining Strategies: කම්මැලි නැතුව Model එක Update කරමු

Model Monitoring වලින් Model එකේ Performance එක අඩු වෙනවා කියලා දැනගත්තම, ඊළඟට කරන්න ඕනේ ඒක අළුත් Data වලින් Retrain කරන එක. මේක Manual විදිහට කරනවා නම්, වෙලාව නාස්තියක්. ඒ නිසා Automated Retraining Strategies අත්‍යවශ්‍යයි.

SageMaker Pipelines සහ Model Monitor එකට එකතු කරලා Automated Retraining එකක් හදන්න පුළුවන්:

  • Schedule-based Retraining: සතියකට සැරයක් හරි, මාසෙකට සැරයක් හරි Pipeline එක Automatically Run වෙන්න සලස්වන්න පුළුවන්.
  • Event-driven Retraining: Model Monitor එකෙන් Data Drift එකක් හරි Performance Drop එකක් හරි Detect වුණාම, ඒක Event එකක් විදිහට අරගෙන SageMaker Pipeline එක Trigger කරන්න පුළුවන්.

මේකෙන් Model එක නිරන්තරයෙන් Update වෙනවා. අළුත් Data වලින් train වෙන නිසා, Model එකේ Prediction Quality එක හැමවෙලාවෙම ඉහළ මට්ටමක තියාගන්න පුළුවන්. මිනිස් මැදිහත්වීම අවමයි.

6. DevOps for ML Best Practices: හොඳම විදිහට වැඩ කරමු

SageMaker වලදී MLOps implement කරනකොට, හොඳම Practices කිහිපයක් Follow කරන එක ගොඩක් වැදගත්:

  • Version Everything: Code එක විතරක් නෙවෙයි, Data Set, Trained Models, Environment Configurations මේ හැමදේම Version Control කරන්න. Git, S3 Versioning, Model Registry මේකට උදව් වෙනවා.
  • Automate Everything: පුළුවන් හැම Step එකක්ම Automate කරන්න. Manual Steps අඩු කරන්න. Pipelines, CI/CD Tools මේකට යොදාගන්න.
  • Reproducibility: ඕනෑම වෙලාවක ඕනෑම Model Version එකක්, ඒක train කරපු Data Set එකත් එක්කම, ඒ විදිහටම Reproduce කරන්න පුළුවන් වෙන්න ඕනේ.
  • Monitor Continuously: Deploy කරපු Models නිරන්තරයෙන් Monitor කරන්න. Performance, Drift, Bias වගේ දේවල් ගැන විමසිල්ලෙන් ඉන්න.
  • Use Infrastructure as Code (IaC): Cloud Infrastructure එක (S3 buckets, IAM roles, SageMaker Endpoints) AWS CloudFormation, AWS CDK වගේ Tools වලින් define කරන්න.
  • Experiment Tracking: හැම Experiment එකක්ම (Training Run, Hyperparameters) Log කරලා තියාගන්න. SageMaker Experiments මේකට ගොඩක් උදව් වෙනවා.
  • Security First: Data, Models, Infrastructure වල Security එක ගැන මුල සිටම හිතන්න. IAM Roles, VPCs, Encryption වගේ දේවල් හරියට Configure කරන්න.

අවසාන වශයෙන්

ඉතින් යාලුවනේ, ඔයාට දැන් පැහැදිලියි නේද MLOps කියන්නේ මොකක්ද, ඒක ඇයි වැදගත්, ඒ වගේම AWS SageMaker මේකට අපිට උදව් කරන්නේ කොහොමද කියලා. SageMaker Pipelines, Model Registry, CI/CD, Model Monitoring, Automated Retraining වගේ දේවල් පාවිච්චි කරලා, අපිට Robust, Reliable, Efficient ML Systems හදන්න පුළුවන්.

මේ Tools හරි විදිහට පාවිච්චි කරනවා නම්, Data Scientists ලට Model එකේ Quality එක ගැන විතරක් හිතන්න පුළුවන්, අනෙක් Automated Tasks ගැන කරදර වෙන්න ඕනේ නෑ. ඒ වගේම ML Models Production එකට අරන් යන එක, නඩත්තු කරන එක ගොඩක් ලේසි වෙනවා. මේකෙන් Businesses වලටත් Model වලින් ලැබෙන Value එක වැඩි කරගන්න පුළුවන්.

මතක තියාගන්න, MLOps කියන්නේ Process එකක්. එක රැයින් මේක ගොඩනගන්න බෑ. හැබැයි, Basic Steps වලින් පටන් අරගෙන, ටිකෙන් ටික Automation වැඩි කරගෙන යන්න පුළුවන්. දැන් ඉතින් පරක්කු නොවී, ඔයාගේ ඊළඟ ML Project එකට SageMaker MLOps Concepts ටික apply කරලා බලන්න. ඔයාගේ අත්දැකීම් කොහොමද කියලා පහතින් Comment එකක් දාන්නත් අමතක කරන්න එපා! Good luck!