الاحتواء هو طريقة لتعبئة التعليمات البرمجية مع جميع التبعيات والمكتبات وملفات التكوين الضرورية في وحدة واحدة مكتفية بذاتها تسمى "حاوية". ويضمن هذا التغليف تشغيل التطبيقات بشكل موثوق ومتسق عبر بيئات الحوسبة المختلفة، سواء كان ذلك في جهاز محلي للمطور أو بيئة اختبار أو خادم إنتاج في السحابة. وعلى عكس الأجهزة الافتراضية التقليدية (VMs) التي تتطلب نظام تشغيل كامل لكل مثيل، فإن الحاويات تشارك نواة نظام التشغيل الخاص بالنظام المضيف. وهذا يجعلها أكثر خفة في الوزن وأسرع في التشغيل وأكثر كفاءة في استخدام الموارد، وهو أمر مفيد بشكل خاص لتطبيقات الذكاء الاصطناعي (AI) وتعلم الآلة (ML) كثيفة الاستخدام للموارد، والتي غالباً ما تكون لها متطلبات برمجية معقدة.
المفاهيم والمكونات الرئيسية
يتضمّن فهم الحاويات بعض الأفكار الأساسية:
- صورة الحاوية: حزمة خفيفة الوزن ومستقلة وقابلة للتنفيذ تتضمن كل ما يلزم لتشغيل جزء من البرنامج: التعليمات البرمجية ووقت التشغيل وأدوات النظام ومكتبات النظام والإعدادات. غالبًا ما يتم بناء الصور بناءً على تعليمات في ملف خاص (مثل ملف Dockerfile).
- حاوية: مثيل قيد التشغيل لصورة حاوية. يتم تشغيلها بمعزل عن الحاويات الأخرى والنظام المضيف ولكنها تشارك نواة نظام التشغيل المضيف. يمكن تشغيل حاويات متعددة على نفس الجهاز المضيف.
- Docker: أكثر منصات الحاويات شيوعًا، تم تطويرها بواسطة شركة Docker, Inc. وهي توفر أدوات لبناء ومشاركة وتشغيل التطبيقات المعبأة في حاويات بسهولة. تقدم Ultralytics دليل Docker Quickstart لإعداد نماذج YOLO .
- سجل الحاويات: مستودع لتخزين وتوزيع صور الحاويات. Docker Hub هو سجل عام مستخدم على نطاق واسع، لكن السجلات الخاصة شائعة أيضًا.
- التنسيق: تُستخدم أدوات مثل Kubernetes وDocker Swarm لإدارة دورة حياة الحاويات على نطاق واسع، والتعامل مع النشر والتوسع والتوسع والشبكات والتوافر عبر أجهزة مضيفة متعددة. تستضيف مؤسسة الحوسبة السحابية الأصلية (CNCF) العديد من المشاريع المتعلقة بتنسيق الحاويات.
فوائد استخدام الحاويات في الذكاء الاصطناعي/تعلم الآلة
توفر الحاويات مزايا كبيرة لمشاريع تعلّم الآلة والذكاء الاصطناعي:
- قابلية الاستنساخ: تقوم الحاويات بتغليف البيئة الدقيقة (مكتبات وإصدارات مثل PyTorch أو OpenCV، والتكوينات) اللازمة لتشغيل تطبيق أو نموذج، مما يضمن الاتساق بين التطوير والاختبار والإنتاج. هذا أمر بالغ الأهمية للبحث القابل للتكرار ونشر نموذج موثوق به.
- إدارة التبعية: غالبًا ما تعتمد مشاريع الذكاء الاصطناعي/تعلم الآلة على إصدارات محددة من العديد من المكتبات. تقوم الحاويات بعزل هذه التبعيات، مما يمنع التعارض بين المشاريع المختلفة أو مكتبات النظام.
- قابلية التوسع: يمكن بدء تشغيل الحاويات وإيقافها بسرعة، مما يجعل من السهل زيادة التطبيقات أو خفضها بناءً على الطلب، وهو أمر حيوي للتعامل مع أعباء العمل المتغيرة في الاستدلال في الوقت الحقيقي. وهذا يدعم احتياجات قابلية التوسع الحسابي.
- قابلية النقل: تعمل الحاويات بشكل متسق عبر بيئات مختلفة - من الكمبيوتر المحمول الخاص بالمطورين إلى الخوادم المحلية أو السحابة العامة مثل AWS أو Google Cloud أو Microsoft Azure. وهذا يبسّط عملية النشر إلى أهداف مختلفة، بما في ذلك الأجهزة المتطورة. استكشف خيارات النشر النموذجية المتنوعة التي يسهلها استخدام الحاويات.
- الكفاءة: تستخدم الحاويات موارد أقلCPU والذاكرة والتخزين) مقارنةً بالأجهزة الافتراضية لأنها لا تحتاج إلى نظام تشغيل منفصل لكل مثيل، مما يسمح بكثافة أعلى للتطبيقات على نفس الأجهزة. يتوافق هذا مع عمليات التعلم الآلي الفعالة (MLOps).
استخدام الحاويات مقابل المحاكاة الافتراضية
في حين أن كلاً من الحاويات والمحاكاة الافتراضية ينشئ بيئات معزولة، إلا أن نهجهما يختلف بشكل كبير. تقوم الأجهزة الافتراضية (VMs) بمحاكاة نظام كامل للأجهزة، وتشغيل نظام تشغيل ضيف كامل فوق برنامج Hypervisor. يوفر هذا عزلًا قويًا ولكنه يتكبد نفقات كبيرة من حيث استهلاك الموارد (CPUوالذاكرة) ووقت بدء التشغيل. على العكس من ذلك، تقوم الحاويات بإضفاء الطابع الافتراضي على نظام التشغيل نفسه، ومشاركة نواة نظام التشغيل المضيف من خلال محركات الحاويات مثل Docker. ينتج عن ذلك بصمة أصغر بكثير، وبدء تشغيل أسرع، وأداء أفضل. بالنسبة للعديد من مهام الذكاء الاصطناعي/تعلم الآلة، خاصةً نشر الخدمات المصغرة أو التطبيقات التي تحتاج إلى قابلية التوسع السريع، غالبًا ما تكون الحاويات مفضلة. تظل الأجهزة الافتراضية مناسبة عند الحاجة إلى تشغيل أنظمة تشغيل مختلفة على نفس الأجهزة أو عند الحاجة إلى أقصى قدر من العزل المطلق بين التطبيقات.
تطبيقات العالم الحقيقي في الذكاء الاصطناعي/التعلم الآلي
تُستخدم الحاويات على نطاق واسع في جميع مراحل دورة حياة الذكاء الاصطناعي/تعلم الآلة:
- نشر نماذج الكشف عن الكائنات: نموذج Ultralytics YOLO المدرب على اكتشاف الأجسام في حاوية Docker. تتضمن هذه الحاوية أوزان النموذج، والبرنامج النصي للاستدلال، وجميع التبعيات الضرورية (PyTorchومكتبات CUDA إلخ). يمكن بعد ذلك نشر هذه الحاوية بشكل متسق على منصات مختلفة، من وحدات معالجة الرسومات السحابية القوية إلى أجهزة الذكاء الاصطناعي Edge المحدودة الموارد، مما يضمن أداء النموذج كما هو متوقع بغض النظر عن البيئة. يوفر Ultralytics دليل Docker Quickstart لتسهيل ذلك.
- خدمة نماذج معالجة اللغات الطبيعية كخدمات مصغرة: فريق يعمل على تطوير تطبيق لمعالجة اللغات الطبيعية (NLP) باستخدام نماذج من منصات مثل Hugging Face أن يضع مكونات مختلفة في حاويات (مثل المعالجة المسبقة للنصوص، واستدلال النماذج، ونقطة نهاية واجهة برمجة التطبيقات) كخدمات مصغرة منفصلة. يمكن إدارة هذه الحاويات باستخدام Kubernetes، مما يسمح بتوسيع نطاق كل مكون وتحديثه بشكل مستقل، مما يؤدي إلى بنية نظام أكثر مرونة وقابلية للإدارة، وغالبًا ما يتبع مبادئ بنية الخدمات المصغرة. كما تستفيد المنصات مثل Ultralytics HUB أيضاً من مبادئ استخدام الحاويات لإدارة النماذج ونشرها بشكل مبسط.
لقد أصبح استخدام الحاويات، الذي تم توحيده من خلال جهود مثل مبادرة الحاويات المفتوحة (OCI)، حجر الزاوية في تطوير البرمجيات الحديثة ونشرها، خاصةً في مجالات الذكاء الاصطناعي والرؤية الحاسوبية سريعة التطور.