ডেটা ভার্সন কন্ট্রোল এবং Amazon SageMaker এক্সপেরিমেন্টস PlatoBlockchain ডেটা ইন্টেলিজেন্সের মাধ্যমে আপনার ML পরীক্ষা-নিরীক্ষাগুলি শেষ থেকে শেষ পর্যন্ত ট্র্যাক করুন। উল্লম্ব অনুসন্ধান. আ.

ডেটা ভার্সন কন্ট্রোল এবং অ্যামাজন সেজমেকার পরীক্ষা-নিরীক্ষার মাধ্যমে আপনার এমএল পরীক্ষাগুলি শেষ থেকে শেষ পর্যন্ত ট্র্যাক করুন

ডেটা বিজ্ঞানীরা প্রায়ই বিভিন্ন মডেল আর্কিটেকচার এবং হাইপারপ্যারামিটারের সাথে সমন্বয়ে বিভিন্ন ডেটা প্রিপ্রসেসিং এবং বৈশিষ্ট্য প্রকৌশল কৌশলগুলির প্রভাব বোঝার দিকে কাজ করে। এটি করার জন্য আপনাকে পুনরাবৃত্তিমূলকভাবে বড় প্যারামিটার স্পেসগুলি কভার করতে হবে, এবং পরীক্ষাগুলি পুনরুত্পাদনযোগ্য রাখার সময় পূর্বে চালানো কনফিগারেশন এবং ফলাফলের ট্র্যাক রাখা অপ্রতিরোধ্য হতে পারে।

এই পোস্টটি আপনাকে কোড, ডেটা, আর্টিফ্যাক্ট এবং মেট্রিক্স ব্যবহার করে কীভাবে আপনার পরীক্ষাগুলিকে ট্র্যাক করতে হয় তার একটি উদাহরণের মাধ্যমে নিয়ে যায় অ্যামাজন সেজমেকার পরীক্ষা-নিরীক্ষা সাথে ডেটা সংস্করণ নিয়ন্ত্রণ (DVC). আমরা দেখাই কিভাবে আপনি DVC পাশাপাশি ব্যবহার করতে পারেন আমাজন সেজমেকার প্রক্রিয়াকরণ এবং প্রশিক্ষণ কাজ। আমরা ক্যালিফোর্নিয়ার হাউজিং ডেটাসেটে বিভিন্ন ক্যাটবুস্ট মডেলকে প্রশিক্ষণ দিই StatLib সংগ্রহস্থল, এবং DVC এর সাথে ডেটা সংস্করণের ট্র্যাক রাখার সময় হোল্ডআউট কৌশল পরিবর্তন করুন। প্রতিটি পৃথক পরীক্ষায়, আমরা সেজমেকার পরীক্ষাগুলি ব্যবহার করে ইনপুট এবং আউটপুট আর্টিফ্যাক্ট, কোড এবং মেট্রিক্স ট্র্যাক করি।

সেজমেকার পরীক্ষা-নিরীক্ষা

সেজমেকার এক্সপেরিমেন্টস মেশিন লার্নিং (এমএল) পরীক্ষাগুলি ট্র্যাক করার জন্য একটি AWS পরিষেবা৷ দ্য সেজমেকার এক্সপেরিমেন্টস পাইথন এসডিকে এই পরিষেবার একটি উচ্চ-স্তরের ইন্টারফেস যা আপনাকে পাইথন ব্যবহার করে পরীক্ষার তথ্য ট্র্যাক করতে সাহায্য করে।

সেজমেকার পরীক্ষা-নিরীক্ষার লক্ষ্য হল পরীক্ষাগুলি তৈরি করা, তাদের ট্রায়ালের মাধ্যমে জনবহুল করা, ট্র্যাকিং এবং বংশের তথ্য যোগ করা এবং ট্রায়াল এবং পরীক্ষাগুলি জুড়ে বিশ্লেষণ চালানো যতটা সম্ভব সহজ করা।

সেজমেকার পরীক্ষা নিয়ে আলোচনা করার সময়, আমরা নিম্নলিখিত ধারণাগুলি উল্লেখ করি:

  • পরীক্ষা - সম্পর্কিত পরীক্ষার একটি সংগ্রহ। আপনি একটি পরীক্ষায় ট্রায়াল যোগ করুন যা আপনি একসাথে তুলনা করতে চান।
  • ট্রায়াল - একটি বহু-পদক্ষেপ ML কর্মপ্রবাহের একটি বিবরণ। কর্মপ্রবাহের প্রতিটি ধাপ একটি ট্রায়াল উপাদান দ্বারা বর্ণিত হয়।
  • ট্রায়াল উপাদান - একটি এমএল ওয়ার্কফ্লোতে একটি একক পদক্ষেপের বর্ণনা, যেমন ডেটা পরিষ্কার করা, বৈশিষ্ট্য নিষ্কাশন করা, মডেল প্রশিক্ষণ, বা মডেল মূল্যায়ন।
  • যে ব্যক্তি অনুসরণ করে – একটি একক ট্রায়াল উপাদান (উদাহরণস্বরূপ, পরামিতি, মেট্রিক্স, বা শিল্পকর্ম) সম্পর্কে তথ্য লগ করার জন্য একটি পাইথন প্রসঙ্গ পরিচালক।

