```html লেখক: Mayank Mishra⋆, IBM Matt Stallone⋆, IBM Gaoyuan Zhang⋆, IBM Yikang Shen, IBM Aditya Prasad, IBM Adriana Meza Soria, IBM Michele Merler, IBM Parameswaran Selvam, IBM Saptha Surendran, IBM Shivdeep Singh, IBM Manish Sethi, IBM Xuan-Hong Dang, IBM Pengyuan Li, IBM Kun-Lung Wu, IBM Syed Zawad, IBM Andrew Coleman, IBM Matthew White, IBM Mark Lewis, IBM Raju Pavuluri, IBM Yan Koyfman, IBM Boris Lublinsky, IBM Maximilien de Bayser, IBM Ibrahim Abdelaziz, IBM Kinjal Basu, IBM Mayank Agarwal, IBM Yi Zhou, IBM Chris Johnson, IBM Aanchal Goyal, IBM Hima Patel, IBM Yousaf Shah, IBM Petros Zerfos, IBM Heiko Ludwig, IBM Asim Munawar, IBM Maxwell Crouse, IBM Pavan Kapanipathi, IBM Shweta Salaria, IBM Bob Calio, IBM Sophia Wen, IBM Seetharami Seelam, IBM Brian Belgodere, IBM Carlos Fonseca, IBM Amith Singhee, IBM Nirmit Desai, IBM David D. Cox, IBM Ruchir Puri†, IBM Rameswar Panda†, IBM সারসংক্ষেপ কোড-ভিত্তিক বৃহৎ ভাষা মডেল (LLM) সফ্টওয়্যার ডেভেলপমেন্ট প্রক্রিয়াকে বিপ্লব করছে। ক্রমবর্ধমানভাবে, মানব প্রোগ্রামারদের উৎপাদনশীলতা উন্নত করার জন্য কোড LLM গুলি সফ্টওয়্যার ডেভেলপমেন্ট পরিবেশে একীভূত করা হচ্ছে, এবং LLM-ভিত্তিক এজেন্টগুলি স্বয়ংক্রিয়ভাবে জটিল কাজগুলি পরিচালনা করার জন্য প্রতিশ্রুতি দেখাচ্ছে। কোড LLM-এর পূর্ণ সম্ভাবনা উপলব্ধি করার জন্য কোড তৈরি, বাগ ঠিক করা, কোড ব্যাখ্যা ও নথিভুক্ত করা, রিপোজিটরি বজায় রাখা এবং আরও অনেক কিছুর মতো বিভিন্ন ধরণের ক্ষমতা প্রয়োজন। এই কাজে, আমরা কোড তৈরির কাজের জন্য ডিকোডার-অনলি কোড মডেলের গ্রানাইট সিরিজ উপস্থাপন করছি, যা ১১৬টি প্রোগ্রামিং ভাষায় লেখা কোড দিয়ে প্রশিক্ষিত। গ্রানাইট কোড মডেলগুলির পরিবার ৩ থেকে ৩৪ বিলিয়ন প্যারামিটারের আকারের মডেল নিয়ে গঠিত, যা জটিল অ্যাপ্লিকেশন আধুনিকীকরণের কাজ থেকে শুরু করে অন-ডিভাইস মেমরি-সীমাবদ্ধ ব্যবহারের ক্ষেত্রে উপযুক্ত। বিভিন্ন কাজের উপর মূল্যায়ন দেখায় যে গ্রানাইট কোড মডেলগুলি উপলব্ধ ওপেন-সোর্স কোড LLM-এর মধ্যে ধারাবাহিকভাবে অত্যাধুনিক কর্মক্ষমতা অর্জন করে। গ্রানাইট কোড মডেল পরিবারটি এন্টারপ্রাইজ সফ্টওয়্যার ডেভেলপমেন্ট ওয়ার্কফ্লোয়ের জন্য অপ্টিমাইজ করা হয়েছে এবং এটি বিভিন্ন কোডিং কাজে (যেমন কোড তৈরি, ঠিক করা এবং ব্যাখ্যা) ভাল পারফর্ম করে, যা এটিকে একটি বহুমুখী "অল-রাউন্ডার" কোড মডেলে পরিণত করে। আমরা আমাদের সমস্ত গ্রানাইট কোড মডেল গবেষণা এবং বাণিজ্যিক উভয় ব্যবহারের জন্য অ্যাপাচি ২.০ লাইসেন্সের অধীনে প্রকাশ করছি। 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-এর একটি সিরিজ, যা বিভিন্ন ধরণের কোডিং কাজ জুড়ে এন্টারপ্রাইজ সফ্টওয়্যার ডেভেলপমেন্টকে সমর্থন করার জন্য ডিজাইন করা হয়েছে। গ্রানাইট কোড মডেলগুলির দুটি প্রধান ভ্যারিয়েন্ট রয়েছে যা আমরা চারটি ভিন্ন আকারে (৩বি, ৮বি, ২০বি, এবং ৩৪বি) প্রকাশ করছি: কোড-সম্পর্কিত কাজের জন্য বেস ফাউন্ডেশন মডেল; গ্রানাইট কোড বেস: গিট কমিট এবং মানব নির্দেশাবলী এবং ওপেন-সোর্স সিন্থেটিক্যালি জেনারেটেড কোড ইন্সট্রাকশন ডেটাসেটগুলির সমন্বয়ে ফাইন-টিউন করা ইন্সট্রাকশন ফলোয়িং মডেল। গ্রানাইট কোড ইন্সট্রাক্ট: সিরিজের বেস মডেলগুলি একটি দুই-দফার প্রশিক্ষণ কৌশল দিয়ে স্ক্র্যাচ থেকে প্রশিক্ষিত হয়েছে। ফেজ ১-এ, আমাদের মডেলটি ১১৬টি প্রোগ্রামিং ভাষার কোড থেকে ৩ থেকে ৪ ট্রিলিয়ন টোকেন দিয়ে প্রশিক্ষিত হয়, যা প্রোগ্রামিং ভাষা এবং সিনট্যাক্স সম্পর্কে একটি ব্যাপক বোঝাপড়া নিশ্চিত করে। ফেজ ২-এ, আমাদের মডেলটি কোড এবং প্রাকৃতিক ভাষা ডোমেন থেকে উচ্চ-মানের ডেটার একটি সাবধানে ডিজাইন করা মিশ্রণের সাথে ৫০০ বিলিয়ন টোকেন দিয়ে আরও প্রশিক্ষিত হয় যাতে মডেলের যুক্তির ক্ষমতা উন্নত হয়। আমরা প্রশিক্ষণের উভয় পর্যায়ে বেস মডেলগুলি প্রশিক্ষণ দেওয়ার জন্য আনসুপারভাইজড ল্যাঙ্গুয়েজ মডেলিং অবজেক্টিভ ব্যবহার করি। ইন্সট্রাক্ট মডেলগুলি কমিটপ্যাক ( , )-এর একটি ফিল্টার করা ভ্যারিয়েন্ট, প্রাকৃতিক ভাষা নির্দেশাবলী অনুসরণকারী ডেটাসেট (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-এর ব্যাপক মূল্যায়ন পরিচালনা করি। এই বেঞ্চমার্কগুলির সেটটি পাইথনে কেবল কোড সংশ্লেষণ ছাড়াও অনেক ধরণের কোডিং কাজ অন্তর্ভুক্ত করে, যেমন কোড ফিক্সিং, কোড ব্যাখ্যা, কোড এডিটিং, কোড অনুবাদ ইত্যাদি, বেশিরভাগ প্রধান প্রোগ্রামিং ভাষা জুড়ে (Python, JavaScript, Java, Go, C++, Rust, ইত্যাদি)। 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-এর সাথে Granite-8B-Code-Base-এর তুলনা দেখায়। যখন CodeGemma এবং StarCoder2 কোড তৈরিতে যুক্তিসঙ্গতভাবে ভাল পারফর্ম করে, তখন তারা HumanEvalPack-এর কোড ফিক্সিং এবং ব্যাখ্যা ভেরিয়েন্টগুলিতে উল্লেখযোগ্যভাবে খারাপ পারফর্ম করে। গড়ে, Granite-8B-Code-Base HumanEvalPack-এ সবচেয়ে প্রতিযোগিতামূলক CodeGemma-8B মডেলকে প্রায় ১২ পয়েন্ট (৩৩.২% বনাম ২১.৩%) ছাড়িয়ে যায়, যদিও উল্লেখযোগ্যভাবে কম সংখ্যক টোকেন (৪.৫টি বনাম ৭.৫টি টোকেন) দিয়ে প্রশিক্ষিত হয়েছে। বেস মডেলগুলি ছাড়াও, আমাদের গ্রানাইট কোড মডেলগুলির ইন্সট্রাকশন-টিউনড ভ্যারিয়েন্টগুলিও HumanEvalPack-এ শক্তিশালী কর্মক্ষমতা দেখায়, অন্যান্য ওপেন-সোর্স (কোড) ইন্সট্রাকশন মডেলগুলিকে ছাড়িয়ে যায়, যা প্রাকৃতিক ভাষা নির্দেশাবলী সহ কোডিং কাজগুলির বিস্তৃত সেটের সুবিধা প্রদর্শন করে (চিত্র (নিচের অংশ) দেখুন)। ১ Muennighoff et al. 2023 Jiang et al. 2023b AI@Meta 2024 ১ অধিকন্তু, যেহেতু যুক্তির ক্ষমতা জটিল প্রশ্ন এবং কাজগুলি সমাধানের জন্য অত্যন্ত গুরুত্বপূর্ণ, আমরা আমাদের Granite-8B-Code-Base মডেলটিকে ছয়টি গাণিতিক বেঞ্চমার্ক, যার মধ্যে MATH ( , ), GSM8K ( , ) এবং কম্পিউটেশনাল সরঞ্জামগুলির অ্যাক্সেস সহ সমস্যা সমাধানের ক্ষমতা পরীক্ষা করি, যেখানে আমাদের Granite 8B মডেলটি বেশিরভাগ স্টেট-অফ-দ্য-আর্ট ৭বি বা ৮বি LLM-এর তুলনায় ভাল কর্মক্ষমতা অর্জন করে। উদাহরণস্বরূপ, Granite-8B-Code-Base GSM8K-তে Llama-3-8B-Base-কে ∼১২ পয়েন্ট এবং MATH-এ ∼৬ পয়েন্ট ছাড়িয়ে যায় (টেবিল দেখুন)। Cobbe et al. 2021 Cobbe et al. 2021 ১৫ গ্রানাইট কোড মডেলগুলির মূল সুবিধাগুলির মধ্যে রয়েছে: : গ্রানাইট কোড মডেলগুলি কোড তৈরি, ব্যাখ্যা, ফিক্সিং, এডিটিং, অনুবাদ ইত্যাদি সহ বিভিন্ন ধরণের কোড-সম্পর্কিত কাজগুলিতে প্রতিযোগিতামূলক বা অত্যাধুনিক কর্মক্ষমতা অর্জন করে, যা বিভিন্ন কোডিং কাজ সমাধানের ক্ষমতা প্রদর্শন করে; অল-রাউন্ডার কোড LLM : আমাদের সমস্ত মডেল লাইসেন্স-অনুমোদনযোগ্য ডেটা দিয়ে প্রশিক্ষিত যা IBM-এর AI Ethics নীতিগুলি অনুসরণ করে সংগৃহীত এবং বিশ্বস্ত এন্টারপ্রাইজ ব্যবহারের জন্য IBM-এর কর্পোরেট লিগ্যাল টিমের নির্দেশনায় রয়েছে। সমস্ত গ্রানাইট কোড মডেল অ্যাপাচি ২.০ লাইসেন্সের অধীনে প্রকাশিত হয়েছে। বিশ্বস্ত এন্টারপ্রাইজ-গ্রেড 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 বিষয়বস্তু ফিল্টার করার জন্য সচেষ্ট। আমরা প্রথমে HAP কীওয়ার্ডগুলির একটি অভিধান তৈরি করি এবং তারপরে প্রতিটি কোড নথির বিষয়বস্তু এবং মন্তব্যগুলিতে এই কীওয়ার্ডগুলির উপস্থিতির সংখ্যা গণনা করে টীকা করি। আমরা সেই নথিগুলি ফিল্টার করি যা HAP থ্রেশহোল্ড অতিক্রম করে, যা একটি ডিস্ট্রিবিউশনাল বিশ্লেষণ এবং কোড ফাইলগুলির ম্যানুয়াল পরিদর্শনের ভিত্তিতে গণনা করা হয়। অধিকন্তু, গোপনীয়তা রক্ষা করার জন্য, আমরা ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) প্রশিক্ষণ সেট থেকে সরিয়ে ফেলার জন্য সচেষ্ট হই, যা StarCoder ( , ) অনুসরণ করে। নির্দিষ্টভাবে, আমরা বিষয়বস্তুতে পাওয়া IP ঠিকানা, কী, ইমেল ঠিকানা, নাম, ব্যবহারকারীর নাম এবং পাসওয়ার্ড সনাক্ত করতে StarPII মডেলটি ব্যবহার করি। PII সরানোর ধাপে PII টেক্সট সংশ্লিষ্ট টোকেন NAME , EMAIL , KEY , PASSWORD দিয়ে প্রতিস্থাপন করা হয় এবং Li et al. (2023a)-এর মতো IP ঠিকানা একটি সিন্থেটিকভাবে তৈরি IP ঠিকানা দিয়ে পরিবর্তন করা হয়। আমরা সোর্স কোডে ম্যালওয়্যারের উপস্থিতি সনাক্ত এবং অপসারণের জন্য আমাদের ডেটাসেটগুলি স্ক্যানও করি। 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 ৩ মডেল আর্কিটেকচার আমরা ট্রান্সফরমার ডিকোডার আর্কিটেকচার ( , )-এর উপর ভিত্তি করে বিভিন্ন আকারের কোড মডেলের একটি সিরিজ প্রশিক্ষণ দিই। এই মডেলগুলির জন্য মডেল হাইপারপ্যারামিটারগুলি টেবিল -এ দেওয়া হয়েছে। সমস্ত মডেল আর্কিটেকচারের জন্য, আমরা প্রি-নর্মালাইজেশন ( , ) ব্যবহার করি: অ্যাটেনশন এবং MLP ব্লকগুলির ইনপুটে প্রয়োগ করা নর্মালাইজেশন। Vaswani et al. 2017 ১ Xiong et al. 2020 : গ্রানাইট-কোড মডেল পরিবারের সবচেয়ে ছোট মডেলটি RoPE এম্বেডিং ( , ) এবং মাল্টি-হেড অ্যাটেনশন ( , ) দিয়ে প্রশিক্ষিত। এই মডেলটি MLP-এর জন্য GLU ( , ) সহ সোয়াইশ অ্যাক্টিভেশন ফাংশন ( , ) ব্যবহার করে, যা সাধারণত সোইগলু (swiglu) নামেও পরিচিত। নর্মালাইজেশনের জন্য, আমরা RMSNorm ( , ) ব্যবহার করি কারণ এটি LayerNorm ( , )-এর চেয়ে কম্পিউটেশনালি বেশি কার্যকর। 3B মডেলটি ২০৪৮ টোকেনের কনটেক্সট লেন্থ দিয়ে প্রশিক্ষিত। 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 মডেল প্রশিক্ষণ দিই। 8B Ainslie et al. 2023 : 20B কোড মডেলটি লার্নেড অ্যাবসোলিউট পজিশন এম্বেডিং দিয়ে প্রশিক্ষিত। আমরা দক্ষ ডাউনস্ট্রিম ইনফারেন্সের জন্য প্রশিক্ষণের সময় মাল্টি-কোয়েরি অ্যাটেনশন ( , ) ব্যবহার করি। MLP ব্লকের জন্য, আমরা GELU অ্যাক্টিভেশন ফাংশন ( , ) ব্যবহার করি। অ্যাক্টিভেশনগুলি নর্মালাইজ করার জন্য, আমরা LayerNorm ( , ) ব্যবহার করি। এই মডেলটি ৮১৯২ টোকেন কনটেক্সট লেন্থ দিয়ে প্রশিক্ষিত। 20B Shazeer 2019 Hendrycks & Gimpel 2023 Ba et al. 2016 : 34B মডেলটি প্রশিক্ষণ দেওয়ার জন্য, আমরা 20B মডেলের ডেপথ আপস্কেলিংয়ের জন্য -এর পদ্ধতি অনুসরণ করি। নির্দিষ্টভাবে, আমরা প্রথমে 52টি লেয়ার সহ 20B কোড মডেলটি ডুপ্লিকেট করি এবং তারপরে দুটি মডেল তৈরি করতে আসল মডেলের শেষ 8টি লেয়ার এবং এর ডুপ্লিকেটের প্রাথমিক 8টি লেয়ার সরিয়ে ফেলি। 34B Kim et al. অবশেষে, আমরা চিত্র -এ একটি চিত্রণ অনুসারে, উভয় মডেলকে সংযুক্ত করে ৮৮টি লেয়ার সহ গ্রানাইট-৩৪বি-কোড মডেল তৈরি করি। ডেপথ আপস্কেলিংয়ের পরে, আমরা লক্ষ্য করি যে 20B মডেলের তুলনায় কর্মক্ষমতার হ্রাস খুব কম, যা -এর দ্বারা লক্ষ্য করা থেকে ভিন্ন। আপস্কেল করা ৩৪বি মডেলের প্রিট্রেনিং চালিয়ে যাওয়ার পরে এই কর্মক্ষমতা খুব দ্রুত পুনরুদ্ধার হয়। 20B-এর মতো, আমরা প্রিট্রেনিংয়ের সময় ৮১৯২ টোকেন কনটেক্সট ব্যবহার করি। ২ Kim et al. ৪ প্রিট্রেনিং এই বিভাগে, আমরা মডেলগুলির প্রিট্রেনিং-এ ব্যবহৃত দুই-দফা প্রশিক্ষণ (ধারা। ), প্রশিক্ষণের উদ্দেশ্য (ধারা। ), অপ্টিমাইজেশন (ধারা। ) এবং পরিকাঠামো (ধারা। ) সম্পর্কে বিস্তারিত আলোচনা করছি। ৪.১ ৪.২ ৪.৩ ৪.৪ ৪.১ দুই-দফা প্রশিক্ষণ গ্রানাইট কোড মডেলগুলি কোড ডেটা এবং কোড-সম্পর্কিত প্রাকৃতিক ভাষা ডেটাসেটগুলির ৩.৫টি থেকে ৪.৫টি টোকেনের উপর প্রশিক্ষিত। ডেটা বাইট পেয়ার এনকোডিং (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 টোকেন দিয়ে প্রশিক্ষিত হয়। ফেজ ১ (শুধুমাত্র কোড প্রশিক্ষণ) • : ফেজ ২-এ, আমরা মডেলের যুক্তির ক্ষমতা এবং সমস্যা সমাধানের দক্ষতা উন্নত করার জন্য বিভিন্ন ডোমেন থেকে অতিরিক্ত উচ্চ-মানের পাবলিকলি উপলব্ধ ডেটা অন্তর্ভুক্ত করি, যার মধ্যে টেকনিক্যাল, গণিত এবং ওয়েব নথি রয়েছে, যা কোড তৈরির জন্য অপরিহার্য। আমরা ফেজ ২ প্রশিক্ষণে সমস্ত মডেলকে ৫০০বি টোকেন (৮০% কোড এবং ২০% ভাষার ডেটা) দিয়ে প্রশিক্ষণ দিই। ফেজ ২ (কোড + ভাষা প্রশিক্ষণ) ৪.২ প্রশিক্ষণের উদ্দেশ্য আমাদের সমস্ত মডেলের প্রশিক্ষণের জন্য, আমরা কজাল ল্যাঙ্গুয়েজ মডেলিং অবজেক্টিভ এবং ফিল-ইন-দ্য-মিডল (FIM) ( , ) অবজেক্টিভ ব্যবহার করি। FIM অবজেক্টিভটি প্রদত্ত কনটেক্সট এবং পরবর্তী টেক্সট সহ সন্নিবেশিত টোকেনগুলি ভবিষ্যদ্বাণী করার কাজ। আমরা আমাদের মডেলগুলিকে PSM (Prefix-Suffix-Middle) এবং SPM (Suffix-Prefix-Middle) উভয় মোডে কাজ করার জন্য প্রশিক্ষণ দিই, প্রাসঙ্গিক ফরম্যাটিং কন্ট্রোল টোকেন সহ, StarCoder ( , )-এর মতো। Bavarian et al. 2022 Li et al. 2023a সামগ্রিক ক্ষতি দুটি উদ্দেশ্যের ওজনের সমন্বয় হিসাবে গণনা করা হয়: আমরা প্রশিক্ষণের সময় পরীক্ষামূলকভাবে α = ০.৫ সেট করি এবং এটি অনুশীলনে কোড কমপ্লিশন এবং কোড ইনফিলিং উভয় কাজে SOTA কর্মক্ষমতা অর্জনে ভাল কাজ করে বলে আমরা খুঁজে পেয়েছি। এটি উল্লেখ্য যে FIM অবজেক্টিভটি কেবল প্রিট্রেনিংয়ের সময় ব্যবহৃত হয়, তবে আমরা ইন্সট্রাকশন ফাইন-টিউনিংয়ের সময় এটি বাদ দিই অর্থাৎ আমরা α = ১ সেট করি। ৪.৩ অপ্টিমাইজেশন আমরা আমাদের সমস্ত গ্রানাইট কোড মডেলগুলির প্রশিক্ষণের জন্য β1 = ০.৯, β2 = ০.৯5 এবং ০.১ ওয়েট ডিকি সহ AdamW অপ্টিমাইজার ([Kingma & Ba](#_bookmark80), [2017](#_bookmark80)) ব্যবহার করি। ফেজ-১ প্রিট্রেনিংয়ের জন্য, লার্নিং রেটটি ২k ইটারেশনের প্রাথমিক লিনিয়ার ওয়ার্মআপ স্টেপ সহ ৩ × ১০−৫ পর্যন্ত হ্রাস পেয়ে ৩ × ১০−৪ থেকে শুরু করে একটি কসাইন শিডিউল অনুসরণ করে। ফেজ-২ প্রিট্রেনিংয়ের জন্য, আমরা ৩ × ১০−৪ (২০বি এবং ৩৪বি মডেলগুলির জন্য ১.৫ × ১০−৪) থেকে শুরু করি এবং এটিকে প্রাথমিক লার্নিং রেটের ১০% পর্যন্ত অ্যানিল করার জন্য একটি এক্সপোনেনশিয়াল ডিকি শিডিউল গ্রহণ করি। আমরা প্রিট্রেনিংয়ের উভয় পর্যায়ে মডেলের আকারের উপর নির্ভর করে ৪ মিলিয়ন-৫ মিলিয়ন টোকেনের একটি ব্যাচ সাইজ ব্যবহার করি। প্রশিক্ষণ ত্বরান্বিত করার জন্য, আমরা NVIDIA-এর Apex লাইব্রেরিতে উপলব্ধ FlashAttention 2 ( , Dao et al.