एलएलएम लागत कम करें: टोकन अनुकूलन रणनीतियाँ

बुद्धिमान टोकन अनुकूलन के साथ LLM लागत को 80% तक कम करें

Page content

टोकन अनुकूलन वह महत्वपूर्ण कौशल है जो लागत-प्रभावी एलएलएम अनुप्रयोगों को बजट-खर्च करने वाले प्रयोगों से अलग करता है।

जब API लागत टोकन उपयोग के साथ रैखिक रूप से बढ़ती है, तो अनुकूलन रणनीतियों को समझना और लागू करना गुणवत्ता बनाए रखते हुए खर्चों को 60-80% तक कम कर सकता है।

smart architecture

टोकन अर्थशास्त्र को समझना

अनुकूलन से पहले, आपको विभिन्न एलएलएम प्रदाताओं के साथ टोकन और मूल्य निर्धारण के काम करने के तरीके समझने की आवश्यकता है।

टोकन बेसिक्स

टोकन वे मूलभूत इकाइयां हैं जिन्हें एलएलएम प्रोसेस करते हैं - लगभग 4 अक्षरों या अंग्रेजी में 0.75 शब्दों के बराबर। स्ट्रिंग “Hello, world!” लगभग 4 टोकन्स को शामिल करता है। विभिन्न मॉडल अलग-अलग टोकनाइज़र का उपयोग करते हैं (GPT tiktoken का उपयोग करता है, Claude अपना खुद का उपयोग करता है), इसलिए टोकन गिनती प्रदाताओं के बीच थोड़ी अलग होती है।

मूल्य निर्धारण मॉडल तुलना

OpenAI मूल्य निर्धारण (2025 तक):

  • GPT-4 टर्बो: $0.01 इनपुट / $0.03 आउटपुट प्रति 1K टोकन
  • GPT-3.5 टर्बो: $0.0005 इनपुट / $0.0015 आउटपुट प्रति 1K टोकन
  • GPT-4o: $0.005 इनपुट / $0.015 आउटपुट प्रति 1K टोकन

Anthropic मूल्य निर्धारण:

  • Claude 3 Opus: $0.015 इनपुट / $0.075 आउटपुट प्रति 1K टोकन
  • Claude 3 Sonnet: $0.003 इनपुट / $0.015 आउटपुट प्रति 1K टोकन
  • Claude 3 Haiku: $0.00025 इनपुट / $0.00125 आउटपुट प्रति 1K टोकन

Cloud LLM Providers के व्यापक तुलना के लिए, जिसमें विस्तृत मूल्य निर्धारण, विशेषताएं और उपयोग के मामले शामिल हैं, हमारी समर्पित गाइड देखें।

मुख्य अंतर्दृष्टि: आउटपुट टोकन इनपुट टोकन से 2-5 गुना अधिक महंगे होते हैं। आउटपुट लंबाई को सीमित करने का लागत पर असमान प्रभाव पड़ता है।

कुशलता के लिए प्रॉम्प्ट इंजीनियरिंग

प्रभावी प्रॉम्प्ट इंजीनियरिंग गुणवत्ता को खराब किए बिना टोकन उपभोग को महत्वपूर्ण रूप से कम कर देती है।

1. अतिरिक्तता को हटाएं

खराब उदाहरण (127 टोकन):

आप एक सहायक हैं। कृपया मुझे निम्नलिखित कार्य में मदद करें।
मैं चाहता हूँ कि आप निम्नलिखित पाठ का विश्लेषण करें और मुझे एक सारांश प्रदान करें।
यह वह पाठ है जिसे मैं सारांशित करना चाहता हूँ:
[पाठ]
कृपया मुख्य बिंदुओं का संक्षिप्त सारांश प्रदान करें।

अनुकूलित (38 टोकन):

मुख्य बिंदुओं का सारांश:
[पाठ]

बचत: 70% टोकन कमी, समान आउटपुट गुणवत्ता।

2. संरचित प्रारूप का उपयोग करें

JSON और संरचित आउटपुट्स टोकन अपव्यय को कम करते हैं जो विस्तृत प्राकृतिक भाषा से होते हैं।

इसके बजाय:

कृपया इस पाठ से व्यक्ति के नाम, उम्र और पेशे को निकालें
और अपने उत्तर को स्पष्ट रूप से प्रारूपित करें।

