Gemma বিন্যাস এবং সিস্টেম নির্দেশাবলী

নির্দেশ টিউনিং জন্য বিন্যাস

ইন্সট্রাকশন-টিউনড (আইটি) মডেলগুলিকে একটি নির্দিষ্ট ফর্ম্যাটার দিয়ে প্রশিক্ষিত করা হয় যা প্রশিক্ষণ এবং অনুমান উভয় সময়ে অতিরিক্ত তথ্য সহ সমস্ত নির্দেশ টিউনিং উদাহরণ টীকা করে। ফরম্যাটারটির দুটি উদ্দেশ্য রয়েছে:

  1. একটি কথোপকথনে ভূমিকা নির্দেশ করে, যেমন সিস্টেম , ব্যবহারকারী বা সহকারী ভূমিকা।
  2. কথোপকথনে মোড় বর্ণনা করা, বিশেষ করে বহু-পালা কথোপকথনে।

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

  • ব্যবহারকারীর পালা নির্দেশ করতে টোকেন: user
  • একটি মডেল টার্ন নির্দেশ করতে টোকেন: model
  • সংলাপের মোড়ের শুরু নির্দেশ করার জন্য টোকেন: <start_of_turn>
  • সংলাপের মোড়ের শেষ নির্দেশ করার জন্য টোকেন: <end_of_turn>

এখানে একটি উদাহরণ সংলাপ:

<start_of_turn>user
knock knock<end_of_turn>
<start_of_turn>model
who is there<end_of_turn>
<start_of_turn>user
Gemma<end_of_turn>
<start_of_turn>model
Gemma who?<end_of_turn>

টোকেন "<end_of_turn>\n" হল টার্ন বিভাজক, এবং প্রম্পট উপসর্গ হল "<start_of_turn>model\n" । এর মানে হল যে আপনি যদি মডেলটিকে একটি প্রশ্ন সহ প্রম্পট করতে চান, "ক্র্যামারের নিয়ম কী?", তাহলে আপনাকে পরিবর্তে মডেলটিকে নিম্নরূপ খাওয়াতে হবে:

"<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model"

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

সিস্টেম নির্দেশাবলী

তত্ত্বাবধানকৃত ফাইন-টিউনিং (SFT) এবং মানব প্রতিক্রিয়া (RLHF) থেকে রিইনফোর্সমেন্ট লার্নিং উভয়ের জন্য, মডেলগুলিকে সিস্টেম নির্দেশাবলী দিয়ে প্রশিক্ষিত করা হয়নি। ফলস্বরূপ, জেমার জন্য শুধুমাত্র প্রাসঙ্গিক ফর্ম্যাটিং টোকেনগুলি হল <start_of_turn> , <end_of_turn> , user , এবং model । উদাহরণ স্বরূপ:

<start_of_turn>user
What is Cramer's Rule?<end_of_turn>
<start_of_turn>model
Cramer's Rule is ...<end_of_turn>

FIM কার্যগুলির জন্য বিন্যাসকরণ৷

CodeGemma 2B এবং 7B ভেরিয়েন্টগুলি বিশেষভাবে কোড ইনফিলিং কাজের জন্য টিউন করা হয়েছে৷

বিশেষত, তারা চারটি ফর্ম্যাটিং কন্ট্রোল টোকেনের উপর প্রশিক্ষিত হয় যা আপনি ফিল-ইন-দ্য-মিডল (FIM) কোডিং কাজের জন্য মডেল প্রম্পট তৈরি করতে সাহায্য করতে পারেন।

প্রসঙ্গ টোকেন
FIM উপসর্গ `<
FIM প্রত্যয় `<
FIM মধ্যম `<
ফাইল বিভাজক `<

FIM টোকেন ব্যবহার করুন কার্সারের অবস্থান এবং এর চারপাশের প্রসঙ্গ সংজ্ঞায়িত করার জন্য CodeGemma যাতে কোড ইনফিলিং করতে পারে। মাল্টি-ফাইল প্রসঙ্গের জন্য ফাইল বিভাজক টোকেন ব্যবহার করুন।

উদাহরণ - একটি FIM প্রম্পট তৈরি করুন

এই বিভাগটি কেরাস কোডজেমা কুইকস্টার্টের উদাহরণটি পুনরায় ব্যবহার করে আপনাকে দেখাতে যে কিভাবে FIM কাজের জন্য একটি প্রম্পট তৈরি করতে হয়।

নিম্নলিখিত কোড বিবেচনা করুন:

import |⏎ # Line 1
if __name__ == '__main__':⏎ # Line 2
   sys.exit(0) # Line 3

| কার্সারের অবস্থান নির্দেশ করে যেখানে কোডটি সম্পূর্ণ করতে হবে। মনে রাখবেন যে কার্সারের আগে একটি স্পেস আছে এবং লাইন 1 এবং 2 এর শেষে ক্যারেজ রিটার্ন আছে।

উপসর্গ তাহলে,

import

শেষে একটি স্থান সহ।

প্রত্যয়টি হল:

⏎
if __name__ == '__main__':⏎
   sys.exit(0)

শুরুতে একটি নতুন লাইন সহ।

প্রম্পটটি এইভাবে তৈরি করা উচিত:

<|fim_prefix|>import <|fim_suffix|>⏎
if __name == '__main__':⏎
   sys.exit(0)<|fim_middle|>

মনে রাখবেন যে:

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

মডেল আউটপুট বোঝা

উপরের উদাহরণের জন্য মডেল প্রতিক্রিয়া হবে:

<|fim_prefix|>import <|fim_suffix|>⏎
if __name__ == "__main__":\n    sys.exit(0)<|fim_middle|>sys\n<|file_separator|>

মডেল ইনপুট প্রম্পট পুনরাবৃত্তি করে এবং কোড সমাপ্তি হিসাবে sys প্রদান করে।

FIM কাজের জন্য CodeGemma মডেলগুলি ব্যবহার করার সময়, প্রতিক্রিয়া টোকেনগুলি স্ট্রিম করুন এবং FIM বা ফাইল বিভাজক টোকেনগুলিকে ডিলিমিটার হিসাবে ব্যবহার করুন স্ট্রিমিং বন্ধ করতে এবং ফলস্বরূপ কোড সমাপ্তি পেতে৷