ডেটা সংস্করণ নিয়ন্ত্রণ

ডেটা ভার্সন কন্ট্রোল (DVC) হল একটি নতুন ধরনের ডেটা ভার্সনিং, ওয়ার্কফ্লো এবং এক্সপেরিমেন্ট ম্যানেজমেন্ট সফ্টওয়্যার যা তৈরি করে git (যদিও এটি স্বতন্ত্র কাজ করতে পারে)। DVC প্রতিষ্ঠিত ইঞ্জিনিয়ারিং টুলসেট এবং ডেটা সায়েন্সের প্রয়োজনের মধ্যে ব্যবধান কমায়, আপনাকে নতুন সুবিধা নিতে দেয় বৈশিষ্ট্য বিদ্যমান দক্ষতা এবং অন্তর্দৃষ্টি পুনরায় ব্যবহার করার সময়।

ডেটা সায়েন্স এক্সপেরিমেন্ট শেয়ারিং এবং কোলাবরেশন নিয়মিত গিট ফ্লো (কমিট, ব্রাঞ্চিং, ট্যাগিং, পুল রিকোয়েস্ট) এর মাধ্যমে করা যেতে পারে যেভাবে এটি সফটওয়্যার ইঞ্জিনিয়ারদের জন্য কাজ করে। Git এবং DVC এর সাথে, ডেটা সায়েন্স এবং ML টিম পরীক্ষাগুলি সংস্করণ করতে পারে, বড় ডেটাসেটগুলি পরিচালনা করতে পারে এবং প্রকল্পগুলিকে পুনরুত্পাদনযোগ্য করে তুলতে পারে।

DVC এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • DVC হল a বিনামূল্যে, মুক্ত উৎস কমান্ড লাইন টুল.
  • ডিভিসি গিট রিপোজিটরির উপরে কাজ করে এবং গিট-এর মতো একই কমান্ড লাইন ইন্টারফেস এবং প্রবাহ রয়েছে। DVC এছাড়াও স্বতন্ত্র কাজ করতে পারে, কিন্তু ছাড়া সংস্করণ ক্ষমতা।
  • বড় ফাইল, ডেটাসেট ডিরেক্টরি, এমএল মডেল ইত্যাদি প্রতিস্থাপন করে ডেটা সংস্করণ সক্ষম করা হয়েছে মেটাফাইল (গিট দিয়ে পরিচালনা করা সহজ)। এই স্থানধারকগুলি মূল ডেটার দিকে নির্দেশ করে, যা সোর্স কোড ম্যানেজমেন্ট থেকে আলাদা করা হয়।
  • আপনি প্রজেক্টের কোড বেস থেকে আলাদা করে ডেটা সংরক্ষণ করতে অন-প্রিমিসেস বা ক্লাউড স্টোরেজ ব্যবহার করতে পারেন। এইভাবে ডেটা বিজ্ঞানীরা বড় ডেটাসেট স্থানান্তর করতে পারেন বা অন্যদের সাথে একটি GPU- প্রশিক্ষিত মডেল ভাগ করতে পারেন।
  • DVC লাইটওয়েট তৈরি করে ডেটা বিজ্ঞান প্রকল্পগুলিকে পুনরুত্পাদনযোগ্য করে তোলে পাইপলাইনগুলি অন্তর্নিহিত নির্ভরতা গ্রাফ ব্যবহার করে, এবং জড়িত ডেটা এবং শিল্পকর্মগুলিকে কোডিফাই করে।
  • DVC প্ল্যাটফর্ম অজ্ঞেয়বাদী। এটি সমস্ত প্রধান অপারেটিং সিস্টেমে (লিনাক্স, ম্যাকওএস, এবং উইন্ডোজ) চলে এবং প্রোগ্রামিং ভাষা (পাইথন, আর, জুলিয়া, শেল স্ক্রিপ্ট এবং আরও অনেক কিছু) বা এমএল লাইব্রেরি (কেরাস, টেনসরফ্লো, পাইটর্চ, সিপি, এবং) থেকে স্বাধীনভাবে কাজ করে। আরও) প্রকল্পে ব্যবহৃত।
  • DVC দ্রুত ইনস্টল এবং বিশেষ পরিকাঠামোর প্রয়োজন হয় না, বা এটি API বা বহিরাগত পরিষেবাগুলির উপর নির্ভর করে না। এটি একটি স্বতন্ত্র CLI টুল।

SageMaker পরীক্ষা এবং DVC নমুনা

অনুসরণ গিটহাবের নমুনা SageMaker পরিবেশের মধ্যে কিভাবে DVC ব্যবহার করতে হয় তা দেখায়। বিশেষ করে, আপনার ডেটা বিজ্ঞানীদের একটি সামঞ্জস্যপূর্ণ উন্নয়ন পরিবেশ প্রদান করার জন্য আমরা ডিফল্টরূপে ইনস্টল করা DVC লাইব্রেরিগুলির সাথে একটি কাস্টম চিত্র কীভাবে তৈরি করা যায় তা দেখি অ্যামাজন সেজমেকার স্টুডিও, এবং প্রক্রিয়াকরণ এবং প্রশিক্ষণের জন্য SageMaker পরিচালিত পরিকাঠামোর পাশাপাশি কিভাবে DVC চালাতে হয়। উপরন্তু, আমরা দেখাই কিভাবে SageMaker ট্র্যাকিং তথ্যকে DVC থেকে ডেটা ভার্সনিং তথ্য দিয়ে সমৃদ্ধ করা যায় এবং স্টুডিও কনসোলের মধ্যে সেগুলিকে কল্পনা করা যায়।

