AWS SageMaker Data Prep | AI/ML | Sinhala Guide
කොහොමද යාලුවනේ, ඔයාලා හැමෝටම! අද අපි කතා කරන්න යන්නේ AI/ML ලෝකයේ ගොඩක් වැදගත්, හැබැයි සමහර වෙලාවට නොසලකා හරින දෙයක් ගැන – ඒ තමයි Data Preparation, එහෙමත් නැත්නම් දත්ත සකස් කිරීම. Machine Learning model එකක් හදද්දී, model එක කොච්චර හොඳට වැඩ කරනවද කියලා බලපාන ප්රධානම සාධකය තමයි අපි ඒකට දෙන දත්තවල ගුණාත්මකභාවය. හොඳට සකස් කරපු දත්ත නැත්නම්, අපේ model එකෙන් ලැබෙන ප්රතිඵල හරියන්නේ නෑ. අපේ පැරණි කියමනක් තියෙනවා 'Garbage In, Garbage Out' කියලා, ඒක AI/ML වලටත් හොඳටම ගැලපෙනවා.
අද අපි මේ දත්ත සකස් කිරීමේ ක්රියාවලිය AWS SageMaker කියන විශිෂ්ට සේවාව හරහා කොහොමද පහසුවෙන්, කාර්යක්ෂමව කරගන්නේ කියලා බලමු. AWS SageMaker කියන්නේ AI/ML සංවර්ධනයට ඕනෑම දෙයක් එකම තැනකින් සපයන පුදුමාකාර වේදිකාවක්. අද අපි මේකේ Data Wrangler, Feature Store, Ground Truth වගේ ප්රධාන කොටස් ගැන විස්තරාත්මකව කතා කරනවා, ඒ වගේම දත්ත වැඩිදියුණු කිරීමේ (Data Augmentation) ක්රම සහ Imbalanced Datasets කළමනාකරණය කරන හැටිත් බලමු. ඉතින්, අපි යමුද මේ සුපිරි ලෝකෙට!
1. AWS SageMaker Data Wrangler: Visual Data Preparation
දත්ත සකස් කිරීමේ (Data Preparation) ක්රියාවලියේදී තියෙන ලොකුම අභියෝගයක් තමයි දත්තවල තියෙන විවිධත්වයයි, ඒවා පිරිසිදු කරන්න (clean) සහ වෙනස් කරන්න (transform) ඕන වෙන වෙලාවට ගතවෙන කාලයයි. මෙන්න මේකට නියම විසඳුමක් තමයි SageMaker Data Wrangler. මේක visual interface එකක්, ඒ කියන්නේ අපිට code ගොඩක් ලියන්නේ නැතුවම, mouse click කරලා දත්ත සකස් කරගන්න පුළුවන්. හරිම පහසුයි!
Data Wrangler ඇයි අපිට වැදගත්?
- කාලය ඉතිරි කරයි (Time-saving): දත්ත සකස් කරන්න යන කාලය ගොඩක් අඩු කරනවා.
- පහසුයි (User-friendly): Data Science පසුබිමක් නැති අයටත් පහසුවෙන් පාවිච්චි කරන්න පුළුවන්.
- Code නොලියා (No-code/Low-code): සංකීර්ණ Python scripts ලියන්න ඕන වෙන්නේ නෑ.
- දත්ත ගුණාත්මකභාවය (Data Quality): දත්තවල තියෙන වැරදි (errors), නැතිවූ දත්ත (missing values) වගේ දේවල් පහසුවෙන් හඳුනගෙන ඒවා නිවැරදි කරන්න පුළුවන්.
Data Wrangler වැඩ කරන ආකාරය:
Data Wrangler හරහා දත්ත සකස් කිරීමේදී ප්රධාන පියවර කිහිපයක් තියෙනවා:
- දත්ත සම්බන්ධ කිරීම (Connect Data): මුලින්ම ඔයාලගේ දත්ත කොහේ තියෙනවද කියලා Data Wrangler ට කියන්න ඕනේ. ඒකට Amazon S3, Amazon Redshift, Snowflake, Databricks වගේ විවිධ දත්ත මූලාශ්ර (data sources) සම්බන්ධ කරන්න පුළුවන්.
- දත්ත තෝරා ගැනීම (Select Data): අවශ්ය දත්ත තෝරාගෙන, ඒවා Data Wrangler වලට import කරගන්නවා.
- Transforms යෙදීම (Apply Transforms): මෙතනදී තමයි Magic එක වෙන්නේ! ඔයාලට දත්ත පිරිසිදු කරන්න, වෙනස් කරන්න, join කරන්න, aggregate කරන්න වගේ දේවලට පුළුල් පරාසයක Transformations පාවිච්චි කරන්න පුළුවන්. උදාහරණයක් විදියට missing values පුරවන්න (impute), data types වෙනස් කරන්න, duplicate rows අයින් කරන්න වගේ දේවල්.
- ප්රතිඵල නිරීක්ෂණය (Visualize Results): කරන හැම Transform එකකම ප්රතිඵලය අදාළ දත්ත ප්රවාහය (data flow) තුළින්ම බලාගන්න පුළුවන්, ඉතින් වැරදි අඩුයි.
- දත්ත export කිරීම (Export Data): සකස් කරපු දත්ත SageMaker Feature Store, Amazon S3, හෝ SageMaker Training jobs වලට කෙලින්ම export කරන්න පුළුවන්.
උදාහරණයක්: Customer Data Cleaning
හිතන්න ඔයාලට S3 Bucket එකක customer data තියෙනවා කියලා. මේ data එකේ 'age' column එකේ missing values තියෙනවා, 'income' column එක string විදියට තියෙනවා, සහ 'purchase_date' column එකේ format එක හරි නෑ. Data Wrangler වලින් අපිට මේක මේ විදියට හදන්න පුළුවන්:
- S3 bucket එකට Connect වෙන්න.
- 'age' column එකේ missing values, median value එකෙන් fill කරන්න.
- 'income' column එක string එකකින් integer/float එකකට convert කරන්න.
- 'purchase_date' column එක standardised date format එකකට parse කරන්න.
- අවශ්ය නම්, වෙනත් data source එකකින් product purchase details අරගෙන customer data එකත් එක්ක 'customer_id' එකෙන් join කරන්න.
මේ හැමදේම කරන්නේ mouse click කරලා visual interface එකෙන්. ගොඩක් පහසුයි නේද?
2. SageMaker Feature Store: AI/ML සඳහා නැවත භාවිත කළ හැකි දත්ත
Machine Learning project එකක් කරද්දී අපි දත්ත සකස් කරනවා, ඒ දත්තවලින් Model එකට වැදගත් වන 'features' හදාගන්නවා. හැබැයි මේ features හැම project එකකටම නැවත නැවත හදන එක ගොඩක් වෙලාවට වැඩ වැඩි කරන දෙයක්. මෙන්න මේකට තමයි SageMaker Feature Store කියන විසඳුම එන්නේ. මේක විශේෂිත දත්ත ගබඩාවක්, Machine Learning model පුහුණු කරන්න සහ inference කරන්න අවශ්ය features එක තැනක තියාගන්න පුළුවන්.
Feature Store ඇයි වැදගත්?
- නැවත භාවිතය (Reusability): එක වරක් හදපු feature එකක් විවිධ models වලට සහ projects වලට නැවත නැවත පාවිච්චි කරන්න පුළුවන්.
- consistency (ස්ථාවරත්වය): Training සහ Inference වෙලාවට එකම features පාවිච්චි කරන එකෙන් model එකේ accuracy එක වැඩි වෙනවා.
- අඩු latency (Low Latency): Real-time inference වලට වේගයෙන් features ලබා දෙනවා.
- Version Control: Features වල versions තියාගන්න පුළුවන්.
Feature Store වැඩ කරන ආකාරය:
Feature Store එකක් ප්රධාන වශයෙන් කොටස් දෙකකට බෙදෙනවා:
- Online Store: Real-time inference සඳහා අඩු latency එකකින් features ලබා දෙනවා.
- Offline Store: Batch inference සහ model training සඳහා විශාල දත්ත ප්රමාණයක් ගබඩා කරනවා.
ඔයාලා Feature Group එකක් නිර්මාණය කරලා, ඒකට features අර්ථ දක්වනවා. ඊට පස්සේ දත්ත මේ Feature Group එකට ingest කරනවා.
Python Code Example: Feature Group එකක් නිර්මාණය කිරීම
SageMaker SDK එක පාවිච්චි කරලා Feature Group එකක් හදන හැටි බලමු. මේකෙන් අපිට Customer Purchases ගැන features ටිකක් ගබඩා කරගන්න පුළුවන්.
import sagemaker
from sagemaker.feature_store.feature_group import FeatureGroup
import pandas as pd
import time
sagemaker_session = sagemaker.Session()
role = sagemaker.get_execution_role() # ඔයාලගේ AWS IAM Role එක
# Define feature group name
feature_group_name = 'customer-purchase-features-sinhala'
# Create a DataFrame for demonstration
data = {
'customer_id': [1, 2, 3],
'total_purchases_last_30_days': [5, 12, 3],
'avg_spend_per_purchase': [25.50, 40.00, 15.75],
'event_time': [pd.Timestamp.now().isoformat()] * 3 # Feature Store එකට මේක අත්යවශ්යයි
}
df = pd.DataFrame(data)
# Create Feature Group
customer_feature_group = FeatureGroup(
name=feature_group_name,
sagemaker_session=sagemaker_session
)
print(f"Feature Group '{feature_group_name}' නිර්මාණය කරමින්...")
customer_feature_group.load_dataframe(
dataframe=df,
event_time_feature_name='event_time',
record_identifier_feature_name='customer_id',
# wait=True, # Real use case වලදී මේක True කරන්න.
# target_stores=['OnlineStore', 'OfflineStore'] # අවශ්ය store එක තෝරන්න පුnලුවන්
)
print(f"Feature Group '{feature_group_name}' නිර්මාණය සහ දත්ත Ingestion සාර්ථකයි!")
මේ code එකෙන් අපි Feature Group එකක් නිර්මාණය කරලා, demo data ටිකක් ඒකට add කරනවා. customer_id එක record identifier විදියටත්, event_time එක feature Store එකේ අවශ්ය event time feature එක විදියටත් සලකනවා. මේකෙන් ඔයාලට customer purchases ගැන වැදගත් features නැවත භාවිත කරන්න පුළුවන්.
3. Data Labeling with AWS SageMaker Ground Truth
Machine Learning වල, විශේෂයෙන්ම Supervised Learning වලදී, model එකට ඉගෙන ගන්න ලේබල් (labels) කරපු දත්ත (labeled data) අත්යවශ්යයි. උදාහරණයක් විදියට, "මේ පින්තූරේ බල්ලෙක් ඉන්නවද නැද්ද?" කියලා model එකකට ඉගැන්වීමට, බල්ලෝ ඉන්න පින්තූර වලට "බල්ලා" කියලා ලේබල් කරන්න ඕනේ. මේ දත්ත ලේබල් කිරීමේ ක්රියාවලිය ගොඩක් වෙලාවට වෙහෙසකාරී, කාලය ගතවන සහ වියදම් අධික දෙයක් වෙන්න පුළුවන්. මේකට තමයි AWS SageMaker Ground Truth කියන සේවාව උදව් කරන්නේ.
Ground Truth ඇයි අපිට වැදගත්?
- කලින් සකස් කරපු (Pre-built) කාර්යයන්: Image classification, object detection (bounding boxes), semantic segmentation, text classification වගේ විවිධ labeling tasks වලට කලින් සකස් කරපු templates තියෙනවා.
- ಮಾನව සම්පත (Human Workforce): දත්ත ලේබල් කරන්න Public workforce (Amazon Mechanical Turk), Private workforce (ඔයාලගේම කණ්ඩායමක්) හෝ Vendor workforce (තෙවන පාර්ශවීය සේවාවන්) පාවිච්චි කරන්න පුළුවන්.
- Active Learning: Ground Truth වලට Active Learning කියන විශේෂාංගය තියෙනවා. මේකෙන් model එකකට ලේබල් කරන්න අමාරුම දත්ත විතරක් මිනිසුන්ට ලේබල් කරන්න යොමු කරනවා. මේකෙන් labeling process එකේ කාර්යක්ෂමතාවය වැඩි වෙනවා.
- Output: ලේබල් කරපු දත්තවල output එක S3 එකට JSON format එකෙන් save වෙනවා.
Ground Truth වැඩ කරන ආකාරය:
සාමාන්යයෙන් Ground Truth labeling job එකක් මෙන්න මේ වගේ පියවර කිහිපයකින් සමන්විත වෙනවා:
- දත්ත S3 එකට upload කරන්න (Upload Data to S3): ලේබල් කරන්න ඕන දත්ත (පින්තූර, වීඩියෝ, text files) S3 bucket එකකට upload කරන්න.
- Labeling Job එකක් හදන්න (Create a Labeling Job): SageMaker console එකට ගිහින් අලුත් labeling job එකක් හදන්න. මෙතනදී ඔයාලගේ දත්ත කොහේ තියෙනවද, මොන වගේ labeling task එකක්ද කරන්නේ (උදා: image classification), කවුද workforce එක (public, private, vendor) වගේ දේවල් specify කරන්න ඕනේ.
- Templates සහ Instructions සකස් කරන්න (Configure Templates and Instructions): Labeling task එකට අදාළ template එක තෝරලා, workforce එකට දත්ත ලේබල් කරන හැටි ගැන පැහැදිලි උපදෙස් (instructions) දෙන්න ඕනේ. මේක හරියට කරන එක ගොඩක් වැදගත්, මොකද ලේබල් වල ගුණාත්මකභාවය මේක මත රඳා පවතිනවා.
- Human Workforce එක දත්ත ලේබල් කරයි (Human Workforce Labels Data): ඔයාලා තෝරගත් workforce එක මේ උපදෙස් අනුව දත්ත ලේබල් කරනවා.
- ලේබල් කරපු දත්ත ලබා ගැනීම (Receive Labeled Data): Labeling job එක ඉවර වුනාට පස්සේ, ලේබල් කරපු දත්ත S3 bucket එකකට output විදියට save වෙනවා. මේ දත්ත ඔයාලට Model Training වලට පාවිච්චි කරන්න පුළුවන්.
උදාහරණයක්: Image Classification Labeling
අපිට විවිධ සත්ව වර්ග වල පින්තූර තියෙනවා, ඒ ටික 'cat', 'dog', 'bird' කියලා ලේබල් කරන්න ඕනේ. Ground Truth එකෙන් අපිට පුළුවන් මේ පින්තූර ටික S3 එකට දාලා, Image Classification labeling job එකක් හදන්න. Public workforce එකට මේ පින්තූර පෙන්වලා, ඒ හැම පින්තූරයක්ම අදාළ සත්ව වර්ගය අනුව ලේබල් කරන්න කියන්න පුළුවන්. Ground Truth වල Active Learning පාවිච්චි කරනවා නම්, model එකකට ලේබල් කරන්න අමාරුම පින්තූර විතරක් workforce එකට යොමු කරනවා.
4. Advanced Data Preparation Techniques
දත්ත පිරිසිදු කිරීම සහ ලේබල් කිරීම වගේම, අපේ Machine Learning model එකක performance එක වැඩි දියුණු කරන්න පුළුවන් තවත් Advanced Techniques කිහිපයක් තියෙනවා. මේවා විශේෂයෙන්ම දත්ත හිඟකම, හෝ දත්තවල අසමතුලිතතාවය (imbalance) වගේ ගැටළු විසඳගන්න උපකාරී වෙනවා.
4.1. Data Augmentation: දත්ත වැඩිදියුණු කිරීම
සමහර වෙලාවට අපිට Machine Learning model එකක් train කරන්න තරම් දත්ත ප්රමාණයක් නැති වෙන්න පුළුවන්. එහෙම නැත්නම්, තියෙන දත්ත වලින් model එක Overfit වෙන්න (එකම දත්ත වලට විතරක් හොඳට වැඩ කරනවා, අලුත් දත්ත වලට නරකයි) ඉඩ තියෙනවා. මේකට විසඳුමක් තමයි Data Augmentation. මේකෙන් කරන්නේ තියෙන දත්ත ටිකෙන් අලුත් දත්ත හදන එකයි.
Data Augmentation වර්ග:
- Images සඳහා:
- Rotate කිරීම (Rotation): පින්තූරය ටිකක් කරකවනවා.
- Flip කිරීම (Flipping): පින්තූරය හරස් අතට හෝ සිරස් අතට පෙරලනවා (horizontal/vertical flip).
- Zoom කිරීම (Zooming): පින්තූරය ටිකක් ලොකු කරනවා හෝ පොඩි කරනවා.
- Crop කිරීම (Cropping): පින්තූරයේ කොටසක් කපලා ගන්නවා.
- Brightness/Contrast වෙනස් කිරීම: පින්තූරයේ දීප්තිය හෝ පැහැය වෙනස් කිරීම.
- Text සඳහා:
- සමාන පද ආදේශ කිරීම (Synonym Replacement): වාක්යයක තියෙන වචන වලට සමාන පද දාලා අලුත් වාක්ය හදනවා.
- අහඹු ලෙස මකා දැමීම (Random Deletion): වාක්යයකින් වචන කිහිපයක් අහඹු ලෙස මකා දමනවා.
- ප්රතිව්යුහගත කිරීම (Paraphrasing): වාක්යයක අදහස වෙනස් නොකර එය වෙනත් වචන වලින් ලියනවා.
Data Augmentation මගින් model එකේ robustness එක වැඩි දියුණු වෙනවා වගේම, overfitting අවදානම අඩු වෙනවා. SageMaker Training jobs වලදී, ඔයාලට TensorFlow, PyTorch වගේ Frameworks වල තියෙන built-in augmentation libraries පාවිච්චි කරන්න පුළුවන්.
4.2. Handling Imbalanced Datasets: අසමතුලිත දත්ත කළමනාකරණය
සමහර දත්ත කට්ටල වල (datasets) එක් class එකක් අනෙක් class එකට වඩා ගොඩක් වැඩි වෙන්න පුළුවන්. උදාහරණයක් විදියට, credit card fraud detection වලදී, 'fraudulent' transactions 'non-fraudulent' transactions වලට වඩා ගොඩක් අඩුයි. මේ වගේ Imbalanced datasets එක්ක model එකක් train කළොත්, model එක minority class එක හරියට හඳුනගන්නේ නෑ. මොකද model එක බොහෝ විට majority class එකට නැඹුරු වෙන නිසයි.
Imbalanced Datasets කළමනාකරණය කරන ක්රම:
- Oversampling (වැඩිපුර නියැදි ගැනීම):
- Minority class එකේ තියෙන samples ගණන වැඩි කරනවා. ඒ කියන්නේ තියෙන samples duplicate කරනවා.
- SMOTE (Synthetic Minority Over-sampling Technique): මේක ටිකක් advanced ක්රමයක්. මේකෙන් කරන්නේ minority class එකේ තියෙන samples වලට සමාන අලුත් synthetic samples හදන එකයි.
- Undersampling (අඩු නියැදි ගැනීම):
- Majority class එකේ තියෙන samples ගණන අඩු කරනවා. ඒ කියන්නේ වැඩිපුර තියෙන samples ටිකක් අයින් කරනවා.
- මේකෙන් model එක train කරන්න යන කාලය අඩු වෙනවා, හැබැයි වැදගත් දත්ත නැති වෙන්නත් පුළුවන්.
- Class Weights (Class වලට බර තැබීම):
- Model training කරන වෙලාවේ minority class එකට වැඩි weight එකක් දෙනවා. ඒ කියන්නේ minority class එකේ වැරදි පුරෝකථනය (prediction) කරන එකට model එකට වැඩි දඬුවමක් (penalty) ලැබෙනවා.
- SageMaker Built-in algorithms (XGBoost වගේ) සහ Frameworks (TensorFlow, PyTorch) මේකට සහය දක්වනවා.
මේ Techniques පාවිච්චි කිරීමෙන් Imbalanced datasets වලදී පවා අපේ model එකේ performance එක වැඩි දියුණු කරගන්න පුළුවන්.
5. Data Versioning with AWS SageMaker
ඕනෑම Software Engineering project එකක වගේම, Machine Learning project එකකදීත් Data Versioning කියන්නේ ගොඩක් වැදගත් දෙයක්. අපි data set එකකට වෙනස්කම් කරද්දී, උදාහරණයක් විදියට missing values අයින් කරද්දී, අලුත් features add කරද්දී, නැත්නම් data augmentation කරද්දී, ඒ හැම වෙනස්කමක්ම track කරන්න ඕනේ. එහෙම නැත්නම් මොන data set එකද මොන model එකට පාවිච්චි කළේ කියලා හරියටම මතක තියාගන්න අමාරු වෙනවා.
Data Versioning ඇයි වැදගත්?
- ප්රතිනිෂ්පාදනය කිරීම (Reproducibility): Model එකක ප්රතිඵලයක් ආවාට පස්සේ, ඒ ප්රතිඵලය ආපු data set එක මොකක්ද කියලා හරියටම දැනගන්න පුළුවන්.
- දෝෂ නිවැරදි කිරීම (Debugging): Model එකේ performance එක අඩු වුණා නම්, data set එකට කරපු වෙනස්කම් ආපසු හරවලා (revert) ගැටලුව හොයාගන්න පුළුවන්.
- සහයෝගීතාවය (Collaboration): කණ්ඩායමක් විදියට වැඩ කරද්දී, හැමෝටම දත්ත වල අලුත්ම version එකට ප්රවේශ වෙන්න පුළුවන්.
- ප්රතිඵල සංසන්දනය කිරීම (Comparison of Results): විවිධ data versions වලින් train කරපු models වල performance එක සංසන්දනය කරන්න පුළුවන්.
SageMaker සහ Data Versioning:
AWS SageMaker වලට direct, built-in data versioning service එකක් නැතත්, ඒකෙන් තියෙන වෙනත් සේවාවන් පාවිච්චි කරලා අපිට මේක කළමනාකරණය කරගන්න පුළුවන්:
- Amazon S3 Versioning: S3 buckets වලට data upload කරනකොට S3 Versioning enable කරන්න පුළුවන්. මේකෙන් S3 එකේ තියෙන හැම object එකකම වෙනස්කම් automatically track වෙනවා.
- SageMaker Experiments: SageMaker Experiments කියන්නේ ML workflows track කරන්න තියෙන සේවාවක්. මේකෙන් අපිට train කරපු model එකට මොන data set එකද පාවිච්චි කළේ කියලා metadata විදියට save කරගන්න පුළුවන්.
- Custom Solutions / External Tools: DVC (Data Version Control) වගේ external tools SageMaker workflows එක්ක integrate කරන්න පුළුවන්. මේවා Git වගේ version control system එකක් එක්ක දත්ත වල versions track කරන්න උදව් කරනවා.
ඔයාලගේ ML Project එක සාර්ථකව කරගෙන යන්න Data Versioning කියන්නේ අත්යවශ්ය දෙයක්. මේ ගැනත් සැලකිලිමත් වෙන්න අමතක කරන්න එපා!
අවසන් වශයෙන් (Conclusion)
අද අපි AWS SageMaker භාවිතයෙන් AI/ML project එකක් සඳහා දත්ත සකස් කිරීමේ වැදගත්කම සහ ඒ සඳහා භාවිතා කළ හැකි ප්රධාන මෙවලම් සහ techniques ගැන පුළුල්ව කතා කළා. Data Wrangler හරහා දත්ත දෘශ්යමය වශයෙන් පිරිසිදු කරගන්නා ආකාරය, Feature Store මගින් Features නැවත භාවිත කරන ආකාරය, Ground Truth මගින් දත්ත ලේබල් කරන ආකාරය, Data Augmentation සහ Imbalanced Datasets කළමනාකරණය කරන ආකාරය, ඒ වගේම Data Versioning වල වැදගත්කම ගැනත් අපි ඉගෙන ගත්තා.
මතක තියාගන්න, Machine Learning වලදී 'data' කියන්නේ රන් වගේ වටින දෙයක්. ඒක හොඳට සකස් කරගන්න එක තමයි හොඳම model එකක් හදන්න තියෙන රහස. AWS SageMaker අපිට මේ හැමදේටම පුළුල් පරාසයක විසඳුම් ලබා දෙනවා.
ඉතින්, ඔයාලත් මේක implement කරලා බලන්න! ඔයාලගේ අත්දැකීම් කොහොමද? පහලින් Comment එකක් දාලා අපිට කියන්න. ඒ වගේම මේ tutorial එක ඔයාලගේ යාලුවෝ එක්ක share කරන්නත් අමතක කරන්න එපා. තවත් මේ වගේ වැදගත් tutorial එකකින් හමුවෙමු!