লেখক:
(1) ব্র্যান্ডন টি. উইলার্ড, নরমাল কম্পিউটিং;
(2) রেমি লাউফ, সাধারণ কম্পিউটিং।
সুনির্দিষ্টভাবে বলতে গেলে, আমরা 5-টুপল সসীম অটোমেটন ফর্মে নিয়মিত অভিব্যক্তি বিবেচনা করি [Sipser, 1996, সংজ্ঞা 1.5]:
সংজ্ঞা 1 (Finite Automaton)। একটি সসীম অটোমেটন, বা সসীম-রাষ্ট্র মেশিন, (Q, Σ, δ, q0, F) দ্বারা দেওয়া হয়, যেখানে Q হল রাজ্যগুলির একটি সসীম সেট, Σ একটি সসীম বর্ণমালা, δ : Q × Σ → Q রূপান্তর ফাংশন, q0 ∈ Q স্টার্ট স্টেট, এবং F ⊆ Q অ্যাকসেপ্ট স্টেটের সেট।
V তে স্ট্রিং সমন্বিত অক্ষরগুলি Σ থেকে আঁকা হয়েছে: যেমন V ⊂ P(Σ)। সর্বত্র, FSM রাজ্য, Q, সরলতার জন্য পূর্ণসংখ্যার মান দ্বারা প্রতিনিধিত্ব করা হবে।
উদাহরণ 1. আমরা রেগুলার এক্সপ্রেশন ([0-9]*)?\.?[0-9]* এর জন্য চিত্র 1-এ FSM স্যাম্পলিং প্রক্রিয়াটি চিত্রিত করি, যা ফ্লোটিংপয়েন্ট নম্বর তৈরি করতে ব্যবহার করা যেতে পারে। সরলতার জন্য, শব্দভান্ডার, V, শুধুমাত্র স্ট্রিংগুলি নিয়ে গঠিত হতে দিন: "A", ".", "42", ".2", এবং "1"।
যখন জেনারেশন শুরু হয়, FSM 0 অবস্থায় থাকে, তাই আমাদের অ্যালগরিদম স্ট্রিং "A" মাস্ক করে, যেহেতু এটি FSM দ্বারা গৃহীত হবে না। আমরা এই ক্ষেত্রে শুধুমাত্র ".", "42", ".2", এবং "1" নমুনা দিতে পারি।
যদি আমরা ".2" নমুনা করি, তাহলে আমরা FSM-কে রাজ্য 3-এ অগ্রসর করি৷ এই ক্ষেত্রে, শুধুমাত্র "42" এবং "1" বৈধ সমাপ্তি, তাই আমরা নমুনা নেওয়ার আগে অন্যান্য মানগুলি মাস্ক করি৷ আমরা যদি পরিবর্তে "1" নমুনা করি, তাহলে আমরা FSM-কে রাজ্য 1-এ অগ্রসর করি, এই ক্ষেত্রে ".", ".42", ".2", এবং "1" বৈধ সমাপ্তি এবং মুখোশ অপরিবর্তিত থাকে।
বৈধ পরবর্তী টোকেন নির্ধারণ করতে শব্দভান্ডারের মাধ্যমে লুপ করা এখনও সবচেয়ে বড় সমস্যা। তার জন্য, আমরা রেগুলার এক্সপ্রেশনের এফএসএম ব্যবহার করে শব্দভাণ্ডারকে প্রাক-প্রক্রিয়া করি এবং একটি সূচক তৈরি করি। গুরুত্বপূর্ণ অংশটি হল যে আমরা প্রতিটি কার্যকরী FSM অবস্থায় শুরু করার কথা বিবেচনা করি, কারণ শব্দভান্ডারের স্ট্রিংগুলি একটি নিয়মিত অভিব্যক্তির নির্বিচারে অংশগুলির সাথে মেলে এবং সেই অংশগুলি অন্তর্নিহিতভাবে FSM রাজ্য।
এফএসএম-এর যেকোন বিন্দুতে শুরু হওয়া ম্যাচগুলি তৈরি করার একটি পদ্ধতি অ্যালগরিদম 3-এ দেওয়া হয়েছে। ফলাফল হল উপ-ক্রমগুলির একটি তালিকা যা রাজ্যগুলির বিশদ বিবরণ দেয় যেগুলির মাধ্যমে FSM প্রদত্ত স্ট্রিং গ্রহণ করার সময় অতিক্রম করবে।
অ্যালগরিদম 2 এ লুপের একক ধাপে আগত শেষ এফএসএম অবস্থার সাথে এই সাব-সিক্যুয়েন্সের প্রারম্ভিক অবস্থার সাথে মিল করে, আমরা দক্ষতার সাথে একটি মানচিত্র, σ : Q → P(V), FSM রাজ্যগুলিকে সংযুক্ত করে শব্দভান্ডারকে সূচী করতে পারি এবং শব্দভান্ডারের উপাদানগুলির সেট যা সেই রাজ্যগুলিতে FSM দ্বারা গ্রহণ করা হবে।
অ্যালগরিদম 4 σ এর নির্মাণ বর্ণনা করে।
σ-এর জন্য একটি হ্যাশ-ম্যাপ ব্যবহার করলে অ্যালগরিদম 2-এ m ধাপের জন্য গড়ে শুধুমাত্র O(1) খরচ হতে পারে। অধিকন্তু, যেহেতু σ টোকেন স্যাম্পলিং পদ্ধতির বাইরে তৈরি করা হয়েছে, তাই এর রান-টাইম খরচ কার্যকরভাবে অপ্রাসঙ্গিক, যদিও এটির জন্য তাত্ত্বিকভাবে FSM-এর রাজ্যের সংখ্যার সমান মেমরি প্রয়োজন (যেমন | Q|)। সৌভাগ্যবশত, নিয়মিত অভিব্যক্তি এবং শব্দভান্ডারের অ-প্যাথলজিকাল সমন্বয়ের জন্য, শব্দভান্ডারের প্রতিটি স্ট্রিং FSM দ্বারা গৃহীত হবে না এবং প্রতিটি FSM অবস্থা V-তে একটি স্ট্রিং দ্বারা প্রতিনিধিত্ব করা হবে না।
এই বিভাগে আমরা GPT2-মাঝারি (355M প্যারামিটার) ব্যবহার করি কীভাবে রেগুলার এক্সপ্রেশন গাইডেড জেনারেশন অনুশীলনে কাজ করে তা বোঝাতে। আমরা সেগুলি তৈরি করতে লাইব্রেরির রূপরেখা ব্যবহার করি:
তালিকা 3.1 - অব্যাহত
তালিকা 3.3 - অব্যাহত
এখানে বর্ণিত ইন্ডেক্সিং পদ্ধতির কার্যকারিতা বোঝাতে এবং আউটলাইনে প্রয়োগ করা হয়েছে, আমরা গাইডেন্স লাইব্রেরির সাথে একটি সহজ তুলনা করি। এই লেখার মতো, গাইডেন্স লাইব্রেরি আংশিক রেগুলার এক্সপ্রেশন ম্যাচিং ব্যবহার করে–প্রতিবার নমুনাকৃত সিকোয়েন্সের শুরু থেকে প্রয়োগ করা হয়–এবং প্রতিটি ধাপে অবশ্যই এলএলএম-এর শব্দভাণ্ডার (N = 50, 257) পুনরাবৃত্তি করতে হবে।
এই তুলনার জন্য ব্যবহৃত গাইডেন্স কোড এবং প্রম্পট নিম্নরূপ:
তালিকা 3.4 - অব্যাহত
সংশ্লিষ্ট আউটলাইন কোড নিম্নরূপ:
তালিকা 3.5 - অব্যাহত
max_tokens-এর মান বৈচিত্র্যময় এবং একটি একক লুপ এবং একক পুনরাবৃত্ত মান (অর্থাৎ max_tokens-এর প্রতিটি মানের জন্য শুধুমাত্র একটি নমুনা সংগ্রহ করা হয়) এর জন্য টাইমিং এর সাথে সময় রেকর্ড করা হয়। ফলাফল বিভাগ 3.2 এ প্লট করা হয়েছে।
যেকোন কনফিগারেশন ওভারসাইটগুলি বাদ দিয়ে যা একটি বড় রানটাইম অসঙ্গতি তৈরি করতে পারে, সর্বাধিক সংখ্যক নমুনাযুক্ত টোকেনগুলিতে পর্যবেক্ষণ করা স্কেলিং আকর্ষণীয় এবং পদ্ধতির দ্বারা নিহিত ক্রমবর্ধমান গণনাগত সমস্যাটির নির্দেশক৷
এই কাগজটি CC 4.0 লাইসেন্সের অধীনে arxiv-এ উপলব্ধ ।