নিম্নলিখিত চিত্রটি সমাধানের আর্কিটেকচার এবং কর্মপ্রবাহকে চিত্রিত করে।

ইতিমধ্যে ইনস্টল করা DVC সহ একটি কাস্টম স্টুডিও ছবি তৈরি করুন৷

এই GitHub সংগ্রহস্থল, আমরা ব্যাখ্যা করি কিভাবে স্টুডিওর জন্য একটি কাস্টম ইমেজ তৈরি করতে হয় যাতে DVC ইতিমধ্যেই ইনস্টল করা আছে। একটি ইমেজ তৈরি করা এবং এটি সমস্ত স্টুডিও ব্যবহারকারীদের জন্য উপলব্ধ করার সুবিধা হল যে এটি স্টুডিও ব্যবহারকারীদের জন্য একটি সামঞ্জস্যপূর্ণ পরিবেশ তৈরি করে, যা তারা স্থানীয়ভাবেও চালাতে পারে। যদিও নমুনা ভিত্তিক এডাব্লুএস ক্লাউড 9, আপনি আপনার স্থানীয় মেশিনে ধারকটি তৈরি করতে পারেন যতক্ষণ না আপনি ডকার ইনস্টল এবং চলমান থাকেন। এই নমুনা নিম্নলিখিত উপর ভিত্তি করে Dockerfile এবং পরিবেশ.yml. ফলে ডকার ইমেজ সংরক্ষণ করা হয় অ্যামাজন ইলাস্টিক কনটেইনার রেজিস্ট্রি (Amazon EMR) আপনার AWS অ্যাকাউন্টে। নিম্নলিখিত কোড দেখুন:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

এখন তুমি পারো একটি নতুন স্টুডিও ডোমেন তৈরি করুন or একটি বিদ্যমান স্টুডিও ডোমেন আপডেট করুন যেটির নতুন তৈরি ডকার ইমেজে অ্যাক্সেস রয়েছে।

আমরা ব্যাবহার করি এডাব্লুএস ক্লাউড ডেভেলপমেন্ট কিট (AWS CDK) এর মাধ্যমে নিম্নলিখিত সংস্থানগুলি তৈরি করতে এডাব্লুএস ক্লাউডফর্মেশন:

  • আপনার নতুন বা বিদ্যমান স্টুডিও ডোমেনে সঠিক অনুমতি সহ একটি সেজমেকার কার্যকরী ভূমিকা
  • ডকার ইমেজ থেকে একটি সেজমেকার ইমেজ এবং সেজমেকার ইমেজ সংস্করণ conda-env-dvc-kernel যা আমরা আগে তৈরি করেছি
  • An AppImageConfig কার্নেল গেটওয়ে কিভাবে কনফিগার করা উচিত তা সুনির্দিষ্ট করে
  • একজন স্টুডিও ব্যবহারকারী (data-scientist-dvc).

বিস্তারিত নির্দেশাবলীর জন্য, পড়ুন SageMaker স্টুডিওতে একটি কাস্টম চিত্র সংযুক্ত করুন৷.

ল্যাব চালান

ল্যাব চালানোর জন্য, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. স্টুডিও ডোমেনে, এর জন্য স্টুডিও চালু করুন data-scientist-dvc ব্যবহারকারী।
  2. গিট আইকন নির্বাচন করুন, তারপর নির্বাচন করুন একটি সংগ্রহস্থল ক্লোন করুন.
    একটি সংগ্রহস্থল ক্লোন করুন
  3. সংগ্রহস্থলের URL লিখুন (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) এবং চয়ন করুন ক্লোন.একটি রেপো বোতাম ক্লোন করুন
  4. ফাইল ব্রাউজারে, নির্বাচন করুন amazon-sagemaker-experiments-dvc-demo সংগ্রহস্থল।
  5. খোলা dvc_sagemaker_script_mode.ipynb নোটবই.
  6. জন্য কাস্টম ইমেজ, conda-env-dvc-kernel ইমেজ নির্বাচন করুন।
  7. বেছে নিন নির্বাচন করা.
    conda-env-dvc-কারনেল

ডেটা সংস্করণের জন্য DVC কনফিগার করুন

আমরা একটি সাবডিরেক্টরি তৈরি করি যেখানে আমরা ডেটা প্রস্তুত করি: sagemaker-dvc-sample। এই সাবডিরেক্টরির মধ্যে, আমরা একটি নতুন গিট রিপোজিটরি শুরু করি এবং রিমোটকে একটি রিপোজিটরিতে সেট করি যা আমরা তৈরি করি এডাব্লুএস কোডকমিট. লক্ষ্য হল এই সংগ্রহস্থলে ডেটা ট্র্যাকিং সংস্করণের জন্য DVC কনফিগারেশন এবং ফাইলগুলি। যাইহোক, গিট সাবপ্রজেক্টগুলি পরিচালনা করার জন্য নেটিভ ক্ষমতা প্রদান করে, উদাহরণস্বরূপ, গিট সাবমডিউল এবং গিট সাবট্রিস, এবং আপনি এই নমুনাটি আপনার কাজের ফ্লোতে সবচেয়ে উপযুক্ত যে কোনও উপরে উল্লিখিত সরঞ্জামগুলি ব্যবহার করার জন্য প্রসারিত করতে পারেন।

