چگونه یک LLM را بدون تخریب هزینه‌ها یا تأخیر (Latency) در محصول خود قرار دهید

ساخت یک دموی هوش مصنوعی آسان است. یک API key می‌گیرید، یک پرامپت می‌نویسید و آن را به تیم خود نشان می‌دهید.

سپس آن را عرضه می‌کنید. ترافیک از راه می‌رسد. هزینه‌های شما منفجر می‌شود و تأخیر (latency) شما به شدت بالا می‌رود.

گذار از یک دمو به یک محصول واقعی نیازمند مهندسی هزینه و تأخیر است. در اینجا روش انجام آن آمده است.

خروجی خود را کنترل کنید

اکثر APIها بر اساس توکن‌ها هزینه دریافت می‌کنند. توکن‌های خروجی گران‌تر از توکن‌های ورودی هستند.

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

برای صرفه‌جویی در هزینه و زمان، خروجی را محدود کنید:

  • درخواست JSON کنید.
  • درخواست یک جمله واحد کنید.
  • یک محدودیت max_tokens تعیین کنید.
  • به مدل بگویید کوتاه و مختصر باشد.

پاسخ‌های کوتاه، سریع‌تر و ارزان‌تر هستند.

از فراخوانی‌های غیرضروری دست بردارید

بهترین راه برای صرفه‌جویی این است که اصلاً مدل را فراخوانی نکنید.

  • از کشینگ (caching) استفاده کنید: پاسخ‌ها را برای سوالات رایج ذخیره کنید. اگر سوالات مشابه اما نه دقیقاً یکسان باشند، یک کش معنایی (semantic cache) می‌تواند کمک کند.
  • از مسیریابی (routing) استفاده کنید: از بهترین مدل خود برای کارهای ساده استفاده نکنید. برای طبقه‌بندی (classification) از یک مدل کوچک و ارزان استفاده کنید. مدل گران‌قیمت را برای کارهای پیچیده نگه دارید.

تجربه کاربری را بهبود ببخشید

اگر پاسخ گرفتن زمان می‌برد، کاری کنید که سریع به نظر برسد.

  • توکن‌ها را استریم کنید (Stream tokens): کلمات را همان‌طور که تولید می‌شوند نمایش دهید. این کار زمان انتظار ادراک‌شده را کاهش می‌دهد.
  • پیشرفت کار را نشان دهید: اگر کار دارای چندین مرحله است، به کاربر بگویید چه اتفاقی در حال رخ دادن است. به جای یک نشانگر چرخان (spinner) بی‌صدا، از متنی مانند "...Searching documents" استفاده کنید.

تأخیرهای "دم" (tail latency) را مدیریت کنید

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

  • زمان انتظار (timeout) تعیین کنید: تصمیم بگیرید که اگر درخواستی معطل ماند چه اتفاقی بیفتد. از یک جایگزین (fallback) یا یک مدل کوچک‌تر استفاده کنید.
  • از تلاش مجدد (retries) استفاده کنید: برای خطاهای کوچک قابلیت تلاش مجدد را اضافه کنید، اما برای آن سقف تعیین کنید.
  • از قطع‌کننده‌ها (circuit breakers) استفاده کنید: اگر ارائه‌دهنده (provider) از دسترس خارج شد، بلافاصله ارسال درخواست‌ها را متوقف کنید تا از انتظار طولانی جلوگیری شود.

داده‌های خود را ردیابی کنید

چیزی را که اندازه‌گیری نمی‌کنید، نمی‌توانید اصلاح کنید. این سه عدد را برای هر درخواست ثبت (log) کنید:

  • توکن‌های ورودی.
  • توکن‌های خروجی.
  • کل تأخیر (total latency).

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

از برخورد با LLM به عنوان یک جادو خودداری کنید. با آن مانند یک وابستگی (dependency) کند و گران‌قیمت برخورد کنید که باید آن را مدیریت کنید.

Source: https://dev.to/muhammadzainnaseer/how-to-put-an-llm-in-your-product-without-wrecking-your-costs-or-your-latency-89a

Optional learning community: https://t.me/GyaanSetuAi