অ্যামাজন ইকেএস এবং টর্চ বিতরণ করা ইলাস্টিক প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সের সাথে বিতরণ করা প্রশিক্ষণ। উল্লম্ব অনুসন্ধান. আ.

আমাজন ইকেএস এবং টর্চ ডিস্ট্রিবিউটেড ইলাস্টিক দিয়ে প্রশিক্ষণ বিতরণ করা হয়েছে

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

বিকাশকারীরা সহজে স্বজ্ঞাত মডেল আর্কিটেকচার ডিজাইন করতে পাইটর্চের মতো ওপেন-সোর্স ফ্রেমওয়ার্ক ব্যবহার করতে পারে। যাইহোক, বর্ধিত অর্কেস্ট্রেশন জটিলতার কারণে একাধিক নোড জুড়ে এই মডেলগুলির প্রশিক্ষণ স্কেল করা চ্যালেঞ্জিং হতে পারে।

বিতরণকৃত মডেল প্রশিক্ষণ প্রধানত দুটি দৃষ্টান্ত নিয়ে গঠিত:

  • মডেল সমান্তরাল - মডেলের সমান্তরাল প্রশিক্ষণে, মডেলটি নিজেই এত বড় যে এটি একটি একক GPU-এর মেমরিতে ফিট করতে পারে না এবং মডেলটিকে প্রশিক্ষণের জন্য একাধিক GPU-এর প্রয়োজন হয়। 3 বিলিয়ন প্রশিক্ষনযোগ্য প্যারামিটার সহ ওপেন এআই-এর GPT-175 মডেল (আনুমানিক 350 গিগাবাইট আকার) এর একটি ভাল উদাহরণ।
  • ডেটা সমান্তরাল - ডেটা সমান্তরাল প্রশিক্ষণে, মডেলটি একটি একক GPU-তে থাকতে পারে, কিন্তু ডেটা এত বড় হওয়ায়, একটি মডেলকে প্রশিক্ষণ দিতে দিন বা সপ্তাহ লাগতে পারে। একাধিক GPU নোড জুড়ে ডেটা বিতরণ করা প্রশিক্ষণের সময়কে উল্লেখযোগ্যভাবে হ্রাস করতে পারে।

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

পূর্বশর্ত

এই পোস্টে রিপোর্ট করা ফলাফলের প্রতিলিপি করার জন্য, একমাত্র পূর্বশর্ত হল একটি AWS অ্যাকাউন্ট। এই অ্যাকাউন্টে, আমরা একটি EKS ক্লাস্টার এবং একটি তৈরি করি দীপ্তি জন্য Amazon FSx নথি ব্যবস্থা. আমরা একটি ধারক ইমেজ ধাক্কা অ্যামাজন ইলাস্টিক কনটেইনার রেজিস্ট্রি (Amazon ECR) অ্যাকাউন্টে সংগ্রহস্থল। এই উপাদান সেট আপ করার নির্দেশাবলী পোস্ট জুড়ে প্রয়োজন হিসাবে প্রদান করা হয়.

EKS ক্লাস্টার

Amazon EKS হল AWS-এ Kubernetes অ্যাপ্লিকেশন চালানো এবং স্কেল করার জন্য একটি পরিচালিত কন্টেইনার পরিষেবা। Amazon EKS এর সাথে, আপনি সর্বশেষ ব্যবহার করে বিতরণকৃত প্রশিক্ষণের কাজগুলি দক্ষতার সাথে চালাতে পারেন অ্যামাজন ইলাস্টিক কম্পিউট ক্লাউড (Amazon EC2) আপনার নিজস্ব নিয়ন্ত্রণ প্লেন বা নোডগুলি ইনস্টল, পরিচালনা এবং বজায় রাখার প্রয়োজন ছাড়াই উদাহরণ। এটি একটি জনপ্রিয় orchestrator মেশিন লার্নিং (ML) এবং AI কর্মপ্রবাহের জন্য। AWS-এ একটি সাধারণ EKS ক্লাস্টার নিচের চিত্রের মত দেখায়।

আমরা একটি ওপেন সোর্স প্রকল্প প্রকাশ করেছি, EKS (aws-do-eks) এর জন্য AWS DevOps, যা EKS ক্লাস্টারের ব্যবস্থা করতে এবং বিতরণ করা প্রশিক্ষণের কাজগুলি চালানোর জন্য সহজেই ব্যবহারযোগ্য এবং কনফিগারযোগ্য স্ক্রিপ্ট এবং সরঞ্জামগুলির একটি বড় সংগ্রহ প্রদান করে। এই প্রকল্পের নীতি অনুসরণ করে নির্মিত হয় ফ্রেমওয়ার্ক করুন: সরলতা, নমনীয়তা এবং সর্বজনীনতা। আপনি ব্যবহার করে আপনার পছন্দসই ক্লাস্টার কনফিগার করতে পারেন eks.conf ফাইল এবং তারপর রান করে এটি চালু করুন eks-create.sh লিপি. বিস্তারিত নির্দেশাবলী প্রদান করা হয় গিটহুব রেপো.

