فاز 17 · درس 27

فین‌اپس برای مدل‌های زبانی: اقتصاد واحد و انتساب هزینه در معماری چندمستأجری

نوع
مفهومی
زمان
حدود 60 دقیقه
زبان‌ها
Python (stdlib, toy cost-attribution simulator with kill switch)
پیش‌نیاز
فاز 17 · 13 (رصدپذیری)، فاز 17 · 14 (کشینگ)
نمودار سه‌بُعدی هزینه‌های یک سیستم نرم‌افزاری بر روی یک کنسول نظارتی به همراه اهرم قطع اضطراری بار اضافه
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم پایه
  4. سه بُعد انتساب هزینه
  5. چهار لایه‌ی توکن
  6. نردبان مهار هزینه
  7. الگوهای انتساب هزینه
  8. سنجه‌ی واحد: هزینه به ازای هر X
  9. ساختار داده‌ی ردگیری برای انتساب هزینه
  10. پشته‌ی صرفه‌جویی مرکب
  11. اعدادی که باید به خاطر بسپارید
  12. استفاده از ابزارهای واقعی
  13. خروجی این درس
  14. تمرین‌ها
  15. اصطلاحات کلیدی
  16. برای مطالعه‌ی بیشتر

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

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

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

فین‌اپس سنتی (Traditional FinOps) در برابر هزینه‌های مدل‌های زبانی بزرگ (LLM) کم می‌آورد. اینجا هزینه‌ها از جنس تراکنش‌های توکنی هستند، نه آپ‌تایم منابع پردازشی. تگ‌ها هم به کار نمی‌آیند؛ فراخوانی API یک تراکنش است، نه یک دارایی. تصمیم‌های مهندسی (طراحی پرامپت، پنجره‌ی بافتار، طول خروجی) مستقیماً تصمیم‌های مالی هستند. راهنمای عمل سال 2026 سه بُعد انتساب هزینه را مشخص کرده است که باید از همان روز اول پیاده‌سازی شوند: به ازای کاربر (user_id) برای قیمت‌گذاری بر اساس صندلی و پلن‌های توسعه، به ازای وظیفه (task_id + route) برای محاسبه‌ی هزینه‌ی بخش‌های محصول و اولویت‌بندی آن‌ها، و به ازای مستأجر (tenant_id) برای سنجش اقتصاد واحد (Unit economics) و تمدید قراردادها. چهار لایه‌ی توکن داریم (پرامپت، ابزار، حافظه، پاسخ)؛ جمع‌زدن همه‌ی آن‌ها در یک کاسه هزینه‌های واقعی را پنهان می‌کند. نردبان مهار هزینه در محصولات چندمستأجری: محدودیت نرخ درخواست (Rate limit) برای هر مستأجر (2 تا 3 برابر اوج مصرف مورد انتظار، همراه با خطای شفاف 429 و هدر Retry-After)؛ سقف هزینه‌ی روزانه (1.5 تا 3 برابر سقف قراردادی؛ با رسیدن به آن، محدودیت نرخ تشدید شده و هشدار ارسال می‌شود)؛ سوییچ قطع اضطراری (Kill switch) با رسیدن z-score هزینه به بیش از 4 نسبت به خط مبنا (توقف خودکار سرویس مستأجر و پیج کردن مهندس در نوبت پاسخگویی). الگوهای انتساب هزینه: تگ‌گذاری و تجمیع (Tag-and-aggregate)، اتصال از طریق تله‌متری (Telemetry-joiner؛ متصل‌کردن شناسه‌ی ردگیری به صورت‌حساب با بالاترین دقت)، نمونه‌برداری و تعمیم (Sampling-and-extrapolation)، تخصیص مبتنی بر مدل، سیستم‌های مبتنی بر رویداد (Event-sourced)، و استریمینگ لحظه‌ای. سنجه‌ی واحد: هزینه به ازای هر پرسش حل‌شده یا هر دست‌سازه‌ی تولیدشده؛ نه دلار به ازای هر میلیون توکن. تگ‌گذاری پس از وقوع (Retroactive) همیشه خطا دارد؛ رهگیری را دقیقاً در لحظه‌ی ایجاد درخواست پیاده‌سازی کنید.

