LLMها واقعاً چطور کار می‌کنند؟

ویدیوی مرتبط با این مقاله

اگر ترجیح می‌دهی این مطلب را ویدیویی ببینی، این ویدیو را تماشا کن:

  • خلاصه سریع فصل
  • مثال‌های ساده و تصویری
  • همراه با جزوه همین صفحه
youtu.be/61EAHJr2-jU لینک کوتاه یوتیوب
فصل دوم • شناخت مدل‌های زبانی بزرگ

LLMها واقعاً چطور کار می‌کنند؟

از اینکه مدل چطور الگوهای متن را یاد می‌گیرد و چرا گاهی «توهم» می‌زند، تا توکن‌سازی، تولید مرحله‌به‌مرحله، دما، سازوکار توجه و معماری ترنسفورمر؛ این فصل یک تصویر ذهنی روشن می‌دهد تا بفهمی پشت پاسخ‌های یک LLM واقعاً چه می‌گذرد.

🔤توکنایزرشکستن متن به توکن
🧮بردارهای معنایینمایش عددی معنا
🌡️دماکنترل تنوع پاسخ
📏پنجرهٔ زمینهمحدودهٔ متنِ در دسترس مدل
⚙️ترنسفورمرهستهٔ معماری LLM
 
فصل ۰۲ شناخت
LLMها
از توکن تا ترنسفورمر
📚 جزوه‌ی آموزشی 🧠 مفهومی و ساده 🎨 رنگی و خوش‌خوان
متن → توکنایزر → توکن‌ها → ترنسفورمر → احتمال‌های توکن بعدی → نمونه‌گیری → پاسخ
نسخه‌ی مستقل فارسی • توضیح‌محور • بازنویسی کامل از منبع
🔤 اول باید متن خرد شود
نقشه‌ی فصل

آخر این فصل دقیقاً چه چیزی را می‌فهمی؟

قبل از اینکه بخواهیم پرامپت خوب بنویسیم، باید یک چیز مهم را بفهمیم: مدل زبانی متن را مثل ما نمی‌بیند. بعضی کارهایی که برای ما خیلی ساده‌اند، مثل شمردن حروف یک کلمه، ممکن است برای مدل سخت باشند؛ و برعکس، نوشتن یک متن بلند برایش راحت باشد.

قرار نیست وارد فرمول‌های سنگین شویم. هدف این فصل این است که با چند مثال ساده بفهمیم مدل چطور متن را می‌خواند، چطور کلمهٔ بعدی را انتخاب می‌کند و چرا گاهی جواب‌های عجیب می‌دهد.

مثال خیلی ساده مثلاً اگر به مدل بگویی «در کلمهٔ strawberry چند تا r هست؟» شاید اشتباه کند، اما همان مدل می‌تواند در چند ثانیه یک مقالهٔ طولانی بنویسد. این فصل توضیح می‌دهد چرا.
  1. 01LLM در ساده‌ترین تعریف چیست؟
  2. 02آموزش، مدل پایه و آموزش تکمیلی
  3. 03مدل‌ها الگو را یاد می‌گیرند، نه اینکه موتور جست‌وجو باشند
  4. 04بیش‌برازش و تفاوت حفظ‌کردن با تعمیم‌دادن
  5. 05به پرامپت مثل شروع یک متن نیمه‌کاره نگاه کن
  6. 06چرا انسان مکث و تحقیق می‌کند ولی مدل مجبور است حدس بزند؟
  7. 07توهم و سوگیریِ پذیرش فرض
  8. 08توکنایزر، توکن و واژگان
  9. 09سه تفاوت مهم بین دیدن متن توسط انسان و LLM
  10. 10پنجرهٔ زمینه و شمارش توکن
  11. 11تولید خودبازگشتی و تولید یک توکن در هر مرحله
  12. 12چرا مدل نمی‌تواند واقعاً برگردد و اشتباهش را پاک کند؟
  13. 13دامِ الگو و تکرارهای عجیب
  14. 14احتمال، احتمال لگاریتمی، نمونه‌گیری و دما
  15. 15جست‌وجوی پرتوی و انتخاب دنباله بهتر
  16. 16ترنسفورمر به زبان مغزهای کوچک
  17. 17توجه به‌عنوان سؤال و جواب
  18. 18ماسک‌گذاری، پردازش موازی و چرا پرامپت سریع‌تر از خروجی پردازش می‌شود
  19. 19حرکت رو به عقب / رو به پایین و اثر ترتیب پرامپت
  20. 20مدل ذهنی نهایی، واژه‌نامه و چک‌لیست مهندسی
📏 سقف حافظه‌ی مدل
01 • LLM چیست؟

اول از همه: LLM واقعاً چه کاری انجام می‌دهد؟

وقتی با ChatGPT حرف می‌زنیم، حس می‌کنیم یک نفر آن طرف صفحه نشسته، سؤال را می‌فهمد، فکر می‌کند و بعد جواب می‌دهد. برای استفادهٔ روزمره این تصویر بد نیست؛ اما اگر بخواهیم رفتار مدل را درست بفهمیم، باید یک قدم ساده‌تر نگاه کنیم.

در پایه‌ای‌ترین حالت، مدل یک متن می‌گیرد و سعی می‌کند ادامهٔ مناسب آن را بسازد. چیزی که ما می‌فرستیم «پرامپت» است و چیزی که مدل تولید می‌کند «پاسخ» یا ادامهٔ متن است.

یک مدل آموزش‌ندیده تقریباً چیزی از زبان نمی‌داند و خروجی‌اش می‌تواند بی‌معنا باشد. آموزش باعث می‌شود کم‌کم الگوهای زبان را یاد بگیرد؛ مثلاً بفهمد بعد از «سلام، حالت...» احتمال آمدن «خوبه؟» خیلی بیشتر از یک کلمهٔ تصادفی است.

مثال خیلی ساده به مدل جملهٔ «امروز هوا خیلی...» را بده. احتمال اینکه ادامه بدهد «گرمه» یا «سرده» خیلی بیشتر از این است که بگوید «میز». مدل دائماً همین بازیِ حدس‌زدن ادامهٔ مناسب را انجام می‌دهد.
نگاه بیرونی به مدل
پرامپت متنی
LLM
ادامهٔ متن
پرامپت و ادامهٔ تولیدشده (Prompt / Completion)

پرامپت متنی است که به مدل می‌دهی. ادامهٔ متن ادامه‌ای است که مدل برای آن متن تولید می‌کند. واژه‌ی پاسخ در رابط گفت‌وگو رایج‌تر شده، اما در عمق ماجرا همچنان داریم درباره‌ی ادامه‌ی یک زمینه حرف می‌زنیم.

برای فهم LLM، از سؤال «مدل چه جوابی می‌دهد؟» به سؤال «این متن احتمالاً چطور ادامه پیدا می‌کند؟» مهاجرت کن.
✍️ ورودی مهم است
02 • آموزش

آموزش مدل یعنی چه؟ خیلی ساده: دیدن مثال‌های خیلی زیاد

مدل زبانی با حجم بزرگی از متن‌ها آموزش می‌بیند: کتاب، مقاله، سایت، گفت‌وگو، کد و چیزهای دیگر. هدف این نیست که همهٔ این متن‌ها را کلمه‌به‌کلمه حفظ کند؛ هدف این است که از بین آن‌ها الگو پیدا کند.

مثلاً اگر مدل هزاران بار متن‌های پرسش‌وپاسخ دیده باشد، کم‌کم یاد می‌گیرد بعد از یک سؤال معمولاً چه نوع پاسخی می‌آید. اگر کد زیادی دیده باشد، شکل و قواعد کدنویسی را بهتر یاد می‌گیرد.

به مجموعهٔ متن‌هایی که مدل از آن‌ها یاد می‌گیرد «دادهٔ آموزشی» می‌گوییم. نوع این داده خیلی مهم است، چون روی رفتار بعدی مدل اثر می‌گذارد.

مثال خیلی ساده مثل بچه‌ای که با شنیدن هزاران جمله کم‌کم زبان را یاد می‌گیرد. کسی تمام جمله‌ها را حفظ نمی‌کند؛ الگو را یاد می‌گیرد.
مجموعهٔ آموزشی - مجموعه‌ی آموزشی

مجموعه‌ی متن‌هایی که مدل در فرایند آموزش از آن‌ها الگو یاد می‌گیرد.

اگر مجموعه‌داده مقدار زیادی کد داشته باشد، مدل فرصت بیشتری برای یادگیری قواعد نوشتاری و الگوهای برنامه‌نویسی دارد. اگر مکالمه کم باشد، رفتار گفت‌وگویی خام احتمالاً ضعیف‌تر است.

مدل پایه چیست؟

نکته در بیشتر پروژه‌های واقعی قرار نیست یک LLM را از صفر آموزش بدهی؛ اما باید بفهمی آموزش چه رفتاری را در مدل ساخته، چون مهندسی پرامپت روی همان رفتار سوار است.
✍️ ورودی مهم است
03 • آموزش تکمیلی

آموزش تکمیلی یعنی چه و چرا از صفر شروع نمی‌کنیم؟

فرض کن مدلی داریم که زبان عمومی را خوب بلد است. حالا می‌خواهیم آن را برای کار حقوقی، پزشکی یا برنامه‌نویسی بهتر کنیم. منطقی نیست همه‌چیز را از صفر دوباره به آن یاد بدهیم.

در عوض همان مدل قبلی را برمی‌داریم و با داده‌های تخصصی بیشتری آموزش می‌دهیم. به این کار «آموزش تکمیلی» یا Fine-tuning می‌گوییم.

نتیجه این است که مدل همان دانش عمومی قبلی را دارد، اما رفتار و تخصصش به سمت موضوع جدید می‌رود.

مثال خیلی ساده مثل پزشکی که اول پزشکی عمومی خوانده و بعد تخصص قلب می‌گیرد. قرار نیست دوباره الفبا و زیست دبیرستان را از اول بخواند.
آموزش تکمیلی (Fine-tuning)

ادامه‌ی آموزش یک مدل از قبل آموزش‌دیده روی مجموعه‌داده جدید و معمولاً کوچک‌تر، با هدف تغییر رفتار یا تخصصی‌ترکردن آن.

نسخه‌های اولیه کدx از مدل زبانی GPT-3 شروع کردند و بعد با حجم زیادی کد منبع آموزش تکمیلی شدند تا برای GitHub Copilot مناسب‌تر شوند.

از مدل پایه تا مدل تخصصی
آموزش عمومی
مدل پایه
آموزش تکمیلی
رفتار تخصصی
یادداشت کن ✍️
📏 سقف حافظه‌ی مدل
04 • تقلید vs جست‌وجو

پس مدل زبانی چه فرقی با موتور جست‌وجو دارد؟

موتور جست‌وجو معمولاً دنبال یک صفحه یا سند موجود می‌گردد و آن را پیدا می‌کند. مدل زبانی کار اصلی‌اش این نیست که یک صفحهٔ ذخیره‌شده را تحویل بدهد؛ سعی می‌کند از الگوهایی که یاد گرفته، یک پاسخ تازه بسازد.

مثلاً گوگل می‌تواند صفحه‌ای را که دربارهٔ «طرز تهیهٔ لازانیا» نوشته شده پیدا کند. مدل زبانی می‌تواند با توجه به چیزهایی که یاد گرفته، برای مواد غذایی‌ای که خودت در خانه داری یک دستور تازه بسازد.

پس یک جملهٔ مهم را یادت بماند: موتور جست‌وجو بیشتر «پیدا می‌کند»، مدل زبانی بیشتر «می‌سازد».

مثال خیلی ساده اگر شمارهٔ دقیق یک بخشنامه را می‌خواهی، جست‌وجو انتخاب بهتری است. اگر می‌خواهی همان بخشنامه را ساده توضیح بدهی، مدل زبانی می‌تواند خیلی کمک کند.
🔎

موتور جست‌وجو

سند موجود را پیدا می‌کند. بازیابی هسته‌ی کار است.

🧠

LLM

الگو یادگرفته‌شده را روی زمینه جدید اعمال می‌کند و ادامه تولید می‌کند.

مدل خوب باید الگو را حفظ کند، نه بند را.
✍️ ورودی مهم است
05 • بیش‌برازش

بیش‌برازش: وقتی مدل به‌جای یادگرفتن، جواب را حفظ کرده باشد

گاهی یک مدل روی مثال‌هایی که قبلاً دیده عالی جواب می‌دهد، اما وقتی سؤال کمی تغییر کند خراب می‌کند. این یعنی ممکن است به‌جای فهمیدن الگوی کلی، خودِ مثال‌ها را زیادی حفظ کرده باشد.

به این حالت «بیش‌برازش» یا Overfitting می‌گوییم. برعکس، اگر مدل بتواند چیزی که یاد گرفته را روی مثال‌های تازه هم استفاده کند، می‌گوییم «تعمیم» خوبی دارد.

برای همین اگر مدل یک معمای معروف را خیلی سریع حل کرد، همیشه به این معنی نیست که استدلالش فوق‌العاده است؛ شاید همان معما یا نمونه‌ای خیلی شبیهش را قبلاً دیده باشد.

مثال خیلی ساده دانش‌آموزی را تصور کن که جواب ۲۰ سؤال امتحان را حفظ کرده. اگر سؤال ۲۱ کمی متفاوت باشد و نتواند حل کند، یعنی روش را یاد نگرفته؛ جواب‌ها را حفظ کرده.
بیش‌برازش (Overfitting)

حالتی که مدل روی نمونه‌های دیده‌شده خیلی خوب است، اما الگو را آن‌قدر عمومی یاد نگرفته که روی نمونه‌های جدید همان کیفیت را داشته باشد.

تعمیم (Generalization)

توانایی مدل برای استفاده از چیزی که یاد گرفته روی نمونه‌ها و مسئلههایی که عیناً در آموزش حضور نداشته‌اند.

✍️ ورودی مهم است
06 • مدل ذهنیِ ادامه‌دادن متن

یک ترفند ذهنی مهم: پرامپت را شروع یک متن نیمه‌کاره ببین

برای پیش‌بینی رفتار مدل، یک سؤال خیلی کمک می‌کند: «اگر این متن واقعاً بخشی از یک نوشته بود، طبیعی‌ترین ادامه‌اش چه بود؟» مدل هم تقریباً دنبال همین ادامهٔ طبیعی می‌گردد.

مثلاً اگر بنویسی «دیروز تلویزیونم خراب شد و الان اصلاً روشن نمی‌شود...» ادامهٔ طبیعی می‌تواند توضیح مشکل یا راه‌حل باشد. اما اگر متن شبیه داستان نوشته شده باشد، مدل ممکن است داستان را ادامه دهد.

پس شکل نوشتن پرامپت روی نوع پاسخی که می‌گیری اثر دارد. مدل فقط معنی جمله را نمی‌بیند؛ سبک و الگوی متن را هم دنبال می‌کند.

مثال خیلی ساده دو جملهٔ «تلویزیونم روشن نمی‌شود.» و «کاربر: تلویزیونم روشن نمی‌شود / پشتیبان:» معنی مشابهی دارند، اما دومی خیلی واضح‌تر به مدل می‌گوید که باید نقش پشتیبان را ادامه دهد.
Yesterday, my TV stopped working. Now, I can't turn it on at
مدل ذهنی وقتی خروجی عجیب است، از خودت بپرس پرامپت تو شبیه شروع چه نوع متنی است و مدل چه الگوی را احتمالاً از آن برداشت کرده.
07 • انسان در برابر LLM

انسان وقتی نمی‌داند، می‌تواند بگوید «بذار چک کنم»؛ مدل خام نه

فرض کن داری مقاله می‌نویسی و آدرس دقیق یک سایت یادت نیست. خیلی طبیعی است که نوشتن را متوقف کنی، مرورگر را باز کنی، آدرس را پیدا کنی و بعد ادامه بدهی.

مدل خام اگر ابزار جست‌وجو نداشته باشد، چنین کاری نمی‌تواند بکند. باید همان لحظه توکن بعدی را حدس بزند. اگر جواب دقیق را نداند، ممکن است چیزی بسازد که ظاهرش کاملاً درست است ولی واقعی نیست.

برای همین در برنامه‌های جدی، فقط به خود مدل تکیه نمی‌کنیم. اگر اطلاعات باید دقیق باشد، جست‌وجو، پایگاه‌داده، کد یا ابزار را هم وارد فرایند می‌کنیم.

مثال خیلی ساده اگر از مدل آدرس دقیق یک مقالهٔ ناشناخته را بخواهی و خودش دسترسی به وب نداشته باشد، ممکن است یک لینک کاملاً قانع‌کننده ولی ساختگی بسازد.
مدل در نقطه‌ای که انسان می‌گوید «صبر کن، بذار چک کنم»، معمولاً می‌گوید «بهترین حدسم اینه که...» و ادامه می‌دهد.
یادداشت کن ✍️
📏 سقف حافظه‌ی مدل
08 • توهم

توهم مدل یعنی چه؟ وقتی جواب قشنگ است ولی واقعیت ندارد

«توهم» یعنی مدل چیزی می‌گوید که خیلی طبیعی و مطمئن به نظر می‌رسد، اما واقعیت ندارد. این اتفاق عجیب و جدا از بقیهٔ کار مدل نیست؛ مدل باز هم همان کاری را می‌کند که همیشه می‌کند: ادامه‌ای می‌سازد که از نظر زبانی محتمل به نظر می‌رسد.

مشکل اینجاست که «محتمل بودن جمله» با «درست بودن جمله» یکی نیست. یک نام، تاریخ یا منبع جعلی هم می‌تواند از نظر زبانی کاملاً طبیعی باشد.