আমাদের ক্ষেত্রে SageMaker এর সাথে CodeCommit ব্যবহার করার প্রধান সুবিধা হল এর সাথে একীকরণ এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) প্রমাণীকরণ এবং অনুমোদনের জন্য, যার অর্থ আমরা শংসাপত্র (বা SSH কী) আনার প্রয়োজন ছাড়াই ডেটা পুশ এবং টানতে IAM ভূমিকা ব্যবহার করতে পারি। সেজমেকার এক্সিকিউশন রোলে যথাযথ অনুমতি সেট করা স্টুডিও নোটবুক এবং সেজমেকার প্রশিক্ষণ এবং প্রক্রিয়াকরণ কাজকে কোডকমিটের সাথে নিরাপদে যোগাযোগ করতে দেয়।

যদিও আপনি GitHub, Gitlab, বা Bitbucket এর মতো অন্য যেকোন সোর্স কন্ট্রোল সার্ভিস দিয়ে CodeCommit প্রতিস্থাপন করতে পারেন, তবে আপনার সিস্টেমের জন্য শংসাপত্রগুলি কীভাবে পরিচালনা করবেন তা বিবেচনা করতে হবে। একটি সম্ভাবনা হল এই শংসাপত্রগুলি সংরক্ষণ করা এডাব্লুএস সিক্রেটস ম্যানেজার এবং স্টুডিও নোটবুক এবং সেজমেকার প্রসেসিং এবং প্রশিক্ষণের কাজগুলি থেকে রান টাইমে সেগুলি আনুন৷

DVC শুরু করুন

DVC এবং SageMaker এর সাথে প্রক্রিয়া করুন এবং প্রশিক্ষণ দিন

এই বিভাগে, আমরা আমাদের সমস্যা মোকাবেলা করার জন্য দুটি ভিন্ন পন্থা অন্বেষণ করি এবং আমরা আপনাকে আগে যে উচ্চ-স্তরের ধারণাগত আর্কিটেকচারটি দেখিয়েছি সেই অনুযায়ী সেজমেকার পরীক্ষা-নিরীক্ষা ব্যবহার করে কীভাবে আমরা দুটি পরীক্ষার ট্র্যাক রাখতে পারি।

একটি SageMaker পরীক্ষা সেট আপ করুন

সেজমেকারে এই পরীক্ষাটি ট্র্যাক করতে, আমাদের একটি পরীক্ষা তৈরি করতে হবে। আমাদের পরীক্ষার মধ্যে ট্রায়াল সংজ্ঞায়িত করতে হবে। সরলতার জন্য, আমরা পরীক্ষার জন্য শুধুমাত্র একটি ট্রায়াল বিবেচনা করি, কিন্তু আপনি একটি পরীক্ষার মধ্যে যে কোনো সংখ্যক ট্রায়াল থাকতে পারেন, উদাহরণস্বরূপ, আপনি যদি বিভিন্ন অ্যালগরিদম পরীক্ষা করতে চান।

আমরা নামে একটি পরীক্ষা তৈরি করি DEMO-sagemaker-experiments-dvc দুটি পরীক্ষা দিয়ে, dvc-trial-single-file এবং dvc-trial-multi-files, প্রতিটি ডেটাসেটের একটি ভিন্ন সংস্করণ উপস্থাপন করে।

এর তৈরি করা যাক DEMO-sagemaker-experiments-dvc পরীক্ষা:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

পরীক্ষা 1: প্রশিক্ষণ এবং বৈধতার জন্য একক ফাইল তৈরি করুন

এই বিভাগে, আমরা একটি প্রসেসিং স্ক্রিপ্ট তৈরি করি যা সরাসরি থেকে কাঁচা ডেটা নিয়ে আসে আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) ইনপুট হিসাবে; ট্রেন, বৈধতা এবং পরীক্ষার ডেটাসেট তৈরি করতে এটি প্রক্রিয়া করে; এবং DVC ব্যবহার করে ফলাফলগুলি Amazon S3 এ সঞ্চয় করে। উপরন্তু, প্রক্রিয়াকরণ এবং প্রশিক্ষণের কাজ চালানোর সময় এবং সেজমেকার পরীক্ষা-নিরীক্ষার মাধ্যমে আপনি কীভাবে SageMaker-এর মাধ্যমে DVC দ্বারা তৈরি আউটপুট আর্টিফ্যাক্টগুলি ট্র্যাক করতে পারেন তা আমরা দেখাই৷

প্রথমত, আমরা তৈরি করি dvc-trial-single-file ট্রায়াল এবং এটি যোগ করুন DEMO-sagemaker-experiments-dvc পরীক্ষা এটি করার মাধ্যমে, আমরা এই পরীক্ষার সাথে সম্পর্কিত সমস্ত ট্রায়াল উপাদান একটি অর্থপূর্ণ উপায়ে সংগঠিত রাখি।

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