اهداف یادگیری

  • توضیح دهید چرا فین‌اپس سنتی (تگ‌ها + پلن‌های ثابت) در مدیریت هزینه‌های LLM شکست می‌خورد و سه بُعد جدید انتساب هزینه را نام ببرید.
  • چهار لایه‌ی توکن (پرامپت، ابزار، حافظه، پاسخ) را بررسی کنید و بگویید چرا صورت‌حساب تک‌کاسه‌ای هزینه‌ها را پنهان می‌کند.
  • یک نردبان مهار هزینه (محدودیت نرخ ← سقف هزینه ← سوییچ قطع اضطراری) برای یک محصول چندمستأجری طراحی کنید.
  • یک سنجه‌ی واحد درست (هزینه به ازای هر پرسش حل‌شده یا هر دست‌سازه) را به‌جای «دلار به ازای هر میلیون توکن» انتخاب کنید.

صورت مسئله

صورت‌حساب شما 40,000 دلار آمده است، اما نمی‌دانید:

  • کدام مستأجر این مبلغ را مصرف کرده است.
  • کدام ویژگی محصول عامل اصلی این هزینه بوده است.
  • آیا کاربری به‌شکل نامتعارف یا سوءاستفاده‌گرانه از سیستم کار کشیده است یا خیر.
  • آیا مقصر اصلی متورم‌شدن پرامپت‌ها بوده، فراخوانی ابزارها، یا رشد بی‌رویه‌ی حافظه.

تگ‌گذاری و تجمیع سمت ارائه‌دهنده‌ی ابری برای منابعی مثل EC2 یا S3 جواب می‌دهد، چون تگ‌ها به ردیف‌های صورت‌حساب منتقل می‌شوند. اما فراخوانی‌های API مدل‌های زبانی خودبه‌خود تگ نمی‌خورند؛ باید در همان نقطه‌ی فراخوانی، شناسه‌ی کاربر، وظیفه و مستأجر را به آن متصل کنید و در کل مسیر پیش ببرید. انتساب پس از وقوع همیشه موارد مرزی و استثنا را جا می‌اندازد.

مفاهیم پایه

سه بُعد انتساب هزینه

به ازای کاربر (user_id): چه کسی چقدر هزینه می‌تراشد. برای قیمت‌گذاری صندلی و مذاکرات ارتقای پلن کاربرد دارد و کاربران پرمصرف را مشخص می‌کند.

به ازای وظیفه (task_id + route): کدام بخش محصول چقدر هزینه برمی‌دارد. به اولویت‌بندی ویژگی‌ها کمک می‌کند و نشان می‌دهد کدام ویژگی‌های پرهزینه باید کنار گذاشته شوند.

به ازای مستأجر (tenant_id): کدام مشتری سودآور است. شالوده‌ی اقتصاد واحد، قیمت‌گذاری برای تمدید قرارداد و تعیین آستانه‌های پلن‌های مختلف است.

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

چهار لایه‌ی توکن

لایه مثال درصد معمول از کل
پرامپت ورودی سیستم + ورودی کاربر 40 تا 60 درصد
ابزار نتایج فراخوانی ابزار که به مدل بازگردانده شده 20 تا 40 درصد (بارهای کاری ایجنت)
حافظه گفت‌وگوهای قبلی / اسناد بازیابی‌شده 10 تا 30 درصد
پاسخ خروجی تولیدشده توسط مدل 10 تا 30 درصد

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

نردبان مهار هزینه

  1. محدودیت نرخ درخواست به ازای هر مستأجر: 2 تا 3 برابر اوج بار مورد انتظار. خطای 429 را همراه با Retry-After برگردانید. مستأجر اصطکاک را حس می‌کند، اما صورت‌حساب غافلگیرکننده‌ای نخواهید داشت.

  2. سقف هزینه‌ی روزانه به ازای هر مستأجر: 1.5 تا 3 برابر سقف قراردادی. واکنش در صورت عبور: تشدید محدودیت نرخ + ارسال هشدار به تیم موفقیت مشتری.

  3. سوییچ قطع اضطراری در صورت رسیدن z-score هزینه به بیش از 4 نسبت به خط مبنای مستأجر: توقف خودکار دسترسی مستأجر؛ پیج‌کردن مهندس در نوبت پاسخگویی (آنکال)؛ ارجاع موضوع به تیم‌های عملیات و موفقیت مشتری.

الگوهای انتساب هزینه

  • تگ‌گذاری و تجمیع: ثبت هدرهای متادیتا و تجمیع داده‌ها در زمانی دیگر. ساده است، ولی خروجی تقریبی می‌دهد.
  • اتصال با تله‌متری: متصل‌کردن ردگیری‌ها به صورت‌حساب از طریق شناسه‌ی ردگیری. بالاترین دقت را دارد و تیم‌های باتجربه از آن استفاده می‌کنند.
  • نمونه‌برداری و تعمیم: ثبت 5 تا 10 درصد درخواست‌ها و تعمیم آن به کل. برای برآورد هزینه‌ها کم‌هزینه و مناسب است، اما نقاط حاشیه‌ای و پرت توزیع را جا می‌اندازد.
  • تخصیص مبتنی بر مدل: استفاده از رگرسیون برای حدس‌زدن عامل هزینه. مناسب داده‌های قدیمی فاقد تگ.
  • مبتنی بر رویداد: ثبت داده‌های هزینه به‌صورت رویدادهایی در یک جریان داده (مثل Kafka یا Kinesis). کاملاً لحظه‌ای.
  • استریمینگ لحظه‌ای: داشبوردهایی که در کسری از ثانیه به‌روزرسانی می‌شوند.

سنجه‌ی واحد: هزینه به ازای هر X

اصطلاح «دلار به ازای یک میلیون توکن» زبان فروشنده‌هاست. سنجه‌های محصول این‌ها هستند:

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

هزینه را به خروجی محصول گره بزنید؛ در غیر این صورت، مسیر بهینه‌سازی بی‌هدف و بدون مهار می‌ماند.

ساختار داده‌ی ردگیری برای انتساب هزینه

trace_id: abc123
  user_id: u_42
  tenant_id: t_7
  task_id: task_classify_doc
  route: model_haiku
  layers:
    prompt_tokens: 1800
    tool_tokens: 600
    memory_tokens: 400
    response_tokens: 150
  cost_usd: 0.0135
  cached_input: true
  batch: false

این ساختار را در هر فراخوانی ثبت و ارسال کنید، در دیتالیک بریزید و بر اساس هر بُعد تجمیع نمایید. این داده‌ها در پشته‌ی رصدپذیری فاز 17 · 13 ذخیره و پردازش می‌شوند.

پشته‌ی صرفه‌جویی مرکب

راهکارهای پشته: کشینگ + پردازش دسته‌ای (Batch) + مسیریابی هوشمند + گیت‌وی. با فعال‌سازی هر چهار مورد:

  • کشینگ لایه 2 (فاز 17 · 14): حدود 10 برابر کاهش هزینه‌ی ورودی.
  • پردازش دسته‌ای (فاز 17 · 15): 50 درصد تخفیف.
  • مسیریابی به سمت مدل ارزان‌تر (فاز 17 · 16): 60 درصد کاهش هزینه.
  • کارایی گیت‌وی (فاز 17 · 19): مدیریت افزونگی و تلاش‌های مجدد.

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