پس برای اطلاعات حساس، بهتر است جواب مدل را بررسی کنیم؛ مخصوصاً آمار، نقل‌قول، نام مقاله، لینک، قانون، قیمت و اطلاعات پزشکی یا مالی.

مثال خیلی ساده اگر بپرسی «مقالهٔ معروف فلان دانشمند در سال ۲۰۱۷ چه بود؟» مدل ممکن است عنوانی بسازد که از نظر ظاهری کاملاً علمی است، ولی اصلاً چنین مقاله‌ای وجود نداشته باشد.
توهم (Hallucination)

خروجی‌ای که قانع‌کننده و طبیعی به نظر می‌رسد، ولی با واقعیت سازگار نیست.

راه بهتر: خروجی را قابل راستی‌آزمایی کن

اصل در اطلاعات مهم، «اعتماد کن، اما بررسی هم بکن» را به «راستی‌آزمایی» تبدیل کن.
📏 سقف حافظه‌ی مدل
09 • سوگیریِ پذیرش فرض

اگر سؤال را با یک فرض اشتباه شروع کنی، مدل ممکن است همان اشتباه را ادامه بدهد

مدل معمولاً سعی می‌کند دنیایی را که در پرامپت ساخته‌ای ادامه بدهد. اگر در سؤال چیزی را از قبل «واقعیت» فرض کنی، ممکن است مدل هم بدون اعتراض همان را قبول کند.

مثلاً اگر بگویی «وقتی ایران در سال ۲۰۲۲ عضو اتحادیهٔ اروپا شد چه اتفاقی افتاد؟» سؤال از پایه یک فرض غلط دارد. مدل خوب شاید اصلاح کند، اما همیشه نباید روی این اصلاح حساب کنیم.

این رفتار در داستان و سناریوهای فرضی مفید است، اما در برنامه‌های واقعی باید ورودی و داده‌ها را قبل از فرستادن به مدل بررسی کنیم.

مثال خیلی ساده فرق بزرگی هست بین «فرض کن در سال ۲۰۳۵ انسان روی مریخ زندگی می‌کند» و «در سال ۲۰۳۵ انسان روی مریخ زندگی می‌کند؛ توضیح بده چرا». اولی روشن می‌کند که سناریو فرضی است.
سوگیریِ پذیرش فرض (Truth Bias)

تمایل مدل به پذیرفتن فرض‌های اولیه موجود در پرامپت به‌عنوان واقعیت داخل متن و ادامه‌دادن بر همان اساس.

مسئولیت اپلیکیشن بخش سازندهٔ پرامپت باید داده را اعتبارسنجی کند. مدل را آخرین خط دفاع در برابر زمینه اشتباه فرض نکن.
🔤 اول باید متن خرد شود
10 • مدل‌های زبانی متن را چطور می‌بینند؟

توکن چیست؟ مدل متن را به تکه‌های کوچک‌تر می‌شکند

مدل متن را دقیقاً مثل ما به شکل کلمه و حرف نمی‌بیند. قبل از اینکه متن وارد مدل شود، یک ابزار به نام «توکنایزر» آن را به تکه‌های کوچک‌تری به نام «توکن» تبدیل می‌کند.

یک توکن ممکن است یک کلمهٔ کامل باشد، بخشی از یک کلمه باشد یا حتی ترکیبی از فاصله و چند حرف. بعد هر توکن به یک شماره تبدیل می‌شود و مدل با همان شماره‌ها کار می‌کند.

پس وقتی می‌گوییم مدل «متن را می‌خواند»، در واقع مدل دنباله‌ای از توکن‌ها را پردازش می‌کند، نه حروفی که ما روی صفحه می‌بینیم.

مثال خیلی ساده مثل لگو تصورش کن. ما یک جملهٔ کامل می‌بینیم، ولی مدل اول آن را به چند قطعهٔ لگو می‌شکند و بعد با آن قطعه‌ها کار می‌کند.
توکن (Token)

واحد پردازش متن برای مدل. توکن می‌تواند یک کلمه کامل، بخشی از کلمه، فاصله همراه با حروف یا حتی بخشی از یک نماد باشد.

توکنایزر (Tokenizer)

الگوریتمی که متن را به شناسهٔ توکن‌ها تبدیل می‌کند و در انتها توکن‌ها را دوباره به متن برمی‌گرداند.

واژگان (Vocabulary)

فهرست تمام توکن‌هایی که توکنایزر و مدل می‌شناسند.

مسیر واقعی متن در مدل
متن
توکنایزر
شناسه‌های توکن
ترنسفورمر
شناسه‌های توکن
متن
شکل منتخب از فصل اصلی - Tokenizer متن را به Token IDها تبدیل می‌کند و بعد از تولید، Tokenها دوباره به متن برمی‌گردند.
شکل منتخب از فصل اصلی - توکنایزر متن را به شناسهٔ توکن‌ها تبدیل می‌کند و بعد از تولید، توکن‌ها دوباره به متن برمی‌گردند.
🔎 به کجای شکل دقت کنیم؟ به مسیر رفت و برگشت دقت کن: خود ترنسفورمر مستقیماً با جمله‌ی «One, Two,» کار نمی‌کند؛ ورودی واقعی‌اش توکن‌ها هستند. همین نکته ریشه‌ی خیلی از محدودیت‌های در سطح حروف است.
📏 سقف حافظه‌ی مدل
11 • انسان تشبیه خواندن

ما هم کلمه را یک‌جا می‌بینیم، ولی مغزمان خیلی انعطاف‌پذیرتر است

اگر یک کلمه کمی غلط تایپی داشته باشد، معمولاً باز هم منظور را می‌فهمیم. مغز انسان می‌تواند از معنی جمله و شکل کلی کلمه کمک بگیرد.

مدل هم گاهی غلط تایپی را می‌فهمد، اما دلیلش این نیست که مثل انسان به حروف نگاه می‌کند. دلیلش این است که نمونه‌های مشابه زیادی دیده و الگو را یاد گرفته است.

مثال خیلی ساده مثلاً اگر بنویسی «سالم، خوبی؟» احتمالاً فوراً می‌فهمی منظور «سلام» بوده. مدل هم ممکن است بفهمد، اما مسیر درونی‌اش با مغز ما فرق دارد.
نکته توکن‌سازی جزئیات پیاده‌سازی نیست که بتوانی نادیده بگیری؛ روی هزینه، پنجرهٔ زمینه و حتی نوع خطاهای مدل اثر می‌گذارد.
یادداشت کن ✍️
🔤 اول باید متن خرد شود
12 • تفاوت 1

توکنایزر حدس نمی‌زند؛ همیشه طبق یک قانون مشخص متن را می‌شکند

انسان وقتی یک غلط تایپی می‌بیند، می‌تواند حدس بزند منظور چه بوده. توکنایزر چنین حدسی نمی‌زند؛ فقط طبق قواعد خودش متن را به توکن تقسیم می‌کند.

برای همین ممکن است یک کلمهٔ درست فقط یک توکن باشد، اما همان کلمه با یک غلط تایپی به چند توکن تبدیل شود. مدل بعداً شاید از روی الگو بفهمد منظور چه بوده، ولی ورودی اولیه فرق کرده است.

مثال خیلی ساده فرض کن دستگاه بارکدخوان داری. اگر بارکد کمی عوض شود، دستگاه با احساس و حدس آن را اصلاح نمی‌کند؛ طبق الگوی خودش می‌خواند. توکنایزر هم تقریباً همین‌قدر مکانیکی است.
توکنایزر قطعی

برای یک ورودی مشخص همیشه توکن‌سازی مشخصی دارد؛ بر خلاف خواندن انسان که می‌تواند خطا را ناخودآگاه اصلاح کند.

13 • تفاوت 2

چرا شمردن حروف برای مدل عجیب سخت است؟

اگر از تو بپرسم در کلمهٔ «strawberry» چند حرف r وجود دارد، می‌توانی کلمه را حرف‌به‌حرف نگاه کنی و بشماری. اما مدل معمولاً خودِ حروف را مستقیم نمی‌بیند؛ توکن‌ها را می‌بیند.

برای همین کارهایی مثل شمردن حرف، برعکس‌کردن دقیق یک رشته، بررسی کاراکتر به کاراکتر یا ساختن کلمه با محدودیت حروفی می‌تواند برای LLM سخت‌تر از چیزی باشد که انتظار داریم.

وقتی چنین دقتی مهم است، بهتر است از کد استفاده کنیم. کد واقعاً رشته را کاراکتر به کاراکتر می‌بیند.

مثال خیلی ساده برای انسان «BANANA» شش حرف مشخص است. برای مدل ممکن است این رشته به چند توکن شکسته شود. اگر هدف شمارش دقیق حروف است، یک حلقهٔ سادهٔ برنامه‌نویسی قابل‌اعتمادتر است.
کار در سطح زیرِ توکن

کاری که نیاز دارد مدل یک توکن را به اجزای کوچک‌تر مثل حرف بشکند یا دوباره کنار هم بچیند کند.

قاعده‌ی مهندسی: قسمت قطعی را بده به کد

candidates = generate_country_list() result = [x for x in candidates if x.startswith("Sw")]
هر چیزی که برای Python یک if ساده است، لازم نیست تبدیل به امتحان هوش برای LLM شود.
🔤 اول باید متن خرد شود
14 • تفاوت 3

حتی بزرگ و کوچک بودن حروف هم می‌تواند توکن‌ها را عوض کند

برای ما A و a همان حرف هستند، فقط شکلشان فرق دارد. اما برای توکنایزر ممکن است دو رشتهٔ متفاوت باشند و حتی به تعداد توکن متفاوتی شکسته شوند.

این یعنی بعضی تغییرهای ظاهراً ساده در متن می‌توانند شکل ورودی مدل را تغییر دهند. معمولاً مدل از پس این تفاوت‌ها برمی‌آید، اما خوب است بدانیم داخل مدل همه‌چیز به سادگی نگاه انسانی نیست.

مثال خیلی ساده ممکن است «hello» یک‌جور شکسته شود و «HELLO» جور دیگری. از دید ما معنی تقریباً همان است، ولی از دید توکنایزر مسیر می‌تواند فرق کند.
اصل طراحی LLM را روی قسمت «معنایی و مبهم» نگه دار؛ تبدیل‌های قطعی در سطح حروف را در پیش‌پردازش و پس‌پردازش انجام بده.
🔤 اول باید متن خرد شود
15 • شمارش توکن‌ها

چرا باید حواسمان به تعداد توکن‌ها باشد؟

هر مدل یک محدودیت دارد که مشخص می‌کند در یک درخواست چند توکن را می‌تواند هم‌زمان ببیند. به این محدوده «پنجرهٔ زمینه» می‌گوییم.

اگر پرامپت خیلی طولانی باشد، جا برای پاسخ کمتر می‌شود. علاوه بر این، تعداد توکن روی هزینه و سرعت هم اثر دارد.

نکتهٔ مهم این است که تعداد حرف و تعداد توکن رابطهٔ ثابتی ندارند. یک متن فارسی، انگلیسی، کد یا رشتهٔ عجیب ممکن است نسبت‌های متفاوتی داشته باشند.

مثال خیلی ساده مثل یک میز کار با فضای محدود است. هرچه کتاب و کاغذ بیشتری روی میز بگذاری، فضای کمتری برای کار جدید می‌ماند.
پنجرهٔ زمینه

حداکثر تعداد توکن‌هایی که مدل می‌تواند در یک درخواست در محدوده‌ی زمینه خود داشته باشد؛ معمولاً مجموع پرامپت و ادامهٔ تولیدشده باید در این بودجه جا شود.

نکته عملی قبل از استفاده در محیط واقعی، شمارش توکن را روی داده‌ی واقعی کاربران اندازه بگیر؛ تخمین انگلیسی را روی فارسی، کد، JSON یا کلیدهای تصادفی کورکورانه استفاده نکن.
یادداشت کن ✍️
16 • توکن‌های ویژه

بعضی توکن‌ها برای معنی نیستند؛ برای کنترل ساختارند

همهٔ توکن‌ها بخشی از یک کلمه نیستند. بعضی توکن‌ها نقش علامت کنترلی دارند؛ مثلاً می‌توانند به مدل بگویند متن تمام شده یا یک بخش جدید شروع شده است.

این توکن‌های ویژه برای ساختاردهی خیلی مهم‌اند، مخصوصاً در مدل‌های گفت‌وگویی که باید پیام کاربر، سیستم و دستیار از هم جدا شوند.

مثال خیلی ساده مثل علامت «پایان» در یک فایل یا جداکنندهٔ فصل‌ها در کتاب. خودش بخشی از داستان نیست، ولی به ساختار کمک می‌کند.
توکن ویژه

توکنِ ویژه‌ای که نقش ساختاری دارد، نه محتوای معمولی؛ مثل پایان متن یا نشانگرهای خاص در قالب گفت‌وگو.

📏 سقف حافظه‌ی مدل
17 • خودبازگشتی

مدل جواب را یک‌جا نمی‌سازد؛ توکن‌به‌توکن جلو می‌رود

یکی از مهم‌ترین نکته‌های این فصل همین است: مدل کل جواب را از قبل آماده نمی‌کند. یک توکن تولید می‌کند، آن را به متن قبلی اضافه می‌کند و بعد با دیدن همهٔ چیزهایی که تا آن لحظه دارد، توکن بعدی را انتخاب می‌کند.

به این روش «تولید خودبازگشتی» می‌گویند. یعنی هر انتخاب جدید به انتخاب‌های قبلی وابسته است.

برای همین یک انتخاب بد در ابتدای پاسخ می‌تواند روی ادامهٔ پاسخ هم اثر بگذارد.

مثال خیلی ساده پیشنهاد کلمهٔ کیبورد گوشی را تصور کن. یک کلمه را انتخاب می‌کنی؛ پیشنهادهای بعدی عوض می‌شوند. مدل هم بارها همین کار را با سرعت خیلی زیاد انجام می‌دهد.
خودبازگشتی مدل

مدلی که خروجی را مرحله‌به‌مرحله تولید می‌کند و پیش‌بینی بعدی به توکن‌هایی که قبلاً خودش تولید کرده وابسته است.

تولید قدم‌به‌قدم
پرامپت
توکن 1
توکن 2
توکن 3
پاسخ
شکل منتخب از فصل اصلی - تولید پاسخ به‌صورت یک Token در هر مرحله.
شکل منتخب از فصل اصلی - تولید پاسخ به‌صورت یک توکن در هر مرحله.
🔎 به کجای شکل دقت کنیم؟ هر توکن تازه به زمینه قبلی اضافه می‌شود و مرحله‌ی بعد بر اساس مجموعه‌ی بزرگ‌تر پیش‌بینی می‌شود. بنابراین یک انتخاب بد می‌تواند روی انتخاب‌های بعدی اثر بگذارد.
📏 سقف حافظه‌ی مدل
18 • تعهد به مسیر

مدل معمولاً وسط پاسخ برنمی‌گردد جملهٔ قبلی را پاک کند

ما وقتی می‌نویسیم می‌توانیم برگردیم، جمله را پاک کنیم و از نو بنویسیم. تولید معمولی LLM این‌طور نیست. توکنی که تولید شده، وارد متن شده و مرحلهٔ بعد باید با همان ادامه پیدا کند.

برای همین گاهی می‌بینی مدل از یک اشتباه اولیه دفاع می‌کند یا سعی می‌کند ادامه را طوری بسازد که اشتباه قبلی کمتر عجیب به نظر برسد. این لجبازی نیست؛ نتیجهٔ همان تولید مرحله‌به‌مرحله است.

مثال خیلی ساده مثل داستان‌گویی زنده بدون دکمهٔ پاک‌کن. اگر در جملهٔ اول بگویی «علی ۸۰ ساله بود»، ادامهٔ داستان باید به‌نوعی با همان واقعیت کنار بیاید.
وظیفه برنامه اگر کار نیاز به تشخیص اشتباه، تلاش دوباره یا برگردد و اصلاح کند دارد، این قابلیت را در روند کار طراحی کن. مثلاً خروجی را اعتبارسنجی کن و در صورت نامعتبر شدن یک تولید جدید بگیر.
🌡️ کنترل تنوع جواب
19 • دام تکرار

چرا مدل گاهی روی یک جمله یا قالب گیر می‌کند و تکرار می‌کند؟

چون مدل به الگوها حساس است، اگر چند بار یک ساختار را تکرار کند، همان ساختار برای مرحلهٔ بعد هم محتمل‌تر می‌شود. یعنی تکرار می‌تواند خودش تکرار بیشتری بسازد.

مدل حس انسانی «دیگه بسه» ندارد. اگر الگوی متن به او بگوید ادامهٔ فهرست هنوز طبیعی است، ممکن است بیش از حد ادامه بدهد.

در برنامه‌های واقعی می‌توان با محدودیت طول، تشخیص تکرار یا تنظیم روش نمونه‌گیری جلوی این مشکل را گرفت.

مثال خیلی ساده اگر پنج خط پشت‌سرهم با «نکتهٔ بعدی این است که...» شروع شوند، احتمال دارد مدل خط ششم را هم همان‌طور شروع کند.
خودتقویت‌شونده الگو
الگو شکل می‌گیرد
الگو محتمل‌تر می‌شود
تکرار بیشتر
یادداشت کن ✍️
⚙️ قلب معماری
20 • احتمال‌ها

مدل برای توکن بعدی فقط یک گزینه ندارد؛ چندین گزینه با احتمال‌های مختلف دارد