একক ফাইল সংস্করণ তৈরি করতে একটি SageMaker প্রক্রিয়াকরণ কাজে DVC ব্যবহার করুন

এই বিভাগে, আমরা একটি প্রসেসিং স্ক্রিপ্ট তৈরি করি যা সেজমেকারের পরিচালিত ডেটা লোডিং ক্ষমতা ব্যবহার করে সরাসরি Amazon S3 থেকে ইনপুট হিসাবে কাঁচা ডেটা পায়; ট্রেন, বৈধতা এবং পরীক্ষার ডেটাসেট তৈরি করতে এটি প্রক্রিয়া করে; এবং DVC ব্যবহার করে ফলাফলগুলি Amazon S3 এ সঞ্চয় করে। এটা বোঝা খুবই গুরুত্বপূর্ণ যে যখন DVC ব্যবহার করে Amazon S3 (বা Amazon S3 থেকে ডেটা টেনে) ডেটা সঞ্চয় করা হয়, তখন আমরা SageMaker পরিচালিত ডেটা লোডিং ক্ষমতা হারাচ্ছি, যা আমাদের প্রক্রিয়াকরণ এবং প্রশিক্ষণের কাজের পারফরম্যান্স এবং খরচের উপর সম্ভাব্য প্রভাব ফেলতে পারে। , বিশেষ করে যখন খুব বড় ডেটাসেটের সাথে কাজ করে। বিভিন্ন SageMaker নেটিভ ইনপুট মোড ক্ষমতা সম্পর্কে আরও তথ্যের জন্য, পড়ুন এক্সেস ট্রেনিং ডেটা.

অবশেষে, SageMaker পরীক্ষা-নিরীক্ষার মাধ্যমে প্রসেসিং কাজ চালানোর সময় আমরা SageMaker ট্র্যাকিং ক্ষমতার সাথে DVC ট্র্যাকিং ক্ষমতা একীভূত করি।

প্রক্রিয়াকরণ স্ক্রিপ্টটি গিট রিপোজিটরির ঠিকানা এবং পরিবেশগত ভেরিয়েবলের মাধ্যমে পাস করা DVC মেটাডেটা সংরক্ষণ করার জন্য যে শাখাটি তৈরি করতে চাই তা আশা করে। ডেটাসেটগুলি নিজেরাই DVC দ্বারা Amazon S3-এ সংরক্ষণ করা হয়। যদিও পরিবেশগত ভেরিয়েবলগুলি সেজমেকার পরীক্ষায় স্বয়ংক্রিয়ভাবে ট্র্যাক করা হয় এবং ট্রায়াল কম্পোনেন্ট প্যারামিটারগুলিতে দৃশ্যমান হয়, আমরা আরও তথ্যের সাথে ট্রায়াল উপাদানগুলিকে সমৃদ্ধ করতে চাই, যা তারপরে একটি ট্র্যাকার অবজেক্ট ব্যবহার করে স্টুডিও UI-তে ভিজ্যুয়ালাইজেশনের জন্য উপলব্ধ হয়ে যায়। আমাদের ক্ষেত্রে, ট্রায়াল উপাদান পরামিতি নিম্নলিখিত অন্তর্ভুক্ত:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

প্রিপ্রসেসিং স্ক্রিপ্ট গিট রিপোজিটরি ক্লোন করে; ট্রেন, বৈধতা এবং পরীক্ষার ডেটাসেট তৈরি করে; এবং DVC ব্যবহার করে সিঙ্ক করে। আগেই উল্লেখ করা হয়েছে, DVC ব্যবহার করার সময়, আমরা নেটিভ সেজমেকার ডেটা লোডিং ক্ষমতার সুবিধা নিতে পারি না। বৃহৎ ডেটাসেটে আমরা যে পারফরম্যান্সের শাস্তি ভোগ করতে পারি তা ছাড়াও, আমরা আউটপুট আর্টিফ্যাক্টগুলির জন্য স্বয়ংক্রিয় ট্র্যাকিং ক্ষমতাও হারাই। যাইহোক, ট্র্যাকার এবং DVC পাইথন এপিআইকে ধন্যবাদ, আমরা এই ত্রুটিগুলির জন্য ক্ষতিপূরণ দিতে পারি, রান টাইমে এই ধরনের তথ্য পুনরুদ্ধার করতে পারি এবং অল্প প্রচেষ্টায় ট্রায়াল উপাদানে সংরক্ষণ করতে পারি। এটি করে যোগ করা মান হল এই নির্দিষ্ট প্রক্রিয়াকরণ কাজের অন্তর্গত ইনপুট এবং আউটপুট আর্টিফ্যাক্টগুলির একক দৃশ্যে থাকা।

সম্পূর্ণ প্রিপ্রসেসিং পাইথন স্ক্রিপ্ট এ উপলব্ধ গিটহুব রেপো.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

