هندسة معمارية

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

المفاهيم الرئيسية

لفهم بنية خدمة TensorFlow، تحتاج إلى فهم المفاهيم الأساسية التالية:

قابلة للعرض

Servables هي الفكرة المركزية في خدمة TensorFlow. العناصر القابلة للعرض هي الكائنات الأساسية التي يستخدمها العملاء لإجراء العمليات الحسابية (على سبيل المثال، البحث أو الاستدلال).

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

  • نتائج التدفق
  • واجهات برمجة التطبيقات التجريبية
  • طرق التشغيل غير المتزامنة

لا تدير العناصر القابلة للخدمة دورة حياتها الخاصة.

تشمل العناصر القابلة للخدمة النموذجية ما يلي:

  • TensorFlow SavedModelBundle ( tensorflow::Session )
  • جدول بحث للتضمين أو البحث عن المفردات

الإصدارات القابلة للعرض

يمكن لـ TensorFlow Serving التعامل مع إصدار واحد أو أكثر من الإصدارات القابلة للعرض على مدار عمر مثيل خادم واحد. يتيح ذلك تحميل تكوينات الخوارزمية الجديدة والأوزان والبيانات الأخرى بمرور الوقت. تتيح الإصدارات إمكانية تحميل أكثر من إصدار واحد للعرض بشكل متزامن، مما يدعم التشغيل التدريجي والتجريب. في وقت التقديم، قد يطلب العملاء إما أحدث إصدار أو معرف إصدار محدد لنموذج معين.

تيارات قابلة للعرض

الدفق القابل للعرض هو تسلسل إصدارات قابل للعرض، مرتبة حسب زيادة أرقام الإصدارات.

عارضات ازياء

يمثل TensorFlow Serving نموذجًا كواحد أو أكثر من العناصر القابلة للعرض. قد يشتمل نموذج التعلم الآلي على خوارزمية واحدة أو أكثر (بما في ذلك الأوزان المستفادة) وجداول البحث أو التضمين.

يمكنك تمثيل نموذج مركب بأي مما يلي:

  • العديد من العناصر القابلة للخدمة المستقلة
  • مركب واحد قابل للعرض

قد يتوافق العرض أيضًا مع جزء من النموذج. على سبيل المثال، يمكن تقسيم جدول بحث كبير عبر العديد من مثيلات خدمة TensorFlow.

لوادر

تقوم أدوات التحميل بإدارة دورة حياة الخدمة القابلة للعرض. تعمل واجهة Loader API على تمكين البنية التحتية المشتركة المستقلة عن خوارزميات التعلم المحددة أو البيانات أو حالات استخدام المنتج المعنية. على وجه التحديد، تعمل أدوات التحميل على توحيد واجهات برمجة التطبيقات لتحميل وتفريغ ما يمكن تقديمه.

مصادر

المصادر هي وحدات مكون إضافي تقوم بالعثور على العناصر القابلة للعرض وتوفيرها. يوفر كل مصدر صفرًا أو أكثر من التدفقات القابلة للعرض. بالنسبة لكل تدفق قابل للعرض، يوفر المصدر نسخة محمل واحدة لكل إصدار يجعله متاحًا للتحميل. (يتم ربط المصدر فعليًا مع صفر أو أكثر من SourceAdapters، ويقوم العنصر الأخير في السلسلة بإصدار أدوات التحميل.)

يمكن لواجهة TensorFlow Serving للمصادر اكتشاف العناصر القابلة للعرض من أنظمة التخزين العشوائية. تتضمن خدمة TensorFlow تطبيقات المصدر المرجعي المشترك. على سبيل المثال، يمكن للمصادر الوصول إلى آليات مثل RPC ويمكنها استقصاء نظام الملفات.

يمكن للمصادر الحفاظ على الحالة المشتركة عبر إصدارات أو إصدارات متعددة قابلة للعرض. يعد هذا مفيدًا للخوادم التي تستخدم تحديثات دلتا (فرق) بين الإصدارات.