इसका उपयोग करें:

JSON में निकालें: {name, age, occupation}
पाठ: [इनपुट]

3. फ्यू-शॉट लर्निंग अनुकूलन

फ्यू-शॉट उदाहरण शक्तिशाली लेकिन महंगे होते हैं। इनका अनुकूलन करें:

  • जितने कम उदाहरणों का उपयोग करें उतने ही (1-3 आमतौर पर पर्याप्त होते हैं)
  • उदाहरणों को संक्षिप्त रखें - अनावश्यक शब्दों को हटाएं
  • सामान्य पूर्वसूचक का उपयोग करें - दोहराए गए निर्देशों को कम करें
# अनुकूलित फ्यू-शॉट प्रॉम्प्ट
prompt = """सेंटिमेंट वर्गीकृत करें (pos/neg):
पाठ: "Great product!" -> pos
पाठ: "Disappointed" -> neg
पाठ: "{user_input}" ->"""

अधिक Python अनुकूलन पैटर्न और सिंटैक्स शॉर्टकट्स के लिए, हमारी Python Cheatsheet देखें।

कॉन्टेक्स्ट कैशिंग रणनीतियाँ

कॉन्टेक्स्ट कैशिंग उन अनुप्रयोगों के लिए सबसे प्रभावी अनुकूलन है जिनमें दोहराए गए स्टैटिक सामग्री होती है।

कॉन्टेक्स्ट कैशिंग का काम कैसे करता है

प्रदाताओं जैसे OpenAI और Anthropic उन प्रॉम्प्ट पूर्वसूचकों को कैश करते हैं जो कई अनुरोधों में दिखाई देते हैं। कैश किए गए भागों की लागत 50-90% कम होती है।

आवश्यकताएं:

  • न्यूनतम कैश योग्य सामग्री: 1024 टोकन (OpenAI) या 2048 टोकन (Anthropic)
  • कैश TTL: प्रदाता के आधार पर 5-60 मिनट
  • सामग्री समान होनी चाहिए और प्रॉम्प्ट की शुरुआत में दिखाई देनी चाहिए

कार्यान्वयन उदाहरण

from openai import OpenAI

client = OpenAI()

# अनुरोधों के बीच कैश किया गया सिस्टम संदेश
SYSTEM_PROMPT = """आप TechCorp के ग्राहक सेवा AI हैं।
कंपनी नीतियां:
[बड़ी नीति दस्तावेज़ - 2000 टोकन]
"""

# यह स्वचालित रूप से कैश हो जाता है
response = client.chat.completions.create(
    model="gpt-4-turbo",
    messages=[
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user", "content": "मैं एक आइटम कैसे वापस कर सकता हूँ?"}
    ]
)

# कैश TTL के भीतर बाद के कॉल कैश किए गए सिस्टम प्रॉम्प्ट का उपयोग करते हैं
# केवल उपयोगकर्ता संदेश + आउटपुट के लिए भुगतान करते हैं

वास्तविक दुनिया का प्रभाव: ज्ञान आधार या लंबे निर्देशों वाले अनुप्रयोगों में 60-80% लागत कमी देखी जाती है।

मॉडल चयन रणनीति

हर कार्य के लिए सही मॉडल का उपयोग करना लागत अनुकूलन के लिए महत्वपूर्ण है।

मॉडल लैडर

  1. GPT-4 / Claude Opus - जटिल तर्क, रचनात्मक कार्य, महत्वपूर्ण सटीकता
  2. GPT-4o / Claude Sonnet - संतुलित प्रदर्शन/लागत, सामान्य उद्देश्य
  3. GPT-3.5 / Claude Haiku - सरल कार्य, वर्गीकरण, निकालना
  4. फाइन-ट्यून किए गए छोटे मॉडल - विशेषज्ञ, दोहराए गए कार्य

रूटिंग पैटर्न

def route_request(task_complexity, user_query):
    """कॉम्प्लेक्सिटी के आधार पर उपयुक्त मॉडल में रूट करें"""

    # सरल वर्गीकरण - Haiku का उपयोग करें
    if task_complexity == "simple":
        return call_llm("claude-3-haiku", user_query)

    # मध्यम - Sonnet का उपयोग करें
    elif task_complexity == "moderate":
        return call_llm("claude-3-sonnet", user_query)

    # जटिल तर्क - Opus का उपयोग करें
    else:
        return call_llm("claude-3-opus", user_query)

