تم التحديث بتاريخ 11/09/2024
(وضع علامة على التاريخ بسبب مدى سرعة تحرك LLM APIs في Python وقد يُدخل تغييرات جذرية بحلول الوقت الذي يقرأ فيه أي شخص آخر هذا!)
هذا بحث بسيط حول كيفية وضع ملفات نموذج Qwen GGUF في AWS Lambda باستخدام Docker وSAM CLI
مقتبس من https://makit.net/blog/llm-in-a-lambda-function/
كنت أرغب في معرفة ما إذا كان بإمكاني تقليل إنفاقي على AWS من خلال الاستفادة فقط من إمكانات Lambda وليس Lambda + Bedrock حيث أن كلا الخدمتين ستتحملان المزيد من التكاليف على المدى الطويل.
كانت الفكرة هي ملاءمة نموذج لغة صغير لا يتطلب موارد كثيفة نسبيًا، ونأمل أن يحصل على زمن استجابة من ثانية إلى ثانية على تكوين ذاكرة يتراوح من 128 إلى 256 ميجابايت
كنت أرغب أيضًا في استخدام نماذج GGUF لاستخدام مستويات مختلفة من التكميم لمعرفة أفضل أداء/حجم ملف ليتم تحميله في الذاكرة
qwen2-1_5b-instruct-q5_k_m.gguf
إلى qwen_fuction/function/
app.y / LOCAL_PATH
qwen_function/function/requirements.txt
(ويفضل أن يكون ذلك في venv/conda env)sam build
/ sam validate
sam local start-api
للاختبار محليًاcurl --header "Content-Type: application/json" --request POST --data '{"prompt":"hello"}' http://localhost:3000/generate
لمطالبة LLMsam deploy --guided
للنشر على AWSأوس
التكوين الأولي - 128 ميجابايت، مهلة 30 ثانية
التكوين المعدل رقم 1 - 512 ميجابايت، مهلة 30 ثانية
التكوين المعدل رقم 2 - 512 ميجابايت، مهلة 30 ثانية
وبالرجوع إلى هيكل التسعير الخاص بشركة Lambda،
قد يكون من الأرخص استخدام LLM مستضاف باستخدام AWS Bedrock، وما إلى ذلك. على السحابة نظرًا لأن هيكل التسعير الخاص بـ Lambda w/Qwen لا يبدو أكثر تنافسية مقارنة بـ Claude 3 Haiku
علاوة على ذلك، لا يمكن تكوين مهلة بوابة واجهة برمجة التطبيقات (API) بسهولة بعد انتهاء مهلة الثلاثين ثانية، اعتمادًا على حالة الاستخدام الخاصة بك، وقد لا يكون هذا مثاليًا جدًا
النتائج عبر المحلية تعتمد على مواصفات جهازك!! وقد يشوه تصورك وتوقعاتك بشكل كبير مقابل الواقع
اعتمادًا على حالة الاستخدام الخاصة بك أيضًا، قد يؤدي زمن الاستجابة لكل استدعاء واستجابات لامدا إلى تجارب مستخدم سيئة
بشكل عام، أعتقد أن هذه كانت تجربة صغيرة ممتعة على الرغم من أنها لم تتوافق تمامًا مع متطلبات الميزانية وزمن الوصول عبر Qwen 1.5b لمشروعي الجانبي. شكرًا لـmakit مرة أخرى على الدليل!