Amazon SageMaker Core Concepts | AWS AI/ML Sinhala Guide | Deep Learning
<p><strong>ආයුබෝවන් යාළුවනේ!</strong> අද වන විට කෘතිම බුද්ධිය (Artificial Intelligence - AI) සහ යන්ත්ර ඉගෙනීම (Machine Learning - ML) කියන ක්ෂේත්ර දෙක අපේ ලෝකය වෙනස් කරමින් ඉන්නවා. ඒත් මේවා එක්ක වැඩ කරන්න, මොඩල (models) හදන්න, පුහුණු කරන්න (train කරන්න), සහ ඒවා වැඩට යොදවන්න (deploy කරන්න) හරිම සංකීර්ණ වෙන්න පුළුවන්.</p> <p>අන්න ඒකට විසඳුමක් විදිහට තමයි Amazon Web Services (AWS) සමාගම <strong>Amazon SageMaker</strong> හඳුන්වා දුන්නේ. SageMaker කියන්නේ "අකුරු බිංදුවක් නැති කෝපි කෝප්පයක්" වගේ, ඒ කියන්නේ ඔබට Machine Learning (ML) මොඩල හදන්න, පුහුණු කරන්න, සහ deploy කරන්න අවශ්ය හැම දෙයක්ම එක තැනකින් සපයන සේවාවක්.</p> <p>මේ "Sinhala Guide" එකෙන් අපි Amazon SageMaker වල තියෙන මූලික සංකල්ප ටිකක් සරලව සහ පැහැදිලිව තේරුම් ගමු. ඒ වගේම, මේවා කොහොමද ප්රායෝගිකව භාවිතා කරන්නේ කියලත් බලමු. අවසානයේදී, ඔබට ඔබේම ML ව්යාපෘති සඳහා SageMaker භාවිතා කිරීමට හොඳ අවබෝධයක් ලැබෙනවාට සැක නැහැ.</p> <h2>Amazon SageMaker Studio සහ Notebooks: සංවර්ධනයේ හදවත</h2> <p>ඔබ ML මොඩලයක් හදන්න පටන් ගන්නකොට, ඔබට අවශ්ය වෙනවා හොඳ වැඩ පරිසරයක් (development environment) . SageMaker Studio කියන්නේ අන්න ඒ වගේ දෙයක්.</p> <h3>SageMaker Studio කියන්නේ මොකක්ද?</h3> <p>SageMaker Studio කියන්නේ Machine Learning සඳහාම හදපු <strong>Integrated Development Environment (IDE)</strong> එකක්. ඒ කියන්නේ, ඔබට දත්ත ගවේෂණය කරන්න (explore data), මොඩල හදන්න (build models), ඒවා පුහුණු කරන්න (train), දෝෂ නිවැරදි කරන්න (debug), සහ deploy කරන්න අවශ්ය හැම උපකරණයක්ම (tools) එක තැනකින් ලැබෙනවා.</p> <ul> <li><strong>එක තැනකින් සියල්ල:</strong> දත්ත බැලීමේ සිට මොඩලය deploy කිරීම දක්වා, හැම දෙයක්ම Studio ඇතුලතින් කරන්න පුළුවන්.</li> <li><strong>අන්තර්ක්රියාකාරී:</strong> Notebooks භාවිතා කරමින් code ලියන ගමන්ම ප්රතිඵල බැලීමේ හැකියාව.</li> <li><strong>පහසු කළමනාකරණය:</strong> ඔබේ සියලු ML ව්යාපෘති (experiments, models, data) එක තැනකින් කළමනාකරණය කරන්න පුළුවන්.</li> </ul> <h3>Notebook Environment එක</h3> <p>SageMaker Studio වලදී ඔබ වැඩ කරන්නේ බොහෝ විට <strong>Jupyter Notebooks</strong> වල. මේවා කියන්නේ code, text (markdown), සහ outputs (graphs, plots) එකට තියෙන interactive document. ML සංවර්ධනයට මේවා හරිම ප්රයෝජනවත්, මොකද ඔබට ටිකෙන් ටික code ලියන ගමන්ම, දත්ත විශ්ලේෂණය කරමින්, මොඩල හදමින් යන්න පුළුවන්.</p> <h3>Studio වලට පිවිසීම සහ Notebook එකක් ආරම්භ කිරීම</h3> <p>ඔබට AWS Console එක හරහා SageMaker Studio වලට පහසුවෙන් පිවිසෙන්න පුළුවන්. Studio Launcher එකෙන් ඔබට අලුත් Notebook එකක් හරි, Terminal එකක් හරි, තවත් ගොඩක් දේවල් ආරම්භ කරන්න පුළුවන්. අපි බලමු Python code එකකින් මේ පරිසරය කොහොමද පටන් ගන්නේ කියලා.</p> <pre><code class="language-python">import sagemaker import pandas as pd # SageMaker Session එකක් ආරම්භ කිරීම - මේක තමයි SageMaker එක්ක සම්බන්ධ වෙන්න පදනම sess = sagemaker.Session() # ඔබගේ default S3 bucket එක ලබා ගැනීම. SageMaker මේකට ගොඩක් දේවල් save කරනවා. bucket = sess.default_bucket() print(f"SageMaker Session ready. Default S3 bucket: {bucket}") # උදාහරණයක් ලෙස, S3 එකෙන් දත්ත load කරන හැටි (දැනට comment කර ඇත) # data = pd.read_csv(f"s3://{bucket}/your-data-folder/data.csv") # print("Data loaded successfully!") </code></pre> <p><em>මේ code එක මගින් අපි SageMaker session එකක් ආරම්භ කරනවා. මේක තමයි ඔබේ සියලු SageMaker මෙහෙයුම් සඳහා සම්බන්ධීකරණ ලක්ෂ්යය. ඔබගේ දත්ත සහ මොඩල Artifacts ගබඩා කිරීමට S3 bucket එකක් ස්වයංක්රීයව සකසනවා.</em></p> <h2>Built-in Algorithms සහ Training Jobs: මොඩලයට ජීවය දීම</h2> <p>මොඩලයක් හදලා ඉවර වුණාට පස්සේ, ඊළඟට තියෙන්නේ දත්ත භාවිතා කරලා ඒක පුහුණු කරන එක. SageMaker වල මේකට හරිම පහසු ක්රම කිහිපයක් තියෙනවා.</p> <h3>Built-in Algorithms (ඇතුළත් කර ඇති ඇල්ගොරිතම)</h3> <p>SageMaker වලට <strong>built-in algorithms</strong> ගොඩක් ඇතුළත් කරලා තියෙනවා. මේවා AWS විසින්ම ප්රශස්ත කරලා (optimized) තියෙන නිසා, ඔබට ඒවා කෙලින්ම භාවිතා කරන්න පුළුවන්. ඔබට ඒවායේ ක්රියාකාරිත්වය ගැන වැඩිය කරදර වෙන්න ඕන නෑ.</p> <ul> <li><strong>උදාහරණ:</strong> XGBoost (gradient boosting), Linear Learner (linear regression/classification), K-Means (clustering), DeepAR (forecasting), Object Detection, Image Classification වගේ ගොඩක් ජනප්රිය ඇල්ගොරිතම තියෙනවා.</li> <li><strong>පහසුව:</strong> ඔබට මේවා භාවිතා කරන්න data scientist කෙනෙක් වෙන්න ඕන නෑ. සරලවම අවශ්ය ඇල්ගොරිතමය තෝරලා, දත්ත දීලා, training job එකක් පටන් ගන්න විතරයි තියෙන්නේ.</li> </ul> <p>ඇත්ත වශයෙන්ම, ඔබට අවශ්ය නම් ඔබේම <strong>custom algorithms</strong> හෝ <strong>Deep Learning Frameworks</strong> (TensorFlow, PyTorch) භාවිතා කරන්නත් SageMaker ඉඩ දෙනවා. ඒත් මේ guide එකේදී අපි built-in algorithms ගැන අවධානය යොමු කරමු.</p> <h3>Training Jobs (පුහුණු කිරීමේ කාර්යයන්)</h3> <p>මොඩලයක් පුහුණු කිරීම (training) කියන්නේ ඒකට දත්ත දීලා, ඒ දත්ත වලින් යම් රටාවක් හඳුනාගෙන, යම් කාර්යයක් කරන්න පුහුණු කරන එක. SageMaker <strong>Training Jobs</strong> මගින් මේ ක්රියාවලිය සම්පූර්ණයෙන්ම කළමනාකරණය කරනවා.</p> <ul> <li><strong>අධීක්ෂණය:</strong> ඔබට අවශ්ය පරිදි instance types (e.g., <code>ml.m5.xlarge</code>), instance count, දත්ත තියෙන තැන (S3 bucket එකක), සහ hyper-parameters (ඇල්ගොරිතමයේ ක්රියාකාරිත්වයට බලපාන සැකසුම්) සඳහන් කරන්න පුළුවන්.</li> <li><strong>ස්වයංක්රීයකරණය:</strong> SageMaker අවශ්ය පරිදි infrastructure එක ආරම්භ කරනවා, training එක කරනවා, සහ අවසානයේදී පුහුණු කළ මොඩලය (model artifact) S3 එකේ ගබඩා කරනවා. ඔබට servers ගැන කරදර වෙන්න දෙයක් නෑ.</li> </ul> <h3>Built-in Algorithm එකක් භාවිතා කර Training Job එකක්</h3> <p>අපි බලමු XGBoost වැනි built-in algorithm එකක් භාවිතා කරලා training job එකක් define කරන්නේ කොහොමද කියලා. මේකෙන් මොඩලය පුහුණු කරන්න අවශ්ය environment එක සහ settings සකස් කරනවා.</p> <pre><code class="language-python">from sagemaker.image_uris import retrieve from sagemaker.estimator import Estimator # SageMaker built-in XGBoost image එක ලබා ගැනීම # මෙය AWS විසින් සකස් කරන ලද Docker image එකකි. container = retrieve('xgboost', sess.region_name, '1.2-1') # Estimator එකක් define කිරීම - මෙය training job එකක් කරන්නේ කෙසේදැයි SageMaker ට කියයි. xgb_estimator = Estimator( container, # භාවිතා කරන image එක sess.get_caller_identity_arn(), # ඔබේ AWS role ARN එක (permissions සඳහා) instance_count=1, # පුහුණු කිරීමට භාවිතා කරන instances ගණන instance_type='ml.m5.xlarge', # භාවිතා කරන instance වර්ගය output_path=f's3://{bucket}/output/', # මොඩලය save කරන S3 path එක sagemaker_session=sess, hyperparameters={ 'max_depth': 5, 'eta': 0.2, 'gamma': 4, 'min_child_weight': 6, 'subsample': 0.8, 'objective': 'binary:logistic', # විසඳන ගැටලුව (binary classification) 'num_round': 100 # training rounds ගණන } ) # මෙතනදි තමයි ඔබේ training data සහ validation data S3 එකේ කොහෙද තියෙන්නේ කියලා කියන්නේ # s3_train_data = f's3://{bucket}/your-training-data/' # s3_validation_data = f's3://{bucket}/your-validation-data/' # පුහුණු කිරීම ආරම්භ කිරීම (දැනට comment කර ඇත) # xgb_estimator.fit({'train': s3_train_data, 'validation': s3_validation_data}) print("XGBoost Estimator defined and ready for training!") </code></pre> <p><em>මෙම code එක මගින් අපි XGBoost සඳහා Estimator එකක් සකස් කරනවා. මෙතැනදී instance type, output path වගේම hyper-parameters ටිකත් සඳහන් කරනවා. අවසානයේදී <code>xgb_estimator.fit()</code> method එක මගින් පුහුණු කිරීම ආරම්භ වෙනවා.</em></p> <h2>Model Deployment සහ Endpoints: මොඩලය වැඩට යෙදවීම</h2> <p>මොඩලය පුහුණු කරලා ඉවර වුණාට පස්සේ, ඊළඟට තියෙන්නේ ඒක අනිත් යෙදුම් වලට (applications) භාවිතා කරන්න පුළුවන් විදිහට සකස් කරන එක.</p> <h3>Endpoints කියන්නේ මොනවාද?</h3> <p><strong>Endpoints</strong> කියන්නේ ඔබේ පුහුණු කළ මොඩලය "Real-time Inference" සඳහා (ඒ කියන්නේ ක්ෂණිකව පුරෝකථනයන් ලබා ගැනීමට) ලබා දෙන API (Application Programming Interface) එකක්. මේකෙන් ඔබට ඔබේ මොඩලයට අලුත් දත්ත යවලා, ඒවට අදාළ පුරෝකථනයන් ක්ෂණිකව ලබා ගන්න පුළුවන්.</p> <ul> <li><strong>පරිමාණය කිරීමේ හැකියාව (Scalability):</strong> ඔබේ යෙදුම කොච්චර ඉල්ලීම් (requests) ප්රමාණයක් එව්වත්, SageMaker Endpoint එක ස්වයංක්රීයව පරිමාණය වෙනවා.</li> <li><strong>ඉහළ ලබා ගැනීමේ හැකියාව (High Availability):</strong> ඔබේ Endpoint එක හැමවිටම ලබා ගත හැකි බව SageMaker සහතික කරනවා.</li> <li><strong>අධීක්ෂණය (Monitoring):</strong> Endpoint එකේ ක්රියාකාරිත්වය සහ කාර්ය සාධනය (performance) ඔබට පහසුවෙන් අධීක්ෂණය කරන්න පුළුවන්.</li> </ul> <p>ඔබට එකවර විශාල දත්ත ප්රමාණයක් පුරෝකථනය කරන්න අවශ්ය නම් (Real-time නොවී), <strong>Batch Transform</strong> කියන feature එක භාවිතා කරන්න පුළුවන්. මේකෙන් S3 එකේ තියෙන දත්ත batch එකකට අරගෙන, පුරෝකථනයන් කරලා, ප්රතිඵල S3 එකටම save කරනවා.</p> <h3>මොඩලයක් Endpoint එකකට Deploy කිරීම</h3> <p>අපි කලින් පුහුණු කළ Estimator එකෙන් Endpoint එකක් deploy කරන්නේ කොහොමද කියලා බලමු.</p> <pre><code class="language-python"># කලින් පුහුණු කළ xgb_estimator එකෙන් deploy කිරීම (දැනට comment කර ඇත) # predictor = xgb_estimator.deploy( # initial_instance_count=1, # ආරම්භක instances ගණන # instance_type='ml.m5.large' # Endpoint එකට භාවිතා කරන instance වර්ගය # ) # print(f"Model deployed to endpoint: {predictor.endpoint_name}") # පුරෝකථනයක් කරන ආකාරය (දැනට comment කර ඇත) # from sagemaker.serializers import CSVSerializer # from sagemaker.deserializers import CSVDeserializer # predictor.serializer = CSVSerializer() # input data format එක # predictor.deserializer = CSVDeserializer() # output data format එක # prediction = predictor.predict([[1, 2, 3, 4]]) # උදාහරණ input data # print(f"Prediction: {prediction}") print("Model deployment process overview complete. Remember to delete endpoints!") # වියදම් අඩු කර ගැනීමට වැඩ ඉවර වුනාම endpoint එක delete කරන්න අමතක කරන්න එපා! # sess.delete_endpoint(predictor.endpoint_name) </code></pre> <p><em>මෙම code එක මගින් පුහුණු කළ මොඩලය deploy කරන ආකාරය පෙන්වනවා. මෙතැනදීත් අපිට instance count සහ instance type සඳහන් කරන්න පුළුවන්. deploy වුනාට පස්සේ <code>predictor.predict()</code> method එක මගින් පුරෝකථනයන් ලබා ගන්න පුළුවන්. වැදගත් දේ තමයි වැඩ ඉවර වුණාම Endpoint එක delete කරන්න අමතක කරන්න එපා, නැත්නම් අනවශ්ය වියදම් දරන්න සිදු විය හැකියි.</em></p> <h2>SageMaker වල අනෙකුත් ප්රයෝජනවත් Features: තවත් බොහෝ දේ!</h2> <p>SageMaker කියන්නේ මේ ටිකට විතරක් සීමා වෙච්ච සේවාවක් නෙවෙයි. තවත් ගොඩක් දියුණු features මේකේ තියෙනවා. අපි ඒවා ගැනත් කෙටියෙන් බලමු.</p> <h3>SageMaker Experiments</h3> <p>ඔබ මොඩලයක් හදනකොට, විවිධ hyper-parameters, data preprocessing techniques, සහ algorithm combinations එක්ක ගොඩක් අත්හදා බැලීම් කරනවා. <strong>SageMaker Experiments</strong> මගින් මේ සියලු අත්හදා බැලීම් (experiments), ඒවායේ ප්රතිඵල, metrics, සහ model artifacts එක තැනකින් track කරන්න, සංසන්දනය කරන්න, සහ කළමනාකරණය කරන්න ඔබට අවස්ථාව දෙනවා.</p> <ul> <li><strong>ප්රයෝජනය:</strong> ඔබේ හොඳම මොඩලය මොකක්ද කියලා ඉක්මනින්ම තෝරා ගන්න පුළුවන්.</li> </ul> <h3>SageMaker Pipelines</h3> <p><strong>SageMaker Pipelines</strong> කියන්නේ Machine Learning Operations (MLOps) සඳහා තියෙන නියම විසඳුමක්. මේකෙන් ඔබට ඔබේ සම්පූර්ණ ML Workflow එකම ස්වයංක්රීය කරන්න පුළුවන්. දත්ත සකස් කිරීමේ සිට මොඩලය පුහුණු කර deploy කිරීම දක්වා, සියලුම පියවර (steps) pipeline එකක් විදිහට නිර්මාණය කරන්න පුළුවන්.</p> <ul> <li><strong>ප්රයෝජනය:</strong> ML සංවර්ධන ක්රියාවලිය වේගවත් කරන අතර, නිරවද්යතාවය (reproducibility) වැඩි කරයි.</li> </ul&n> <h3>SageMaker Model Monitor</h3> <p>ඔබ මොඩලයක් deploy කළාට පස්සේ, ඒක දිගින් දිගටම හොඳට වැඩ කරනවද කියලා බලන්න ඕන. කාලයත් එක්ක දත්ත වල රටා වෙනස් වෙන්න පුළුවන් (data drift), නැත්නම් මොඩලයේ කාර්ය සාධනය (performance) අඩු වෙන්න පුළුවන්. <strong>SageMaker Model Monitor</strong> මගින් production වල තියෙන ඔබේ මොඩල වල දත්ත සහ කාර්ය සාධනය ස්වයංක්රීයව අධීක්ෂණය කරනවා.</p> <ul> <li><strong>ප්රයෝජනය:</strong> මොඩලයේ ප්රශ්නයක් ඇති වුනොත් ඒ ගැන ඉක්මනින්ම දැනුම් දෙනවා, ඒ නිසා ඔබට නිවැරදි කිරීම් කරන්න පුළුවන්.</li> </ul> <h2>අවසාන වශයෙන්</h2> <p>අද අපි Amazon SageMaker වල තියෙන මූලික සංකල්ප කිහිපයක් ගැන කතා කළා. SageMaker Studio, Notebooks, built-in algorithms, training jobs, model deployment සහ එහි අනෙකුත් වැදගත් features ගැන ඔබට දැන් හොඳ අවබෝධයක් ඇති. මේ සේවාව මගින් Machine Learning මොඩල ගොඩනැගීමේ, පුහුණු කිරීමේ, සහ deploy කිරීමේ සංකීර්ණ ක්රියාවලිය කොතරම් සරල කරනවාදැයි ඔබට පෙනෙන්නට ඇති.</p> <p>ඔබේ ML ව්යාපෘති සඳහා SageMaker භාවිතා කිරීමෙන් ඔබට වේගවත්ව සහ කාර්යක්ෂමව වැඩ කරන්න පුළුවන්. Infrastructure ගැන කරදර නොවී, ඔබේ අවධානය යොමු කරන්න පුළුවන් මොඩලය හදන එකට විතරයි.</p> <p><strong>ඔබත් අදම AWS Console එකට ගිහින් Amazon SageMaker එක්ක අත්හදා බලන්න!</strong> මේ වගේ දේවල් ඉගෙන ගන්න හොඳම ක්රමය තමයි ඒවා ප්රායෝගිකව කරන එක. ඔබේ අත්දැකීම් කොහොමද? ඔබට මොනවා හරි ගැටලු ආවද? නැත්නම් මේ ගැන තව මොනවා හරි දැනගන්න කැමතිද?</p> <p><strong>ඔබේ අදහස් පහත Comment section එකේ ලියන්න.</strong> අපි තවත් මේ වගේ වැදගත් දේවල් ගැන ඉදිරියේදී කතා කරමු. ඔබට සුභ දවසක්!</p>