Amazon SageMaker-এ Hugging Face Transformers ব্যবহার করে প্রশ্ন-উত্তর দেওয়ার জন্য একটি BERT বড় মডেলের ফাইন-টিউনিং বিতরণ করা হয়েছে

উত্স নোড: 1885069

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

এর ট্রান্সফরমার ওপেন-সোর্স লাইব্রেরি এবং ML প্ল্যাটফর্মের সাথে, Hugging Face ট্রান্সফার লার্নিং এবং সর্বশেষ ML মডেলগুলিকে গ্লোবাল এআই সম্প্রদায়ের কাছে অ্যাক্সেসযোগ্য করে তোলে, বিশ্বের বিভিন্ন কোম্পানিতে ডেটা বিজ্ঞানী এবং এমএল ইঞ্জিনিয়ারদের প্রতিটি নতুন বৈজ্ঞানিকের সুবিধা নেওয়ার জন্য প্রয়োজনীয় সময় কমিয়ে দেয়। অগ্রগতি

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

হাতে থাকা ব্যবসায়িক সমস্যার জন্য সঠিক ভবিষ্যদ্বাণী তৈরি করতে মডেলটিকে ফাইন-টিউন করার জন্য বড় ট্রান্সফরমার মডেলগুলির প্রশিক্ষণ প্রয়োজন, উদাহরণস্বরূপ, BERT, BART, RoBERta, T5, যা একটি মাপযোগ্য উপায়ে সম্পাদন করা চ্যালেঞ্জিং হতে পারে।

আলিঙ্গন মুখ বিতরণ করার জন্য SageMaker সঙ্গে ঘনিষ্ঠভাবে কাজ করছে ডিপ লার্নিং কন্টেইনার ব্যবহার করার জন্য প্রস্তুত (DLCs) যেগুলি সর্বশেষ ট্রান্সফর্মার মডেলগুলিকে প্রশিক্ষণ এবং স্থাপন করাকে আগের চেয়ে সহজ এবং দ্রুত করে তোলে৷ কারণ সেজমেকার ডেটা প্যারালাল (এসএমডিপি), সেজমেকার মডেল প্যারালাল (এসএমএমপি), এস 3 পাইপ মোডের মতো বৈশিষ্ট্যগুলি কন্টেইনারে একত্রিত করা হয়েছে, এইগুলি ব্যবহার করে কোম্পানিগুলিকে ট্রান্সফর্মার-ভিত্তিক এমএল সমাধান যেমন প্রশ্ন-উত্তর তৈরি করতে সময় কমিয়ে দেয়। টেক্সট এবং ইমেজ, অনুসন্ধান ফলাফল অপ্টিমাইজ করা, এবং গ্রাহক সমর্থন অটোমেশন, কথোপকথন ইন্টারফেস, শব্দার্থিক অনুসন্ধান, নথি বিশ্লেষণ, এবং আরও অনেক অ্যাপ্লিকেশন উন্নত করে।

এই পোস্টে, আমরা Hugging Face-এর সাথে SageMaker বিতরণকৃত লাইব্রেরিগুলির গভীর একীকরণের উপর ফোকাস করি, যা ডেটা বিজ্ঞানীদের প্রশিক্ষণ এবং ট্রান্সফরমার মডেলগুলির সূক্ষ্ম-টিউনিংকে দিন থেকে ঘন্টা পর্যন্ত ত্বরান্বিত করতে সক্ষম করে, সমস্তই সেজমেকারে।

বিতরণকৃত প্রশিক্ষণের ওভারভিউ

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

বিতরণকৃত প্রশিক্ষণ মডেলটিকে একাধিক প্রসেসরের মধ্যে প্রশিক্ষণ দেওয়ার জন্য কাজের চাপকে বিভক্ত করতে পারে, যাকে বলা হয় শ্রমিকদের. এই কর্মীরা মডেল প্রশিক্ষণের গতি বাড়ানোর জন্য সমান্তরালভাবে কাজ করে।

আমরা যা স্কেল করতে চাই তার উপর ভিত্তি করে (মডেল বা ডেটা) বিতরণ করা প্রশিক্ষণের দুটি পদ্ধতি রয়েছে: ডেটা সমান্তরাল এবং মডেল সমান্তরাল.

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

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

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

পূর্বশর্ত