اعدادی که باید به خاطر بسپارید

  • ابعاد انتساب هزینه: به ازای کاربر، به ازای وظیفه، به ازای مستأجر.
  • چهار لایه‌ی توکن: پرامپت، ابزار، حافظه، پاسخ.
  • سوییچ قطع اضطراری: رسیدن z-score هزینه به بیش از 4.
  • سنجه‌ی واحد: هزینه به ازای هر پرسش حل‌شده، نه دلار به ازای یک میلیون توکن.
  • بهینه‌سازی‌های مرکب: کاهش هزینه‌ها تا حدود 5 تا 10 درصد خط مبنا ممکن است.
سنجه‌های هزینه به تفکیک مستأجرسنجه‌های هر مستأجر پر می‌شوند تا اینکه یکی نردبان اعمال محدودیت را فعال کند
TENANT SPEND METERSEvery call is stamped with tenant_id at creation, so spend lands in the right meter as it happens, not in a retroactive tagging pass. Tenants A and B fill normally under their daily caps. Tenant C spikes past the cap line, its spend z-score crosses 4, and the kill switch answers with 429s while the on-call gets paged. The ladder runs rate limit, spend cap, kill switch, and the blast radius stays inside one meter.tokens in, stamped tenant_id at the call siteمستأجر Aمستأجر Bمستأجر Cسقفz > 4: kill switch, 429محدودیت نرخ، سپس سقف هزینه، سپس سوییچ قطع: A و B هرگز متوجه C نمی‌شوند
هر فراخوانی در لحظه ایجاد با tenant_id برچسب‌گذاری می‌شود، بنابراین هزینه‌ها در همان لحظه در سنجه‌ی مربوطه ثبت می‌شوند، نه در یک مرحله تگ‌گذاری عطف‌به‌ماسبق. مستأجرهای A و B طبق روال عادی زیر سقف‌های روزانه خود پر می‌شوند. هزینه مستأجر C از خط سقف جهش می‌کند، z-score هزینه آن از 4 می‌گذرد، و سوییچ قطع اضطراری با خطاهای 429 پاسخ می‌دهد در حالی که به نوبت پاسخگویی (آنکال) هشدار فرستاده می‌شود. این نردبان مراحل محدودیت نرخ درخواست، سقف هزینه و سوییچ قطع اضطراری را اجرا می‌کند و شعاع تخریب درون یک سنجه باقی می‌ماند.

استفاده از ابزارهای واقعی

فایل code/main.py یک سرویس چندمستأجری LLM را با نردبان مهار سه‌سطحی شبیه‌سازی می‌کند. در این اسکریپت رفتار یک مستأجر پرمصرف تزریق شده و فعال‌شدن سوییچ قطع اضطراری به نمایش درمی‌آید.

خروجی این درس

این درس سند outputs/skill-finops-plan.md را تولید می‌کند که با توجه به نوع محصول و مقیاس کاری، شِمای انتساب هزینه و نردبان مهار هزینه را طراحی خواهد کرد.

تمرین‌ها

  1. اسکریپت code/main.py را اجرا کنید. سوییچ قطع اضطراری در چه z-scoreای فعال می‌شود؟ چگونه آستانه‌ی مناسب را انتخاب می‌کنید؟
  2. یک داشبورد هزینه بر اساس مستأجر و بر اساس وظیفه طراحی کنید. 5 نمای ابتدایی که پیاده‌سازی می‌کنید کدام‌ها هستند؟
  3. اقتصاد واحد بزرگ‌ترین مستأجر شما منفی شده است. سه مداخله پیشنهاد دهید و آن‌ها را بر اساس میزان تأثیر روی مشتری مرتب کنید.
  4. هزینه‌ی هر تیکت حل‌شده را برای یک محصول پشتیبانی حساب کنید: 3 میلیون توکن به ازای هر تیکت، حدود 800 تیکت در روز، تمام ورودی‌ها با نرخ کش‌شده‌ی مدل GPT-5 به قیمت 0.125 دلار به ازای هر میلیون توکن (این قیمت زمان عرضه است؛ نرخ‌نامه‌ی رسمی لحظه‌ای را چک کنید).
  5. استدلال کنید که آیا تگ‌گذاری پس از وقوع اساساً می‌تواند کارآمد باشد؟ در چه شرایطی قابل قبول است؟