در هر مرحله، مدل برای تعداد زیادی توکن ممکن امتیاز می‌سازد. بعضی گزینه‌ها خیلی محتمل‌اند، بعضی کمتر. بعد یکی از آن‌ها برای خروجی انتخاب می‌شود.

پس مدل همیشه فقط «یک جواب قطعی» در ذهن ندارد. پشت هر توکن انتخاب‌شده، فهرستی از گزینه‌های دیگر هم بوده است.

به فرایند انتخاب یک توکن از بین این گزینه‌ها «نمونه‌گیری» می‌گوییم.

مثال خیلی ساده بعد از «من امروز به مدرسه...» گزینه‌های «رفتم»، «می‌روم»، «نرفتم» ممکن‌اند؛ اما احتمالشان یکسان نیست. مدل برای هرکدام وزنی دارد و یکی را انتخاب می‌کند.
احتمال‌های فرضی برای ادامهٔ «One, Two,»
Buck 51%
Three 31%
and 12%
others 6%
نمونه‌گیری

مدل برای توکن بعدی چند گزینه دارد و برای هرکدام احتمال متفاوتی در نظر می‌گیرد.

🎲 همه‌چیز با احتمال
21 • احتمال‌های لگاریتمی

احتمال لگاریتمی به ما می‌گوید مدل چقدر بین گزینه‌ها مردد بوده

بعضی APIها عددی به نام Logprob می‌دهند. لازم نیست وارد ریاضی‌اش شویم؛ کاربرد ساده‌اش این است که بفهمیم یک توکن نسبت به گزینه‌های دیگر چقدر قوی‌تر بوده است.

اگر دو برچسب تقریباً امتیاز مشابهی داشته باشند، یعنی مدل بین آن‌ها مردد بوده. اگر یکی خیلی جلوتر باشد، انتخاب مدل مطمئن‌تر بوده است.

اما یک هشدار مهم: این عدد میزان «درست بودن واقعیت» را نمی‌گوید؛ فقط نشان می‌دهد آن ادامه از نظر مدل چقدر محتمل بوده.

مثال خیلی ساده ممکن است مدل برای یک نام جعلی Logprob بالایی داشته باشد، چون آن نام از نظر زبانی خیلی طبیعی است. پس «مطمئن به نظر رسیدن» با «واقعاً درست بودن» یکی نیست.
احتمال لگاریتمی

عددی که کمک می‌کند بفهمیم یک توکن نسبت به گزینه‌های دیگر چقدر محتمل‌تر بوده است.

تفکیک مهم اطمینان در توکن بعدی با اطمینان درباره‌ی واقعیت یک چیز نیست.
🌡️ کنترل تنوع جواب
22 • دما

دما چیست؟ یک پیچ برای کم‌وزیاد کردن تصادفی‌بودن جواب

دما یا Temperature تعیین می‌کند مدل هنگام انتخاب توکن چقدر محافظه‌کار یا متنوع باشد. دمای پایین باعث می‌شود بیشتر سراغ گزینه‌های خیلی محتمل برود. دمای بالاتر به گزینه‌های کم‌احتمال‌تر هم شانس بیشتری می‌دهد.

دما مدل را باهوش‌تر نمی‌کند. فقط نحوهٔ انتخاب بین گزینه‌ها را تغییر می‌دهد.

مثال خیلی ساده فرض کن ۱۰ نفر برای شام رأی داده‌اند: ۷ نفر پیتزا، ۲ نفر برگر و ۱ نفر سالاد. دمای پایین تقریباً همیشه پیتزا را انتخاب می‌کند؛ دمای بالاتر گاهی به برگر یا حتی سالاد هم شانس می‌دهد.
دما

تنظیمی برای اینکه انتخاب‌های مدل محافظه‌کارانه‌تر یا متنوع‌تر شوند.

دما رفتار تقریبی کاربرد معمول
0 نزدیک به انتخاب محتمل‌ترین توکن دقت، تکرارپذیری، استخراج
0.1 - 0.4 تنوع محدود چند پاسخ نزدیک ولی متفاوت
0.5 - 0.7 تصادفی‌بودن محسوس تولیدهای متنوع‌تر
1 نمونه‌گیری نزدیک توزیع اصلی رفتار طبیعی‌تر توزیع
>1 توکن‌های عجیب شانس بیشتر آزمایش خلاقیت، با ریسک بالا
🌡️ کنترل تنوع جواب
23 • دما 0

برای کارهای دقیق، دمای پایین معمولاً بهتر است

اگر می‌خواهی مدل متن را دسته‌بندی کند، داده استخراج کند یا جواب‌ها تا حد ممکن ثابت باشند، معمولاً دمای پایین انتخاب بهتری است.

دمای خیلی پایین هم همهٔ مشکلات را حل نمی‌کند. اگر مدل وارد یک الگوی بد شود، ممکن است همان مسیر را با اطمینان بیشتری ادامه بدهد.

پس دما را باید با نوع کار تنظیم کرد؛ نه اینکه همیشه یک عدد ثابت را برای همه‌چیز استفاده کنیم.

مثال خیلی ساده برای استخراج شماره فاکتور از متن، تنوع به درد نمی‌خورد؛ دمای پایین منطقی است. برای پیشنهاد ۲۰ ایدهٔ نام برند، کمی تنوع می‌تواند مفید باشد.
یادداشت کن ✍️
📏 سقف حافظه‌ی مدل
24 • دمای بالا

چرا دمای خیلی بالا می‌تواند جواب را کم‌کم خراب کند؟

در دمای بالا، مدل بیشتر سراغ انتخاب‌های غیرمعمول می‌رود. یک انتخاب عجیب ممکن است به‌تنهایی مشکل بزرگی نباشد، اما همان انتخاب وارد زمینه می‌شود و روی انتخاب بعدی اثر می‌گذارد.

اگر چند انتخاب عجیب پشت سر هم بیاید، مسیر پاسخ کم‌کم از متن طبیعی دور می‌شود. به همین دلیل دمای خیلی بالا مخصوصاً در جواب‌های طولانی می‌تواند آشفتگی ایجاد کند.

مثال خیلی ساده مثل رانندگی است: یک انحراف کوچک شاید قابل جبران باشد؛ چند انحراف پشت‌سرهم می‌تواند ماشین را کاملاً از مسیر خارج کند.
چرخه‌ی تخریب در دما بالا
تصادفی توکن
زمینهٔ خراب
مدل الگوی خراب را تقلید می‌کند
خطاهای بیشتر
شکل منتخب از فصل اصلی - اثر Temperature بالا روی Generation طولانی.
شکل منتخب از فصل اصلی - اثر دما بالا روی تولید طولانی.
🔎 به کجای شکل دقت کنیم؟ نکته‌ی اصلی فقط «خلاق‌تر شدن» نیست. یک خروجی عجیب وارد زمینه می‌شود، مدل همان آشفتگی را به‌عنوان الگو می‌بیند و خطاها می‌توانند در ادامه تقویت شوند.
موازنه دما پایین معمولاً درستی و تکرارپذیری بیشتر می‌دهد؛ دما بالا تنوع بیشتری می‌دهد.
🎲 همه‌چیز با احتمال
25 • جست‌وجوی پرتوی

بهترین کلمهٔ همین لحظه همیشه بهترین جملهٔ نهایی را نمی‌سازد

مدل معمولاً قدم‌به‌قدم تصمیم می‌گیرد. اما ممکن است گزینه‌ای که همین الان کمی محتمل‌تر است، چند کلمه بعد به مسیر بدی برسد؛ و گزینهٔ دوم در نهایت جملهٔ بهتری بسازد.

روش‌هایی مثل Beam جست‌وجو چند مسیر را هم‌زمان نگه می‌دارند و کمی جلوتر را هم بررسی می‌کنند تا انتخاب کلی بهتری داشته باشند.

این روش می‌تواند در بعضی کارها مفید باشد، ولی هزینه و زمان بیشتری می‌خواهد و برای همهٔ کاربردهای گفت‌وگویی لازم نیست.

مثال خیلی ساده در شطرنج هم بهترین حرکت فقط با نگاه به همین لحظه مشخص نمی‌شود؛ گاهی باید چند حرکت جلوتر را دید.
جست‌وجوی پرتوی

روشی که چند ادامهٔ احتمالی را هم‌زمان نگه می‌دارد و کمی جلوتر را بررسی می‌کند.

📏 سقف حافظه‌ی مدل
26 • ترنسفورمر

ترنسفورمر را بدون فرمول این‌طور تصور کن

برای فهم شهودی، تصور کن روی هر توکن یک «مغز کوچک» قرار دارد. هر مغز کوچک می‌خواهد بفهمد توکن خودش در این جمله چه معنی‌ای دارد و برای این کار از بخش‌های قبلی کمک می‌گیرد.

این پردازش در چند مرحله انجام می‌شود که به آن‌ها «لایه» می‌گوییم. در لایه‌های بالاتر، نمایش درونی هر توکن معمولاً وابستگی بیشتری به معنی کل جمله پیدا می‌کند.