সেজমেকারে আলিঙ্গন ফেস ট্রান্সফরমার মডেলগুলির বিতরণ প্রশিক্ষণ সম্পাদন করতে, আপনাকে নিম্নলিখিত পূর্বশর্তগুলি পূরণ করতে হবে:

বিতরণকৃত প্রশিক্ষণ বাস্তবায়ন করুন

আলিঙ্গন ফেস ট্রান্সফরমার লাইব্রেরি একটি প্রশিক্ষক API প্রদান করে যা লাইব্রেরি সরবরাহ করে এমন মডেলগুলিকে প্রশিক্ষণ বা ফাইন-টিউন করার জন্য অপ্টিমাইজ করা হয়। আপনি এটিকে আপনার নিজের মডেলেও ব্যবহার করতে পারেন যদি তারা ট্রান্সফরমার মডেলের মতো একইভাবে কাজ করে; দেখা শিক্ষক আরো বিস্তারিত জানার জন্য. এই API ব্যবহার করা হয় আমাদের উদাহরণ স্ক্রিপ্ট, যা দেখায় কিভাবে বিভিন্ন NLP কাজের জন্য ডেটা প্রিপ্রসেস করতে হয়, যা আপনি আপনার নিজস্ব কাস্টম সমস্যা সমাধানের জন্য একটি স্ক্রিপ্ট লিখতে মডেল হিসাবে নিতে পারেন। প্রশিক্ষক API এর প্রতিশ্রুতি হল যে এই স্ক্রিপ্টটি সেজমেকার সহ যেকোন বিতরণ করা সেটআপে বাক্সের বাইরে কাজ করে।

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

পর্দার আড়ালে, প্রশিক্ষক API আপনার স্ক্রিপ্ট তৈরি করার সময় যে পরিবেশে আপনি আপনার স্ক্রিপ্ট চালু করছেন তা বিশ্লেষণ করে শুরু হয় TrainingArguments. উদাহরণস্বরূপ, আপনি যদি সেজমেকারের সাথে আপনার প্রশিক্ষণ চালু করেন, তবে এটি দেখায় SM_FRAMEWORK_PARAMS আপনি সেজমেকার ডেটা সমান্তরালতা বা মডেল সমান্তরালতা সক্ষম করেছেন কিনা তা সনাক্ত করতে পরিবেশে পরিবর্তনশীল। তারপর এটি প্রয়োজনীয় প্রাথমিক পদক্ষেপগুলি সম্পাদন করার আগে পরিবেশ থেকে প্রাসঙ্গিক ভেরিয়েবল (যেমন প্রক্রিয়ার র্যাঙ্ক বা বিশ্ব আকার) পায় (যেমন smdistributed.dataparallel.torch.distributed.init_process_group()).

প্রশিক্ষক পুরো প্রশিক্ষণ লুপ ধারণ করে, তাই এটি নিশ্চিত করতে প্রয়োজনীয় পদক্ষেপগুলি সামঞ্জস্য করতে পারে smdistributed.dataparallel আপনার স্ক্রিপ্টে কোডের একটি লাইন পরিবর্তন না করে প্রয়োজন হলে ব্যাকএন্ড ব্যবহার করা হয়। এটি এখনও ডিবাগিংয়ের জন্য আপনার স্থানীয় মেশিনে (অনেক ধীর হলেও) চলতে পারে। এটি আপনার ডেটাসেট শার্ডিং পরিচালনা করে যাতে প্রতিটি প্রক্রিয়া স্বয়ংক্রিয়ভাবে বিভিন্ন নমুনা দেখতে পায়, প্রতিটি যুগে একটি রদবদল করে, অপ্টিমাইজেশান ধাপের আগে আপনার গ্রেডিয়েন্টগুলিকে সিঙ্ক্রোনাইজ করে, আপনি যদি এটি সক্রিয় করেন তবে মিশ্র নির্ভুল প্রশিক্ষণ, গ্রেডিয়েন্ট সঞ্চয় যদি আপনি একটি বড় ব্যাচের আকার ফিট করতে না পারেন আপনার GPU, এবং আরো অনেক অপ্টিমাইজেশান।

