পাঠ ৩১ · ৩৩-এর মধ্যে · মডিউল ৪
Home / AI Courses / MLOps / LLM cost

Cost optimization for LLM serving

LLM cost — token math to architecture
৭ মিনিট পড়া উচ্চ · Advanced Cost

এই পাঠে যা শিখবেন

  • Token cost math
  • Model routing + cascading
  • Caching strategies (exact + semantic)
  • Self-host crossover analysis

১ · Token cost basics

$$ \text{cost} = (n_{in} \cdot p_{in} + n_{out} \cdot p_{out}) \times \text{requests} $$

API rates 2025 (approx):

  • GPT-4o: $5/1M input, $15/1M output.
  • GPT-4o-mini: $0.15/1M input, $0.60/1M output.
  • Claude Sonnet: $3/$15.
  • Claude Haiku: $0.25/$1.25.
  • Self-hosted LLaMA 70B: ~$0.50/1M tokens.

২ · Cost calculation example

Python · Cost calculator
def llm_cost(
    n_input_tokens: int,
    n_output_tokens: int,
    requests_per_day: int,
    model: str = "gpt-4o",
) -> dict:
    rates = {
        "gpt-4o": {"in": 5.00, "out": 15.00},  # per 1M tokens
        "gpt-4o-mini": {"in": 0.15, "out": 0.60},
        "claude-sonnet": {"in": 3.00, "out": 15.00},
        "claude-haiku": {"in": 0.25, "out": 1.25},
        "llama-70b-self": {"in": 0.50, "out": 0.50},
    }
    r = rates[model]
    cost_per_req = (
        (n_input_tokens * r["in"] / 1_000_000)
        + (n_output_tokens * r["out"] / 1_000_000)
    )
    daily = cost_per_req * requests_per_day
    monthly = daily * 30
    return {
        "model": model,
        "cost_per_request": round(cost_per_req, 5),
        "daily": round(daily, 2),
        "monthly": round(monthly, 2),
    }


# BD chatbot — Bangla token tax (3× English)
print(llm_cost(2000, 500, 10_000, "gpt-4o"))
# {'monthly': $4500}
print(llm_cost(2000, 500, 10_000, "gpt-4o-mini"))
# {'monthly': $135}

    
30× cost difference GPT-4o vs mini — many simple tasks mini sufficient. Don't default GPT-4o.

৩ · Model routing (cascade)

Easy → cheap model. Hard → escalate expensive.

  • Classifier "easy/hard" routes input.
  • Cheap model attempt; low confidence → escalate.
  • "Mixture of agents" — multiple cheap models combine.

৪ · Caching

Two cache types:

  • Exact match: request hash; common for FAQ-like.
  • Semantic: query embedding similar — reuse. 30-60% hit rate possible.
Python · Semantic cache
import openai
import numpy as np
from typing import Optional

class SemanticCache:
    def __init__(self, threshold: float = 0.95):
        self.threshold = threshold
        self.cache = []  # list of (embedding, response)

    def _embed(self, text: str) -> np.ndarray:
        emb = openai.embeddings.create(
            input=text, model="text-embedding-3-small"
        ).data[0].embedding
        return np.array(emb)

    def get(self, query: str) -> Optional[str]:
        q_emb = self._embed(query)
        for emb, response in self.cache:
            sim = np.dot(q_emb, emb) / (np.linalg.norm(q_emb) * np.linalg.norm(emb))
            if sim > self.threshold:
                return response
        return None

    def set(self, query: str, response: str):
        emb = self._embed(query)
        self.cache.append((emb, response))


# Usage
cache = SemanticCache()

def cached_llm(query: str) -> str:
    cached = cache.get(query)
    if cached:
        return cached  # 0 cost
    # Otherwise, call LLM
    resp = openai.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": query}],
    ).choices[0].message.content
    cache.set(query, resp)
    return resp

    
Embedding-based similarity. Threshold tune carefully — too high (no hits), too low (wrong response). Production: Redis vector store.

৫ · Quantization

Self-host model: GPTQ/AWQ INT4 — 4× memory + speed.

(Lesson 20 details). Smaller GPU fits → cheaper instance.

৬ · Continuous batching (vLLM)

vLLM PagedAttention — variable-length output efficient. 5-10× throughput vs naive. GPU cost per request dramatically lower.

৭ · Self-host crossover

$$ \text{breakeven\_RPS} = \frac{\text{API\_cost\_per\_token}}{\text{self\_host\_cost\_per\_token}} $$

BD context:

  • OpenAI mini: $0.50/1M tokens.
  • LLaMA 70B self-host: ~$0.50/1M (similar cost).
  • OpenAI GPT-4o: $10/1M.
  • Self-host crossover: ~50K daily requests.

৮ · KV cache

Multi-turn conversation — previous tokens KV state cache. Don't re-process. vLLM, TRT-LLM built-in.

৯ · Speculative decoding

Small "draft" model proposes; large model verifies. 2-3× speedup. vLLM/TGI supports.

LLM cost optimization — layered approach Layer 1: Cache (semantic + exact) — eliminate calls 30-60% Layer 2: Model routing — easy → cheap, hard → escalate Layer 3: Prompt optimize — shorter context, fewer examples Layer 4: Self-host (vLLM, INT4 quantize) — at scale Combined effects: 5-10× cost reduction vs naive default.
LLM cost optimization layered — cache, route, optimize prompt, self-host. প্রতিটি 1.5-3× saving.
Bangladesh chatbot reality — naive monthly $5K → optimized $500 possible. Cache + routing essential first steps.

ভাবনার প্রশ্ন

প্র ০১"Self-host vs API — Bangladesh fintech-এর জন্য concrete numbers?"

Concrete decision-driving analysis.

Scenario:

  • 10K daily Bangla queries.
  • 2K input + 500 output tokens average.
  • Bangla token tax 3× → effective 6K input + 1.5K output English-equivalent.

OpenAI GPT-4o:

  • Daily: 10K × (6K × $5/M + 1.5K × $15/M) = $52.
  • Monthly: $1,560.

OpenAI GPT-4o-mini:

  • Daily: 10K × (6K × $0.15/M + 1.5K × $0.60/M) = $1.80.
  • Monthly: $54.
  • 30× cheaper, quality slightly less.

Self-hosted Llama 70B (vLLM, INT4):

  • 1× A100 instance: $1.5/hour × 24 × 30 = $1,080/month.
  • ~5K-10K req/day capacity.
  • Monthly: $1,080 fixed + ops cost.
  • Crossover with GPT-4o: yes, but mini cheaper.

Decision:

  • Volume small (10K/day): GPT-4o-mini, no self-host.
  • Volume large (100K+/day): self-host wins big.
  • Compliance forced: self-host regardless.

Hidden costs:

  • Self-host: ops engineer 0.2 FTE = $1K/month.
  • API: zero ops.
  • Real crossover often higher than naive token math suggest.

মূল উপলব্ধি: Most BD startup-এর জন্য — API-mini default. Self-host justify volume + compliance. Don't over-engineer initially.

প্র ০২"Cache hit rate boost — practical tactics?"

Cache hit rate = saved cost; tactical optimization.

Boost tactics:

  • Normalize input: lowercase, strip whitespace, sort fields. Same intent → same key.
  • Semantic cache: embedding-based reuse similar queries.
  • FAQ extract: common questions pre-warm cache.
  • User tier: free-tier higher cache reuse; paid more fresh.

Threshold tuning:

  • 0.95+ — high precision, low recall.
  • 0.85 — more hits, occasional wrong answer.
  • Validate empirically.

Cache invalidation:

  • TTL — daily/weekly expire.
  • Source change — invalidate dependent cache.

Anti-pattern:

  • Over-aggressive cache — outdated information served.
  • Cache miss attribution wrong — semantic threshold issue often.

BD context:

  • Customer support FAQ — extreme cache hit (50-70%).
  • Personal recommendation — cache irrelevant.

মূল উপলব্ধি: Cache strategy use-case-specific. FAQ ideal; personal poor. Measure hit rate; tune threshold; pre-warm common.

প্র ০৩"Outage fallback — API down হলে কী?"

OpenAI/Anthropic occasional outage; production resilience.

Strategies:

  • Multi-provider: primary OpenAI, fallback Anthropic. Switch on error.
  • Self-host fallback: degraded but available.
  • Rule-based fallback: simple keyword matching for common queries.
  • "Degrade gracefully": "I'm temporarily unavailable, please try later".

Implementation:

  • Circuit breaker per provider.
  • Retry with backoff.
  • Health check endpoint monitor.

Cost trade-off:

  • Multi-provider — vendor diversification, slightly more complex.
  • Self-host fallback — fixed cost regardless usage.

BD context — bKash chatbot:

  • Multi-provider primary; rule-based fallback bottom.
  • "Send via email" graceful escape.

Test:

  • Chaos engineering — block API, verify fallback.
  • Monthly drill.

মূল উপলব্ধি: LLM service depend external; resilience design. Multi-provider + degraded fallback minimum. Test failure paths.

প্র ০৪"Cost attribution — multiple team-এর সাথে কীভাবে?"

Shared LLM infrastructure — cost allocation governance.

Approaches:

  • Per-request tagging: team/project label log; periodic reporting.
  • Separate API key: per-team OpenAI organization; clear billing.
  • Quota: monthly budget per team; lockout on overrun.
  • Showback: internal "billing" — chargeback culture.

Tools:

  • Helicone, Langfuse — usage tracking by user/project.
  • OpenAI organization-level usage API.

Governance:

  • Monthly cost dashboard share.
  • Top-cost prompts review.
  • Optimization SLA per team.

BD context:

  • Mid-size company — single API key + tagging usually.
  • Larger — separate org accounts.

Anti-pattern:

  • "Shared budget free for all" — runaway cost.
  • Without attribution — optimization no incentive.

মূল উপলব্ধি: Cost attribution = governance enabler. Without — accountability weak. Tagging cheap, billing organize-able. Day-1 setup essential.

অনুশীলন

  1. Calculate: আপনার (real or imagined) LLM use case-এর monthly cost — different model.

    উপরের code adapt; vary RPS, tokens. 4-5 model compare table.

  2. Cache: Semantic cache simple implementation — 100 query test, hit rate measure.

    Threshold 0.95, 0.90, 0.85 — accuracy vs hit rate trade-off.

  3. চিন্তা: Bangla customer support optimization stack — 5 layers prioritize cost saving.
    • FAQ exact-match cache (40% hit).
    • Semantic cache (additional 20% hit).
    • GPT-4o-mini routing (vs 4o).
    • Prompt compression (Bangla input shorter).
    • Self-host LLaMA at high volume (5×+ scale).

আরও পড়ুন

পূর্ববর্তী পাঠ
পাঠ ৩০ · LLM eval & safety