লেখক: ময়ঙ্ক মিশ্র⋆, আইবিএম ম্যাট স্ট্যালোন⋆, আইবিএম গাওইয়ুয়ান ঝাং⋆, আইবিএম ইকাং শেন, আইবিএম আদিত্য প্রসাদ, আইবিএম আড্রিয়ানা মেজা সোরিয়া, আইবিএম মিশেল মারলার, আইবিএম পরমেশ্বরম সেলভম, আইবিএম সপ্তা সুরেন্দ্রন, আইবিএম শিবদীপ সিং, আইবিএম মনীষ শেঠি, আইবিএম জুয়ান-হং ডাং, আইবিএম পেংইউয়ান লি, আইবিএম কুন-লুং উ, আইবিএম সৈয়দ জাওয়াদ, আইবিএম অ্যান্ড্রু কোলম্যান, আইবিএম ম্যাথিউ হোয়াইট, আইবিএম মার্ক লুইস, আইবিএম রাজু পাভুলুরি, আইবিএম ইয়ান কয়ফম্যান, আইবিএম বরিস লুবলিনস্কি, আইবিএম ম্যাক্সিমিলিয়েন ডি বেসার, আইবিএম ইব্রাহিম আবদেল আজিজ, আইবিএম কঞ্জাল বসু, আইবিএম ময়ঙ্ক আগরওয়াল, আইবিএম ই ঝোউ, আইবিএম ক্রিস জনসন, আইবিএম আঁচল গোয়াল, আইবিএম হিমা প্যাটেল, আইবিএম ইউসুফ শাহ, আইবিএম পেট্রোস জেরফোস, আইবিএম হেইকো লুডভিগ, আইবিএম আসিফ মুনওয়ার, আইবিএম ম্যাক্সওয়েল ক্রাউস, আইবিএম পবন কগানিপ্পথি, আইবিএম শ্বেতা সালারিয়া, আইবিএম বব ক্যালিও, আইবিএম সোফিয়া ওয়েন, আইবিএম সীতারামি সীলম, আইবিএম ব্রায়ান বেলগোডারে, আইবিএম কার্লোস ফনসেকা, আইবিএম অমিত সিংঘী, আইবিএম নির্মিত দেশাই, আইবিএম ডেভিড ডি. কক্স, আইবিএম রুচির পুরি†, আইবিএম রামেস্বর পান্ডা†, আইবিএম সারসংক্ষেপ কোড-এর উপর প্রশিক্ষিত বৃহৎ ভাষা মডেল (LLMs) সফটওয়্যার ডেভেলপমেন্ট প্রক্রিয়াকে বিপ্লব করছে। ক্রমবর্ধমানভাবে, কোড LLM গুলি মানব প্রোগ্রামারদের উৎপাদনশীলতা উন্নত করার জন্য সফ্টওয়্যার ডেভেলপমেন্ট পরিবেশে একীভূত হচ্ছে, এবং LLM-ভিত্তিক এজেন্টগুলি স্বয়ংক্রিয়ভাবে জটিল কাজগুলি পরিচালনা করার জন্য প্রতিশ্রুতি দেখাচ্ছে। কোড LLM-এর সম্পূর্ণ সম্ভাবনা উপলব্ধি করার জন্য কোড তৈরি, বাগ ঠিক করা, কোড ব্যাখ্যা এবং নথিভুক্ত করা, রিপোজিটরি বজায় রাখা এবং আরও অনেক কিছু সহ বিস্তৃত ক্ষমতা প্রয়োজন। এই কাজে, আমরা কোড জেনারেটিভ টাস্কের জন্য ডিকোডার-অনলি কোড মডেলের গ্রানাইট সিরিজ উপস্থাপন করছি, যা ১১৬টি প্রোগ্রামিং ভাষায় লেখা কোড সহ প্রশিক্ষিত। গ্রানাইট কোড মডেল পরিবারে ৩ থেকে ৩৪ বিলিয়ন প্যারামিটারের আকারের মডেল রয়েছে, যা জটিল অ্যাপ্লিকেশন আধুনিকীকরণ থেকে শুরু করে অন-ডিভাইস মেমরি-সীমাবদ্ধ ব্যবহার পর্যন্ত বিভিন্ন অ্যাপ্লিকেশনের জন্য উপযুক্ত। কাজের একটি বিস্তৃত সেটের উপর মূল্যায়ন দেখায় যে গ্রানাইট কোড মডেলগুলি উপলব্ধ ওপেন-সোর্স কোড LLM-এর মধ্যে ধারাবাহিকভাবে অত্যাধুনিক কর্মক্ষমতা অর্জন করে। গ্রানাইট কোড মডেল পরিবারটি এন্টারপ্রাইজ সফ্টওয়্যার ডেভেলপমেন্ট ওয়ার্কফ্লোর জন্য অপ্টিমাইজ করা হয়েছিল এবং বিভিন্ন কোডিং টাস্ক (যেমন কোড জেনারেশন, ফিক্সিং এবং ব্যাখ্যা) জুড়ে ভাল পারফর্ম করে, যা এটিকে একটি বহুমুখী "অল-রাউন্ডার" কোড মডেলে পরিণত করে। আমরা গবেষণা এবং বাণিজ্যিক উভয় ব্যবহারের জন্য একটি Apache 2.0 লাইসেন্সের অধীনে আমাদের সমস্ত গ্রানাইট কোড মডেল প্রকাশ করছি। https://github.com/ibm-granite/granite-code-models ১. ভূমিকা বিগত কয়েক দশক ধরে, সফ্টওয়্যার আমাদের সমাজের প্রতিটি ক্ষেত্রে বুনে দেওয়া হয়েছে। সফ্টওয়্যার ডেভেলপমেন্টের চাহিদা বাড়ার সাথে সাথে, সফ্টওয়্যার ডেভেলপমেন্টের উৎপাদনশীলতা বৃদ্ধি করা আগের চেয়ে অনেক বেশি গুরুত্বপূর্ণ, এবং LLM গুলি মানব প্রোগ্রামারদের উন্নত করার জন্য একটি প্রতিশ্রুতিশীল পথ সরবরাহ করে। সফ্টওয়্যার ডেভেলপমেন্ট উৎপাদনশীলতায় LLM-এর উল্লেখযোগ্য এন্টারপ্রাইজ ব্যবহারিক ক্ষেত্রে রয়েছে কোড তৈরি, কোড ব্যাখ্যা, কোড সংশোধন, ইউনিট টেস্ট এবং ডকুমেন্টেশন তৈরি, অ্যাপ্লিকেশন আধুনিকীকরণ, দুর্বলতা সনাক্তকরণ, কোড অনুবাদ এবং আরও অনেক কিছু। সাম্প্রতিক বছরগুলিতে LLM-এর কোড তৈরি এবং ম্যানিপুলেট করার ক্ষমতাতে দ্রুত অগ্রগতি দেখা গেছে, এবং আজ কোডিং ক্ষমতা সম্পন্ন মডেলগুলির একটি পরিসর উপলব্ধ। মডেলগুলি একক-সংখ্যার বিলিয়ন প্যারামিটার (যেমন, Llama-7B (Touvron et al., 2023), Gemma-7B (Gemma-Team et al., 2024), ইত্যাদি) থেকে শত শত বিলিয়ন পর্যন্ত বিস্তৃত: DBRX (Databricks), Arctic (Snowflake), Grok, Mixtral 8x22B (MistralAI), Command R+ (Cohere), এবং ব্যবহারের সাধারণীকরণে ভিন্নতা থাকে, কিছু মডেল কোডের বাইরে বিভিন্ন ধরণের ব্যবহার কভার করার লক্ষ্য রাখে, অন্যরা প্রাথমিকভাবে কোডিং-সম্পর্কিত কাজগুলিতে (যেমন StarCoder (Li et al., 2023a; Lozhkov et al., 2024), CodeGen (Nijkamp et al., 2023), CodeLlama (Rozie`re et al., 2023), এবং CodeGemma (CodeGemma Team et al., 2024)) ফোকাস করে। তবে, কোডের জন্য LLM-এর বর্তমান ক্ষেত্রে গুরুত্বপূর্ণ ফাঁক রয়েছে, বিশেষ করে এন্টারপ্রাইজ সফ্টওয়্যার ডেভেলপমেন্টের প্রেক্ষাপটে। প্রথমত, যদিও খুব বড়, সাধারণ LLM গুলি চমৎকার কোডিং কর্মক্ষমতা অর্জন করতে পারে, তাদের আকার স্থাপনের জন্য ব্যয়বহুল করে তোলে। ছোট কোড-কেন্দ্রিক মডেল ( , ; , ; , ; , ; , ) একটি ছোট এবং আরও নমনীয় প্যাকেজে চমৎকার কোড জেনারেশন কর্মক্ষমতা অর্জন করতে পারে, তবে জেনারেশনের বাইরে কোডিং টাস্কগুলিতে (যেমন, ফিক্সিং এবং ব্যাখ্যা) কর্মক্ষমতা কোড জেনারেশন কর্মক্ষমতার চেয়ে পিছিয়ে থাকতে পারে। Li et al. 2023a Lozhkov et al. 2024 Nijkamp et al. 2023 Rozie`re et al. 2023 CodeGemma Team et al. 2024 অনেক এন্টারপ্রাইজ প্রসঙ্গে, কোড LLM গ্রহণ মডেলগুলির কর্মক্ষমতার বাইরে কারণগুলি দ্বারা আরও জটিল হতে পারে। উদাহরণস্বরূপ, এমনকি ওপেন মডেলগুলিও ডেটা উত্স এবং ডেটা প্রক্রিয়াকরণ পদ্ধতি সম্পর্কে স্বচ্ছতার অভাবের দ্বারা জর্জরিত থাকে যা মডেলটিতে অন্তর্ভুক্ত করা হয়েছিল, যা মিশন-ক্রিটিকাল এবং নিয়ন্ত্রিত প্রেক্ষাপটে মডেলগুলিতে আস্থা হ্রাস করতে পারে। তদুপরি, আজকের ওপেন LLM-তে লাইসেন্স শর্তাবলী একটি মডেল ব্যবহার করার জন্য একটি উদ্যোগের ক্ষমতাকে ভারাক্রান্ত এবং জটিল করে তুলতে পারে। এখানে, আমরা গ্রানাইট কোড মডেলগুলি উপস্থাপন করছি, অত্যন্ত সক্ষম কোড LLM-এর একটি সিরিজ, যা বিস্তৃত কোডিং টাস্ক জুড়ে এন্টারপ্রাইজ সফ্টওয়্যার ডেভেলপমেন্টকে সমর্থন করার জন্য ডিজাইন করা হয়েছে। গ্রানাইট কোড মডেলগুলিতে দুটি প্রধান ভেরিয়েন্ট রয়েছে যা আমরা চারটি ভিন্ন আকারে (3B, 8B, 20B, এবং 34B) প্রকাশ করি: কোড-সম্পর্কিত কাজের জন্য বেস ফাউন্ডেশন মডেল; গ্রানাইট কোড বেস: Git কমিট এবং মানব নির্দেশাবলী এবং ওপেন-সোর্স সিন্থেটিক্যালি জেনারেটেড কোড ইন্সট্রাকশন ডেটাসেটের সংমিশ্রণ ব্যবহার করে ফাইন-টিউনড ইন্সট্রাকশন ফলোয়িং মডেল। গ্রানাইট কোড ইন্সট্রাক্ট: সিরিজের বেস মডেলগুলি দুই-পর্যায়ের প্রশিক্ষণ কৌশল সহ স্ক্র্যাচ থেকে প্রশিক্ষিত হয়েছে। ফেজ ১-এ, আমাদের মডেলটি ১১৬টি প্রোগ্রামিং ভাষায় লেখা কোড থেকে ৩ থেকে ৪ ট্রিলিয়ন টোকেনগুলিতে প্রশিক্ষিত হয়েছে, যা প্রোগ্রামিং ভাষা এবং সিনট্যাক্সের একটি ব্যাপক বোঝার নিশ্চিত করে। ফেজ ২-এ, আমাদের মডেলটি কোড এবং প্রাকৃতিক ভাষার ডোমেইন থেকে উচ্চ-মানের ডেটার একটি যত্ন সহকারে ডিজাইন করা মিশ্রণ সহ ৫০০ বিলিয়ন টোকেনগুলিতে আরও প্রশিক্ষিত হয়েছে যাতে মডেলের যুক্তি করার ক্ষমতা উন্নত হয়। আমরা প্রশিক্ষণের উভয় পর্যায়ে বেস মডেলগুলি প্রশিক্ষণের জন্য অনাবেক্ষিত ভাষা মডেলিং অবজেক্টিভ ব্যবহার করি। ইন্সট্রাক্ট মডেলগুলি একটি ফিল্টার করা ভেরিয়েন্ট কমিটপ্যাক ( , ), প্রাকৃতিক ভাষা নির্দেশাবলী অনুসরণকারী ডেটাসেট (OASST ( , ), HelpSteer ( , )) এবং ওপেন-সোর্স গণিত ডেটাসেট (MathInstruct ( , ) এবং MetaMathQA ( , )), নির্দেশাবলী অনুসরণ এবং যুক্তি করার ক্ষমতা উন্নত করার জন্য সিন্থেটিক্যালি জেনারেটেড কোড ডেটাসেট সহ একটি সংমিশ্রণে উপরের প্রশিক্ষিত বেস মডেলগুলি ফাইন-টিউন করে প্রাপ্ত হয়। Muennighoff et al. 2023 Ko¨ pf et al. 2023 Wang et al. 2023 Yue et al. 2023 Yu et al. 2023 আমরা HumanEvalPack ( , ), MBPP(+) ( , ; , ), RepoBench ( , ), ReCode ( , ), এবং আরও অনেক কিছুর উপর আমাদের কোড LLM-এর বিস্তৃত মূল্যায়ন করি। এই বেঞ্চমার্কগুলির সেটটি পাইথনে কেবল কোড সিন্থেসিস ছাড়াও বিভিন্ন ধরণের কোডিং টাস্ককে অন্তর্ভুক্ত করে, যেমন, কোড সংশোধন, কোড ব্যাখ্যা, কোড সম্পাদনা, কোড অনুবাদ, ইত্যাদি, বেশিরভাগ প্রধান প্রোগ্রামিং ভাষা (পাইথন, জাভাস্ক্রিপ্ট, জাভা, গো, সি++, রাস্ট, ইত্যাদি) জুড়ে। Muennighoff et al. 2023 Austin et al. 2021 Liu et al. 2023a Liu et al. 2023b Wang et al. 2022 আমাদের ফলাফল প্রকাশ করে যে ওপেন-সোর্স মডেলগুলির মধ্যে, গ্রানাইট কোড মডেলগুলি সমস্ত মডেলের আকার এবং বেঞ্চমার্ক জুড়ে খুব শক্তিশালী কর্মক্ষমতা দেখায় (প্রায়শই গ্রানাইটের চেয়ে দ্বিগুণ আকারের অন্যান্য ওপেন-সোর্স কোড মডেলগুলিকে ছাড়িয়ে যায়)। একটি দৃষ্টান্ত হিসাবে, চিত্র (শীর্ষ) HumanEvalPack ( , ) এর উপর Mistral ( , ) এবং LLama-3 ( , ) এর মতো সাম্প্রতিক উচ্চ-পারফর্মিং সাধারণ-উদ্দেশ্য বেস LLM সহ অন্যান্য ওপেন-সোর্স বেস কোড LLM-এর গ্রানাইট-8B-কোড-বেস-এর তুলনা দেখায়। যদিও CodeGemma এবং StarCoder2 কোড তৈরি করতে যুক্তিসঙ্গতভাবে ভাল পারফর্ম করে, তারা HumanEvalPack-এর কোড ফিক্সিং এবং ব্যাখ্যা ভেরিয়েন্টগুলিতে উল্লেখযোগ্যভাবে খারাপ পারফর্ম করে। গড়ে, গ্রানাইট-8B-কোড-বেস HumanEvalPack-এ সবচেয়ে প্রতিযোগিতামূলক CodeGemma-8B মডেলকে প্রায় ১২ পয়েন্ট (৩৩.২% বনাম ২১.৩%) ছাড়িয়ে যায়, যদিও উল্লেখযোগ্যভাবে কম সংখ্যক টোকেনে (৪.৫টি বনাম ৭.৫টি টোকেন) প্রশিক্ষিত হয়েছে। বেস মডেলগুলি ছাড়াও, আমাদের গ্রানাইট কোড মডেলগুলির নির্দেশাবলী-টিউনড ভেরিয়েন্টগুলি HumanEvalPack-এ শক্তিশালী কর্মক্ষমতা দেখায়, অন্যান্য ওপেন-সোর্স (কোড) নির্দেশাবলী মডেলগুলিকে ছাড়িয়ে যায়, যা মানব ভাষা নির্দেশাবলী সহ কোডিং টাস্কগুলির একটি বিস্তৃত সেটের সুবিধা প্রদর্শন করে (চিত্র (নীচে) দেখুন)। 1 Muennighoff et al. 2023 Jiang et al. 2023b AI@Meta 2024 1 অধিকন্তু, যেহেতু যুক্তি জটিল প্রশ্ন এবং কাজগুলি সমাধানের জন্য অত্যন্ত গুরুত্বপূর্ণ, আমরা আমাদের গ্রানাইট-8B-কোড-বেস মডেলকে ছয়টি গাণিতিক বেঞ্চমার্কে পরীক্ষা করি, যার মধ্যে MATH ( , ), GSM8K ( , ) এবং কম্পিউটেশনাল টুলগুলিতে অ্যাক্সেস সহ সমস্যা সমাধান রয়েছে, যেখানে আমাদের গ্রানাইট 8B মডেল বেশিরভাগ অত্যাধুনিক ৭B বা ৮B LLM-এর তুলনায় ভাল কর্মক্ষমতা অর্জন করে। উদাহরণস্বরূপ, গ্রানাইট-8B-কোড-বেস GSM8K-এ Llama-3-8B-Base-কে ∼১২ পয়েন্ট এবং MATH-এ ∼৬ পয়েন্ট ছাড়িয়ে যায় (সারণী দেখুন)। Cobbe et al. 2021 Cobbe et al. 2021 15 গ্রানাইট কোড মডেলগুলির মূল সুবিধাগুলির মধ্যে রয়েছে: : গ্রানাইট কোড মডেলগুলি বিভিন্ন ধরণের কোড-সম্পর্কিত কাজগুলিতে প্রতিযোগিতামূলক বা অত্যাধুনিক কর্মক্ষমতা অর্জন করে, যার মধ্যে কোড তৈরি, ব্যাখ্যা, ফিক্সিং, সম্পাদনা, অনুবাদ, ইত্যাদি, যা বিভিন্ন কোডিং কাজ সমাধানের তাদের ক্ষমতা প্রদর্শন করে; অল-রাউন্ডার কোড LLM : আমাদের সমস্ত মডেল লাইসেন্স-অনুমোদিত ডেটার উপর প্রশিক্ষিত হয়েছে যা IBM-এর AI Ethics নীতির¹ সম্মতি অনুসারে সংগ্রহ করা হয়েছে এবং বিশ্বস্ত এন্টারপ্রাইজ ব্যবহারের জন্য IBM-এর কর্পোরেট লিগ্যাল টিম দ্বারা নির্দেশিত। সমস্ত গ্রানাইট কোড মডেল Apache 2.0 লাইসেন্সের অধীনে প্রকাশিত হয়েছে। বিশ্বস্ত এন্টারপ্রাইজ-গ্রেড LLM আমরা আমাদের সম্পূর্ণ ডেটা সংগ্রহ, ফিল্টারিং এবং প্রিপ্রসেসিং পাইপলাইনটি বিভাগ -এ বর্ণনা করেছি। বিভাগ মডেল আর্কিটেকচারের বিবরণ বর্ণনা করে, তারপরে বিভাগ -এ প্রশিক্ষণের বিবরণ দেওয়া হয়েছে। বিভাগ ইন্সট্রাকশন টিউনিং সম্পর্কে বিস্তারিত তথ্য প্রদান করে, এবং বিভাগ গ্রানাইট কোড মডেলগুলির সাথে অন্যান্য ওপেন-সোর্স LLM-এর তুলনা করে পরীক্ষা এবং ফলাফল বর্ণনা করে। ২ ৩ ৪ ৫ ৬ ২. ডেটা সংগ্রহ এই বিভাগে, আমরা মডেল প্রশিক্ষণের জন্য কোড ডেটা প্রস্তুত করতে ব্যবহৃত ক্রলিং এবং ফিল্টারিং (ধারা ), ডিডুপ্লিকেশন (ধারা ), HAP/PII ফিল্টারিং (ধারা ) বর্ণনা করেছি। আমরা মডেলের ভাষা বোঝা এবং গাণিতিক যুক্তির দক্ষতা উন্নত করতে ব্যবহৃত উচ্চ-মানের প্রাকৃতিক ভাষা ডেটার একটি সংক্ষিপ্ত বিবরণও প্রদান করি। ২.১ ২.২ ২.৩ ২.১. ডেটা ক্রলিং এবং ফিল্টারিং প্রিট্রেনিং কোড ডেটা GitHub Code Clean², StarCoderdata³, এবং অতিরিক্ত পাবলিক কোড রিপোজিটরি এবং GitHub থেকে ইস্যুগুলির মতো সর্বজনীনভাবে উপলব্ধ ডেটাসেটগুলির একটি সংমিশ্রণ থেকে নেওয়া হয়েছে। আমরা কাঁচা ডেটা ফিল্টার করে ৩০০+ ভাষার মধ্যে ১১৬টি প্রোগ্রামিং ভাষার একটি তালিকা ধরে রাখি, পরিশিষ্ট -তে তালিকাভুক্ত। ডেটাকে প্রোগ্রামিং ভাষায় বরাদ্দ করা শুধুমাত্র ফাইলের এক্সটেনশনের উপর ভিত্তি করে করা হয়, StarCoder ( , ) এর মতো। ভাষা ফিল্টারিংয়ের পরে, আমরা নিম্ন-মানের কোড ( , ) ফিল্টার করার জন্য চারটি মূল ফিল্টারিং নিয়ম প্রয়োগ করি: (১) ২৫%-এর কম বর্ণমালাযুক্ত ফাইলগুলি সরান, (২) XSLT ভাষা ব্যতীত, ফাইলগুলি যেখানে "<?xml version=” স্ট্রিংটি প্রথম ১০০ অক্ষরের মধ্যে দেখা যায় তা ফিল্টার করুন, (৩) HTML ফাইলগুলির জন্য, শুধুমাত্র সেই ফাইলগুলি রাখুন যেখানে দৃশ্যমান পাঠ্য HTML কোডের অন্তত ২০% তৈরি করে এবং কমপক্ষে ১০০ অক্ষরের দৈর্ঘ্য থাকে, (৪) JSON এবং YAML ফাইলগুলির জন্য, শুধুমাত্র সেই ফাইলগুলি রাখুন যেগুলির অক্ষরের সংখ্যা ৫০ থেকে ৫০০০ অক্ষরের মধ্যে থাকে। আমরা স্বয়ংক্রিয়ভাবে তৈরি পাঠ্য অপসারণ, অ-ইংরেজি ইস্যুগুলি ফিল্টার করা, বটগুলির মন্তব্য বাদ দেওয়া এবং আলোচনারত ব্যবহারকারীদের সংখ্যাকে মানের সূচক হিসাবে ব্যবহার করা সহ মানের মেট্রিকগুলির একটি সেট ব্যবহার করে GitHub ইস্যুগুলিও টীকাযুক্ত করি। আমরা মডেল প্রশিক্ষণের জন্য অনুমোদিত লাইসেন্সযুক্ত ফাইলগুলি রেখে, GitHub API-এর মাধ্যমে পাওয়া নিজ নিজ রিপোজিটরির সাথে যুক্ত লাইসেন্স তথ্য সহ প্রতিটি কোড ফাইল টীকাযুক্ত করি। A Li et al. 2023a Li et al. 2023a ২.২. সঠিক এবং ফাজি ডিডুপ্লিকেশন আমরা আমাদের প্রশিক্ষণ সেটে (প্রায়) অভিন্ন কোড বিষয়বস্তু সহ নথিগুলি সরানোর জন্য সঠিক এবং ফাজি ডিডুপ্লিকেশন উভয় সহ একটি আক্রমনাত্মক ডিডুপ্লিকেশন কৌশল গ্রহণ করি। সঠিক ডিডুপ্লিকেশনের জন্য, আমরা প্রথমে নথির বিষয়বস্তুতে SHA256 হ্যাশ গণনা করি এবং অভিন্ন হ্যাশযুক্ত রেকর্ডগুলি সরিয়ে ফেলি। সঠিক ডিডুপ্লিকেশনের পরে, আমরা ফাজি ডিডুপ্লিকেশন প্রয়োগ করি যার লক্ষ্য হল কোড ফাইলগুলি সরানো যা সামান্য বৈচিত্র্য থাকতে পারে এবং এইভাবে ডেটাটিকে আরও আনবায়াস করে। আমরা এর জন্য একটি দুই-ধাপের পদ্ধতি প্রয়োগ করি: (১) সমস্ত নথির MinHashes গণনা করুন এবং তারপরে তাদের MinHash ফিঙ্গারপ্রিন্টের উপর ভিত্তি করে নথিগুলি গ্রুপ করতে Locally Sensitive Hashing (LSH) ব্যবহার করুন, (২) একই বালতির প্রতিটি নথির জোড়ার মধ্যে Jaccard সাদৃশ্য পরিমাপ করুন এবং একটি সাদৃশ্য থ্রেশহোল্ড ০.৭ এর উপর ভিত্তি করে ডুপ্লিকেট হিসাবে একটি ছাড়া অন্যান্য নথিগুলি টীকাযুক্ত করুন। আমরা প্রশিক্ষণ ডেটাসেটের সমৃদ্ধি এবং বৈচিত্র্য বাড়াতে GitHub ইস্যু সহ সমস্ত প্রোগ্রামিং ভাষার উপর এই নিকট-ডিডুপ্লিকেশন প্রক্রিয়াটি প্রয়োগ করি। ২.৩. HAP, PII, ম্যালওয়্যার ফিল্টারিং মডেলগুলি থেকে বিদ্বেষপূর্ণ, আপত্তিজনক বা অপবিত্র (HAP) ভাষা তৈরি হওয়ার সম্ভাবনা কমাতে, আমরা প্রশিক্ষণ সেট থেকে HAP সামগ্রী ফিল্টার করার জন্য diligent প্রচেষ্টা করি। আমরা প্রথমে HAP কীওয়ার্ডগুলির একটি অভিধান তৈরি করি এবং তারপরে প্রতিটি কোড নথিতে বিষয়বস্তু এবং মন্তব্য সহ এই কীওয়ার্ডগুলিরOccurrence সংখ্যা সহ টীকাযুক্ত করি। আমরা HAP থ্রেশহোল্ডকে অতিক্রম করে এমন নথিগুলি ফিল্টার করি, যা একটি ডিস্ট্রিবিউশনাল বিশ্লেষণ এবং কোড ফাইলগুলির ম্যানুয়াল পরিদর্শনের উপর ভিত্তি করে গণনা করা হয়। তদুপরি, গোপনীয়তা রক্ষা করার জন্য, আমরা StarCoder ( , ) অনুসরণ করি এবং প্রশিক্ষণ সেট থেকে ব্যক্তিগতভাবে সনাক্তকরণযোগ্য তথ্য (PII) লালন করার জন্য diligent প্রচেষ্টা করি। নির্দিষ্টভাবে, আমরা IP ঠিকানা, কী, ইমেল ঠিকানা, নাম, ব্যবহারকারীর নাম এবং পাসওয়ার্ড সনাক্ত করতে StarPII⁴ মডেলটি ব্যবহার করি। PII লালন পদক্ষেপটি PII পাঠ্যটিকে সংশ্লিষ্ট টোকেন NAME, EMAIL, KEY, PASSWORD দিয়ে প্রতিস্থাপন করে এবং IP ঠিকানাটিকে একটি সিন্থেটিক্যালি জেনারেটেড IP ঠিকানা দিয়ে পরিবর্তন করে, Li et al. (2023a) এর মতো। আমরা সোর্স কোডে ম্যালওয়্যারের উদাহরণগুলি সনাক্ত এবং অপসারণ করতে আমাদের ডেটাসেটগুলি স্ক্যানও করি। Li et al. 2023a ২.৪. প্রাকৃতিক ভাষা ডেটাসেট মডেল প্রশিক্ষণের জন্য কোড ডেটা সংগ্রহ করার পাশাপাশি, আমরা মডেলের ভাষা বোঝা এবং গাণিতিক যুক্তির দক্ষতা উন্নত করার জন্য কয়েকটি সর্বজনীনভাবে উপলব্ধ উচ্চ-মানের প্রাকৃতিক ভাষা ডেটাসেট কিউরেট করি। এই বিভাগের অধীনে প্রতিনিধি ডেটাসেটগুলির মধ্যে রয়েছে ওয়েব নথি (Stackexchange, CommonCrawl), গাণিতিক ওয়েব টেক্সট (OpenWeb-Math; ( ), StackMathQA; ( )), একাডেমিক টেক্সট (Arxiv, Wikipedia), এবং ইন্সট্রাকশন টিউনিং ডেটাসেট (FLAN; ( ), HelpSteer ( , ))। আমরা এই ইতিমধ্যে প্রিপ্রসেসড প্রাকৃতিক ভাষা ডেটাসেটগুলি ডিডুপ্লিকেট করি না। Paster et al. 2023 Zhang 2024 Longpre et al. 2023 Wang et al. 2023 ৩. মডেল আর্কিটেকচার আমরা ট্রান্সফরমার ডিকোডার আর্কিটেকচারের ( , ) উপর ভিত্তি করে বিভিন্ন আকারের কোড মডেলের একটি সিরিজ প্রশিক্ষণ দিই। এই মডেলগুলির জন্য মডেল হাইপারপ্যারামিটারগুলি সারণী -এ দেওয়া আছে। সমস্ত মডেল আর্কিটেকচারের জন্য, আমরা প্রি-নর্মালাইজেশন ( , ) ব্যবহার করি: অ্যাটেনশন এবং এমএলপি ব্লকগুলির ইনপুটে প্রয়োগ করা নর্মালাইজেশন। Vaswani et al. 2017 ১ Xiong et al. 2020 : গ্রানাইট-কোড মডেল পরিবারের সবচেয়ে ছোট মডেলটি RoPE এমবেডিং ( , ) এবং মাল্টি-হেড অ্যাটেনশন ( , ) সহ প্রশিক্ষিত। এই মডেলটি এমএলপি-র জন্য GLU ( , ) সহ সোয়িশ অ্যাক্টিভেশন ফাংশন ( , ) ব্যবহার করে, যা সাধারণত সোয়াগ্লু নামেও পরিচিত। নর্মালাইজেশনের জন্য, আমরা RMSNorm ( , ) ব্যবহার করি কারণ এটি LayerNorm ( , ) থেকে কম্পিউটেশোনালি বেশি কার্যকর। 3B মডেলটি 2048 টোকেনগুলির একটি কনটেক্সট দৈর্ঘ্যের সাথে প্রশিক্ষিত। 3B Su et al. 2023 Vaswani et al. 2017 Shazeer 2020 Ramachandran et al. 2017 Zhang & Sennrich 2019 Ba et al. 2016 : 8B মডেলটিতে 3B মডেলের মতো একই আর্কিটেকচার রয়েছে, তবে গ্রুপড-কোয়েরি অ্যাটেনশন (GQA) ( , ) ব্যবহার করা হয়েছে। GQA ব্যবহার করে এই স্কেলে মডেলের পারফরম্যান্স এবং ইনফারেন্স দক্ষতার মধ্যে একটি ভাল ট্রেড-অফ সরবরাহ করে। আমরা 8B মডেলটি 4096 টোকেনগুলির একটি কনটেক্সট দৈর্ঘ্যের সাথে প্রশিক্ষণ দিই। 8B Ainslie et al. 2023 : 20B কোড মডেলটি শেখা অ্যাবসোলিউট পজিশন এমবেডিং সহ প্রশিক্ষিত। আমরা দক্ষ ডাউনস্ট্রিম ইনফারেন্সের জন্য প্রশিক্ষণের সময় মাল্টি-কোয়েরি অ্যাটেনশন ( , ) ব্যবহার করি। এমএলপি ব্লকের জন্য, আমরা GELU অ্যাক্টিভেশন ফাংশন ( , ) ব্যবহার করি। অ্যাক্টিভেশনগুলি নর্মালাইজ করার জন্য, আমরা LayerNorm ( , ) ব্যবহার করি। এই মডেলটি 8192 টোকেনগুলির একটি কনটেক্সট দৈর্ঘ্যের সাথে প্রশিক্ষিত। 20B Shazeer 2019 Hendrycks & Gimpel 2023 Ba et al. 2016 : 34B মডেলটি প্রশিক্ষণ দেওয়ার জন্য, আমরা 20B মডেলের ডেপথ আপস্কেলিংয়ের জন্য -এর পদ্ধতি অনুসরণ করি। নির্দিষ্টভাবে, আমরা প্রথমে 52টি স্তর সহ 20B কোড মডেলটি ডুপ্লিকেট করি এবং তারপরে মূল মডেল থেকে শেষ 8টি স্তর এবং এর ডুপ্লিকেট থেকে প্রাথমিক 8টি স্তর সরিয়ে দুটি মডেল তৈরি করি। 34B Kim et al. অবশেষে, আমরা গ্রানাইট-34B-কোড মডেলটি ৮৮টি স্তর সহ তৈরি করার জন্য উভয় মডেলকে সংযুক্ত করি (একটি দৃষ্টান্তের জন্য চিত্র দেখুন)। ডেপথ আপস্কেলিংয়ের পরে, আমরা পর্যবেক্ষণ করি যে 20B মডেলের তুলনায় পারফরম্যান্সে কর্মক্ষমতার হ্রাসটি বেশ ছোট, যা দ্বারা পর্যবেক্ষণ করা থেকে ভিন্ন। এই পারফরম্যান্সটি আপস্কেলড 34B মডেলের প্রিট্রেনিং চালিয়ে যাওয়ার পরে বেশ দ্রুত পুনরুদ্ধার করা হয়। 20B-এর মতো, আমরা প্রিট্রেনিংয়ের সময় 8192 টোকেন কনটেক্সট ব্যবহার করি। 2 Kim et al. ৪. প্রিট্রেনিং এই বিভাগে, আমরা দুই-পর্যায়ের প্রশিক্ষণ (ধারা ), প্রশিক্ষণের উদ্দেশ্য (ধারা ), অপ্টিমাইজেশান (ধারা ) এবং মডেল প্রশিক্ষণে ব্যবহৃত পরিকাঠামো (ধারা ) সম্পর্কে বিশদ বিবরণ প্রদান করি। 4.1 4.2 4.3 4.4 ৪.১. দুই-পর্যায়ের প্রশিক্ষণ গ্রানাইট কোড মডেলগুলি কোড ডেটা এবং কোড সম্পর্কিত প্রাকৃতিক ভাষা ডেটাসেটের 3.5T থেকে 4.5T টোকেনগুলিতে প্রশিক্ষিত। ডেটা বাইট পেয়ার এনকোডিং (BPE, ( , )) এর মাধ্যমে টোকেনাইজ করা হয়, StarCoder ( , ) এর মতো একই টোকেনাইজার ব্যবহার করে। ( , ; , ) অনুসরণ করে, আমরা দুটি প্রশিক্ষণ পর্যায়ে উচ্চ-মানের ডেটা ব্যবহার করি: Sennrich et al. 2015 Li et al. 2023a Shen et al. 2024 Hu et al. 2024 • : ফেজ ১ চলাকালীন, 3B এবং 8B উভয় মডেলই ১১৬টি ভাষার কোড ডেটার ৪ ট্রিলিয়ন টোকেনগুলিতে প্রশিক্ষিত হয়। 20B প্যারামিটার মডেলটি ৩ ট্রিলিয়ন কোড টোকেনগুলিতে প্রশিক্ষিত হয়। 34B মডেলটি 1.6T চেকপয়েন্টের 20B মডেলের উপর ভিত্তি করে ডেপথ আপস্কেলিংয়ের পরে 1.4T টোকেনগুলিতে প্রশিক্ষিত হয়। ফেজ ১ (কেবল কোড প্রশিক্ষণ) • : ফেজ ২-এ, আমরা মডেলের যুক্তি এবং সমস্যা সমাধানের ক্ষমতা উন্নত করার জন্য অতিরিক্ত উচ্চ-মানের সর্বজনীনভাবে উপলব্ধ ডেটা বিভিন্ন ডোমেন থেকে, যার মধ্যে প্রযুক্তিগত, গণিত, এবং ওয়েব নথি অন্তর্ভুক্ত, যোগ করি, যা কোড তৈরির জন্য প্রয়োজনীয়। আমরা ফেজ ২ প্রশিক্ষণে আমাদের সমস্ত মডেলকে ৫০০ বিলিয়ন টোকেন (৮০% কোড এবং ২০% ভাষা ডেটা) প্রশিক্ষিত করি। ফেজ ২ (কোড + ভাষা প্রশিক্ষণ) ৪.২. প্রশিক্ষণের উদ্দেশ্য আমাদের সমস্ত মডেলের প্রশিক্ষণের জন্য, আমরা কার্যকারণ ভাষা মডেলিং উদ্দেশ্য এবং Fill-In-the-Middle (FIM) ( , ) উদ্দেশ্য ব্যবহার করি। FIM উদ্দেশ্যটি প্রদত্ত প্রসঙ্গ এবং পরবর্তী পাঠ্যের সাথে সন্নিবেশিত টোকেনগুলি ভবিষ্যদ্বাণী করার জন্য কার্যনির্বাহী। আমরা আমাদের মডেলগুলিকে PSM (Prefix-Suffix-Middle) এবং SPM (Suffix-Prefix-Middle) উভয় মোডের সাথে কাজ করার জন্য প্রশিক্ষণ দিই, প্রাসঙ্গিক ফরম্যাটিং কন্ট্রোল টোকেন সহ, StarCoder ( , ) এর মতো। Bavarian et al. 2022 Li et al. 2023a সামগ্রিক ক্ষতি ২টি উদ্দেশ্যগুলির একটি ওজনযুক্ত সংমিশ্রণ হিসাবে গণনা করা হয়: আমরা প্রশিক্ষণের সময় = ০.৫ অভিজ্ঞতাগতভাবে সেট করি এবং এটি অনুশীলনে ভাল কাজ করে বলে মনে করি, যা কোড সমাপ্তি এবং কোড ইনফিলিং উভয় টাস্কগুলিতে SOTA কর্মক্ষমতা অর্জনে সহায়তা করে। এটি লক্ষ করা উচিত যে FIM উদ্দেশ্যটি শুধুমাত্র প্রিট্রেনিংয়ের সময় ব্যবহৃত হয়, তবে আমরা ইন্সট্রাকশন ফাইন-টিউনিংয়ের সময় এটি বাদ দিই, অর্থাৎ আমরা = ১ সেট করি। α α ৪.৩. অপ্টিমাইজেশান আমরা আমাদের সমস্ত গ্রানাইট কোড মডেল প্রশিক্ষণের জন্য β1 = 0.9, β2 = 0.95 এবং ওজন ক্ষয় ০.১ সহ AdamW অপ্টিমাইজার ([Kingma & Ba](#_bookmark80),(#_bookmark80)) ব্যবহার করি। ফেজ-১ প্রিট্রেনিংয়ের জন্য, লার্নিং রেট ২k ইটারেশনের একটি প্রাথমিক লিনিয়ার ওয়ার্মআপ স্টেপের সাথে ৩ × ১০⁻⁵ পর্যন্ত decaying সহ ৩ × ১০⁻⁴ থেকে শুরু হওয়া একটি কোসাইন সিডিউল অনুসরণ করে। ফেজ-২ প্রিট্রেনিংয়ের জন্য, আমরা ৩ × ১০⁻⁴ (২০B এবং ৩৪B মডেলের জন্য ১.৫ × ১০⁻⁴) থেকে শুরু করি এবং প্রাথমিক লার্নিং রেটের ১০% পর্যন্ত এটি অ্যানিল করার জন্য একটি এক্সপোনেনশিয়াল ডিকে সিডিউল গ্রহণ করি। আমরা উভয় পর্যায়ে প্রিট্রেনিংয়ের সময় মডেলের আকারের উপর নির্ভর করে ৪M-5M টোকেনগুলির একটি ব্যাচ আকার ব্যবহার করি। প্রশিক্ষণকে ত্বরান্বিত করতে, আমরা FlashAttention 2 ( , Dao et al.