این فقط یک تشبیه است، اما کمک می‌کند بدون ریاضی سنگین بفهمیم چرا معنی یک کلمه به کلمه‌های اطرافش وابسته می‌شود.

مثال خیلی ساده کلمهٔ «شیر» را ببین: در «شیر را خوردم» و «شیر در جنگل بود» معنی فرق دارد. مدل با کمک متن اطراف می‌فهمد کدام معنی مناسب‌تر است.
لایه

یکی از مرحله‌های پردازش داخل ترنسفورمر؛ هر لایه کمک می‌کند معنی توکن با توجه به متن اطراف کامل‌تر شود.

استعاره‌ی مغز کوچک
[One] 🧠
[,] 🧠
[Two] 🧠
[,] 🧠
توکن بعدی
شکل منتخب از فصل اصلی - نمای شهودی از پردازش Tokenها در Layerهای Transformer.
شکل منتخب از فصل اصلی - نمای شهودی از پردازش توکن‌ها در لایه‌های ترنسفورمر.
🔎 به کجای شکل دقت کنیم؟ ستون‌ها را مثل مغزهای کوچکی مربوط به جایگاه‌های مختلف ببین. پیش‌بینیهای مربوط به بخش خود پرامپت دور ریخته می‌شوند؛ پیش‌بینی سمت راست‌ترین جایگاه است که برای ساخت توکن بعدی اهمیت دارد.
✍️ ورودی مهم است
27 • نقش مغزهای کوچک

همهٔ توکن‌های پرامپت پردازش می‌شوند، اما آخرین بخش برای ساخت توکن بعدی مهم‌تر است

وقتی پرامپت را می‌فرستی، مدل برای همهٔ توکن‌ها نمایش درونی می‌سازد. این نمایش‌ها کمک می‌کنند اطلاعات متن به سمت انتهای دنباله منتقل شود.

در لحظهٔ تولید، چیزی که لازم داریم این است که بر اساس تمام متن قبلی، توکن بعدی را حدس بزنیم. بعد توکن جدید اضافه می‌شود و همین فرایند دوباره ادامه پیدا می‌کند.

همین تفاوت باعث می‌شود «خواندن» پرامپت و «نوشتن» پاسخ از نظر سرعت حس متفاوتی داشته باشند.

مثال خیلی ساده مثل مسابقه‌ای است که اطلاعات از نفرات قبلی به نفر آخر می‌رسد و نفر آخر باید تصمیم نهایی را بگیرد؛ بعد یک نفر جدید به صف اضافه می‌شود.
یادداشت کن ✍️
👀 نکته‌ی طلایی
28 • توجه

سازوکار توجه یعنی مدل بفهمد برای این کلمه، کجای متن مهم‌تر است

توجه یا Attention یکی از مهم‌ترین بخش‌های ترنسفورمر است. خیلی ساده، کمک می‌کند مدل وقتی روی یک توکن کار می‌کند، تشخیص دهد کدام بخش‌های قبلی متن برای فهم آن مهم‌ترند.

مثلاً در جملهٔ «سارا گوشی را برداشت چون او دیرش شده بود»، برای فهمیدن «او» باید بفهمیم احتمالاً به «سارا» اشاره دارد. توجه کمک می‌کند این ارتباط پیدا شود.

در واقعیت این ارتباط با عدد و بردار انجام می‌شود، نه با سؤال و جواب واقعی. اما تشبیه «دنبال سرنخ گشتن» برای فهم ایده کافی است.

مثال خیلی ساده وقتی می‌خوانی «علی کتاب را روی میز گذاشت. بعد آن را برداشت»، ذهن تو سریع می‌فهمد «آن» احتمالاً کتاب است. توجه به مدل کمک می‌کند ارتباط‌های شبیه این را پیدا کند.
توجه

روشی که کمک می‌کند مدل برای فهم یک توکن، بخش‌های مهم‌ترِ متن قبلی را پیدا کند.

توجه به زبان سؤال و جواب
«من»: گوینده چه کسی است؟
«سوزان»: گوینده = سوزان
⚙️ قلب معماری
29 • ماسک‌گذاری

مدل هنگام تولید، آینده را نمی‌بیند

وقتی مدل دارد توکن بعدی را انتخاب می‌کند، فقط متن قبلی را دارد. آینده هنوز تولید نشده، پس نمی‌تواند از آن کمک بگیرد.

برای اینکه مدل تقلب نکند، سازوکاری به نام «ماسک‌گذاری» جلوی دیدن توکن‌های آینده را می‌گیرد.

به همین دلیل تولید متن از چپ به راست پیش می‌رود: گذشته روی آینده اثر می‌گذارد، نه برعکس.

مثال خیلی ساده مثل نوشتن زنده روی کاغذ است. وقتی هنوز جملهٔ بعدی را ننوشته‌ای، نمی‌توانی از کلمه‌ای که قرار است پنج ثانیه بعد بنویسی برای تصمیم الان استفاده کنی.
ماسک‌گذاری - ماسک علّی

قانونی که اجازه نمی‌دهد مدل هنگام ساخت توکن فعلی، آینده‌ای را که هنوز تولید نشده ببیند.

جهت جریان اطلاعات
توکن 1
توکن 2
توکن 3
فعلی
⚡ دلیل سرعت بالاتر
30 • پردازش موازی

چرا مدل پرامپت را سریع می‌خواند ولی جواب را آرام‌تر می‌نویسد؟

وقتی پرامپت را می‌فرستی، تمام توکن‌های ورودی از قبل آماده‌اند. سخت‌افزار می‌تواند بخش زیادی از محاسبات آن‌ها را هم‌زمان انجام دهد.

اما برای تولید جواب، توکن بعدی هنوز وجود ندارد. اول باید توکن فعلی ساخته شود تا مدل بتواند سراغ بعدی برود. بنابراین تولید پاسخ ذاتاً زنجیره‌ای‌تر است.

این همان دلیلی است که معمولاً می‌بینی مدل یک متن بلند را خیلی سریع «می‌خواند»، اما جواب را کلمه‌کلمه جلوی چشمت می‌نویسد.

مثال خیلی ساده مثل تصحیح ۱۰۰ برگهٔ آماده با چند نفر است؛ می‌توان چند برگه را هم‌زمان بررسی کرد. ولی نوشتن داستانی که هر جمله‌اش به جملهٔ قبلی وابسته است، باید مرحله‌به‌مرحله جلو برود.
شکل منتخب از فصل اصلی - محاسبه‌ی Stateها و امکان Parallelism هنگام خواندن Prompt.
شکل منتخب از فصل اصلی - محاسبه‌ی حالتها و امکان پردازش موازی هنگام خواندن پرامپت.
🔎 به کجای شکل دقت کنیم؟ وقتی پرامپت از قبل معلوم است، بخش‌های زیادی از محاسبه را می‌توان همزمان جلو برد. اما در تولید باید منتظر توکن بعدی بمانیم؛ به همین دلیل نوشتن پاسخ معمولاً کندتر از خواندن پرامپت است.

پردازش پرامپت

توکن‌های ورودی از قبل معلوم‌اند؛ پردازش موازی زیاد ممکن است.

🐢

تولید

توکن بعدی به توکن قبلی وابسته است؛ زنجیره‌ایتر است.

📏 سقف حافظه‌ی مدل
31 • نگاه به عقب

ترتیب پرامپت مهم است؛ چون مدل اطلاعات را از قبل به بعد می‌بیند

هر توکن می‌تواند از بخش‌های قبلی متن کمک بگیرد، اما اطلاعاتی که بعدتر می‌آید نمی‌تواند به گذشته برگردد و پردازش قبلی را از نو انجام دهد.

برای همین اگر یک دستور مهم داری، بهتر است آن را واضح و زودتر بگویی؛ مخصوصاً وقتی می‌خواهی مدل هنگام خواندن یک متن بلند روی نکتهٔ خاصی تمرکز کند.

مثال خیلی ساده اگر اول یک مقالهٔ ۵۰۰۰ کلمه‌ای بدهی و آخرش بگویی «راستی، تعداد نام شرکت‌ها را دقیق بشمار»، کار سخت‌تر است. بهتر است از اول بگویی «در متن بعدی نام شرکت‌ها را بشمار».
نتیجه اگر می‌خواهی مدل هنگام خواندن یک متن به ویژگی خاصی توجه کند، بهتر است کار یا معیار را قبل از متن یا به شکلی واضح در زمینه زودتر مشخص کنی.
یادداشت کن ✍️
32 • حرکت رو به پایین

چرا نوشتن مرحله‌های میانی می‌تواند به مدل کمک کند؟

داخل مدل، پردازش در لایه‌ها از پایین به بالا جلو می‌رود. چیزی که در مراحل بالاتر شکل می‌گیرد، نمی‌تواند زمان را برگرداند و لایه‌های قبلی همان توکن را دوباره اجرا کند.

اما وقتی مدل چیزی را بیرون می‌نویسد، همان نوشته وارد زمینهٔ مرحلهٔ بعد می‌شود. یعنی خروجی قبلی می‌تواند به نوعی «یادداشت روی کاغذ» برای ادامهٔ کار تبدیل شود.

به همین دلیل شکستن یک مسئلهٔ پیچیده به چند مرحله، استفاده از ابزار یا نگه‌داشتن نتایج میانی می‌تواند به سیستم کمک کند.

مثال خیلی ساده انسان هم برای ضرب ۴۷×۳۸ معمولاً روی کاغذ چند عدد می‌نویسد. نوشتنِ نتیجه‌های میانی باعث می‌شود مجبور نباشد همه‌چیز را در ذهن نگه دارد.
گاهی مدل برای «فکر بیشتر» نیاز دارد چیزی تولید کند تا خروجی قبلی‌اش تبدیل به ورودی فکر بعدی شود.
📏 سقف حافظه‌ی مدل
33 • آزمایشِ ترتیب پرامپت

چرا اگر آخرِ متن بگویی «تعداد کلمه‌ها را بشمار» ممکن است مدل بد عمل کند؟

فرض کن اول یک بند خیلی بلند به مدل می‌دهی و تازه در آخر می‌گویی «حالا دقیق بگو چند کلمه داشت». وقتی مدل متن را پردازش می‌کرد، از اول نمی‌دانست که شمارش دقیق قرار است مهم باشد.

انسان می‌تواند برگردد و دوباره متن را کلمه‌به‌کلمه بشمارد. مدل زبانی برای چنین کار دقیقی ابزار مناسبی نیست و ممکن است فقط تخمین بزند.

اگر شمارش دقیق لازم است، بهترین راه معمولاً کد است. اگر هم می‌خواهی مدل کمک کند، دستور را قبل از متن بده تا از ابتدا بداند دنبال چه چیزی بگردد.

مثال خیلی ساده برای شمارش دقیق کلمه‌های یک فایل، یک اسکریپت ساده مطمئن‌تر از LLM است. مدل را برای فهم معنی و خلاصه‌سازی نگه دار؛ کد را برای شمارش.
ترتیب بد و ترتیب بهتر
متن بلند
شمارش کلمه؟
 
کار: شمارش کلمه
متن بلند
اصل مهندسی پرامپت ترتیب فقط مسئله‌ی زیبایی متن نیست؛ روی چیزی که مدل هنگام پردازش هر بخش می‌تواند به آن توجه کند اثر دارد.
✍️ ورودی مهم است
34 • آزمون توانایی

یک تست سریع: این کار برای مدل طبیعی است یا بهتر است ابزار اضافه کنیم؟

از خودت بپرس: «اگر یک انسان متخصص فقط یک بار این متن را بخواند و اجازه نداشته باشد برگردد، یادداشت کند یا ابزار استفاده کند، می‌تواند کار را دقیق انجام دهد؟»

اگر جواب بله باشد، احتمالاً LLM هم با پرامپت خوب شانس خوبی دارد. اگر جواب نه باشد، بهتر است به مدل کمک بدهیم: کد، جست‌وجو، حافظه، ابزار، چند مرحله یا راستی‌آزمایی.

این قانون صددرصد نیست، اما برای طراحی سیستم خیلی مفید است.

مثال خیلی ساده خلاصه‌کردن یک متن معمولاً طبیعی است. شمردن دقیق ۷۳۲ بار یک حرف در فایل ۲۰۰ صفحه‌ای طبیعی نیست؛ آن‌جا ابزار لازم داریم.
آیا یک متخصص انسانی که تمام دانش عمومی لازم را از حفظ دارد، می‌تواند پرامپت را در یک بار خواندن، بدون برگشتن، ویرایش یا یادداشت‌برداری حل کند؟
📏 سقف حافظه‌ی مدل
35 • پیامدهای مهندسی

این چیزها در عمل چه کمکی به طراحی محصول می‌کنند؟

توهم: اطلاعات مهم را با یک منبع یا ابزار دیگر هم بررسی کن.
فرض اشتباه: قبل از فرستادن داده به مدل، مطمئن شو اطلاعات ورودی درست است.
توکن‌سازی: کارهای دقیقِ حرف‌به‌حرف را به کد بسپار.
پنجرهٔ زمینه: ورودی و پاسخ هر دو از فضای محدود مدل استفاده می‌کنند؛ بودجه را مدیریت کن.
تولید مرحله‌ای: برای کارهای مهم، مرحلهٔ بررسی و امکان تلاش دوباره بساز.
تکرار: اگر مدل گیر می‌کند و تکرار می‌کند، خروجی را تشخیص بده و تنظیمات تولید را اصلاح کن.
دما: برای کار دقیق دمای پایین‌تر و برای ایده‌پردازی کمی تنوع بیشتر در نظر بگیر.
ترتیب پرامپت: دستورهای مهم را واضح و در جای مناسب قرار بده.
محدودیت مدل: هرجا انسان به ابزار یا یادداشت نیاز دارد، برای مدل هم ابزار یا چند مرحله در نظر بگیر.
یادداشت کن ✍️
📏 سقف حافظه‌ی مدل
36 • اشتباه‌های رایج

چند اشتباه رایج که از مدل انتظار بی‌جا ایجاد می‌کند

«مدل این اطلاعات را بلد است، پس حتماً درست می‌گوید»

مدل ممکن است یک واقعیت درست و یک واقعیت ساختگی را با همان لحن مطمئن بنویسد. پس لحن قاطع را با صحت اشتباه نگیر.

زمینهٔ بیشتر همیشه بهتر نیست. ریختن حجم زیادی متن نامرتبط می‌تواند مدل را گیج کند و هزینه را بالا ببرد.

دما هوش مدل را زیاد نمی‌کند؛ فقط تنوع انتخاب‌ها را تغییر می‌دهد.

مدل در تولید معمولی دکمهٔ برگشت واقعی ندارد. اگر اصلاح لازم است، باید یک مرحلهٔ جدید برای بازبینی یا تولید دوباره بسازی.

کارهای دقیقِ کاراکترمحور مثل شمارش حروف، بهتر است به کد سپرده شوند.

مثال خیلی ساده قاعدهٔ ساده: از مدل برای «فهم و تولید زبان» استفاده کن؛ از ابزارها برای «دقت مکانیکی».

«هرچه پرامپت بلندتر، بهتر»

«دما بالا یعنی مدل باهوش‌تر»

«اگر مدل اشتباه کرد، دوباره از همان نقطه خودش اصلاح می‌کند»

«شمارش و دست‌کاری رشتهٔ متنی ساده‌اند، پس LLM هم ساده انجام می‌دهد»

🔤 اول باید متن خرد شود
37 • مدل ذهنی کامل

کل مسیر را در یک خط ببین

مدل ذهنی کامل فصل
پرامپت متن
توکنایزر
توکن دنباله
ترنسفورمر + توجه
 
توزیع احتمال توکن بعدی
نمونه‌گیری / دما
توکن تازه
افزودن به زمینه

متن وارد توکنایزر می‌شود، به توکن تبدیل می‌شود، ترنسفورمر احتمال توکن بعدی را می‌سازد، روش نمونه‌گیری یکی را انتخاب می‌کند، توکن جدید به متن اضافه می‌شود و چرخه دوباره تکرار می‌شود.

مثال خیلی ساده اگر همین یک چرخه را خوب بفهمی، خیلی از رفتارهای عجیب مدل دیگر جادویی به نظر نمی‌رسند.
📏 سقف حافظه‌ی مدل
38 • چهار نکتهٔ کلیدی

چهار نکته‌ای که واقعاً باید از این فصل یادت بماند

۱. LLM در اصل سیستمی برای ادامه‌دادن متن است. رفتار یک دستیار گفت‌وگویی بعداً روی همین پایه ساخته می‌شود.
۲. مدل الگوهای داده‌های آموزشی را تقلید می‌کند. نوع داده روی ادامه محتمل اثر می‌گذارد.
۳. خروجی یک توکن در هر مرحله ساخته می‌شود. توکن قبلی بخشی از زمینه مرحله بعد است.
۴. مدل متن را از ابتدا به انتها پردازش می‌کند. ترتیب و جریان اطلاعات اهمیت معماری دارند.

۱) مدل زبانی در پایه یک ادامه‌دهندهٔ متن است. ۲) از مثال‌های آموزشی الگو یاد می‌گیرد، نه اینکه مثل موتور جست‌وجو فقط سند پیدا کند. ۳) پاسخ را توکن‌به‌توکن می‌سازد و هر انتخاب روی انتخاب بعدی اثر دارد. ۴) ترتیب اطلاعات در پرامپت مهم است، چون مدل متن را از قبل به بعد پردازش می‌کند.