SageMaker আমাদের AWS দ্বারা পরিচালিত কন্টেইনার চিত্রগুলিতে আমাদের প্রক্রিয়াকরণ স্ক্রিপ্ট চালানোর সম্ভাবনা দেয় যা AWS অবকাঠামোতে চালানোর জন্য অপ্টিমাইজ করা হয়। যদি আমাদের স্ক্রিপ্টের অতিরিক্ত নির্ভরতার প্রয়োজন হয়, আমরা সরবরাহ করতে পারি a requirements.txt ফাইল যখন আমরা প্রক্রিয়াকরণ কাজ শুরু করি, সেজমেকার ব্যবহার করে pip-install আমাদের প্রয়োজনীয় সমস্ত লাইব্রেরি ইনস্টল করতে (উদাহরণস্বরূপ, ডিভিসি-সম্পর্কিত লাইব্রেরি)। আপনার যদি পাত্রে ইনস্টল করা সমস্ত লাইব্রেরির কঠোর নিয়ন্ত্রণের প্রয়োজন হয়, আপনি সেজমেকারে আপনার নিজের কন্টেইনার আনতে পারেন, উদাহরণস্বরূপ প্রক্রিয়াজাতকরণ এবং প্রশিক্ষণ।

আমাদের সেজমেকার প্রক্রিয়াকরণ কাজ চালানোর জন্য এখন আমাদের কাছে সমস্ত উপাদান রয়েছে:

  • একটি প্রক্রিয়াকরণ স্ক্রিপ্ট যা বিভিন্ন আর্গুমেন্ট প্রক্রিয়া করতে পারে (--train-test-split-ratio) এবং দুটি পরিবেশগত পরিবর্তনশীল (DVC_REPO_URL এবং DVC_BRANCH)
  • A requiremets.txt ফাইল
  • একটি গিট সংগ্রহস্থল (কোডকমিটে)
  • একটি সেজমেকার পরীক্ষা এবং ট্রায়াল
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

আমরা তারপর প্রক্রিয়াকরণ কাজ চালান সঙ্গে preprocessing-experiment.py লিপি, experiment_config, dvc_repo_url, এবং dvc_branch আমরা আগে সংজ্ঞায়িত করেছি।

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

প্রক্রিয়াকরণ কাজটি সম্পূর্ণ হতে প্রায় 5 মিনিট সময় নেয়। এখন আপনি একক ফাইল ডেটাসেটের জন্য ট্রায়াল বিশদ দেখতে পারেন।

নিম্নলিখিত স্ক্রিনশটটি দেখায় যেখানে আপনি স্টুডিওর মধ্যে সংরক্ষিত তথ্য খুঁজে পেতে পারেন। জন্য মান নোট করুন dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL, এবং data_commit_hash উপরে পরামিতি ট্যাব।

সেজমেকার এক্সপেরিমেন্ট প্যারামিটার ট্যাব

এছাড়াও ইনপুট এবং আউটপুট বিবরণ নোট করুন হস্তনির্মিত ট্যাব।

সেজমেকার এক্সপেরিমেন্টস আর্টিফ্যাক্ট ট্যাব

একটি অনুমানকারী তৈরি করুন এবং একক ফাইল ডেটা সংস্করণের সাথে মডেলটি ফিট করুন

একটি SageMaker প্রশিক্ষণ কাজের ভিতরে DVC ইন্টিগ্রেশন ব্যবহার করতে, আমরা একটি পাস করি dvc_repo_url এবং dvc_branch আপনি যখন এস্টিমেটর অবজেক্ট তৈরি করেন তখন পরিবেশগত ভেরিয়েবল হিসাবে।

আমরা উপর প্রশিক্ষণ dvc-trial-single-file প্রথম শাখা।

DVC দিয়ে ডেটা টানানোর সময়, আমরা নিম্নলিখিত ডেটাসেট কাঠামো ব্যবহার করি:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

এখন আমরা ব্যবহার করে একটি স্কিট-লার্ন এস্টিমেটর তৈরি করি সেজমেকার পাইথন এসডিকে. এটি আমাদের নিম্নলিখিতগুলি নির্দিষ্ট করতে দেয়:

  • পাইথন সোর্স ফাইলের পথ, যা প্রশিক্ষণের এন্ট্রি পয়েন্ট হিসাবে চালানো উচিত।
  • IAM ভূমিকা যা Amazon S3 এবং CodeCommit ডেটা অ্যাক্সেস করার এবং SageMaker ফাংশন চালানোর অনুমতি নিয়ন্ত্রণ করে।
  • অভিধানের একটি তালিকা যা প্রশিক্ষণের কাজের মূল্যায়ন করতে ব্যবহৃত মেট্রিকগুলিকে সংজ্ঞায়িত করে।
  • প্রশিক্ষণের উদাহরণের সংখ্যা এবং ধরন। আমরা একটি ml.m5.large উদাহরণ ব্যবহার করি।
  • হাইপারপ্যারামিটার যা প্রশিক্ষণের জন্য ব্যবহৃত হয়।
  • প্রশিক্ষণ কাজের সময় ব্যবহার করার জন্য পরিবেশের ভেরিয়েবল। আমরা ব্যাবহার করি DVC_REPO_URL, DVC_BRANCH, এবং USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

আমরা প্রশিক্ষণ শুরু করার জন্য পূর্বে সংজ্ঞায়িত exam_config সহ অনুমানকারীর ফিট পদ্ধতিকে বলি।

%%time
estimator.fit(experiment_config=experiment_config)

প্রশিক্ষণের কাজটি সম্পূর্ণ হতে প্রায় 5 মিনিট সময় নেয়। লগগুলি সেই লাইনগুলি দেখায়, DVC দ্বারা টানা ফাইলগুলি নির্দেশ করে:

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