केस स्टडी: एक ग्राहक सेवा चैटबॉट जो 80% प्रश्नों को GPT-3.5 और 20% को GPT-4 में रूट करता है, ने सभी प्रश्नों के लिए GPT-4 का उपयोग करने के मुकाबले लागत को 75% कम कर दिया।

बैच प्रोसेसिंग

गैर-समय-संवेदनशील कार्यलोड के लिए, बैच प्रोसेसिंग अधिकांश प्रदाताओं से 50% छूट प्रदान करता है।

OpenAI बैच API

from openai import OpenAI
client = OpenAI()

# बैच फाइल बनाएं
batch_requests = [
    {"custom_id": f"request-{i}",
     "method": "POST",
     "url": "/v1/chat/completions",
     "body": {
         "model": "gpt-3.5-turbo",
         "messages": [{"role": "user", "content": query}]
     }}
    for i, query in enumerate(queries)
]

# सबमिट बैच (50% छूट, 24 घंटे प्रोसेसिंग)
batch = client.batches.create(
    input_file_id=upload_batch_file(batch_requests),
    endpoint="/v1/chat/completions",
    completion_window="24h"
)

उपयोग के मामले:

  • डेटा लेबलिंग और एनोटेशन
  • ब्लॉग/SEO के लिए सामग्री जनरेशन
  • रिपोर्ट जनरेशन
  • बैच अनुवाद
  • डेटासेट सिंथेटिक जनरेशन

आउटपुट नियंत्रण तकनीकें

चूंकि आउटपुट टोकन 2-5 गुना अधिक महंगे होते हैं, इसलिए आउटपुट लंबाई को नियंत्रित करना महत्वपूर्ण है।

1. अधिकतम टोकन सेट करें

response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    max_tokens=150  # हार्ड लिमिट अनियंत्रित लागत को रोकता है
)

2. स्टॉप सीक्वेंस का उपयोग करें

response = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    stop=["END", "\n\n\n"]  # मार्करों पर रुकें
)

3. संक्षिप्त प्रारूपों का अनुरोध करें

निर्देशों जैसे जोड़ें:

  • “50 शब्दों से कम में उत्तर दें”
  • “केवल बुलेट पॉइंट्स प्रदान करें”
  • “केवल JSON लौटाएं, कोई स्पष्टीकरण नहीं”

बेहतर यूएक्स के लिए स्ट्रीमिंग

हालांकि स्ट्रीमिंग लागत को कम नहीं करती, यह अनुभव की गति को बेहतर बनाती है और प्रारंभिक समापन की अनुमति देती है।

