AI

كسر ميزانية الذكاء الاصطناعي السحابي: دليل المطورين لتحسين التكاليف

أدى democratization الذكاء الاصطناعي إلى إتاحة نماذج اللغة الكبيرة (LLMs) وواجهات برمجة تطبيقات الرؤية الحاسوبية المطورة لمطوري البرمجيات في كل مكان. ومع ذلك، تأتي هذه إمكانية الوصول مع تحذير كبير: الفواتير. بالنسبة للعديد من فرق الهندسة، فإن النموذج الأولي الأولي هو انفجار إبداعي، لكن الانتقال إلى الإنتاج غالباً ما يكشف عن فاتورة صادمة. يمكن أن تتجاوز تكاليف الذكاء الاصطناعي السحابي السيطرة بسبب طلبات الاستدعاء عالية التردد، واختيار النماذج غير الفعال، أو استراتيجيات التخزين المؤقت السيئة. يستكشف هذا المنشور استراتيجيات قابلة للتنفيذ على مستوى الكود لتحسين بنية الذكاء الاصطناعي الخاصة بك دون التضحية بالأداء.

1. ضبط حجم محركات الاستدلال الخاصة بك

أحد أكثر الأخطاء شيوعاً هو معاملة جميع أحمال عمل الذكاء الاصطناعي على أنها متساوية. لا يتطلب كل طلب مستخدم نموذجاً ضخماً يحتوي على 70 مليار معلمة. يعد تنفيذ موجه (router) يوجه الاستعلامات البسيطة إلى نماذج أصغر وأرخص (مثل Mistral 7B أو Llama 3 8B) مع الاحتفاظ بالنماذج باهظة الثمن لمهام الاستدلال المعقدة، استراتيجية تحسين أساسية. علاوة على ذلك، فكر في استخدام الأجهزة المتخصصة. إذا كنت تعمل على AWS، فاطلع على شرائح Inferentia؛ على Azure، فكر في استخدام مثيلات Azure Machine Learning المحسّنة للاستدلال بدلاً من التدريب.

2. التخزين المؤقت الذكي ومستودعات المتجهات

تكرر العديد من تطبيقات الذكاء الاصطناعي نفس الاستعلامات. إذا سأل مستخدم: "ما هي عاصمة فرنسا؟"، فيجب عليك عدم إرسال ذلك إلى نموذج لغة كبير (LLM) إذا أمكن تجنب ذلك. نفذ مخزناً مؤقتاً دلاليًا باستخدام قواعد بيانات المتجهات مثل Pinecone أو Weaviate أو Redis Vector. قبل استدعاء نموذج LLM، تحقق من مستودع المتجهات بحثاً عن تضمينات (embeddings) مشابهة. إذا تجاوز المطابق عتبة تشابه معينة، فقم بإرجاع النتيجة المخزنة مؤقتاً. يقلل هذا من زمن الوصول ويقلل بشكل كبير من استخدام الرموز (tokens).

import redis
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Redis

# Initialize vector store
embeddings = OpenAIEmbeddings()
vector_store = Redis(redis_url="redis://localhost:6379", embedding_function=embeddings)

def get_response(query):
    # Check cache first
    docs = vector_store.similarity_search_with_score(query, k=1)
    if docs and docs[0][1] > 0.95: # High similarity threshold
        return docs[0][0].page_content
    
    # If not in cache, call LLM
    response = call_llm(query)
    vector_store.add_texts([response])
    return response

3. الكمّنة وضغط النماذج

تعد كمّنة النماذج عملية تقليل دقة أوزان النموذج، عادةً من FP32 (نقطة عائمة 32 بت) إلى INT8 أو حتى INT4. يقلل هذا من بصمة الذاكرة ويسرع الاستدلال، مما يتيح لك تشغيل نماذج أكبر على وحدات معالجة الرسومات (GPUs) أصغر وأرخص. تجعل أدوات مثل Hugging Face Optimum و TensorRT-LLM هذه العملية في متناول الجميع. على سبيل المثال، يسمح استخدام تنسيق GGUF مع llama.cpp بتشغيل النماذج المكمّنة بكفاءة على وحدات المعالجة المركزية (CPUs) أو وحدات معالجة الرسومات المخصصة للمستهلكين، مما يلغي الحاجة إلى مثيلات سحابية باهظة الثمن تماماً.

4. التوسع التلقائي والمثيلات الموقّتة (Spot Instances)

بالنسبة لوظائف معالجة الدفعات أو الاستدلال غير الفوري، لا تدفع أبداً مقابل المثيلات عند الطلب. استخدم المثيلات الموقّتة (spot instances)، والتي يمكن أن تكون أرخص بنسبة تصل إلى 90% من أسعار الطلب عند الطلب. على الرغم من إمكانية مقاطعة المثيلات الموقّتة، إلا أنها مثالية لأحمال عمل الذكاء الاصطناعي القادرة على تحمل الأخطاء. اجمع بين ذلك ومجموعات التوسع التلقائي التي تتوسع إلى الصفر عندما تكون خاملة. إذا كنت تستخدم Kubernetes، فإن أدوات مثل Karpenter أو KEDA يمكنها تشغيل أحداث التقلص فوراً بعد اكتمال آخر طلب استدلال، مما يضمن عدم دفعك مقابل وحدات معالجة الرسومات الخاملة.

5. تحسين الرموز (Tokens) عبر هندسة الأوامر (Prompt Engineering)

أخيراً، الممارسات الهندسية البرمجية التي تطبقها على الكود يجب أن تنطبق على أوامرك (prompts). الأوامر الطويلة تكلف المال. استخدم أوامر النظام (system prompts) لضبط السياق بكفاءة وتجنب إرسال التاريخ أو البيانات الوصفية غير الضرورية إلى النموذج. نفذ استراتيجيات "التجزئة" (chunking) لتطبيقات الاسترجاع المعزز بالتوليد (RAG) التي تسترجع فقط مقاطع النص الأكثر صلة، بدلاً من إلقاء مستندات كاملة في نافذة السياق. يساهم كل رمز يتم توفيره مباشرة في خطك السفلي (الأرباح).

الخاتمة

لا يعد تحسين تكاليف الذكاء الاصطناعي السحابي مهمة لمرة واحدة، بل هو عملية مستمرة من المراقبة والتحسين والتكرار. من خلال الجمع بين القرارات المعمارية مثل ضبط الحجم والتخزين المؤقت مع التحسينات التقنية مثل الكمّنة والمثيلات الموقّتة، يمكنك بناء أنظمة ذكاء اصطناعي قابلة للتوسع وفعالة من حيث التكلفة. ابدأ بمراجعة أنماط الاستخدام الحالية الخاصة بك، وتحديد أكبر نقاط التسرب، وتطبيق هذه الاستراتيجيات تدريجياً. الهدف هو جعل الذكاء الاصطناعي مستداماً، مما يضمن ألا يؤدي ابتكارك إلى إفلاس شركتك الناشئة.

Share: