inference
تفسیر همون فرآیندیه که هر بار موقع استفاده از LLM اجرا میشه و مدل بدون اینکه چیزی یاد بگیره، با استفاده از دانش قبلیش جواب جدید تولید میکنه.
اینجا همون لحظهایه که یه Model واقعا شروع میکنه برات جواب تولید کردن.
وقتی تو یه پیام برای ChatGPT یا هر LLM دیگهای میفرستی، مدل میاد و از دانشی که قبلا موقع Training یاد گرفته استفاده میکنه و سعی میکنه حدس بزنه توکن بعدی چی باید باشه.
به این فرآیند میگن Inference .
در واقع زندگی یه Model فقط دو مرحله داره:
| مرحله | چه زمانی اتفاق میافته؟ | چه کاری انجام میده؟ |
|---|---|---|
| Training | فقط یکبار، قبل از انتشار مدل | مدل یاد میگیره و Parameters ساخته میشن. |
| Inference | هر بار که یکی از مدل استفاده میکنه | از همون Parameters برای تولید جواب استفاده میکنه. |
یه نکته خیلی مهم اینه که در Inference هیچ چیزی داخل مدل تغییر نمیکنه.
فرض کن امروز به مدل بگی:
- این جواب اشتباه بود، دفعه بعد یه جور دیگه جواب بده.
مدل شاید تا وقتی همین سشن بازه یادش بمونه که اون اشتباهو تکرار نکنه، ولی فردا که یه Session جدید شروع کنی، شاید دوباره همون اشتباه رو مرتکب بشه.
اینجا اینطوری نیست که مدل حرفت رو نادیده بگیره، دلیل اصلی اینه که مدل در لحظه Inference اصلا توانایی یاد گرفتن نداره.
پارامتر های مدل کاملا ثابت هستن و فقط خونده میشن و هیچوقت هیچ چیزی داخلشون نوشته یا آپدیت نمیشه.
به همین علته که میگیم Modelها ذاتا Stateless هستن، یعنی خودشون حافظه دائمی ندارن.
اگر قراره چیزی از قبل یادشون بمونه، باید از بیرون بهشون داده بشه. (مثلا از طریق Context Window یا یه Memory System )
اینجا میتونی متوجه بشی که چرا استفاده از LLM ها اینقدر هزینه برمیداره.
شما هر بار که یه درخواست میفرستی، مدل باید دوباره کل Context رو بخونه، روش Inference انجام بده و جواب جدید تولید کنه.
یعنی هم Input Tokens و هم Output Tokens روی هزینه تاثیر دارن!
اگه هم یه Agent وسط کار چند بار Tool صدا بزنه، برای هر رفتوبرگشت دوباره Inference اجرا میشه و هزینه بیشتر میشه.
برای همینم هست که اندازه Context میتونه هم روی کیفیت جواب تاثیر بذاره بهتر و هم هزینه استفاده از مدل رو بالاتر ببره.