পরীক্ষা 2: প্রশিক্ষণ এবং বৈধতার জন্য একাধিক ফাইল তৈরি করুন

আমরা একটি নতুন তৈরি করি dvc-trial-multi-files ট্রায়াল এবং বর্তমান এটি যোগ করুন DEMO-sagemaker-experiments-dvc পরীক্ষা

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

প্রথম প্রসেসিং স্ক্রিপ্ট থেকে ভিন্নভাবে, আমরা এখন প্রশিক্ষণ এবং যাচাইকরণের জন্য মূল ডেটাসেট থেকে একাধিক ফাইল তৈরি করি এবং একটি ভিন্ন শাখায় DVC মেটাডেটা সংরক্ষণ করি।

আপনি দ্বিতীয় প্রিপ্রসেসিং পাইথন স্ক্রিপ্টটি অন্বেষণ করতে পারেন GitHub.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

প্রক্রিয়াকরণ কাজটি সম্পূর্ণ হতে প্রায় 5 মিনিট সময় নেয়। এখন আপনি মাল্টি-ফাইল ডেটাসেটের জন্য পরীক্ষার বিবরণ দেখতে পারেন।

নিম্নলিখিত স্ক্রিনশটগুলি দেখায় যেখানে আপনি SageMaker পরীক্ষা-নিরীক্ষার মধ্যে সঞ্চিত তথ্য খুঁজে পেতে পারেন৷ ট্রায়াল উপাদান স্টুডিও UI এর মধ্যে বিভাগ। জন্য মান নোট করুন dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL, এবং data_commit_hash উপরে পরামিতি ট্যাব।

সেজমেকার মাল্টি ফাইল এক্সপেরিমেন্ট প্যারামিটার ট্যাব

এছাড়াও আপনি ইনপুট এবং আউটপুট বিবরণ পর্যালোচনা করতে পারেন হস্তনির্মিত ট্যাব।

সেজমেকার মাল্টি ফাইল এক্সপেরিমেন্ট আর্টিফ্যাক্ট ট্যাব

আমরা এখন প্রশিক্ষণ dvc-trial-multi-files শাখা DVC দিয়ে ডেটা টানানোর সময়, আমরা নিম্নলিখিত ডেটাসেট কাঠামো ব্যবহার করি:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

আমরা আগের মতই, আমরা ট্রায়াল নামের একটি নতুন Scikit-learn Estimator তৈরি করি dvc-trial-multi-files এবং প্রশিক্ষণের কাজ শুরু করুন।

%%time

estimator.fit(experiment_config=experiment_config)

প্রশিক্ষণের কাজটি সম্পূর্ণ হতে প্রায় 5 মিনিট সময় নেয়। ট্রেনিং জব লগ আউটপুটে নোটবুকে, আপনি সেই লাইনগুলি দেখতে পারেন, যা DVC দ্বারা টানা ফাইলগুলি নির্দেশ করে:

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

SageMaker এ আপনার মডেল হোস্ট করুন

আপনি আপনার ML মডেলকে প্রশিক্ষণ দেওয়ার পরে, আপনি SageMaker ব্যবহার করে এটি স্থাপন করতে পারেন। একটি স্থায়ী, রিয়েল-টাইম এন্ডপয়েন্ট স্থাপন করতে যা একবারে একটি ভবিষ্যদ্বাণী করে, আমরা ব্যবহার করি সেজমেকার রিয়েল-টাইম হোস্টিং পরিষেবা.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

প্রথমত, আমরা স্টুডিওতে ডেভেলপমেন্ট নোটবুকে স্থানীয়ভাবে সর্বশেষ টেস্ট ডেটাসেট পাই। এই উদ্দেশ্যে, আমরা ব্যবহার করতে পারেন dvc.api.read() সেজমেকার প্রসেসিং কাজের দ্বারা Amazon S3 তে সংরক্ষিত কাঁচা ডেটা লোড করতে।

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

তারপরে আমরা পান্ডাস ব্যবহার করে ডেটা প্রস্তুত করি, একটি পরীক্ষা CSV ফাইল লোড করি এবং কল করি predictor.predict ডেটা সহ আগে তৈরি করা সেজমেকার এন্ডপয়েন্টকে আহ্বান করতে এবং ভবিষ্যদ্বাণী পেতে।

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

শেষ পয়েন্ট মুছুন

আপনার এন্ডপয়েন্টগুলি মুছে ফেলা উচিত যখন সেগুলি আর ব্যবহার করা হয় না, কারণ সেগুলি স্থাপনের সময় দ্বারা বিল করা হয় (আরো তথ্যের জন্য, দেখুন অ্যামাজন সেজমেকার প্রাইসিং) অপ্রত্যাশিত খরচ এড়াতে এন্ডপয়েন্ট মুছে ফেলা নিশ্চিত করুন।

predictor.delete_endpoint()

পরিষ্কার কর

আপনার তৈরি করা সমস্ত সংস্থান মুছে ফেলার আগে, নিশ্চিত করুন যে সমস্ত অ্যাপ থেকে মুছে ফেলা হয়েছে data-scientist-dvc ব্যবহারকারী, সমস্ত KernelGateway অ্যাপ, সেইসাথে ডিফল্ট JupiterServer অ্যাপ সহ।