مثال خیلی ساده اگر همین چهار نکته را بفهمی، برای شروع مهندسی پرامپت بخش بزرگی از مدل ذهنی لازم را داری.
📏 سقف حافظه‌ی مدل
39 • واژه‌نامه

واژه‌نامه - آموزش و رفتار مدل

پرامپتمتنی که به مدل می‌دهیم.
پاسخ یا ادامهٔ متنمتنی که مدل در ادامه تولید می‌کند.
دادهٔ آموزشیمتن‌ها و مثال‌هایی که مدل هنگام آموزش از آن‌ها الگو یاد می‌گیرد.
مدل پایهمدل عمومی‌ای که آموزش اولیه را دیده و می‌تواند پایهٔ یک برنامه یا آموزش تخصصی‌تر باشد.
آموزش تکمیلیآموزش بیشترِ یک مدل آماده با داده‌های تخصصی‌تر.
بیش‌برازشوقتی مدل مثال‌های قبلی را خوب حفظ کرده، اما روی مثال تازه ضعیف است.
تعمیماستفاده از چیزی که مدل یاد گرفته در یک سؤال یا موقعیت تازه.
توهمپاسخی که طبیعی و مطمئن به نظر می‌رسد، ولی واقعیت ندارد.
پذیرفتن فرض سؤالوقتی مدل فرض داخل سؤال را واقعی می‌گیرد و بر همان اساس جواب می‌دهد.
راستی‌آزماییبررسی جواب مدل با منبع، کد یا ابزار دیگری که قابل اعتمادتر است.
یادداشت کن ✍️
🔤 اول باید متن خرد شود
40 • واژه‌نامه

واژه‌نامه - توکن‌سازی و زمینه

توکنیکی از تکه‌هایی که متن برای پردازش به آن‌ها شکسته می‌شود.
توکنایزرابزاری که متن را به توکن و شناسه‌های عددی تبدیل می‌کند.
واژگان توکن‌هافهرست همهٔ توکن‌هایی که مدل می‌شناسد.
توکن ویژهعلامت ساختاری، مثل پایان متن یا جداکنندهٔ بخش‌ها.
کار زیرِ سطح توکنکاری که نیاز دارد حروف یا اجزای ریزتر از توکن را دقیق بررسی کنیم.
پنجرهٔ زمینهحداکثر متنی که مدل می‌تواند در یک درخواست هم‌زمان ببیند.
بودجهٔ توکنفضایی که باید بین ورودی و پاسخ تقسیم کنیم.
توکنایزر قطعیبرای یک متن ثابت، همیشه همان توکن‌بندی را تولید می‌کند.
🌡️ کنترل تنوع جواب
41 • واژه‌نامه

واژه‌نامه - تولید و نمونه‌گیری

تولید خودبازگشتیمدل یک توکن می‌سازد و برای ساخت توکن بعدی از خروجی قبلی خودش هم استفاده می‌کند.
توزیع احتمالفهرستی از گزینه‌های ممکن برای توکن بعدی همراه با احتمال هرکدام.
نمونه‌گیریانتخاب یک توکن واقعی از بین گزینه‌های احتمالی.
احتمال لگاریتمیعددی برای مقایسهٔ اینکه یک گزینه نسبت به بقیه چقدر محتمل بوده است.
دمامیزان محافظه‌کار یا متنوع بودن انتخاب توکن‌ها.
جست‌وجوی پرتویبررسی هم‌زمان چند مسیر احتمالی برای رسیدن به ادامهٔ بهتر.
بازگشت و اصلاحبرگشتن به تصمیم قبلی و عوض‌کردن آن؛ کاری که تولید معمولی مدل به‌صورت طبیعی انجام نمی‌دهد.
دام تکراروقتی تکرارهای قبلی باعث می‌شوند مدل همان الگو را باز هم ادامه دهد.
📏 سقف حافظه‌ی مدل
42 • واژه‌نامه

واژه‌نامه - ترنسفورمر و توجه

ترنسفورمرمعماری اصلی بسیاری از مدل‌های زبانی امروزی.
لایهیکی از مرحله‌های پردازش داخل شبکه.
سازوکار توجهروشی که کمک می‌کند مدل بفهمد کدام قسمت‌های قبلی متن برای توکن فعلی مهم‌ترند.
ماسک‌گذاریجلوگیری از دیدن توکن‌های آینده هنگام تولید.
یک‌طرفه بودنحرکت اطلاعات از بخش‌های قبلی متن به بخش‌های بعدی.
پردازش موازیانجام چند محاسبه به‌طور هم‌زمان برای سرعت بیشتر.
بازنماییشکل عددیِ درونیِ اطلاعات هر توکن داخل مدل.
زنجیرهٔ فکراستفاده از نتیجه‌های میانی برای کمک به ادامهٔ حل مسئله؛ این موضوع بعداً مفصل‌تر توضیح داده می‌شود.
📏 سقف حافظه‌ی مدل
43 • چک‌لیست مهندسی

چک‌لیست قبل از اینکه مسئله را گردن مدل بیندازی

  • می‌دانم پرامپت من شبیه چه نوع متنی است.
  • اطلاعات حساس را بدون راستی‌آزمایی رها نمی‌کنم.
  • زمینه تولیدشده‌ی برنامه را قبل از مدل اعتبارسنجی می‌کنم.
  • منطق در سطح حروف را در صورت امکان با کد انجام می‌دهم.
  • شمارش توکن را روی داده‌ی واقعی اندازه می‌گیرم.
  • برای خروجی و پرامپت با هم بودجهٔ توکن دارم.
  • دما را متناسب با درستی یا تنوع تنظیم می‌کنم.
  • در کار مهم خروجی را اعتبارسنجی و در صورت نیاز تلاش دوباره می‌کنم.
  • برای الگوهای تکراری تشخیص دارم.
  • ترتیب پرامپت را آگاهانه طراحی می‌کنم.
  • اگر انسان برای کار نیاز به جست‌وجو، یادداشت‌برداری یا برگشت و اصلاح دارد، ابزار یا روند کار مشابه برای مدل در نظر می‌گیرم.
  • ارزیابی را با نمونه‌های دیده‌نشده انجام می‌دهم.
یادداشت کن ✍️
🔤 اول باید متن خرد شود
44 • جمع‌بندی

جمع‌بندی فصل: حالا مدل باید خیلی کمتر مرموز به نظر برسد

در این فصل دیدیم LLM از بیرون خیلی ساده است: متن می‌گیرد و ادامهٔ متن می‌سازد. چیزی که آن را قدرتمند می‌کند، آموزش روی حجم بزرگی از داده و یادگیری الگوهای زبان است.

بعد فهمیدیم مدل متن را مستقیم به شکل حرف و کلمه نمی‌بیند؛ اول متن به توکن تبدیل می‌شود. همین نکته توضیح می‌دهد چرا بعضی کارهای حرف‌به‌حرف مثل شمارش یا برعکس‌کردن رشته برای مدل عجیب سخت‌اند.

بعد دیدیم پاسخ یک‌جا ساخته نمی‌شود. مدل یک توکن می‌سازد، آن را به زمینه اضافه می‌کند و بعد توکن بعدی را انتخاب می‌کند. برای همین اشتباه‌های اولیه می‌توانند روی ادامهٔ جواب اثر بگذارند.

همچنین فهمیدیم مدل برای هر مرحله چند گزینه با احتمال‌های مختلف دارد و دما فقط مشخص می‌کند انتخاب بین این گزینه‌ها چقدر محافظه‌کار یا متنوع باشد.

در آخر به ترنسفورمر و سازوکار توجه رسیدیم. توجه کمک می‌کند مدل بفهمد کدام قسمت‌های قبلی متن برای توکن فعلی مهم‌ترند و ترتیب اطلاعات در پرامپت چرا روی نتیجه اثر می‌گذارد.

اگر بخواهیم همهٔ فصل را در یک جمله خلاصه کنیم: مدل زبانی جادو نمی‌کند؛ یک سیستم احتمالاتی است که متن را تکه‌تکه می‌بیند و قدم‌به‌قدم ادامه می‌دهد. وقتی این را بفهمی، خیلی راحت‌تر می‌توانی برایش پرامپت و ابزار درست طراحی کنی.

مدل زبانی یک موجود جادویی نیست؛ یک سیستم احتمالاتی برای تکمیل دنباله است. مهندسی خوب از جایی شروع می‌شود که محدودیت‌های همین سیستم را به معماری محصول تبدیل کنی.

این فصل بر پایه‌ی پوشش کامل فصل دوم شناخت مدل‌های زبانی بزرگ از کتاب مهندسی پرامپت for LLMs نوشته شده است. ساختار آموزشی، توضیح فارسی، مثال‌های بازطراحی‌شده و نمودارهای این نسخه به‌صورت مستقل بازنویسی شده‌اند و هدف آن ترجمه‌ی خط‌به‌خط متن منبع نیست.