ভূমিকা
ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্টস (আইডিই)-এর জগতে স্বয়ংক্রিয়ভাবে কোড সম্পূর্ণ করার বৈশিষ্ট্যগুলি দীর্ঘদিন ধরে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে আসছে। তবে, এই ক্ষেত্রে একটি নতুন প্রতিযোগী প্রবেশ করেছে: কৃত্রিম বুদ্ধিমত্তা (এআই)। আইডিইতে এআই-এর ব্যবহার ক্রমশ বাড়ছে, যা সনাতন সরঞ্জামগুলির কার্যকারিতা নিয়ে নতুন করে ভাবাচ্ছে। পুরনো পদ্ধতিগুলি এখনও কার্যকর থাকলেও, প্রোগ্রামাররা এখন অত্যাধুনিক সহায়তা আশা করেন, যা হয়তো সেগুলিতে পাওয়া যায় না।
এই নিবন্ধটি জেটব্রেইনস-এর একটি ব্লগ পোস্ট থেকে নেওয়া হয়েছে। এখানে মেলুম-এর প্রশিক্ষণ এবং ক্ষমতা নিয়ে আলোচনা করা হয়েছে। মেলুম একটি মডেল, যা ক্লাউড-ভিত্তিক স্বয়ংক্রিয় কোড সম্পূর্ণ করার কাজে ব্যবহৃত হয়। জেটব্রেইনস প্রোগ্রামারদের জন্য আইডিই এবং কোড এডিটর তৈরি করার জন্য বিখ্যাত। তারা মেলুম তৈরি করেছে দ্রুত এবং কার্যকর কোড স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার জন্য। মেলুম স্থানীয় ডিভাইসে কাজ করার জন্য ডিজাইন করা হয়েছে, যা এটিকে এই ধরণের মডেলগুলির মধ্যে অন্যতম দ্রুত এবং ছোট করে তুলেছে। মাইক্রোসফট ফাই (Microsoft Phi) একটি অনুরূপ প্রকল্প।
গুরুত্বপূর্ণ চ্যালেঞ্জসমূহ
এআই-চালিত স্বয়ংক্রিয় কোড সম্পূর্ণ করার চেষ্টা করার সময় জেটব্রেইনস-এর প্রকৌশলীরা বেশ কিছু গুরুত্বপূর্ণ সমস্যার সম্মুখীন হয়েছিলেন:
- গতি এবং খরচ: প্রচলিত চ্যাট মডেলগুলি তাদের উচ্চ কম্পিউটিং খরচ এবং ধীর গতির কারণে ব্যবহারিক ছিল না। এই মডেলগুলিতে কোড-নির্দিষ্ট কৌশল, যেমন ফিল-ইন-দ্য-মিডল (এফআইএম) বা টোকেন হিলিং সম্পর্কে ধারণা ছিল না।
- আউটপুট বিন্যাস: প্রধান চ্যাট মডেলগুলি প্রায়শই অসঙ্গতিপূর্ণ বিন্যাসে ডেটা তৈরি করত, যার ফলে প্রতিক্রিয়াগুলি বিশ্লেষণ করা এবং সেগুলিকে সম্পাদকের সাথে একত্র করা কঠিন ছিল।
- ডেটা উৎস: প্রশিক্ষণ ডেটার উৎস নির্ধারণ এবং সম্ভাব্য কপিরাইট লঙ্ঘনজনিত সমস্যাগুলি কমানো একটি বড় বাধা ছিল।
মেলুম: একটি সংক্ষিপ্ত বিবরণ
জেটব্রেইনস-এর উন্নয়ন দল বুঝতে পেরেছিল যে নিজস্ব মডেল তৈরি করাই সেরা উপায়। তাদের লক্ষ্য ছিল এমন একটি মডেল তৈরি করা, যা গুণমান, অনুমানের খরচ এবং বিলম্বের মধ্যে ভারসাম্য বজায় রাখতে পারে এবং যে ডেটা দিয়ে প্রশিক্ষণ দেওয়া হয়েছে তার উৎস সম্পর্কে স্পষ্ট ধারণা থাকে। প্রাথমিক গবেষণায় দেখা গেছে যে প্রায় ৪ বিলিয়ন প্যারামিটার যুক্ত একটি মডেল বিভিন্ন পরিস্থিতিতে এবং ব্যবহারকারীর জন্য উপযুক্ত স্বয়ংক্রিয় কোড সম্পূর্ণ করার ক্ষমতা প্রদান করতে পারে। উপরন্তু, শুধুমাত্র কোড দিয়ে মডেলটিকে প্রশিক্ষণ দেওয়ার মাধ্যমে, তারা টোকেনের একটি বিশেষ শব্দভাণ্ডার তৈরি করতে পারত, যা অপ্রাসঙ্গিক ডেটা থেকে মুক্ত থাকত।
মেলুম মডেলের প্রশিক্ষণ প্রক্রিয়া তিনটি স্বতন্ত্র পর্যায়ে বিভক্ত, প্রতিটি পর্যায় নতুন জ্ঞান যোগ করে এবং উৎপন্ন কোডের গুণমান বৃদ্ধি করে। প্রথম পর্যায়ে, মডেলটিকে একটি বৃহৎ সংখ্যক স্বতন্ত্র ফাইলের উপর প্রাথমিক প্রশিক্ষণ দেওয়া হয়। দ্বিতীয় পর্যায়ে, বিশেষ উদাহরণগুলির একটি ছোট সেটের মাধ্যমে মডেলটিকে আরও উন্নত করা হয়। তৃতীয় পর্যায়ে, এআই প্রতিক্রিয়া সহ রিইনফোর্সমেন্ট লার্নিং (আরএলএআইএফ) ব্যবহার করে মডেলটিকে আইডিই-নির্দিষ্ট বৈশিষ্ট্যগুলির সাথে খাপ খাইয়ে নেওয়া হয় এবং অবাঞ্ছিত আউটপুটগুলি বাদ দেওয়া হয়।
প্রি-ট্রেনিং
ডেটার উৎস সম্পর্কে অস্পষ্টতা সংক্রান্ত সমস্যা এড়াতে, মডেলটিকে একেবারে শুরু থেকে প্রশিক্ষণ দেওয়া হয়েছিল। এর জন্য বিভিন্ন ভাষা, প্রোগ্রামিং সিনট্যাক্স, প্যাটার্ন এবং মূল ধারণা সম্পর্কে বিস্তারিত জ্ঞান দেওয়া জরুরি ছিল।
ডেটা সেট
প্রি-ট্রেনিংয়ের জন্য প্রধান ডেটা উৎস ছিল দ্যস্ট্যাক (TheStack)। এই ডেটা সেট নিশ্চিত করে যে ডেটা আইনগতভাবে বৈধ এবং ব্যবহারিকভাবে উপকারী।
প্রি-ট্রেনিং প্রক্রিয়া
প্রি-ট্রেনিংয়ের সময়, ডেটা সেট থেকে একাধিকবার নমুনা নেওয়া হয়েছিল, যাতে প্রায় ৩ ট্রিলিয়ন টোকেন ব্যবহার করা যায়। ৮১৯২ টোকেনের একটি কনটেক্সট উইন্ডো ব্যবহার করা হয়েছিল এবং ডেটা সেটটিকে এই আকারের খণ্ডগুলিতে বিভক্ত করা হয়েছিল। প্রতিটি খণ্ডের অর্ধেক ফাইলের জন্য ফিল-ইন-দ্য-মিডল (এফআইএম) পরিবর্তন প্রয়োগ করা হয়েছিল, যা মডেলটিকে পূর্ববর্তী এবং পরবর্তী উভয় কোড বিবেচনা করতে উৎসাহিত করে। এই কৌশলটি বাস্তব কোড তৈরির পরিস্থিতিকে ঘনিষ্ঠভাবে অনুকরণ করে।
প্রি-ট্রেনিং ফেজটি ১৬টি নোডের একটি ক্লাস্টারে পরিচালিত হয়েছিল, যার প্রতিটিতে আটটি এইচ১০০ জিপিইউ (H100 GPUs) ছিল। এই পর্যায়টি সম্পন্ন করতে প্রায় ১৫ দিন লেগেছিল, যার ফলে ৪ বিলিয়ন প্যারামিটার যুক্ত মেলুম-বেস মডেল তৈরি হয়েছিল।
প্রি-ট্রেনিং একটি সাধারণ-উদ্দেশ্যমূলক কোড স্বয়ংক্রিয় সম্পূর্ণ করার মডেল তৈরি করে, যা অনেক প্রোগ্রামিং ভাষা সম্পর্কে বিস্তৃত জ্ঞান রাখে। তবে, এই পর্যায়ে, মডেলটিকে কেবল এলোমেলোভাবে নির্বাচিত ফাইল সেগমেন্টে পরবর্তী টোকেনটি অনুমান করার জন্য প্রশিক্ষণ দেওয়া হয়। অতিরিক্ত কনটেক্সট ছাড়া, মডেলটি কোড কাঠামো সম্পর্কে সচেতন নয় এবং কোড তৈরি করা কখন বন্ধ করতে হবে তা নির্ধারণ করার জন্য কোনও মেকানিজম নেই।
ফাইন-টিউনিং পর্যায়টি এই সীমাবদ্ধতাগুলি মোকাবেলা করার জন্য ডিজাইন করা হয়েছে।
কনটেক্সট-সচেতন ফাইন-টিউনিং
উন্নত ফিল-ইন-দ্য-মিডল
প্রি-ট্রেনিংয়ের বিপরীতে, যেখানে ভবিষ্যদ্বাণী করার জন্য এলোমেলোভাবে কোড খণ্ড নির্বাচন করা হয়, ফাইন-টিউনিং আরও অর্থবহ উপায়ে কোডকে বিভক্ত করার উপর মনোযোগ দেয়। এর মাধ্যমে মডেলটিকে “ইন দ্য ওয়াইল্ড”-এ ঘটা কোড খণ্ডগুলি বের করতে শেখানো হয়।
বিশেষ উদাহরণ
বাস্তবে, কোড স্বয়ংক্রিয়ভাবে সম্পূর্ণ করতে হলে চারপাশের ফাইল এবং বৃহত্তর প্রেক্ষাপট বোঝা দরকার, যার মধ্যে পুরো প্রকল্প অন্তর্ভুক্ত থাকতে পারে।
ডেটা প্রসেসিংয়ের জন্য, কোম্পানি কোড ইঞ্জিন নামে একটি অভ্যন্তরীণ প্রকল্প শুরু করেছে: এটি একটি ক্রস-платফর্ম SDK এবং কনসোল ইউটিলিটিগুলির একটি সেট, যা সম্পূর্ণ প্রোজেক্ট ইনডেক্সিংয়ের প্রয়োজন ছাড়াই সরাসরি সাধারণ ফাইল থেকে কনটেক্সট তৈরি করার জন্য তৈরি করা হয়েছে। এই SDK একটি অভ্যন্তরীণ ম্যাপরিডিউস ক্লাস্টারে স্থাপন করা হয়েছিল এবং যুক্তিসঙ্গত সময়ের মধ্যে প্রশিক্ষণের জন্য অনেকগুলি দরকারী উদাহরণ তৈরি করতে হাজার হাজার পাবলিক রিপোজিটরি প্রক্রিয়া করতে ব্যবহৃত হয়েছিল।
সঠিক অ্যালগরিদম খুঁজে বের করতে কিছু চেষ্টা এবং ত্রুটি লেগেছিল।
নির্দিষ্ট ভাষার জন্য টিউনিং
ছোট মডেলগুলি নির্দিষ্ট ভাষার জন্য বিশেষীকরণ থেকে অনেক উপকৃত হতে পারে। যদিও বেস মডেলটি ৮০টিরও বেশি ভাষায় প্রশিক্ষিত, তবে বেশিরভাগ ব্যবহারকারী সাধারণত এক বা দুটি ভাষার সাথে কাজ করেন। এটি মোকাবেলার জন্য, জেটব্রেইনস একাধিক বিশেষ মডেল তৈরি করেছে:
- মেলুম-অল: জেটব্রেইনস আইডিইতে উপলব্ধ বেশিরভাগ ভাষা এবং উপভাষা সমর্থন করে, তবে বিশেষ মডেলগুলির তুলনায় স্বয়ংক্রিয় সম্পূর্ণ করার গুণমান কম।
- মেলুম-পাইথন: পাইথন এবং জুপিটার-এ বিশেষজ্ঞ।
- মেলুম-কটলিন: জাভা এবং কটলিনে বিশেষজ্ঞ।
- মেলুম-ওয়েব: ওয়েব প্রযুক্তিতে বিশেষজ্ঞ।
চূড়ান্ত পদক্ষেপ: আরএলএআইএফ
অবশেষে, যেখানে শেখার লক্ষ্য ব্যবহারকারীর প্রত্যাশার সাথে মেলে না, সেই সমস্যাগুলি সমাধান করতে হবে। অতিরিক্ত প্রশিক্ষণ ফেজ, আরএলএআইএফ - এআই ফিডব্যাক সহ রিইনফোর্সমেন্ট লার্নিং, এই ধরনের সমস্যা সমাধানের জন্য ব্যবহৃত হয়।
মডেলটি ব্যবহারকারীর ইন্টারঅ্যাকশন থেকে শেখে এবং ব্যবহারকারীর পছন্দগুলিকে আরও ভালভাবে প্রতিফলিত করতে পারে।
এই পদ্ধতি শুধুমাত্র সামগ্রিক মানের স্কোর উন্নত করে না, বিরক্তিকর জেনারেশন আর্টিফ্যাক্টের সংখ্যাও হ্রাস করে।
মেলুম কতটা ভালো?
মডেলটি তার আকারের জন্য ব্যতিক্রমীভাবে ভাল পারফর্ম করে। এটি কীভাবে মূল্যায়ন করা হয়েছিল তা এখানে উল্লেখ করা হলো:
- প্রথমত, মডেলটিকে “জেটব্রেইনস বিগকোড” নামক একটি অভ্যন্তরীণ বেঞ্চমার্কে মূল্যায়ন করা হয়েছিল।
- তারপর এটি এসএএফআইএম-এর মতো সুপরিচিত পাবলিক বেঞ্চমার্কে পরীক্ষা করা হয়েছিল।
- অবশেষে, বৈশিষ্ট্যগুলির ব্যবহারের পরিসংখ্যান সংগ্রহ করা হয়েছিল এবং ব্যবহারকারীর মেট্রিক গণনা করা হয়েছিল।
অফলাইন মূল্যায়ন
ডেটা সংগ্রহ করা একটি জটিল কাজ, তবে একটি ভাল মেট্রিক তৈরি করা যা নিউরাল নেটওয়ার্ক দ্বারা প্রস্তাবিত নতুনটির সাথে মূল পরামর্শের তুলনা করে, সেটি আরও বেশি চ্যালেঞ্জিং। আমরা একটি ছোট গবেষণা পরিচালনা করেছি এবং শেষ পর্যন্ত দুটি প্রাথমিক মেট্রিকের সংমিশ্রণে স্থির হয়েছি:
ইএম:
- এক্সাক্ট ম্যাচ একটি খুব জনপ্রিয় ধারণা।
- যদি সমাপ্তির প্রথম লাইনটি ন্যূনতম প্রসেসিং সহ মূলটির প্রথম লাইনের সাথে মেলে তবে একটি ভবিষ্যদ্বাণী ভাল বলে বিবেচিত হয়।
কেকে:
- মেট্রিকটির নামকরণ করা হয়েছে এর লেখকদের নামে।
- প্রস্তাবিত সমাপ্তিতে লাইনের সংখ্যা দ্বারা বিভক্ত মূল থেকে প্রস্তাবিত লাইনের সংখ্যা।
জেটব্রেইনস বিগকোড
মডেলটিকে অভ্যন্তরীণ জেটব্রেইনস বিগকোড সরঞ্জাম ব্যবহার করে প্রাপ্ত একটি বেঞ্চমার্ক ডেটাসেটের বিরুদ্ধে মূল্যায়ন করা হয়েছিল।
পাবলিক বেঞ্চমার্কের উপর নির্ভর করার পরিবর্তে আমাদের ডেটাসেটের উপর সম্পূর্ণ নিয়ন্ত্রণ বজায় রাখার মাধ্যমে, বিভিন্ন কোডিং শৈলী এবং অনুশীলনের জন্য মডেলের গুণমান নির্ভরযোগ্যভাবে মূল্যায়ন করা সম্ভব হয়।
আমাদের জেটব্রেইনস বিগকোড মূল্যায়নের ফলাফল জনপ্রিয় মডেলের সাথে সমমানের গুণমান দেখায়, তবে মেলুম ছোট এবং আরও দক্ষ।
একক-লাইন পরামর্শের গুণমান (ইএম মেট্রিক)
পাবলিক বেঞ্চমার্ক
মডেলটিকে শুধুমাত্র অভ্যন্তরীণ ডেটাসেটে নয়, এসএএফআইএম (সিনট্যাক্স-অ্যাওয়ার ফিল ইন দ্য মিডল) এর মতো বিভিন্ন পাবলিক বেঞ্চমার্কেও মূল্যায়ন করা হয়েছিল।
অনলাইন মূল্যায়ন
প্রধান মেট্রিকটিকে কোড সমাপ্তির অনুপাত (আরওসিসি) বলা হয়। এটিকে কোড সম্পাদকের মোট কোডের পরিমাণে কোড স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার মাধ্যমে লেখা কোড অক্ষরের অনুপাত হিসাবে সংজ্ঞায়িত করা হয়।
আরেকটি গুরুত্বপূর্ণ মেট্রিক হল গ্রহণযোগ্যতার হার (এআর), যা দেখানো সমস্ত পরামর্শের সংখ্যা দ্বারা বিভক্ত গৃহীত পরামর্শের সংখ্যা হিসাবে গণনা করা হয়।
এটি একটি জটিল যাত্রা ছিল, কিন্তু জেটব্রেইনসের বিশেষজ্ঞরা সম্মানের সাথে এটি সম্পন্ন করেছেন। শেষ পর্যন্ত, একটি সাধারণ এবং বেশ কয়েকটি বিশেষ মডেল পাওয়া গেছে, যা জেটব্রেইনস এআই প্ল্যাটফর্মের মাধ্যমে উপলব্ধ। সেগুলি এখন জেটব্রেইনস এআই অ্যাসিস্ট্যান্টে সফলভাবে কাজ করছে।
পরবর্তী পদক্ষেপ
- জেটব্রেইনসের প্রকৌশলীরা বর্তমানে ওয়েব ডেভেলপমেন্ট ভাষার জন্য একটি মডেলের উপর কাজ করছেন। এটি অদূর ভবিষ্যতে সর্বজনীনভাবে উপলব্ধ হতে পারে।
- একই সাথে প্যারামিটারের সংখ্যা এবং ডেটার বৈচিত্র্য উভয়ই বাড়ানোর পরিকল্পনা রয়েছে। কোডিংয়ে অনেক আলাদা কাজ রয়েছে - মেলুম সেগুলিও করতে সক্ষম হবে। পরিষেবা কর্মক্ষমতা এখনও একটি মূল মেট্রিক, তাই মডেলের সম্প্রসারণ যুক্তিসঙ্গত সীমার মধ্যে থাকবে।