আপনি যদি মডেলের সমান্তরালতা সক্রিয় করেন, এটি নিশ্চিত করে যে প্রক্রিয়াগুলি একই ডেটা দেখতে হবে (যদি তাদের dp_rank একই) একই ব্যাচগুলি পান, এবং এটি বিভিন্ন সাথে প্রক্রিয়া করে dp_rank একই নমুনাগুলি দেখতে পাবেন না, আবার প্রতিটি যুগে একটি রদবদল সহ। এটি নিশ্চিত করে যে মডেল বা অপ্টিমাইজারগুলির রাষ্ট্রীয় অভিধানগুলি চেকপয়েন্টিং করার সময় সঠিকভাবে সিঙ্ক্রোনাইজ করা হয়েছে এবং আবার মিশ্র নির্ভুলতা এবং গ্রেডিয়েন্ট সঞ্চয়ের মতো সমস্ত অপ্টিমাইজেশন পরিচালনা করে৷

মূল্যায়ন এবং ভবিষ্যদ্বাণী পদ্ধতি ব্যবহার করার সময়, প্রশিক্ষক আপনার সমস্ত GPU-এর সুবিধা নেওয়ার জন্য একটি বিতরণকৃত মূল্যায়ন করে। এটি প্রতিটি প্রক্রিয়ার জন্য আপনার ডেটা বিভাজন সঠিকভাবে পরিচালনা করে (একই প্রক্রিয়া dp_rank যদি মডেলের সমান্তরালতা সক্রিয় করা হয়) এবং নিশ্চিত করে যে ভবিষ্যদ্বাণীগুলিকে পাঠানোর আগে আপনি যে ডেটাসেট ব্যবহার করছেন সেই ক্রমেই সঠিকভাবে সংগ্রহ করা হয়েছে। compute_metrics ফাংশন বা শুধু ফিরে. প্রশিক্ষক API ব্যবহার বাধ্যতামূলক নয়। ব্যবহারকারীরা এখনও Hugging Face এর মধ্যে Keras বা PyTorch ব্যবহার করতে পারেন। যাইহোক, Trainer API একটি সহায়ক বিমূর্তকরণ স্তর প্রদান করতে পারে।

সেজমেকার হাগিং ফেস এস্টিমেটর ব্যবহার করে একটি মডেলকে প্রশিক্ষণ দিন

একটি এস্টিমেটর হল সেজমেকার প্রশিক্ষণের জন্য একটি উচ্চ-স্তরের ইন্টারফেস এবং শেষ থেকে শেষ সেজমেকার প্রশিক্ষণ এবং স্থাপনার কাজগুলি পরিচালনা করে। আপনি যখন কল করেন তখন আপনার স্ক্রিপ্টের প্রশিক্ষণ নেওয়া হয় fit একটি উপর HuggingFace অনুমানকারী। এস্টিমেটরে, আপনি কোন ফাইন-টিউনিং স্ক্রিপ্ট হিসেবে ব্যবহার করবেন তা নির্ধারণ করুন entry_point, যা instance_type ব্যবহার করতে, এবং কোন হাইপারপ্যারামিটারগুলি পাস করা হয়৷ সম্পর্কে আরও তথ্যের জন্য৷ HuggingFace পরামিতি, দেখুন আলিঙ্গন মুখ অনুমানক.

বিতরণ করা প্রশিক্ষণ: ডেটা সমান্তরাল

এই উদাহরণে, আমরা ট্রান্সফরমার এবং ডেটাসেট লাইব্রেরি ব্যবহার করে প্রশ্ন এবং উত্তর দেওয়ার কাজটিতে একটি বিতরণ করা Seq2Seq-ট্রান্সফরমার মডেলকে প্রশিক্ষণ দিতে নতুন Hugging Face DLC এবং SageMaker SDK ব্যবহার করি। দ্য bert-বড়-আনকেস-পুরো-শব্দ-মাস্কিং মডেল সূক্ষ্ম-টিউন করা হয় স্কোয়াড ডেটাসেট

নিম্নলিখিত কোড নমুনা আপনি একটি তৈরির ধাপ দেখায় HuggingFace ডেটা সমান্তরালতার সাথে বিতরণ করা প্রশিক্ষণের জন্য অনুমানকারী।

  1. একটি আলিঙ্গন ফেস ট্রান্সফরমার স্ক্রিপ্ট চয়ন করুন:
    # git configuration to download our fine-tuning script
    git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'}

আপনি যখন একটি তৈরি HuggingFace এস্টিমেটর, আপনি একটি প্রশিক্ষণ স্ক্রিপ্ট নির্দিষ্ট করতে পারেন যা একটি গিটহাব রিপোজিটরিতে এস্টিমেটরের এন্ট্রি পয়েন্ট হিসাবে সংরক্ষণ করা হয়, তাই আপনাকে স্থানীয়ভাবে স্ক্রিপ্টগুলি ডাউনলোড করতে হবে না। তুমি ব্যবহার করতে পার git_config হাগিং ফেস ট্রান্সফরমার উদাহরণ স্ক্রিপ্ট এবং ডান 'শাখা' চালানোর জন্য যদি আপনার transformers_version কনফিগার করা প্রয়োজন। উদাহরণস্বরূপ, যদি আপনি ব্যবহার করেন transformers_version 4.6.1, আপনাকে ব্যবহার করতে হবে 'branch':'v4.6.1'.

  1. প্রশিক্ষণের হাইপারপ্যারামিটারগুলি কনফিগার করুন যা প্রশিক্ষণের কাজে পাস করা হয়:
    # hyperparameters, which are passed into the training job
    hyperparameters={ 'model_name_or_path': 'bert-large-uncased-whole-word-masking', 'dataset_name':'squad', 'do_train': True, 'do_eval': True, 'fp16': True, 'per_device_train_batch_size': 4, 'per_device_eval_batch_size': 4, 'num_train_epochs': 2, 'max_seq_length': 384, 'max_steps': 100, 'pad_to_max_length': True, 'doc_stride': 128, 'output_dir': '/opt/ml/model'
    }

একটি হাইপারপ্যারামিটার হিসাবে, আমরা যে কোনওটিকে সংজ্ঞায়িত করতে পারি Seq2SeqTraining Arguments এবং প্রশিক্ষণের স্ক্রিপ্টে সংজ্ঞায়িত করা হয়েছে।

  1. বন্টন পরামিতি সংজ্ঞায়িত করুন HuggingFace মূল্নির্ধারক:
    # configuration for running training on smdistributed Data Parallel
    distribution = {'smdistributed':{'dataparallel':{ 'enabled': True }}}

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

  1. একটা তৈরি কর HuggingFace পূর্ববর্তী ধাপে সংজ্ঞায়িত পরামিতি সহ অনুমানকারী এবং প্রশিক্ষণ শুরু করুন:
