أدوات التوسيم المستضافة ذاتياً: ما تحتاجه كل أداة لتعمل وأين تستضيفها
مقارنة Label Studio وCVAT وdoccano وArgilla وINCEpTION وPotato في الخدمات وقاعدة البيانات وتسجيل الدخول والنسخ الاحتياطي للاستضافة الذاتية، مع الخوادم حسب التكلفة.
تحتاج أداة التوسيم المستضافة ذاتياً إلى أربعة أشياء من الخادم الذي تعمل عليه: قرص يبقى بعد إعادة التشغيل، وقاعدة بيانات توصي بها وثائق الأداة نفسها للإنتاج، وطريقة يسجّل بها المُعلِّقون الدخول، ونسخة احتياطية استعدتها مرة واحدة على الأقل. وأكثر ما تختلف فيه الأدوات مفتوحة المصدر هو عدد الخدمات التي تجلبها معها، من حاوية واحدة إلى ثماني عشرة، وهذا العدد هو ما يحدّد معظم عمل الاستضافة الذي تتحمّله الدراسة.
الاستضافة الذاتية هنا تعني تشغيل أداة التوسيم على جهاز تتحكم فيه، سواء كان خادم مختبر أو حصة سحابية جامعية أو آلة افتراضية مستأجرة، بحيث لا تمرّ البيانات أبداً عبر خدمة المورّد. والاستضافة الذاتية هي الحل المعتاد حين لا تسمح لجنة أخلاقيات أو اتفاقية استخدام بيانات أو مستشفى بخروج البيانات. تغطي المقارنة أدناه ما يتطلبه التثبيت المستضاف ذاتياً لست أدوات مفتوحة المصدر، وفقاً لوثائق كل مشروع حتى أكتوبر 2026، ثم تقارن بين الخوادم حسب التكلفة وحسب ما تحتفظ به بعد إعادة التشغيل.
متطلبات التثبيت المستضاف ذاتياً
تخزّن كل أداة أدناه ثلاثة أنواع من الحالة: العناصر المراد توسيمها (مثل النصوص والصور والوسائط)، والتوسيمات، والحسابات والمشاريع التي تربط بينها. وعلى التثبيت المستضاف ذاتياً أن يحفظ الثلاثة على قرص يبقى بعد إعادة التشغيل، وأن ينسخها احتياطياً في مكان آخر، وأن يضع تسجيل دخول أمامها. ويترتب على بنية الأداة خياران آخران. فالأداة التي تأتي مع SQLite توصي عادةً بخادم قاعدة بيانات للإنتاج، والأداة التي تأتي مع طابور أو ذاكرة تخزين مؤقت أو محرك بحث تحتاج إلى تشغيل كل واحد منها وحفظ بياناته أيضاً. ومعظم عمل الاستضافة يأتي من هذه الخدمات الإضافية. فكل واحدة منها حاوية أخرى يجب الحفاظ على سلامتها، ووحدة تخزين أخرى يجب نسخها احتياطياً، ويجب أن يبقى إصدارها متوافقاً مع الأخرى عند كل ترقية.
مقارنة ست أدوات
يلخّص الجدول ما تقوله وثائق كل مشروع عن التثبيت الإنتاجي المستضاف ذاتياً. ويعدّ عمود «الخدمات» الحاويات في ملف Docker Compose المرجعي للمشروع.
| الأداة | أشكال التثبيت المدعومة | الخدمات | قاعدة البيانات | SSO في الإصدار المجاني | دليل النسخ الاحتياطي للخادم |
|---|---|---|---|---|---|
| Label Studio | pip وDocker وCompose وHelm | 3 | SQLite افتراضياً، وPostgreSQL موصى به عند التوسّع | SAML SSO وLDAP في Enterprise فقط | في وثائق Enterprise فقط |
| CVAT | Compose وHelm | 18 | PostgreSQL | LDAP موثّق للإصدار Community، وOIDC وSAML SSO في Enterprise | نعم |
| doccano | pip وDocker وCompose | 6 | SQLite افتراضياً، وPostgreSQL في Compose الخاص بالإنتاج | OAuth عبر GitHub وOkta | لم نجده |
| Argilla | Hugging Face Spaces وCompose | 5 | SQLite افتراضياً، وPostgreSQL مدعوم، إضافة إلى Elasticsearch أو OpenSearch | OAuth2 وKeycloak | تصدير مجموعات البيانات فقط |
| INCEpTION | JAR وDocker وCompose | 2 | HSQLDB مضمّن، وMariaDB موصى به للإنتاج | SAML2 وOIDC | نعم |
| Potato | pip وDocker وpotato deploy | 1 | ملفات وSQLite، وMySQL اختياري | مزوّدو OAuth وOIDC | نسخ احتياطي مدمج إلى HF أو S3 |
Label Studio يعمل حاويةً واحدة أو حزمة Compose من nginx والتطبيق وPostgreSQL. ويستخدم SQLite افتراضياً، ويقول دليل التخزين الخاص به إن عليك التفكير في PostgreSQL فوق 100,000 مهمة مع 5 مستخدمين متزامنين أو أكثر. ويطلب دليل التثبيت 8 GB من الذاكرة على الأقل، ويوصي بـ 16 GB، ويوصي بقرص بسعة 50 GB للإنتاج. وتسرد مقارنة الإصدارات SAML SSO وLDAP والوصول القائم على الأدوار وسجلات النشاط بوصفها ميزات مدفوعة، وفي إصدار Community يستطيع كل مستخدم رؤية كل مشروع.
CVAT يعمل عبر Docker Compose أو على Kubernetes. ويعرّف ملف Compose المرجعي الخاص به 18 خدمة، منها PostgreSQL وRedis وkvrocks للتخزين المؤقت، وثمانية عمّال خلفيين، وTraefik، وخدمة Open Policy Agent للتفويض، وحزمة تحليلات من ClickHouse وGrafana. ويوثّق CVAT النسخ الاحتياطي خطوة بخطوة. فدليله يوقف الحاويات، ويؤرشف وحدات تخزين قاعدة البيانات والوسائط والتحليلات، وينبّه إلى أن الاستعادة تحتاج إلى إصدار CVAT نفسه تماماً. وLDAP موثّق للإصدار Community، في حين أن تسجيل الدخول الموحّد عبر OIDC وSAML موسوم بأنه من Enterprise.
doccano يبدأ حاويةً واحدة مع SQLite، ويضيف ملف Compose الخاص بالإنتاج Celery وRabbitMQ وnginx وPostgreSQL. وينبّه دليل التثبيت الخاص به إلى أن ترقية الحزمة تُفقد قاعدة بيانات SQLite. ويوثّق تسجيل الدخول عبر GitHub وOkta. وحتى أكتوبر 2026 كان أحدث إصدار له على PyPI هو 1.8.4، من يوليو 2023، وسُحب من PyPI الإصدار 1.8.5 الذي نُشر على GitHub في يناير 2026.
Argilla يُنشر على Hugging Face Spaces أو باستخدام Docker Compose، حيث يعمل الخادم وعامل وPostgreSQL وElasticsearch وRedis معاً. ويلزم Elasticsearch 8.5 أو OpenSearch 2.4، ويشير دليل النشر إلى أن معظم مشكلات النشر تتعلق بـ Elasticsearch. وعلى Space مجاني دون تخزين دائم، تُفقد مجموعات البيانات ومساحات العمل والمستخدمون عند إعادة التشغيل. ويعود أحدث إصدار له إلى مارس 2025.
INCEpTION يعمل تطبيقَ Java أو حاوية، مع MariaDB بوصفها قاعدة البيانات الموصى بها للإنتاج، لأن HSQLDB المضمّنة فيه قد تتلف حين يتعطّل الجهاز. وتوجد التوسيمات والنصوص في ملفات تحت مجلده الرئيسي، ويغطي دليل الإدارة النسخ الاحتياطي والاستعادة على مستوى النظام بالكامل، مع قسم للنسخ الاحتياطي يبدأ بالتحذير من أن «النسخة الاحتياطية التي لا يمكن استعادتها بنجاح لا قيمة لها».
Potato يعمل عمليةً واحدة، من pip أو من صورة Docker واحدة. ويُخزَّن عمل كل مُعلِّق في ملف تحت مجلد المخرجات، مع بيانات المشروع في SQLite بجانبه، وMySQL خيار لا شرط. وتحتفظ العملية بمجمّع العناصر وطابور الإسناد في الذاكرة، لذا تعمل بعامل gunicorn واحد ومزيد من الخيوط، وتتوسّع بالانتقال إلى جهاز أكبر لا بإضافة خوادم. وتسجيل الدخول عبر Google أو GitHub أو Hugging Face أو أي مزوّد OIDC جزء من الحزمة مفتوحة المصدر، ويُضبط تحت authentication.providers.
يعكس عدد خدمات كل أداة المهام التي تتولاها. فخدمات CVAT الثماني عشرة تحمل عمّالاً منفصلين للاستيراد والتصدير والتقطيع وتقارير الجودة، وحزمة تحليلات، وتفويضاً قائماً على السياسات، وهي أمور يمكن أن يستفيد منها فريق كبير يدير تثبيتاً طويل الأمد. ويتطلب Argilla محرك بحث لمجموعات بياناته. ويكتفي Potato بحاوية واحدة، وهذا يناسب دراسة يُعدّها مختبر واحد، ويشغّلها أسابيع، ثم يزيلها.
الخوادم حسب التكلفة وبقاء القرص
تعمل أي من هذه الأدوات على آلة افتراضية فيها Docker، والخيار الرئيسي هو هل يبقى قرص الخادم بعد إعادة التشغيل. والتكاليف أدناه هي التقديرات التي يطبعها Potato 2.10 لأهداف potato deploy بأحجامها الافتراضية، والأجهزة نفسها تشغّل الأدوات الأخرى بالسعر نفسه، مع مراعاة احتياجات كل أداة من الذاكرة.
| الخادم | التكلفة الشهرية | يبقى القرص بعد إعادة التشغيل |
|---|---|---|
| AWS Lightsail، 2 GB | $12 | نعم |
| Hetzner Cloud، 2 vCPU و4 GB | نحو €6 | نعم |
| آلة Fly.io مع وحدة تخزين 1 GB | نحو $6 | نعم |
| Jetstream2، مع حصة ACCESS | مجاني | نعم |
| خدمة ويب على Render | مجانية، أو $7 إضافة إلى القرص | مع قرص مدفوع فقط |
| Heroku Basic dyno | $7 | لا |
| Hugging Face Docker Space | خطة PRO أو Team | لا |
Jetstream2 سحابة بحثية تموّلها NSF، لذا لا يدفع الباحث الأمريكي الذي لديه حصة ACCESS شيئاً، وتحصل كل نسخة على اسم DNS مع شهادة عادية. ويشمل سعر Lightsail الثابت عنوان IPv4 وقرصاً بسعة 60 GB، ولا يحتاج إلا إلى lightsail:* وsts:GetCallerIdentity، وهذا يناسب دور IAM جامعياً مقيَّد الصلاحيات. ونسخة Lightsail بسعة 2 GB تكفي Potato، أما الحد الأدنى المعلن لـ Label Studio البالغ 8 GB فيحتاج إلى خطة أكبر.
النسخ الاحتياطي على الخوادم التي تمسح القرص
يمسح Heroku القرص كل يوم، وتفقده الطبقة المجانية في Render وHugging Face Spaces عند إعادة التشغيل. والدراسة على أحد هذه الخوادم تحتاج إلى نسخة احتياطية تُستعاد أيضاً، وإلا وجد المُعلِّق العائد مهمة فارغة.
بدءاً من الإصدار 2.10، تنسخ كتلة backup في Potato مخرجات التوسيم ولقطات من قواعد بيانات المشروع إلى مجموعة بيانات على Hugging Face أو إلى حاوية تخزين متوافقة مع S3 كل خمس دقائق افتراضياً، وتستعيدها حين يبدأ خادم بقرص فارغ. وتعيد الاستعادة الحسابات مع التوسيمات، فيسجّل المُعلِّقون الدخول بكلمات المرور نفسها ويكملون من حيث توقفوا، ولا تكتب أبداً فوق توسيمات موجودة على القرص. أضف هذه الكتلة إلى إعداد، مع ضبط HF_TOKEN في بيئة الخادم وتثبيت الإضافة hosting:
backup:
schedule_minutes: 5
restore_on_boot: true
sinks:
- type: huggingface
repo_id: lab/pilot-annotationsيضيف potato deploy up النسخ الاحتياطي نفسه مع --backup hf أو --backup s3، ولا ينشر على Heroku أو على Hugging Face Space دون نسخ احتياطي ما لم يُعلن --demo أن التوسيمات يمكن الاستغناء عنها. أما Render وRailway وFly وECS Express فتتطلبه في كل الأحوال، لأن المشروع يصل إلى هذه الخوادم عبر تخزين النسخ الاحتياطي. وعلى الخوادم التي يبقى قرصها، يظل النسخ الاحتياطي يحفظ نسخة ثانية خارج الخادم، وهذا يغطي حذف النسخة كما يغطي إعادة التشغيل.
أياً كانت الأداة، اختبر الاستعادة قبل أن تبدأ الدراسة. شغّل نسخة جديدة من النسخة الاحتياطية، وسجّل الدخول بوصفك مُعلِّقاً، وتحقق من وجود آخر توسيم وضعته. وفي Potato، ينسخ potato deploy pull كل ما جمعه النشر إلى جهازك، ولا يزيل potato deploy destroy نشراً لم يُسحب قط، لذا شغّل السحب أولاً في نهاية الدراسة. وتضم صفحة تشغيل Potato محلياً أو في السحابة الأمر الخاص بكل خادم.
قراءة إضافية
- إعداد الإنتاج، عن gunicorn وDocker والوكيل العكسي
- مصادقة SSO وOAuth، عن ضبط مزوّدي تسجيل الدخول
- مقارنة أدوات التوسيم، عن الميزات لا عن الاستضافة