টর্চ ডিস্ট্রিবিউটেড ইলাস্টিক ব্যবহার করে পাইটর্চ মডেলগুলিকে ট্রেন করুন

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

এই পোস্টে, আমরা PyTorch প্রশিক্ষণের পদক্ষেপ নিয়ে আলোচনা করি EfficientNet-B7 এবং ResNet50 মডেল ব্যবহার করে IMAGEnet TDE-এর সাথে বিতরণ করা পদ্ধতিতে ডেটা। আমরা PyTorch ব্যবহার করি বিতরণ করা ডেটা সমান্তরাল API এবং Kubernetes TorchElastic কন্ট্রোলার, এবং একাধিক GPU নোড সমন্বিত EKS ক্লাস্টারে আমাদের প্রশিক্ষণের কাজগুলি চালান। নিম্নলিখিত চিত্রটি এই মডেল প্রশিক্ষণের জন্য আর্কিটেকচার ডায়াগ্রাম দেখায়।

অ্যামাজন ইকেএস এবং টর্চ বিতরণ করা ইলাস্টিক প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সের সাথে বিতরণ করা প্রশিক্ষণ। উল্লম্ব অনুসন্ধান. আ.

কুবারনেটসের জন্য টর্চ ইলাস্টিক প্রধানত দুটি উপাদান নিয়ে গঠিত: টর্চ ইলাস্টিক কুবারনেটস কন্ট্রোলার (টিইসি) এবং প্যারামিটার সার্ভার (ইত্যাদি)। নিয়ন্ত্রক প্রশিক্ষণের কাজগুলি পর্যবেক্ষণ এবং পরিচালনার জন্য দায়ী, এবং প্যারামিটার সার্ভার বিতরণকৃত সিঙ্ক্রোনাইজেশন এবং পিয়ার আবিষ্কারের জন্য কর্মী নোডগুলির উপর নজর রাখে।

প্রশিক্ষণ পডগুলি ডেটা অ্যাক্সেস করার জন্য, আমাদের একটি ভাগ করা ডেটা ভলিউম প্রয়োজন যা প্রতিটি পড দ্বারা মাউন্ট করা যেতে পারে। মাধ্যমে ভাগ করা ভলিউম জন্য কিছু বিকল্প কন্টেইনার স্টোরেজ ইন্টারফেস (CSI) ড্রাইভার অন্তর্ভুক্ত EKS-এর জন্য AWS DevOps হয় আমাজন ইলাস্টিক ফাইল সিস্টেম (আমাজন ইএফএস) এবং দীপ্তি জন্য FSx.

ক্লাস্টার সেটআপ

আমাদের ক্লাস্টার কনফিগারেশনে, আমরা সিস্টেম পডের জন্য একটি c5.2x বড় উদাহরণ ব্যবহার করি। আমরা একটি EfficientNet মডেলকে প্রশিক্ষণ দিতে কর্মী পড হিসাবে তিনটি p4d.24x বড় উদাহরণ ব্যবহার করি। ResNet50 প্রশিক্ষণের জন্য, আমরা কর্মী পড হিসাবে p3.8x বড় উদাহরণ ব্যবহার করি। উপরন্তু, আমরা আমাদের প্রশিক্ষণের ডেটা এবং মডেল আর্টিফ্যাক্টগুলি সংরক্ষণ করার জন্য একটি FSx ভাগ করা ফাইল সিস্টেম ব্যবহার করি।

AWS p4d.24x বড় দৃষ্টান্ত দিয়ে সজ্জিত করা হয় ইলাস্টিক ফ্যাব্রিক অ্যাডাপ্টার (EFA) নোডের মধ্যে নেটওয়ার্কিং প্রদান করতে। আমরা পরে পোস্টে EFA নিয়ে আলোচনা করব। EFA এর মাধ্যমে যোগাযোগ সক্ষম করতে, আমাদের একটি .yaml ফাইলের মাধ্যমে ক্লাস্টার সেটআপ কনফিগার করতে হবে। একটি উদাহরণ ফাইল GitHub সংগ্রহস্থলে প্রদান করা হয়।

এই .yaml ফাইলটি সঠিকভাবে কনফিগার করার পরে, আমরা GitHub রেপোতে প্রদত্ত স্ক্রিপ্ট ব্যবহার করে ক্লাস্টারটি চালু করতে পারি:

./eks-create.sh

পড়ুন গিটহুব রেপো বিস্তারিত নির্দেশাবলীর জন্য

p4d.24xlarge এবং p3.8xlarge-এ কাজ চালানোর মধ্যে কার্যত কোন পার্থক্য নেই। এই পোস্টে বর্ণিত পদক্ষেপগুলি উভয়ের জন্য কাজ করে। একমাত্র পার্থক্য হল p4d.24x বড় দৃষ্টান্তে EFA এর প্রাপ্যতা। ResNet50 এর মতো ছোট মডেলের জন্য, EFA নেটওয়ার্কিংয়ের তুলনায় স্ট্যান্ডার্ড নেটওয়ার্কিং প্রশিক্ষণের গতিতে ন্যূনতম প্রভাব ফেলে।

লাস্টার ফাইল সিস্টেমের জন্য FSx

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

ধরে নিই যে EKS ক্লাস্টার চালু এবং চলছে, এবং উপলব্ধতা অঞ্চলের জন্য সাবনেট আইডি জানা আছে, আমরা প্রয়োজনীয় তথ্য প্রদান করে একটি FSx ফাইল সিস্টেম সেট আপ করতে পারি fsx.conf ফাইল হিসাবে বর্ণনা করা হয়েছে রিডমি এবং চলমান deploy.sh মধ্যে স্ক্রিপ্ট fsx ফোল্ডার এটি ফাইল সিস্টেম অ্যাক্সেস করার জন্য সঠিক নীতি এবং নিরাপত্তা গ্রুপ সেট আপ করে। স্ক্রিপ্ট এছাড়াও ইনস্টল সিএসআই ড্রাইভার একটি ডেমনসেট হিসাবে FSx এর জন্য। অবশেষে, আমরা একটি একক .yaml ফাইল প্রয়োগ করে Kubernetes-এ FSx ক্রমাগত ভলিউম দাবি তৈরি করতে পারি:

kubectl apply -f fsx-pvc-dynamic.yaml

এটি একটি FSx ফাইল সিস্টেম তৈরি করে যে উপলব্ধতা অঞ্চলে উল্লেখ করা হয়েছে fsx.conf ফাইল, এবং একটি ক্রমাগত ভলিউম দাবি তৈরি করে fsx-pvc, যেটি ক্লাস্টারের যে কোনো পড দ্বারা পঠন-লেখা-অনেক (RWX) ফ্যাশনে মাউন্ট করা যেতে পারে।

আমাদের পরীক্ষায়, আমরা সম্পূর্ণ ইমেজনেট ডেটা ব্যবহার করেছি, যাতে 12টি ক্লাসে বিভক্ত 1,000 মিলিয়নেরও বেশি প্রশিক্ষণ চিত্র রয়েছে। থেকে ডাটা ডাউনলোড করা যাবে ইমেজনেট ওয়েবসাইট. আসল TAR বলের বেশ কয়েকটি ডিরেক্টরি রয়েছে, কিন্তু আমাদের মডেল প্রশিক্ষণের জন্য, আমরা শুধুমাত্র আগ্রহী ILSVRC/Data/CLS-LOC/, যা অন্তর্ভুক্ত train এবং val সাবডিরেক্টরি প্রশিক্ষণের আগে, আমাদের চিত্রগুলিকে পুনরায় সাজাতে হবে৷ val PyTorch দ্বারা প্রয়োজনীয় ডিরেক্টরি কাঠামোর সাথে মেলে সাবডিরেক্টরি ইমেজ ফোল্ডার ক্লাস এটি একটি সাধারণ ব্যবহার করে করা যেতে পারে পাইথন স্ক্রিপ্ট পরবর্তী ধাপে অবিরাম ভলিউমে ডেটা অনুলিপি করার পরে।

একটি থেকে তথ্য অনুলিপি করতে আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) FSx ফাইল সিস্টেমে বালতি, আমরা একটি ডকার ইমেজ তৈরি করি যা এই কাজের জন্য স্ক্রিপ্টগুলি অন্তর্ভুক্ত করে। একটি উদাহরণ Dockerfile এবং একটি শেল স্ক্রিপ্ট অন্তর্ভুক্ত করা হয়েছে সিএসআই GitHub রেপোর মধ্যে ফোল্ডার। আমরা ব্যবহার করে ইমেজ নির্মাণ করতে পারেন build.sh স্ক্রিপ্ট এবং তারপর এটি ব্যবহার করে অ্যামাজন ইসিআরে পুশ করুন push.sh লিপি. এই স্ক্রিপ্টগুলি ব্যবহার করার আগে, আমাদের ইসিআর সংগ্রহস্থলের জন্য সঠিক URI প্রদান করতে হবে .env GitHub রেপোর রুট ফোল্ডারে ফাইল করুন। আমরা ডকার ইমেজটিকে Amazon ECR-তে পুশ করার পরে, আমরা প্রাসঙ্গিক .yaml ফাইলটি প্রয়োগ করে ডেটা কপি করার জন্য একটি পড চালু করতে পারি:

kubectl apply -f fsx-data-prep-pod.yaml

পড স্বয়ংক্রিয়ভাবে স্ক্রিপ্ট চালায় data-prep.sh Amazon S3 থেকে শেয়ার করা ভলিউমে ডেটা কপি করতে। কারণ ইমেজনেট ডেটাতে 12 মিলিয়নেরও বেশি ফাইল রয়েছে, অনুলিপি প্রক্রিয়াটি কয়েক ঘন্টা সময় নেয়। পাইথন স্ক্রিপ্ট imagenet_data_prep.py এছাড়াও পুনর্বিন্যাস চালানো হয় val PyTorch দ্বারা প্রত্যাশিত ডেটাসেট।

নেটওয়ার্ক ত্বরণ

আমরা ইলাস্টিক ফ্যাব্রিক অ্যাডাপ্টার (EFA) এর সাথে একত্রে ব্যবহার করতে পারি সমর্থিত EC2 উদাহরণ প্রকার আপনার ক্লাস্টারে GPU নোডের মধ্যে নেটওয়ার্ক ট্র্যাফিক ত্বরান্বিত করতে। বৃহৎ বিতরণকৃত প্রশিক্ষণের কাজ চালানোর সময় এটি কার্যকর হতে পারে যেখানে স্ট্যান্ডার্ড নেটওয়ার্ক যোগাযোগ একটি বাধা হতে পারে। ইকেএস ক্লাস্টারে ইএফএ ডিভাইস প্লাগইন স্থাপন এবং পরীক্ষা করার জন্য স্ক্রিপ্টগুলি যা আমরা এখানে ব্যবহার করি efa-ডিভাইস-প্লাগইন GitHub রেপোতে ফোল্ডার। আপনার EKS ক্লাস্টারে EFA এর সাথে একটি কাজ সক্ষম করতে, প্রয়োজনীয় হার্ডওয়্যার এবং সফ্টওয়্যার থাকা ক্লাস্টার নোডগুলি ছাড়াও, EFA ডিভাইস প্লাগইনটি ক্লাস্টারে স্থাপন করা প্রয়োজন এবং আপনার কাজের ধারকটিতে সামঞ্জস্যপূর্ণ CUDA এবং NCCL থাকতে হবে সংস্করণ ইনস্টল করা নেই।

NCCL পরীক্ষা চালানো এবং p4d.24x বৃহৎ দৃষ্টান্তে EFA-এর কার্যকারিতা মূল্যায়ন করার জন্য, আমাদের প্রথমে সংশ্লিষ্টগুলি চালিয়ে Kubeflow MPI অপারেটরকে স্থাপন করতে হবে deploy.sh মধ্যে স্ক্রিপ্ট mpi-অপারেটর ফোল্ডার তারপর আমরা চালান deploy.sh স্ক্রিপ্ট এবং আপডেট test-efa-nccl.yaml রিসোর্সের জন্য তাই সীমা এবং অনুরোধ প্রকাশ করুন vpc.amazonaws.com 4 তে সেট করা হয়েছে। p4d.24x বৃহৎ নোডগুলিতে পাওয়া চারটি EFA অ্যাডাপ্টার সর্বাধিক থ্রুপুট প্রদানের জন্য একসাথে বান্ডিল করা হয়।

চালান kubectl apply -f ./test-efa-nccl.yaml পরীক্ষা প্রয়োগ করতে এবং তারপর পরীক্ষার পডের লগগুলি প্রদর্শন করতে। লগ আউটপুটে নিম্নলিখিত লাইনটি নিশ্চিত করে যে EFA ব্যবহার করা হচ্ছে:

NCCL INFO NET/OFI Selected Provider is efa

পরীক্ষার ফলাফল নিম্নলিখিত আউটপুট অনুরূপ হওয়া উচিত:

[1,0]<stdout>:#                                                       out-of-place                       in-place
[1,0]<stdout>:#       size         count      type   redop     time   algbw   busbw  error     time   algbw   busbw  error
[1,0]<stdout>:#        (B)    (elements)                       (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
[1,0]<stdout>:           8             2     float     sum    629.7    0.00    0.00  2e-07    631.4    0.00    0.00  1e-07
[1,0]<stdout>:          16             4     float     sum    630.5    0.00    0.00  1e-07    628.1    0.00    0.00  1e-07
[1,0]<stdout>:          32             8     float     sum    627.6    0.00    0.00  1e-07    628.2    0.00    0.00  1e-07
[1,0]<stdout>:          64            16     float     sum    633.6    0.00    0.00  1e-07    628.4    0.00    0.00  6e-08
[1,0]<stdout>:         128            32     float     sum    627.5    0.00    0.00  6e-08    632.0    0.00    0.00  6e-08
[1,0]<stdout>:         256            64     float     sum    634.5    0.00    0.00  6e-08    636.5    0.00    0.00  6e-08
[1,0]<stdout>:         512           128     float     sum    634.8    0.00    0.00  6e-08    635.2    0.00    0.00  6e-08
[1,0]<stdout>:        1024           256     float     sum    646.6    0.00    0.00  2e-07    643.6    0.00    0.00  2e-07
[1,0]<stdout>:        2048           512     float     sum    745.0    0.00    0.01  5e-07    746.0    0.00    0.01  5e-07
[1,0]<stdout>:        4096          1024     float     sum    958.2    0.00    0.01  5e-07    955.8    0.00    0.01  5e-07
[1,0]<stdout>:        8192          2048     float     sum    963.0    0.01    0.02  5e-07    954.5    0.01    0.02  5e-07
[1,0]<stdout>:       16384          4096     float     sum    955.0    0.02    0.03  5e-07    955.5    0.02    0.03  5e-07
[1,0]<stdout>:       32768          8192     float     sum    975.5    0.03    0.06  5e-07   1009.0    0.03    0.06  5e-07
[1,0]<stdout>:       65536         16384     float     sum   1353.4    0.05    0.09  5e-07   1343.5    0.05    0.09  5e-07
[1,0]<stdout>:      131072         32768     float     sum   1395.9    0.09    0.18  5e-07   1392.6    0.09    0.18  5e-07
[1,0]<stdout>:      262144         65536     float     sum   1476.7    0.18    0.33  5e-07   1536.3    0.17    0.32  5e-07
[1,0]<stdout>:      524288        131072     float     sum   1560.3    0.34    0.63  5e-07   1568.3    0.33    0.63  5e-07
[1,0]<stdout>:     1048576        262144     float     sum   1599.2    0.66    1.23  5e-07   1595.3    0.66    1.23  5e-07
[1,0]<stdout>:     2097152        524288     float     sum   1671.1    1.25    2.35  5e-07   1672.5    1.25    2.35  5e-07
[1,0]<stdout>:     4194304       1048576     float     sum   1785.1    2.35    4.41  5e-07   1780.3    2.36    4.42  5e-07
[1,0]<stdout>:     8388608       2097152     float     sum   2133.6    3.93    7.37  5e-07   2135.0    3.93    7.37  5e-07
[1,0]<stdout>:    16777216       4194304     float     sum   2650.9    6.33   11.87  5e-07   2649.9    6.33   11.87  5e-07
[1,0]<stdout>:    33554432       8388608     float     sum   3422.0    9.81   18.39  5e-07   3478.7    9.65   18.09  5e-07
[1,0]<stdout>:    67108864      16777216     float     sum   4783.2   14.03   26.31  5e-07   4782.6   14.03   26.31  5e-07
[1,0]<stdout>:   134217728      33554432     float     sum   7216.9   18.60   34.87  5e-07   7240.9   18.54   34.75  5e-07
[1,0]<stdout>:   268435456      67108864     float     sum    12738   21.07   39.51  5e-07    12802   20.97   39.31  5e-07
[1,0]<stdout>:   536870912     134217728     float     sum    24375   22.03   41.30  5e-07    24403   22.00   41.25  5e-07
[1,0]<stdout>:  1073741824     268435456     float     sum    47904   22.41   42.03  5e-07    47893   22.42   42.04  5e-07
[1,4]<stdout>:test-efa-nccl-worker-0:33:33 [4] NCCL INFO comm 0x7fd4a0000f60 rank 4 nranks 16 cudaDev 4 busId 901c0 - Destroy COMPLETE
[1,0]<stdout>:# Out of bounds values : 0 OK
[1,0]<stdout>:# Avg bus bandwidth    : 8.23785

আমরা পরীক্ষার ফলাফলে লক্ষ্য করতে পারি যে সর্বাধিক থ্রুপুট প্রায় 42 জিবি/সেকেন্ড এবং গড় বাস ব্যান্ডউইথ প্রায় 8 জিবি।