from sagemaker.huggingface import HuggingFace
# estimator
huggingface_estimator = HuggingFace(entry_point='run_qa.py', source_dir='./examples/pytorch/question-answering', git_config=git_config, instance_type= 'ml.p3.16xlarge', instance_count= 2, volume_size= 200, role= <SageMaker Role>, # IAM role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', distribution= distribution, hyperparameters = hyperparameters) # starting the train job huggingface_estimator.fit()

সার্জারির আলিঙ্গন ফেস ট্রান্সফরমার ভান্ডার ল্যাঙ্গুয়েজ মডেলিং থেকে টোকেন শ্রেণীবিভাগ পর্যন্ত কাজের উপর ফাইন-টিউনিং মডেলের জন্য বেশ কয়েকটি উদাহরণ এবং স্ক্রিপ্ট রয়েছে। আমাদের ক্ষেত্রে, আমরা ব্যবহার করি run_qa.py থেকে examples/pytorch/question-answering উদাহরণ।

smdistributed.dataparallel SageMaker এর সাথে মডেল প্রশিক্ষণ সমর্থন করে শুধুমাত্র নিম্নলিখিত উদাহরণ প্রকার. সেরা পারফরম্যান্সের জন্য, আমরা সমর্থন করে এমন একটি উদাহরণ টাইপ ব্যবহার করার পরামর্শ দিই ইলাস্টিক ফ্যাব্রিক অ্যাডাপ্টার (EFA):

  • ml.p3.16x বড়
  • ml.p3dn.24xlarge (প্রস্তাবিত)
  • ml.p4d.24xlarge (প্রস্তাবিত)

সর্বোত্তম পারফরম্যান্স এবং সর্বাধিক সুবিধা পেতে SMDataParallel, আপনার কমপক্ষে দুটি উদাহরণ ব্যবহার করা উচিত, তবে আপনি এই উদাহরণটি পরীক্ষা করার জন্য একটি ব্যবহার করতে পারেন৷

অনুসরণ উদাহরণ নোটবুক আরও বিস্তারিত ধাপে ধাপে নির্দেশিকা প্রদান করে।

বিতরণ করা প্রশিক্ষণ: মডেল সমান্তরাল

মডেলের সমান্তরালতার সাথে বিতরণ করা প্রশিক্ষণের জন্য, আমরা সেজমেকার SDK-এর সাথে আলিঙ্গন ফেস ট্রান্সফরমার এবং ডেটাসেট লাইব্রেরি ব্যবহার করি সাধারণ ভাষা বোঝার মূল্যায়ন (GLUE) একটি মাল্টি-নোড, মাল্টি-জিপিইউ ক্লাস্টার ব্যবহার করে বেঞ্চমার্ক সেজমেকার মডেল সমান্তরাল লাইব্রেরি.

ডেটা সমান্তরালতার মতো, আমরা প্রথমে গিট কনফিগারেশন, ট্রেনিং হাইপারপ্যারামিটার এবং ডিস্ট্রিবিউশন প্যারামিটার সেট করি HuggingFace মূল্নির্ধারক:

# git configuration to download our fine-tuning script
git_config = {'repo': 'https://github.com/huggingface/transformers.git','branch': 'v4.6.1'} # hyperparameters, which are passed into the training job
hyperparameters={ 'model_name_or_path':'roberta-large', 'task_name': 'mnli', 'per_device_train_batch_size': 16, 'per_device_eval_batch_size': 16, 'do_train': True, 'do_eval': True, 'do_predict': True, 'num_train_epochs': 2, 'output_dir':'/opt/ml/model', 'max_steps': 500,
} # configuration for running training on smdistributed Model Parallel
mpi_options = { "enabled" : True, "processes_per_host" : 8,
}
smp_options = { "enabled":True, "parameters": { "microbatches": 4, "placement_strategy": "spread", "pipeline": "interleaved", "optimize": "speed", "partitions": 4, "ddp": True, }
} distribution={ "smdistributed": {"modelparallel": smp_options}, "mpi": mpi_options
}

মডেল প্যারালেলিজম লাইব্রেরি অভ্যন্তরীণভাবে MPI ব্যবহার করে, তাই মডেল প্যারালেলিজম ব্যবহার করতে, MPI অবশ্যই ডিস্ট্রিবিউশন প্যারামিটার ব্যবহার করে সক্রিয় করতে হবে। "processes_per_host” পূর্ববর্তী কোডে প্রতিটি হোস্টে MPI চালু করা উচিত প্রসেসের সংখ্যা নির্দিষ্ট করে। আমরা উন্নয়ন এবং পরীক্ষার জন্য এই সুপারিশ. উত্পাদনের সময়, আপনি যদি ব্যাপক GPU ক্ষমতার অনুরোধ করেন তবে আপনি AWS সহায়তার সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, দেখুন একটি সেজমেকার ডিস্ট্রিবিউটেড মডেল প্যারালাল ট্রেনিং জব চালান.

অনুসরণ উদাহরণ নোটবুক সম্পূর্ণ কোড স্ক্রিপ্ট রয়েছে।

দাগ দৃষ্টান্ত

SageMaker Python SDK-এর জন্য Hugging Face ফ্রেমওয়ার্ক এক্সটেনশনের সাথে, আমরা সম্পূর্ণরূপে পরিচালিত এর সুবিধাও নিতে পারি অ্যামাজন ইলাস্টিক কম্পিউট ক্লাউড (আমাজন ইসি 2) দাগ দৃষ্টান্ত এবং আমাদের প্রশিক্ষণ খরচের 90% পর্যন্ত সংরক্ষণ করুন।

আপনার প্রশিক্ষণ কাজ দ্রুত শেষ না হলে, আমরা আপনাকে ব্যবহার করার পরামর্শ দিই চেকপয়েন্টিং পরিচালিত স্পট প্রশিক্ষণের সাথে, তাই আপনাকে সংজ্ঞায়িত করতে হবে checkpoint_s3_uri.

এর সাথে স্পট ইনস্ট্যান্স ব্যবহার করতে HuggingFace এস্টিমেটর, আমাদের সেট করতে হবে use_spot_instances পরামিতি সত্য এবং সংজ্ঞায়িত আপনার max_wait এবং max_run সময় পরিচালিত স্পট প্রশিক্ষণ জীবনচক্র সম্পর্কে আরও তথ্যের জন্য, দেখুন Amazon SageMaker-এ পরিচালিত স্পট প্রশিক্ষণ.

একটি স্পট ট্রেনিং এস্টিমেটর সেট আপ করার জন্য নিম্নলিখিত একটি কোড স্নিপেট:

from sagemaker.huggingface import HuggingFace # hyperparameters, which are passed into the training job
hyperparameters={'epochs': 1, 'train_batch_size': 32, 'model_name':'distilbert-base-uncased', 'output_dir':'/opt/ml/checkpoints' } # s3 uri where our checkpoints will be uploaded during training
job_name = "using-spot"
checkpoint_s3_uri = f's3://{sess.default_bucket()}/{job_name}/checkpoints' huggingface_estimator = HuggingFace(entry_point='train.py', source_dir='./scripts', instance_type='ml.p3.2xlarge', instance_count=1, base_job_name=job_name, checkpoint_s3_uri=checkpoint_s3_uri, use_spot_instances=True, max_wait=3600, # This should be equal to or greater than max_run in seconds' max_run=1000, # expected max run in seconds role=role, transformers_version='4.6', pytorch_version='1.7', py_version='py36', hyperparameters = hyperparameters)

অনুসরণ নোটবই সম্পূর্ণ কোড স্ক্রিপ্ট রয়েছে।

উপসংহার

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

ডেটা সমান্তরাল ব্যবহারের ক্ষেত্রে আমরা আলোচনা করেছি, একটি একক p3.2x বড় উদাহরণে (একটি জিপিইউ সহ) একটি মডেলকে প্রশিক্ষণ দিতে 4 ঘন্টা সময় লাগে এবং এই লেখার সময় প্রায় $15 খরচ হয়৷ ডেটা সমান্তরালতার সাথে, আমরা একই মডেলকে 24 মিনিটে 28 ডলার খরচ করে প্রশিক্ষণ দিতে পারি। যদিও খরচ দ্বিগুণ হয়েছে, এটি প্রশিক্ষণের সময়কে 10 এর ফ্যাক্টর দ্বারা হ্রাস করেছে। এমন একটি পরিস্থিতিতে যেখানে আপনাকে অল্প সময়ের মধ্যে অনেক মডেলকে প্রশিক্ষণ দিতে হবে, ডেটা সমান্তরালতা তুলনামূলকভাবে কম খরচে বৃদ্ধিতে এটি সক্ষম করতে পারে। মডেলের সমান্তরালতার ব্যবহারের ক্ষেত্রে, এটি এমন মডেলগুলিকে প্রশিক্ষণ দেওয়ার ক্ষমতা যুক্ত করে যা হার্ডওয়্যার সীমাবদ্ধতার কারণে পূর্বে প্রশিক্ষিত করা যেত না। উভয় বৈশিষ্ট্যই ML অনুশীলনকারীদের জন্য নতুন কর্মপ্রবাহ সক্ষম করে এবং এর মাধ্যমে সহজেই অ্যাক্সেসযোগ্য HuggingFace SageMaker Python SDK-এর একটি অংশ হিসাবে অনুমানকারী। হোস্ট করা এন্ডপয়েন্টগুলিতে এই মডেলগুলি স্থাপন করা অন্যান্য অনুমানকারীদের মতো একই পদ্ধতি অনুসরণ করে।

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


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

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

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

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

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

জেফ বাউডিয়ার ট্রান্সফরমারের স্রষ্টা, শীর্ষস্থানীয় ওপেন-সোর্স ML লাইব্রেরি, Hugging Face-এ পণ্য তৈরি করে৷ পূর্বে জেফ Stupeflix-এর একজন সহ-প্রতিষ্ঠাতা ছিলেন, GoPro দ্বারা অধিগ্রহণ করা হয়েছিল, যেখানে তিনি প্রোডাক্ট ম্যানেজমেন্ট, প্রোডাক্ট মার্কেটিং, বিজনেস ডেভেলপমেন্ট এবং কর্পোরেট ডেভেলপমেন্টের পরিচালক হিসেবে দায়িত্ব পালন করেছিলেন।

সূত্র: https://aws.amazon.com/blogs/machine-learning/distributed-fine-tuning-of-a-bert-large-model-for-a-question-answering-task-using-hugging-face- ট্রান্সফরমার-অন-অ্যামাজন-সেজমেকার/

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

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

পাইটর্চ ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং অ্যাপ্লিকেশনগুলির জন্য এডাব্লুএস ইনফেরেন্টিয়ায় বাইরের বাইরে 12x উচ্চতর থ্রুপুট এবং সর্বনিম্ন বিলম্ব অর্জন করুন

উত্স নোড: 837419
সময় স্ট্যাম্প: 4 পারে, 2021