তারপরে আপনি নিম্নলিখিত কমান্ডটি চালিয়ে AWS CDK স্ট্যাক ধ্বংস করতে পারেন:

cdk destroy

আপনি যদি একটি বিদ্যমান ডোমেন ব্যবহার করেন তবে নিম্নলিখিত কমান্ডগুলিও চালান:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

উপসংহার

এই পোস্টে, আপনি SageMaker পরীক্ষা-নিরীক্ষা এবং SageMaker প্রক্রিয়াকরণ এবং DVC-এর সাথে একযোগে প্রশিক্ষণের কাজগুলি ব্যবহার করে কোড, ডেটা, আর্টিফ্যাক্ট এবং মেট্রিক্স জুড়ে আপনার পরীক্ষাগুলি কীভাবে ট্র্যাক করবেন তার একটি উদাহরণ দিয়ে হেঁটেছেন৷ আমরা DVC সমন্বিত একটি ডকার ইমেজ তৈরি করেছি, যা স্টুডিওর জন্য ডেভেলপমেন্ট নোটবুক হিসেবে প্রয়োজন ছিল এবং দেখিয়েছি কিভাবে আপনি DVC-এর সাথে প্রক্রিয়াকরণ এবং প্রশিক্ষণের কাজগুলি ব্যবহার করতে পারেন৷ আমরা ডেটার দুটি সংস্করণ প্রস্তুত করেছি এবং গিট দিয়ে এটি পরিচালনা করতে DVC ব্যবহার করেছি। তারপরে আপনি কাচের একক ফলকে প্যারামিটার, আর্টিফ্যাক্ট এবং মেট্রিক্সের একীভূত দৃশ্যের জন্য ডেটার দুটি সংস্করণের সাথে প্রক্রিয়াকরণ এবং প্রশিক্ষণ ট্র্যাক করতে SageMaker পরীক্ষাগুলি ব্যবহার করেছেন৷ অবশেষে, আপনি মডেলটিকে একটি সেজমেকার এন্ডপয়েন্টে স্থাপন করেছেন এবং সেজমেকার এন্ডপয়েন্টকে আহ্বান করতে এবং পূর্বাভাস পেতে দ্বিতীয় ডেটাসেট সংস্করণ থেকে একটি টেস্টিং ডেটাসেট ব্যবহার করেছেন৷

পরবর্তী পদক্ষেপ হিসাবে, আপনি বিদ্যমান নোটবুক প্রসারিত করতে পারেন এবং আপনার নিজস্ব বৈশিষ্ট্য প্রকৌশল কৌশল প্রবর্তন করতে পারেন এবং আপনার পরীক্ষা চালানোর জন্য DVC এবং SageMaker ব্যবহার করতে পারেন। এর নির্মাণ করা যাক!

আরও পড়ার জন্য, নিম্নলিখিত সংস্থানগুলি পড়ুন:


লেখক সম্পর্কে

পাওলো ডি ফ্রান্সেস্কোপাওলো ডি ফ্রান্সেস্কো AWS-এর একজন সমাধান স্থপতি। টেলিকমিউনিকেশন এবং সফটওয়্যার ইঞ্জিনিয়ারিংয়ে তার অভিজ্ঞতা রয়েছে। তিনি মেশিন লার্নিং সম্পর্কে উত্সাহী এবং বর্তমানে গ্রাহকদের AWS-এ তাদের লক্ষ্যে পৌঁছাতে সাহায্য করার জন্য তার অভিজ্ঞতা ব্যবহার করার দিকে মনোনিবেশ করছেন, বিশেষ করে MLOps এর আশেপাশে আলোচনায়৷ কাজের বাইরে তিনি ফুটবল খেলা এবং পড়া উপভোগ করেন।

আইটন সেলাআইটন সেলা অ্যামাজন ওয়েব পরিষেবাগুলির সাথে একজন মেশিন লার্নিং স্পেশালিস্ট সলিউশন আর্কিটেক্ট৷ তিনি AWS গ্রাহকদের সাথে নির্দেশিকা এবং প্রযুক্তিগত সহায়তা প্রদানের জন্য কাজ করেন, তাদেরকে AWS-এ মেশিন লার্নিং সলিউশন তৈরি ও পরিচালনা করতে সহায়তা করেন। তার অবসর সময়ে, Eitan জগিং এবং সর্বশেষ মেশিন লার্নিং নিবন্ধ পড়তে উপভোগ করে।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

অ্যামাজন সেজমেকার স্টুডিও এবং অ্যামাজন সেজমেকার অটোপাইলট ব্যবহার করে স্যাটেলাইট ইমেজ বৈশিষ্ট্য ব্যবহার করে ম্যানগ্রোভ বন সনাক্ত করুন – পার্ট 1

উত্স নোড: 1497650
সময় স্ট্যাম্প: জুন 21, 2022

অ্যামাজন সেজমেকার ক্যানভাস ব্যবহার করে দ্রুত এমএল মডেল প্রশিক্ষণের মাধ্যমে দ্রুত সময়ের থেকে মূল্যবান ব্যবসায়িক ফলাফল অর্জন করুন

উত্স নোড: 1809540
সময় স্ট্যাম্প: মার্চ 3, 2023