اصطلاحات کلیدی

اصطلاح در گفتار عامیانه معنای دقیق فنی
انتساب به ازای کاربر (Per-user attribution) «هزینه در سطح کاربر» ثبت user_id روی تک‌تک فراخوانی‌ها
انتساب به ازای وظیفه (Per-task attribution) «هزینه‌ی فیچر» ترکیب task_id + route برای تشخیص بخش مربوطه در محصول
انتساب به ازای مستأجر (Per-tenant attribution) «هزینه‌ی مشتری» ثبت tenant_id؛ پایه‌ی تحلیل اقتصاد واحد
چهار لایه‌ی توکن (Four token layers) «لایه‌های هزینه» پرامپت + ابزار + حافظه + پاسخ
محدودیت نرخ درخواست (Rate limit) «گارد 429» سقف مصرف هر مستأجر که در لایه‌ی گیت‌وی اعمال می‌شود
سقف هزینه‌ی روزانه (Daily spend cap) «سقف روزانه» بودجه‌ی تعریف‌شده در دامنه‌ی مستأجر به همراه ارسال هشدار
سوییچ قطع اضطراری (Kill switch) «توقف خودکار» رسیدن z-score هزینه به بیش از 4 که تعلیق خودکار را فعال می‌کند
هزینه به ازای حل هر مورد (Cost per resolved) «سنجه‌ی واحد محصول» اتصال هزینه به خروجی محصول، نه مصرف خام توکن
اتصال با تله‌متری (Telemetry joiner) «اتصال ردگیری به صورت‌حساب» دقیق‌ترین الگوی انتساب هزینه
بهینه‌سازی مرکب (Stacked optimization) «ترکیب کش، بچ، روت و گیت‌وی» تجمیع صرفه‌جویی‌ها برای رساندن هزینه به 5 تا 10 درصد خط مبنا

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسچرا متدولوژی FinOps سنتی در مدیریت هزینه مدل‌های زبانی بزرگ (LLM) با شکست مواجه می‌شود؟
  2. حین درسدرس به پیاده‌سازی کدام سه بُعد انتساب هزینه از روز اول نیاز دارد؟
  3. حین درسکدام چهار لایه توکن باید در تفکیک انتساب هزینه مشخص شوند؟
  4. حین درسمحرک فعال‌سازی سوییچ قطع اضطراری در نردبان اعمال محدودیت چیست؟
  5. پس از درسدرس به جای معیار دلار به ازای هر میلیون توکن، کدام متریک واحدی را پیشنهاد می‌کند؟
  6. پس از درسدرس از کدام الگوی انتساب هزینه به عنوان دقیق‌ترین روشی که تیم‌های باتجربه استفاده می‌کنند نام می‌برد؟

سؤالات متداول

چرا روش‌های سنتی فین‌اپس روی فراخوانی‌های LLM کار نمی‌کنند؟

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

سه بُعد اصلی انتساب هزینه در سیستم‌های چندمستأجری کدامند؟

این سه بُعد شامل انتساب به ازای کاربر (user_id)، انتساب به ازای وظیفه (task_id + route)، و انتساب به ازای مستأجر (tenant_id) هستند.

نردبان مهار هزینه برای مشترکان پرمصرف شامل چه مراحلی است؟

مرحله‌ی اول اعمال محدودیت نرخ درخواست (2 تا 3 برابر اوج بار)، مرحله‌ی دوم سقف هزینه‌ی روزانه همراه با هشدار، و مرحله‌ی سوم سوییچ قطع اضطراری خودکار با رسیدن z-score هزینه به بیش از 4 است.

چرا محاسبه‌ی هزینه بر اساس «دلار به ازای میلیون توکن» کافی نیست؟

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

ما رو توی گوگل بیشتر ببین

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