Serverless Computing
تنفّذ الحوسبة بلا خوادم التعليمات البرمجية عند الطلب، بينما يتولى مزوّد الخدمة إدارة الخوادم وتوسيع نطاقها، وصولًا إلى إيقافها تمامًا، مع احتساب الفوترة لكل طلب. تتناول حالات البدء البارد واستخدامات الذكاء الاصطناعي.
الحوسبة بلا خوادم هي نموذج تنفيذ سحابي يشغّل فيه المزوّد الشيفرة فقط عند وقوع حدث يستدعي ذلك، ويبدأ تشغيل الخوادم الأساسية ويوسّع نطاقها تلقائيًا، ثم يوقفها تمامًا عند توقف الحركة، ويفرض رسومًا على الطلبات ووقت التنفيذ بدلًا من الأجهزة المحجوزة. تظل الخوادم موجودة، لكن المطوّرين لا يجهّزونها أو يثبتون تحديثاتها أو يحدّدون سعتها مطلقًا. أصبح هذا النموذج شائعًا مع AWS Lambda، الذي أُعلن عنه في نوفمبر 2014، ويمتد الآن ليشمل منصات الوظائف مثل Lambda وAzure Functions وCloud Run functions، إلى جانب الحاويات بلا خوادم مثل Google Cloud Run وAzure Container Apps. وصف باحثون من جامعة كاليفورنيا في بيركلي مزاياه وحدوده في ورقة عام 2019 بعنوان "Cloud Programming Simplified: A Berkeley View on Serverless Computing". وبالنسبة إلى التعلّم الآلي، تلائم الحوسبة بلا خوادم تقديم النماذج عندما تكون الحركة متقطعة أو غير قابلة للتنبؤ، إذ إن الدفع مقابل خادم GPU خامل بين فترات الزيادة قد يكلّف أكثر من العمل نفسه.
آلية عمل التنفيذ بلا خوادم#
تُعبّأ الشيفرة في صورة دالة أو حاوية، وتُربط بالمحفّزات: طلب HTTP، أو ملف يُضاف إلى تخزين الكائنات، أو رسالة في قائمة انتظار، أو موعد مجدول. عند وصول حدث وتوفّر مثيل جاهز، تشغّل المنصة معالج الحدث عليه فورًا. وإلا فتُجري بدء تشغيل باردًا: تنشئ بيئة معزولة، مثل إحدى الآلات الافتراضية المصغّرة Firecracker التي أنشأتها AWS من أجل Lambda، وتحمّل الشيفرة، وتبدأ بيئة تشغيل اللغة، وتشغّل شيفرة التهيئة خارج المعالج قبل معالجة الحدث. المثيلات عديمة الحالة ويمكن التخلص منها، لذا تُنقل إلى تخزين خارجي أو قاعدة بيانات كل البيانات التي يجب أن تبقى بعد انتهاء الطلب.
بدء التشغيل البارد ونماذج التعلّم الآلي#
يجعل التعلّم الآلي عمليات بدء التشغيل البارد مكلفة، لأن التهيئة تستورد إطار عمل مثل PyTorch وتحمّل أوزان النموذج التي قد يصل حجمها إلى مئات الميغابايت. والنمط المعتاد هو تحميل النموذج مرة واحدة لكل مثيل، خارج المعالج أو عند أول استخدام، بحيث تعيد كل عملية استدعاء دافئة استخدامه. يتبع هذا المعالج ذلك النمط باستخدام مصنّف ResNet-50 من torchvision:
import time
import torch
import torchvision
model = None # module state survives between invocations while the instance stays warm
def handler(event, context):
"""Classify one image tensor, building the model only on a cold start."""
global model
cold_start = model is None
if cold_start:
model = torchvision.models.resnet50().eval() # built once per instance
with torch.inference_mode():
logits = model(event["image"])
return {"cold_start": cold_start, "class_id": int(logits.argmax())}
for _ in range(3):
start = time.perf_counter()
response = handler({"image": torch.rand(1, 3, 224, 224)}, context=None)
print(response["cold_start"], f"{(time.perf_counter() - start) * 1000:.0f} ms")على وحدة المعالجة المركزية Apple M5 Pro، ينشئ الاستدعاء الأول الشبكة ويستغرق نحو 0.2 ثانية، بينما يستغرق الاستدعاءان الدافئان اللذان يعيدان استخدامها نحو 15 مللي ثانية لكل منهما. تقلّص الفرق المتبقي في بدء التشغيل البارد باستخدام صور حاويات أصغر، أو نماذج مدمجة أو مكمّمة، أو بيئات تشغيل أخف مثل ONNX Runtime؛ ويمكن إزالته بإبقاء حد أدنى من المثيلات الدافئة، مثل التزامن المُجهّز في Lambda أو الحد الأدنى من المثيلات في Cloud Run، لكن ذلك يعيد فرض رسوم وقت الخمول.
الحوسبة بلا خوادم لأحمال عمل الذكاء الاصطناعي#
تلائم البنية عديمة الخوادم مسارات الرؤية الحاسوبية المعتمدة على الأحداث. إذ يمكن لعملية تحميل إلى مخزن كائنات أن تطلق دالة تتحقق من الصورة وتغيّر حجمها أثناء المعالجة المسبقة للبيانات قبل إضافتها إلى مجموعة بيانات التدريب، وفي نظام إنذار أمني يمكن لمستشعر حركة إرسال إطار واحد إلى دالة اكتشاف أجسام لا تطلق إنذارًا إلا عند العثور على شخص. وتحدد قيود المنصة بقية التفاصيل: إذ تشغّل AWS Lambda كل استدعاء مدة أقصاها 15 دقيقة وبذاكرة تصل إلى 10,240 MB، دون GPU؛ وهو ما يلائم الاستدلال على CPU بالنماذج المدمجة ويستبعد عمليات التدريب الطويلة، فضلًا عن التدريب الموزع عبر عدة وحدات GPU. وقد سدّ تشغيل GPU عديم الخوادم هذه الفجوة: إذ يربط Cloud Run وحدات NVIDIA L4 GPU بحاويات تتوسع من الصفر، وتحتسب منصات مثل Modal رسوم وقت GPU بالثانية.
توفّر Ultralytics Platform المفاضلة نفسها في عمليات نشر YOLO: نقطة نهاية بالحجم الافتراضي، أي 1 vCPU و2 GiB، مجانية ويتقلص نطاقها إلى الصفر عند الخمول، وقد يستغرق بدء تشغيلها من حالة الخمول نحو دقيقة؛ أما الأحجام المخصصة فتبقي مثيلًا واحدًا دافئًا وتحتسب رسوم مدة تشغيله.
الحوسبة بلا خوادم مقارنةً بالنماذج ذات الصلة#
- البنية التحتية كخدمة: آلات افتراضية تعمل وتُحتسب رسومها على مدار الساعة، سواء وصلت طلبات أم لا، مع تولّي العميل إدارة نظام التشغيل والتوسّع. وعادةً ما تُشغّل مهام التدريب الطويلة هنا.
- Kubernetes: ينسّق الحاويات على مجموعات تديرها الفرق. وتضيف Knative التوسّع إلى الصفر استجابةً للطلبات، ويستخدمها KServe لتقديم النماذج.
- الحوسبة الطرفية: تشغّل الشيفرة على الأجهزة التي تنتج البيانات أو بالقرب منها. أما الحوسبة بلا خوادم فتشغّلها في منطقة سحابية، وتجمع بعض المنصات الطرفية بين النهجين بتشغيل الدوال في مواقع صغيرة عديدة بالقرب من المستخدمين.