stream = client.chat.completions.create(
    model="gpt-4",
    messages=messages,
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        token = chunk.choices[0].delta.content
        print(token, end="")

        # अगर प्रतिक्रिया गलत रास्ते पर जाती है तो प्रारंभिक समापन
        if undesired_pattern(token):
            break

RAG अनुकूलन

रिट्रीवल ऑगमेंटेड जनरेशन (RAG) कॉन्टेक्स्ट जोड़ता है, लेकिन अनुकूलित नहीं किया गया RAG टोकन को बर्बाद करता है।

कुशल RAG पैटर्न

def optimized_rag(query, vector_db):
    # 1. संबंधित चंक प्राप्त करें
    chunks = vector_db.search(query, top_k=3)  # बहुत अधिक नहीं

    # 2. चंक संपीड़ित करें - अतिरिक्तता हटाएं
    compressed = compress_chunks(chunks)  # कस्टम संपीड़न

    # 3. टोकन सीमा तक काटें
    context = truncate_to_tokens(compressed, max_tokens=2000)

    # 4. संरचित प्रॉम्प्ट
    prompt = f"कॉन्टेक्स्ट:\n{context}\n\nQ: {query}\nA:"

    return call_llm(prompt)

अनुकूलन तकनीकें:

  • सेमांटिक चंकिंग का उपयोग करें (फिक्स्ड-साइज नहीं)
  • प्राप्त चंक से मार्कडाउन प्रारूप हटाएं
  • सबसे संबंधित सामग्री प्राप्त करने के लिए रीरैंकिंग लागू करें
  • बड़े दस्तावेजों के लिए चंक सारांश का विचार करें

प्रतिक्रिया कैशिंग

समान या समान अनुरोधों को कैश करें ताकि API कॉल पूरी तरह से टालें।

Redis के साथ कार्यान्वयन

import redis
import hashlib
import json

redis_client = redis.Redis()

def cached_llm_call(prompt, model="gpt-4", ttl=3600):
    # प्रॉम्प्ट + मॉडल से कैश की बनाएं
    cache_key = hashlib.md5(
        f"{model}:{prompt}".encode()
    ).hexdigest()

    # कैश की जांच करें
    cached = redis_client.get(cache_key)
    if cached:
        return json.loads(cached)

    # LLM को कॉल करें
    response = call_llm(model, prompt)

    # परिणाम कैश करें
    redis_client.setex(
        cache_key,
        ttl,
        json.dumps(response)
    )

    return response

सेमांटिक कैशिंग: समान (न कि समान) प्रश्नों के लिए, वेक्टर एम्बेडिंग का उपयोग करके कैश किए गए प्रतिक्रियाओं को ढूंढें।

निगरानी और विश्लेषण

टोकन उपयोग को ट्रैक करें ताकि अनुकूलन के अवसरों की पहचान हो सके।

आवश्यक मेट्रिक्स

class TokenTracker:
    def __init__(self):
        self.metrics = {
            'total_tokens': 0,
            'input_tokens': 0,
            'output_tokens': 0,
            'cost': 0.0,
            'requests': 0
        }

    def track_request(self, response, model):
        usage = response.usage
        self.metrics['input_tokens'] += usage.prompt_tokens
        self.metrics['output_tokens'] += usage.completion_tokens
        self.metrics['total_tokens'] += usage.total_tokens
        self.metrics['cost'] += calculate_cost(usage, model)
        self.metrics['requests'] += 1

    def report(self):
        return {
            'avg_tokens_per_request':
                self.metrics['total_tokens'] / self.metrics['requests'],
            'total_cost': self.metrics['cost'],
            'input_output_ratio':
                self.metrics['input_tokens'] / self.metrics['output_tokens']
        }

लागत अलर्ट

उपयोग जब सीमा से अधिक हो जाता है तो अलर्ट सेट करें:

def check_cost_threshold(daily_cost, threshold=100):
    if daily_cost > threshold:
        send_alert(f"दैनिक लागत ${daily_cost} ${threshold} से अधिक हो गई")

उन्नत तकनीकें

1. प्रॉम्प्ट संपीड़न मॉडल

प्रॉम्प्ट को संपीड़ित करने के लिए समर्पित मॉडल का उपयोग करें:

  • लॉन्गएलएलएमलिंगुआ
  • ऑटो कम्प्रेसर्स
  • सीखे हुए संपीड़न टोकन

ये 90%+ टास्क प्रदर्शन बनाए रखते हुए 10x संपीड़न अनुपात प्राप्त कर सकते हैं।

2. अनुमानित डिकोडिंग

एक छोटे मॉडल को बड़े मॉडल के साथ चलाएं ताकि टोकन का पूर्वानुमान लगाया जा सके, जिससे बड़े मॉडल के कॉल कम हो। आमतौर पर 2-3x स्पीडअप और समान गुणवत्ता के लिए लागत कमी।

3. क्वांटाइजेशन

स्व-होस्टेड मॉडल के लिए, क्वांटाइजेशन (4-बिट, 8-बिट) मेमोरी और कंप्यूट को कम करता है:

  • 4-बिट: ~75% मेमोरी कमी, न्यूनतम गुणवत्ता हानि
  • 8-बिट: ~50% मेमोरी कमी, नगण्य गुणवत्ता हानि

अगर आप एलएलएम को स्थानीय रूप से चलाते हैं, तो Ollama क्वांटाइज्ड मॉडल को तैनात करने के लिए एक उत्कृष्ट प्लेटफॉर्म प्रदान करता है जिसमें न्यूनतम कॉन्फ़िगरेशन की आवश्यकता होती है। हार्डवेयर चयन और प्रदर्शन बेंचमार्क के लिए, हमारा NVIDIA DGX Spark vs Mac Studio vs RTX-4080 तुलना विभिन्न हार्डवेयर कॉन्फ़िगरेशन पर बड़े क्वांटाइज्ड मॉडल चलाते हुए वास्तविक प्रदर्शन दिखाता है।

लागत अनुकूलन चेकलिस्ट

  • वर्तमान टोकन उपयोग और प्रति एंडपॉइंट लागत का प्रोफाइल बनाएं
  • प्रॉम्प्ट्स को अतिरिक्त शब्दों को हटाकर रिडंडेंसी के लिए ऑडिट करें
  • 1K टोकन से अधिक स्थिर सामग्री के लिए कॉन्टेक्स्ट कैशिंग लागू करें
  • मॉडल रूटिंग सेट अप करें (छोटे के लिए सरल, बड़े के लिए जटिल)
  • सभी अनुरोधों के लिए max_tokens सीमाएं जोड़ें
  • समान प्रश्नों के लिए रिस्पॉन्स कैशिंग लागू करें
  • गैर-आवश्यक कार्यभार के लिए बैच API का उपयोग करें
  • बेहतर यूएक्स के लिए स्ट्रीमिंग सक्षम करें
  • RAG को अनुकूलित करें: कम चंक, बेहतर रैंकिंग
  • टोकन ट्रैकिंग और लागत अलर्ट के साथ निगरानी करें
  • बार-बार होने वाले कार्यों के लिए फाइन-ट्यूनिंग का विचार करें
  • वर्गीकरण के लिए छोटे मॉडल (हाइकू, GPT-3.5) का मूल्यांकन करें

वास्तविक दुनिया का केस स्टडी

परिदृश्य: ग्राहक सहायता चैटबॉट, 100K अनुरोध/माह

अनुकूलन से पहले:

  • मॉडल: सभी अनुरोधों के लिए GPT-4
  • औसत इनपुट टोकन: 800
  • औसत आउटपुट टोकन: 300
  • लागत: 100K × (800 × 0.00003 + 300 × 0.00006) = $4,200/माह

अनुकूलन के बाद:

  • मॉडल रूटिंग: 80% GPT-3.5, 20% GPT-4
  • कॉन्टेक्स्ट कैशिंग: 70% प्रॉम्प्ट्स कैश्ड
  • प्रॉम्प्ट संपीड़न: 40% कमी
  • रिस्पॉन्स कैशिंग: 15% कैश हिट दर

परिणाम:

  • 85% अनुरोधों ने GPT-4 से बचा
  • 70% कॉन्टेक्स्ट कैश छूट का लाभ
  • 40% कम इनपुट टोकन
  • प्रभावी लागत: $780/माह
  • बचत: 81% ($3,420/माह)

उपयोगी लिंक

  • OpenAI Tokenizer Tool - टोकन ब्रेकडाउन का दृश्यीकरण
  • Anthropic Pricing - Claude मॉडल की तुलना करें
  • LiteLLM - लागत ट्रैकिंग के साथ एकीकृत LLM API
  • Prompt Engineering Guide - सर्वोत्तम प्रथाएं
  • LangChain - कैशिंग के साथ LLM एप्लिकेशन फ्रेमवर्क
  • HuggingFace Tokenizers - तेज टोकनाइजेशन लाइब्रेरी
  • OpenAI Batch API Docs - बैच प्रोसेसिंग के लिए 50% छूट

निष्कर्ष

टोकन अनुकूलन एलएलएम अर्थशास्त्र को असहज महंगे से स्थायी रूप से स्केलेबल में बदल देता है। प्रॉम्प्ट संपीड़न, कॉन्टेक्स्ट कैशिंग, स्मार्ट मॉडल चयन और रिस्पॉन्स कैशिंग लागू करके, अधिकांश एप्लिकेशन गुणवत्ता के बिना 60-80% लागत कमी प्राप्त करते हैं।

त्वरित जीतों से शुरू करें: अपने प्रॉम्प्ट्स का ऑडिट करें, कॉन्टेक्स्ट कैशिंग सक्षम करें, और सरल कार्यों को छोटे मॉडल में रूट करें। अपने टोकन उपयोग का धार्मिक रूप से ट्रैक करें - जो मापा जाता है वह अनुकूलित होता है। एक लागत प्रभावी एलएलएम एप्लिकेशन और एक महंगे के बीच अंतर तकनीक नहीं है—यह अनुकूलन रणनीति है।

संबंधित लेख