بنية التخزين المؤقت للمطالبات: تقليل تكاليف وزمن استجابة نماذج اللغة الكبيرة
آخر تحديث: 11 ديسمبر 2025
تحديث ديسمبر 2025: يوفر التخزين المؤقت للبادئة من Anthropic خفضاً بنسبة 90% في التكلفة و85% في زمن الاستجابة للمطالبات الطويلة. التخزين المؤقت التلقائي من OpenAI مُفعّل افتراضياً (توفير 50% من التكلفة). 31% من استعلامات نماذج اللغة الكبيرة تُظهر تشابهاً دلالياً—هدر هائل بدون تخزين مؤقت. تكلفة قراءة الذاكرة المؤقتة 0.30 دولار/مليون رمز مقابل 3.00 دولار/مليون للمعالجة الجديدة (Anthropic). بنية تخزين مؤقت متعددة الطبقات (دلالي ← بادئة ← استدلال) لتعظيم التوفير.
يقلل التخزين المؤقت للمطالبات من Anthropic التكاليف بنسبة تصل إلى 90% وزمن الاستجابة بنسبة تصل إلى 85% للمطالبات الطويلة.¹ تحقق OpenAI خفضاً بنسبة 50% في التكلفة مع التخزين المؤقت التلقائي المُفعّل افتراضياً. تُظهر الأبحاث أن 31% من استعلامات نماذج اللغة الكبيرة تتشابه دلالياً مع طلبات سابقة، مما يمثل هدراً هائلاً في عمليات النشر التي تفتقر إلى بنية تخزين مؤقت.² المؤسسات التي تُشغّل تطبيقات ذكاء اصطناعي إنتاجية تُضيّع أموالاً طائلة بدون استراتيجيات تخزين مؤقت مناسبة.
يعمل التخزين المؤقت للمطالبات على مستويات متعددة—من التخزين المؤقت للبادئة على مستوى المزود الذي يُعيد استخدام حسابات ذاكرة KV المؤقتة، إلى التخزين المؤقت الدلالي على مستوى التطبيق الذي يُعيد الاستجابات السابقة للاستعلامات المتشابهة. فهم كل طبقة ومتى يتم نشرها يساعد المؤسسات على تحسين التكلفة وزمن الاستجابة لأنماط أعباء العمل الخاصة بها.
أساسيات التخزين المؤقت
تنشأ تكاليف استدلال نماذج اللغة الكبيرة من مصدرين: معالجة رموز الإدخال وتوليد رموز الإخراج. تستهدف استراتيجيات التخزين المؤقت كليهما:
التخزين المؤقت لرموز الإدخال (التخزين المؤقت للبادئة)
يعالج كل طلب لنموذج اللغة الكبيرة رموز الإدخال عبر آلية الانتباه في النموذج، مُولّداً أزواج المفتاح-القيمة المُخزّنة في ذاكرة KV المؤقتة. عندما تشترك طلبات متعددة في بادئات متطابقة—مطالبات النظام، أمثلة few-shot، أو سياق المستند—تتكرر حسابات ذاكرة KV المؤقتة بشكل غير ضروري.
حل التخزين المؤقت للبادئة: تخزين قيم KV المحسوبة للبادئات الشائعة. الطلبات اللاحقة ذات البادئات المتطابقة تتجاوز إعادة الحساب، بدءاً من الحالة المُخزّنة مؤقتاً.
التأثير على التكلفة: - Anthropic: تكلفة قراءة الذاكرة المؤقتة 0.30 دولار/مليون رمز مقابل 3.00 دولار/مليون للمعالجة الجديدة (توفير 90%) - OpenAI: خصم 50% للرموز المُخزّنة مؤقتاً - Google: تسعير متغير بناءً على نافذة السياق
التأثير على زمن الاستجابة: تجاوز حساب البادئة يقلل الوقت حتى الرمز الأول بنسبة 50-85% حسب طول البادئة.
التخزين المؤقت للإخراج (التخزين المؤقت الدلالي)
بعض الطلبات تستحق استجابات متطابقة—الأسئلة المتكررة، الاستعلامات الحتمية، أو عمليات البحث التي لا تتطلب إعادة التوليد.
حل التخزين المؤقت الدلالي: تخزين استجابات الإخراج مُفهرسة بمدخلات متشابهة دلالياً. إرجاع الاستجابات المُخزّنة مؤقتاً دون استدعاء نموذج اللغة الكبيرة للاستعلامات المتطابقة.
التأثير على التكلفة: الاستجابات المُخزّنة مؤقتاً تُلغي استدعاءات API بالكامل—توفير 100% عند إصابة الذاكرة المؤقتة.
التأثير على زمن الاستجابة: الاستجابة تعود في ميلي ثوانٍ مقابل ثوانٍ لاستدلال نموذج اللغة الكبيرة.
تسلسل التخزين المؤقت
تُنفّذ الأنظمة الإنتاجية عادةً طبقات تخزين مؤقت متعددة:
الطلب → ذاكرة دلالية مؤقتة (توفير 100%) → ذاكرة بادئة مؤقتة (توفير 50-90%) → استدلال كامل
↓ ↓ ↓
استجابة مُخزّنة مؤقتاً حالة KV مُخزّنة مؤقتاً حساب جديد
كل طبقة تلتقط فرص تحسين مختلفة بناءً على أنماط تشابه الطلبات.
التخزين المؤقت للمطالبات على مستوى المزود
Anthropic Claude
تقدم Anthropic أكثر تخزين مؤقت للمطالبات قابلية للتكوين:³
التسعير: - كتابات الذاكرة المؤقتة: علاوة 25% على سعر الإدخال الأساسي - قراءات الذاكرة المؤقتة: خصم 90% (10% من السعر الأساسي) - نقطة التعادل: إصابتان أو أكثر للذاكرة المؤقتة لكل بادئة مُخزّنة
المتطلبات: - 1,024 رمز كحد أدنى لكل نقطة فحص للذاكرة المؤقتة - حتى 4 نقاط فحص للذاكرة المؤقتة لكل طلب - عمر الذاكرة المؤقتة: 5 دقائق من آخر وصول (تُمدّد إلى ساعة مع الإصابات المنتظمة) - إمكانية تخزين مؤقت لما يصل إلى 5 أدوار محادثة
التنفيذ:
import anthropic
client = anthropic.Anthropic()
# وضع علامة على المحتوى للتخزين المؤقت باستخدام cache_control
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
system=[
{
"type": "text",
"text": "You are an expert assistant for our enterprise software...",
"cache_control": {"type": "ephemeral"} # وضع علامة للتخزين المؤقت
}
],
messages=[{"role": "user", "content": "How do I configure user permissions?"}]
)
أفضل الممارسات: - وضع المحتوى الثابت (مطالبات النظام، التوثيق) في بداية المطالبة - وضع المحتوى الديناميكي (مدخلات المستخدم، المحادثة) في النهاية - استخدام نقاط فحص الذاكرة المؤقتة عند الحدود الطبيعية - مراقبة معدلات إصابة الذاكرة المؤقتة للتحقق من التحسين
OpenAI
تُنفّذ OpenAI التخزين المؤقت التلقائي دون تغييرات في الكود:⁴
التسعير: - الرموز المُخزّنة مؤقتاً: 50% من سعر الإدخال الأساسي - لا علاوة على كتابة الذاكرة المؤقتة
المتطلبات: - 1,024 رمز كحد أدنى للأهلية للتخزين المؤقت - إصابات الذاكرة المؤقتة تحدث بزيادات 128 رمز - عمر الذاكرة المؤقتة: 5-10 دقائق من عدم النشاط
السلوك التلقائي: - المطالبات التي تتجاوز 1,024 رمز تُخزّن مؤقتاً تلقائياً - النظام يكتشف البادئات المتطابقة عبر الطلبات - لا يلزم إجراء تغييرات على API
المراقبة:
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[...],
)
# التحقق من الاستخدام لإصابات الذاكرة المؤقتة
print(f"Cached tokens: {response.usage.prompt_tokens_details.cached_tokens}")
print(f"Total input tokens: {response.usage.prompt_tokens}")
Google Gemini
توفر Google التخزين المؤقت للسياق لنماذج Gemini:⁵
التسعير: - متغير بناءً على حجم السياق المُخزّن مؤقتاً والمدة - رسوم تخزين للمحتوى المُخزّن مؤقتاً
الميزات: - إنشاء وإدارة ذاكرة مؤقتة صريحة - مدة بقاء قابلة للتكوين - مشاركة الذاكرة المؤقتة عبر الطلبات
التنفيذ:
from google.generativeai import caching
# إنشاء محتوى مُخزّن مؤقتاً
cache = caching.CachedContent.create(
model='models/gemini-1.5-pro-001',
display_name='product-documentation',
system_instruction="You are a product expert...",
contents=[product_docs],
ttl=datetime.timedelta(hours=1)
)
# استخدام المحتوى المُخزّن مؤقتاً في الطلبات
model = genai.GenerativeModel.from_cached_content(cached_content=cache)
response = model.generate_content("How do I configure feature X?")
Amazon Bedrock
تقدم AWS التخزين المؤقت للمطالبات في المعاينة للنماذج المدعومة:⁶
المتطلبات: - Claude 3.5 Sonnet يتطلب 1,024 رمز كحد أدنى لكل نقطة فحص - نقطة الفحص الثانية تتطلب 2,048 رمز
نمط التنفيذ يطابق نهج cache_control من Anthropic ضمن بنية API الخاصة بـ Bedrock.
التخزين المؤقت للبادئة في vLLM
الاستدلال المُستضاف ذاتياً مع vLLM يتضمن تخزيناً مؤقتاً تلقائياً للبادئة:⁷
البنية
يُخزّن التخزين المؤقت التلقائي للبادئة (APC) في vLLM كتل KV في جدول تجزئة، مما يُمكّن إعادة استخدام الذاكرة المؤقتة دون بنى شجرية:
التصميم الرئيسي: - جميع كتل KV مُخزّنة في مجمّع الكتل عند التهيئة - بحث قائم على التجزئة لمطابقة البادئة - عمليات O(1) لإدارة الكتل - الحفاظ على كفاءة ذاكرة PagedAttention
التكوين
from vllm import LLM
llm = LLM(
model="meta-llama/Llama-3.1-8B-Instruct",
enable_prefix_caching=True, # تمكين APC
gpu_memory_utilization=0.90,
)
التأثير على الأداء
يُظهر vLLM مع PagedAttention إنتاجية أعلى بـ 14-24 مرة من التنفيذات البسيطة.⁸ يُضيف التخزين المؤقت للبادئة:
- فرق 10x في التكلفة بين الرموز المُخزّنة مؤقتاً وغير المُخزّنة
- تقليل رتبة من حيث الحجم في زمن الاستجابة للبادئات المتطابقة
- كفاءة الذاكرة من خلال كتل KV المشتركة
اعتبارات الأمان
يدعم vLLM عزل الذاكرة المؤقتة للبيئات المشتركة:
# ملح ذاكرة مؤقتة لكل طلب يمنع الوصول للذاكرة المؤقتة عبر المستأجرين
response = llm.generate(
prompt="...",
sampling_params=SamplingParams(...),
cache_salt="tenant-123" # عزل الذاكرة المؤقتة حسب المستأجر
)
حقن ملح الذاكرة المؤقتة في تجزئات الكتل يمنع هجمات التوقيت حيث يستنتج المهاجمون المحتوى المُخزّن مؤقتاً من خلال مراقبة زمن الاستجابة.
امتداد LMCache
يُوسّع LMCache قدرات vLLM بميزات تخزين مؤقت متقدمة:⁹
الميزات: - إعادة استخدام ذاكرة KV المؤقتة عبر مثيلات المحرك - تخزين متعدد الطبقات (GPU ← ذاكرة CPU ← قرص) - تخزين مؤقت للمحتوى غير البادئة - تقليل زمن الاستجابة بـ 3-10x في المعايير
البنية:
vLLM Engine → LMCache → GPU VRAM (ساخن)
→ CPU RAM (دافئ)
→ Local Disk (بارد)
التخزين المؤقت الدلالي
يُعيد التخزين المؤقت الدلالي الاستجابات السابقة للاستعلامات المتشابهة دلالياً (وليس المتطابقة فقط):
GPTCache
يوفر GPTCache تخزيناً مؤقتاً دلالياً مفتوح المصدر لتطبيقات نماذج اللغة الكبيرة:¹⁰
البنية:
الاستعلام → التضمين → البحث المتجهي → فحص التشابه → الاستجابة/استدعاء API
↓ ↓ ↓
BERT/OpenAI Milvus/FAISS العتبة (0.8)
المكونات: - محوّل LLM: التكامل مع مزودي LLM المختلفين - مولّد التضمين: تحويل الاستعلام إلى متجه - مخزن المتجهات: البحث بالتشابه (Milvus، FAISS، Zilliz) - مدير الذاكرة المؤقتة: التخزين والاسترجاع - مُقيّم التشابه: المطابقة القائمة على العتبة
التنفيذ:
from gptcache import cache
from gptcache.adapter import openai
# تهيئة الذاكرة المؤقتة الدلالية
cache.init(
pre_embedding_func=get_text_embedding,
data_manager=manager,
)
# استخدام استدعاءات OpenAI المُخزّنة مؤقتاً
response = openai.ChatCompletion.create(
model='gpt-4',
messages=[{"role": "user", "content": "What is machine learning?"}]
)
# الاستعلامات المتشابهة دلالياً ("Explain ML"، "Define machine learning")
# تُعيد الاستجابة المُخزّنة مؤقتاً
الأداء
يحقق GPTCache مكاسب كفاءة كبيرة:¹¹
- تقليل استدعاءات API: حتى 68.8% عبر فئات الاستعلامات
- معدلات إصابة الذاكرة المؤقتة: 61.6% إلى 68.8%
- الدقة: 97%+ معدل إصابة إيجابي
- تقليل زمن الاستجابة: 40-50% عند إصابة الذاكرة المؤقتة، حتى 100x للإصابات الكاملة
التقنيات المتقدمة
عتبات VectorQ التكيفية:¹²
عتبات التشابه الثابتة (مثل 0.8) تؤدي بشكل سيء عبر الاستعلامات المتنوعة. يتعلم VectorQ مناطق عتبة خاصة بالتضمين تتكيف مع تعقيد الاستعلام:
- استعلامات الحقائق البسيطة: عتبات أعلى (مطابقة أكثر صرامة)
- الاستعلامات المفتوحة: عتبات أقل (إعادة استخدام أكثر)
- الاستعلامات الغامضة: تعديل ديناميكي
كشف أنماط SCALM:
يُحسّن SCALM على GPTCache من خلال كشف الأنماط وتحليل التردد: - تحسين 63% في نسبة إصابة الذاكرة المؤقتة - تقليل 77% في استخدام الرموز - تحديد أنماط إدخالات الذاكرة المؤقتة عالية التردد
متى تستخدم التخزين المؤقت الدلالي
مرشحون جيدون: - استعلامات نمط الأسئلة الشائعة مع مساحة إجابة محدودة - استعلامات البحث (معلومات المنتج، التوثيق) - الاستجابات الحتمية (الحسابات، التنسيق) - التطبيقات ذات الحركة العالية مع تكرار الاستعلامات
مرشحون سيئون: - التوليد الإبداعي الذي يتطلب التفرد - الاستجابات المخصصة (سياق خاص بالمستخدم) - المعلومات الحساسة للوقت - أنماط استعلامات منخفضة التكرار
أنماط التنفيذ
تطبيقات الدردشة
تستفيد أنظمة الدردشة من التخزين المؤقت للبادئة والدلالي:
التخزين المؤقت لمطالبة النظام:
# مطالبة النظام الثابتة مُخزّنة مؤقتاً في بداية الطلب
system_prompt = """
You are a customer support agent for Acme Corp...
[2000+ tokens of guidelines and knowledge]
"""
# المحادثة الديناميكية تُلحق بعد البادئة المُخزّنة مؤقتاً
messages = [
{"role": "system", "content": system_prompt, "cache_control": {...}},
{"role": "user", "content": user_message}
]
التخزين المؤقت لسجل المحادثة: يدعم Anthropic تخزين مؤقت لما يصل إلى 5 أدوار محادثة، مما يقلل التكلفة للمحادثات متعددة الأدوار.
تطبيقات RAG
يُخزّن التوليد المُعزّز بالاسترجاع السياق المُسترجع مؤقتاً:
# بنية الذاكرة المؤقتة لـ RAG
cached_context = {
"system": system_prompt, # مُخزّن مؤقتاً دائماً
"documents": retrieved_chunks, # ذاكرة مؤقتة لكل مجموعة استعلام
"examples": few_shot_examples # مستقر عبر الطلبات
}
# فقط استعلام المستخدم يتغير
dynamic_content = {
"query": user_question
}
التخزين المؤقت لقطع المستندات: عندما تسترجع استعلامات متعددة نفس المستندات، يُلغي التخزين المؤقت للبادئة المعالجة المكررة للسياق المشترك.
سير العمل الوكيلي
تستفيد أنظمة الوكلاء مع استدعاء الأدوات من التخزين المؤقت للبادئة:
``` مطالبة النظام → تعريفات الأدوات → سجل المحادثة → الاستعلام الحالي (مُخزّن مؤقتاً) (مُخزّن مؤقتاً) (جزء
[تم اقتطاع المحتوى للترجمة]