আমরা একটি একক EFA অ্যাডাপ্টার সক্ষম করার পাশাপাশি কোনও EFA অ্যাডাপ্টারের সাথে পরীক্ষাগুলি পরিচালনা করেছি৷ সমস্ত ফলাফল নিম্নলিখিত টেবিলে সংক্ষিপ্ত করা হয়.

EFA অ্যাডাপ্টারের সংখ্যা নেট/ওএফআই নির্বাচিত প্রদানকারী গড় ব্যান্ডউইথ (GB/s) সর্বোচ্চ ব্যান্ডউইথ (GB/s)
4 ইএফএ 8.24 42.04
1 ইএফএ 3.02 5.89
0 সকেট 0.97 2.38

আমরা আরও দেখেছি যে ইমেজনেটের মতো তুলনামূলকভাবে ছোট মডেলের জন্য, ত্বরিত নেটওয়ার্কিং ব্যবহার প্রতি যুগে প্রশিক্ষণের সময়কে 5-8% কমিয়ে দেয় 64 ব্যাচের আকারে। বড় মডেল এবং ছোট ব্যাচের আকারের জন্য, যখন ওজনের নেটওয়ার্ক যোগাযোগ বৃদ্ধির প্রয়োজন হয় , ত্বরিত নেটওয়ার্কিং ব্যবহার বৃহত্তর প্রভাব আছে. আমরা ব্যাচ আকার 15 সহ EfficientNet-B18 এর প্রশিক্ষণের জন্য 7-1% এর সাথে যুগের প্রশিক্ষণের সময় হ্রাস লক্ষ্য করেছি। আপনার প্রশিক্ষণের উপর EFA এর প্রকৃত প্রভাব আপনার মডেলের আকারের উপর নির্ভর করবে।

GPU পর্যবেক্ষণ

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

ক্লাউডওয়াচ সেট আপ করার জন্য প্রাসঙ্গিক স্ক্রিপ্টগুলি এতে অবস্থিত জিপিইউ-মেট্রিক্স ফোল্ডার প্রথমত, আমরা এর সাথে একটি ডকার ইমেজ তৈরি করি amazon-cloudwatch-agent এবং nvidia-smi. আমরা তে ডকারফাইল ব্যবহার করতে পারি gpu-metrics এই ছবিটি তৈরি করার জন্য ফোল্ডার। ধরে নিচ্ছি যে ইসিআর রেজিস্ট্রি ইতিমধ্যেই সেট করা আছে .env আগের ধাপ থেকে ফাইল, আমরা ব্যবহার করে ইমেজ তৈরি এবং পুশ করতে পারি build.sh এবং push.sh. এর পরে, চলমান deploy.sh স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে সেটআপ সম্পূর্ণ করে। এটি দিয়ে একটি ডেমনসেট চালু করে amazon-cloudwatch-agent এবং ক্লাউডওয়াচে বিভিন্ন মেট্রিক্স পুশ করে। GPU মেট্রিক্স এর অধীনে প্রদর্শিত হয় CWAgent CloudWatch কনসোলে নামস্থান। বাকি ক্লাস্টার মেট্রিক্স এর অধীনে দেখায় ContainerInsights নেমস্পেস

মডেল প্রশিক্ষণ

PyTorch প্রশিক্ষণের জন্য প্রয়োজনীয় সমস্ত স্ক্রিপ্ট এখানে অবস্থিত ইলাস্টিক কাজ GitHub রেপোতে ফোল্ডার। প্রশিক্ষণের কাজ শুরু করার আগে, আমাদের চালাতে হবে etcd সার্ভার, যা TEC দ্বারা কর্মী আবিষ্কার এবং পরামিতি বিনিময়ের জন্য ব্যবহৃত হয়। দ্য deploy.sh মধ্যে স্ক্রিপ্ট elasticjob ফোল্ডার ঠিক তাই করে।

p4d.24x বড় দৃষ্টান্তে EFA এর সুবিধা নিতে, আমাদের একটি নির্দিষ্ট ডকার ইমেজ ব্যবহার করতে হবে আমাজন ইসিআর পাবলিক গ্যালারি যেটি EFA এর মাধ্যমে NCCL যোগাযোগ সমর্থন করে। আমাদের শুধু এই ডকার ইমেজে আমাদের ট্রেনিং কোড কপি করতে হবে। দ্য Dockerfile অধীনে নমুনা ফোল্ডারটি p4d উদাহরণে প্রশিক্ষণের কাজ চালানোর সময় ব্যবহার করার জন্য একটি চিত্র তৈরি করে। সর্বদা হিসাবে, আমরা ব্যবহার করতে পারেন বিল্ড.শ এবং push.sh ফোল্ডারে স্ক্রিপ্ট তৈরি করুন এবং চিত্রটি পুশ করুন।