الإصدارات الطموحة

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

راجع البرنامج التعليمي المتقدم لمعرفة كيفية عمل تحميل الإصدار عمليًا.

المديرين

يتعامل المديرون مع دورة الحياة الكاملة للServables، بما في ذلك:

  • تحميل Servables
  • خدمة Servables
  • تفريغ Servables

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

يوفر مديرو خدمة TensorFlow واجهة بسيطة وضيقة - GetServableHandle() - للعملاء للوصول إلى المثيلات المحملة القابلة للعرض.

جوهر

باستخدام واجهة برمجة تطبيقات TensorFlow Serving القياسية، يدير TensorFlow Serving Core الجوانب التالية من العناصر القابلة للعرض:

  • دورة الحياة
  • المقاييس

يتعامل TensorFlow Serving Core مع العناصر القابلة للعرض والمحمل ككائنات غير شفافة.

حياة صالحة للخدمة

مخطط معماري لخدمة tf

بشكل عام:

  1. تقوم المصادر بإنشاء أدوات التحميل للإصدارات القابلة للعرض.
  2. يتم إرسال أدوات التحميل كإصدارات طموحة إلى المدير، الذي يقوم بتحميلها وتقديمها لطلبات العميل.

بتفاصيل اكثر:

  1. يقوم المكون الإضافي المصدر بإنشاء أداة تحميل لإصدار محدد. يحتوي المُحمل على أي بيانات وصفية يحتاجها لتحميل الملف القابل للعرض.
  2. يستخدم المصدر رد اتصال لإعلام مدير الإصدار الطموح.
  3. يطبق المدير سياسة الإصدار التي تم تكوينها لتحديد الإجراء التالي الذي يجب اتخاذه، والذي قد يكون إلغاء تحميل إصدار تم تحميله مسبقًا أو تحميل الإصدار الجديد.
  4. إذا قرر المدير أنه آمن، فإنه يمنح المُحمل الموارد المطلوبة ويطلب من المُحمل تحميل الإصدار الجديد.
  5. يطلب العملاء من المدير ما يمكن تقديمه، إما بتحديد إصدار بشكل صريح أو فقط بطلب الإصدار الأحدث. يقوم المدير بإرجاع مؤشر للخدمة.

على سبيل المثال، لنفترض أن المصدر يمثل رسمًا بيانيًا TensorFlow مع أوزان النماذج التي يتم تحديثها بشكل متكرر. يتم تخزين الأوزان في ملف على القرص.

  1. اكتشف المصدر نسخة جديدة من أوزان النموذج. يقوم بإنشاء محمل يحتوي على مؤشر لبيانات النموذج الموجودة على القرص.
  2. يقوم المصدر بإعلام المدير الديناميكي بالإصدار الطموح.
  3. يطبق المدير الديناميكي سياسة الإصدار ويقرر تحميل الإصدار الجديد.
  4. يخبر المدير الديناميكي المُحمل بوجود ذاكرة كافية. يقوم المُحمل بإنشاء مثيل للرسم البياني TensorFlow بالأوزان الجديدة.
  5. يطلب العميل مؤشرًا لأحدث إصدار من النموذج، ويقوم المدير الديناميكي بإرجاع مؤشر إلى الإصدار الجديد من الخدمة.

القابلية للتوسعة

يوفر TensorFlow Serving العديد من نقاط الامتداد حيث يمكنك إضافة وظائف جديدة.

سياسة الإصدار

تحدد سياسات الإصدار تسلسل تحميل الإصدار وإلغاء تحميله ضمن تدفق واحد قابل للعرض.

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

مصدر

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

راجع مستند المصدر المخصص لمزيد من المعلومات حول كيفية إنشاء مصدر مخصص.

لوادر

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

راجع المستند المخصص القابل للعرض للتعرف على كيفية إنشاء مستند مخصص قابل للعرض.

باتشر

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