সার্জারির imagenet-efa.yaml ফাইল প্রশিক্ষণের কাজ বর্ণনা করে। এই .yaml ফাইলটি প্রশিক্ষণের কাজ চালানোর জন্য প্রয়োজনীয় সংস্থানগুলি সেট আপ করে এবং পূর্ববর্তী বিভাগে সেট আপ করা প্রশিক্ষণ ডেটার সাথে স্থায়ী ভলিউম মাউন্ট করে৷

এখানে কয়েকটি বিষয় উল্লেখ করার মতো। ক্লাস্টারে উপলব্ধ নোডের সংখ্যায় প্রতিলিপির সংখ্যা সেট করা উচিত। আমাদের ক্ষেত্রে, আমরা এটি 3 এ সেট করেছি কারণ আমাদের তিনটি p4d.24xlarge নোড ছিল। মধ্যে imagenet-efa.yaml ফাইল, nvidia.com/gpu সম্পদের অধীনে পরামিতি এবং nproc_per_node অধীনে args প্রতি নোডের জন্য GPU-এর সংখ্যা নির্ধারণ করা উচিত, যা p4d.24xlarge-এর ক্ষেত্রে 8। এছাড়াও, Python স্ক্রিপ্টের জন্য কর্মী আর্গুমেন্ট প্রতি প্রক্রিয়ার CPU-র সংখ্যা নির্ধারণ করে। আমরা এটিকে 4 হিসাবে বেছে নিয়েছি কারণ, আমাদের পরীক্ষায়, এটি p4d.24x বড় দৃষ্টান্তে চলার সময় সর্বোত্তম কর্মক্ষমতা প্রদান করে। ক্লাস্টারে উপলব্ধ সমস্ত হার্ডওয়্যার সংস্থানগুলির সর্বাধিক ব্যবহার করার জন্য এই সেটিংসগুলি প্রয়োজনীয়৷

যখন কাজ চলছে, আমরা ক্লাস্টারের সমস্ত GPU-এর জন্য CloudWatch-এ GPU ব্যবহার পর্যবেক্ষণ করতে পারি। ক্লাস্টারে তিনটি p4d.24xlarge নোড সহ আমাদের প্রশিক্ষণ কাজের একটি থেকে নিম্নলিখিত একটি উদাহরণ। এখানে আমরা প্রতিটি নোড থেকে একটি GPU নির্বাচন করেছি। পূর্বে উল্লিখিত সেটিংসের সাথে, ক্লাস্টারের সমস্ত নোডের জন্য যুগের প্রশিক্ষণ পর্বের সময় GPU ব্যবহার 100% এর কাছাকাছি।

অ্যামাজন ইকেএস এবং টর্চ বিতরণ করা ইলাস্টিক প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সের সাথে বিতরণ করা প্রশিক্ষণ। উল্লম্ব অনুসন্ধান. আ.

p50xlarge দৃষ্টান্ত ব্যবহার করে ResNet3.8 মডেলের প্রশিক্ষণের জন্য, আমাদের p4d.24xlarge ব্যবহার করে EfficientNet প্রশিক্ষণের জন্য বর্ণিত ঠিক একই পদক্ষেপের প্রয়োজন। আমরা একই ডকার ইমেজ ব্যবহার করতে পারি। পূর্বে উল্লিখিত হিসাবে, p3.8x বড় উদাহরণগুলি EFA দিয়ে সজ্জিত নয়। যাইহোক, ResNet50 মডেলের জন্য, এটি একটি উল্লেখযোগ্য ত্রুটি নয়। দ্য imagenet-fsx.yaml GitHub সংগ্রহস্থলে প্রদত্ত স্ক্রিপ্ট p3.8xlarge নোড টাইপের জন্য উপযুক্ত সংস্থান সহ প্রশিক্ষণের কাজ সেট আপ করে। কাজটি FSx ফাইল সিস্টেম থেকে একই ডেটাসেট ব্যবহার করে।

GPU স্কেলিং

GPU-এর সংখ্যা বাড়িয়ে EfficientNet-B7 মডেলের জন্য প্রশিক্ষণের সময় স্কেল কীভাবে হয় তা পর্যবেক্ষণ করতে আমরা কিছু পরীক্ষা চালিয়েছি। এটি করার জন্য, আমরা প্রতিটি প্রশিক্ষণ চালানোর জন্য আমাদের প্রশিক্ষণ .yaml ফাইলে প্রতিলিপির সংখ্যা 1 থেকে 3 এ পরিবর্তন করেছি। সম্পূর্ণ ImageNet ডেটাসেট ব্যবহার করার সময় আমরা শুধুমাত্র একটি একক যুগের জন্য সময় পর্যবেক্ষণ করেছি। নিম্নলিখিত চিত্রটি আমাদের GPU স্কেলিং পরীক্ষার ফলাফল দেখায়। লাল ডটেড রেখাটি প্রতিনিধিত্ব করে যে কিভাবে প্রশিক্ষণের সময় 8টি জিপিইউ ব্যবহার করে একটি দৌড় থেকে কমে যাওয়া উচিত এবং GPU গুলির সংখ্যা বৃদ্ধি করে৷ আমরা দেখতে পাচ্ছি, স্কেলিং যা প্রত্যাশিত তার কাছাকাছি।

অ্যামাজন ইকেএস এবং টর্চ বিতরণ করা ইলাস্টিক প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সের সাথে বিতরণ করা প্রশিক্ষণ। উল্লম্ব অনুসন্ধান. আ.

একইভাবে, আমরা p50x বড় দৃষ্টান্তে ResNet3.8 প্রশিক্ষণের জন্য GPU স্কেলিং প্লট পেয়েছি। এই ক্ষেত্রে, আমরা আমাদের .yaml ফাইলের প্রতিলিপিগুলি 1 থেকে 4 পর্যন্ত পরিবর্তন করেছি৷ এই পরীক্ষার ফলাফলগুলি নিম্নলিখিত চিত্রে দেখানো হয়েছে৷

অ্যামাজন ইকেএস এবং টর্চ বিতরণ করা ইলাস্টিক প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সের সাথে বিতরণ করা প্রশিক্ষণ। উল্লম্ব অনুসন্ধান. আ.

পরিষ্কার কর

অলস দৃষ্টান্তগুলি চালানোর সাথে সম্পর্কিত খরচ এড়াতে মডেল প্রশিক্ষণের পরে সংস্থানগুলি স্পিন করা গুরুত্বপূর্ণ৷ সম্পদ তৈরি করে যে প্রতিটি স্ক্রিপ্ট সঙ্গে, গিটহুব রেপো তাদের মুছে ফেলার জন্য একটি মিল স্ক্রিপ্ট প্রদান করে। আমাদের সেটআপ পরিষ্কার করতে, ক্লাস্টারটি মুছে ফেলার আগে আমাদের অবশ্যই FSx ফাইল সিস্টেমটি মুছে ফেলতে হবে কারণ এটি ক্লাস্টারের VPC-তে একটি সাবনেটের সাথে যুক্ত। FSx ফাইল সিস্টেম মুছে ফেলার জন্য, আমাদের শুধুমাত্র নিম্নলিখিত কমান্ডটি চালাতে হবে (ভিতর থেকে fsx ফোল্ডার):

kubectl delete -f fsx-pvc-dynamic.yaml
./delete.sh

মনে রাখবেন যে এটি শুধুমাত্র স্থায়ী ভলিউম মুছে ফেলবে না, এটি FSx ফাইল সিস্টেমকেও মুছে ফেলবে এবং ফাইল সিস্টেমের সমস্ত ডেটা হারিয়ে যাবে। এই ধাপটি সম্পূর্ণ হলে, আমরা নিম্নলিখিত স্ক্রিপ্টটি ব্যবহার করে ক্লাস্টারটি মুছে ফেলতে পারি যেমন ফোল্ডার:

./eks-delete.sh

এটি সমস্ত বিদ্যমান পড মুছে ফেলবে, ক্লাস্টার মুছে ফেলবে এবং শুরুতে তৈরি VPC মুছে ফেলবে।

উপসংহার

এই পোস্টে, আমরা EKS ক্লাস্টারগুলিতে PyTorch বিতরণকৃত ডেটা সমান্তরাল মডেল প্রশিক্ষণ চালানোর জন্য প্রয়োজনীয় পদক্ষেপগুলি বিস্তারিত করেছি। এই কাজ কঠিন মনে হতে পারে, কিন্তু EKS-এর জন্য AWS DevOps এডব্লিউএস-এ এমএল ফ্রেমওয়ার্কস টিম দ্বারা তৈরি প্রকল্পটি প্রক্রিয়াটিকে সহজ করতে এবং বিতরণ করা মডেল প্রশিক্ষণকে সহজে অ্যাক্সেসযোগ্য করতে সমস্ত প্রয়োজনীয় স্ক্রিপ্ট এবং সরঞ্জাম সরবরাহ করে।

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

Resources


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

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

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

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

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