تنسيقات Safetensors وCKPT وONNX وGGUF وغيرها من تنسيقات نماذج الذكاء الاصطناعي الرئيسية [2025]

مصنف كـ AI/ML، المصدر المفتوح موسوم كـ ، ، ، ، ،
Save and Share:

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

يستعرض هذا التقرير أبرز تنسيقات تسلسل النماذج، بما في ذلك Safetensors وCKPT وONNX وGGUF. ويسلط الضوء على ميزاتها الفريدة، واستخداماتها الشائعة، وكيفية مقارنتها ببعضها البعض.

1. مقدمة عن تسلسل النماذج في الذكاء الاصطناعي والتعلم الآلي

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

الدور الحيوي لتنسيقات النماذج في دورة حياة الذكاء الاصطناعي والتعلم الآلي

يُعد حفظ النماذج بتنسيق قياسي أمرًا بالغ الأهمية لعدة أسباب:

  • إمكانية إعادة الإنتاج: يسمح بإعادة تكرار التجارب البحثية والتحقق من صحتها بدقة.
  • التعاون: تسهل التنسيقات القياسية على الفرق مشاركة النماذج، مما يمكنهم من العمل معًا ودمج النماذج في أنظمة أكبر.
  • النشر: يحول التسلسل نموذجًا مُدرَّبًا إلى ملف محمول يمكن تحميله وتشغيله في بيئات مختلفة، من خوادم الحوسبة السحابية إلى الأجهزة الطرفية.
  • التعلم بالنقل: يتيح استخدام النماذج المدربة مسبقًا كأساس لمهام جديدة، مما يوفر وقتًا كبيرًا في التدريب ويقلل الحاجة إلى البيانات.

نظرة عامة على التحديات التي تعالجها التنسيقات الحديثة

مع تقدم التعلم الآلي، تطورت تنسيقات التسلسل الحديثة لحل العديد من التحديات الرئيسية:

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

في السنوات الأخيرة، تحول مجتمع الذكاء الاصطناعي نحو تنسيقات أكثر كفاءة وأمانًا مثل GGUF وSafetensors، مما يعكس جهدًا جماعيًا لمعالجة هذه القضايا.

تم اختيار الأساليب المبكرة لحفظ نماذج التعلم الآلي، مثل استخدام PyTorch لوحدة pickle في بايثون لملفاتها ذات الامتداد .pt و.pth، لسهولة استخدامها. فقد كان بإمكانها حفظ كائنات بايثون المعقدة بسهولة، بما في ذلك تصميم النموذج وحالة تدريبه (مثل المُحسِّن). ورغم أن هذا كان مناسبًا للأبحاث في بيئة بايثون، إلا أنه خلق ثغرة أمنية كبيرة. فوحدة pickle مصممة بطريقة تسمح لها بتشغيل أي تعليمة برمجية مضمنة في الملف أثناء عملية التحميل. هذا يعني أن تحميل نموذج يبدو غير ضار من مصدر غير موثوق به يمكن أن يعرض نظامًا بأكمله للخطر.

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

إن التنسيقات الأصلية لأطر العمل، مثل .pt/.pth لـ PyTorch و.ckpt/.h5 لـ TensorFlow/Keras، مدمجة بإحكام مع أطر عملها الخاصة. وفي حين أن هذا يجعلها فعالة داخل نظام بيئي واحد، فإنه يسبب مشاكل كبيرة في التشغيل البيني. فلا يمكن استخدام نموذج تم تدريبه في إطار عمل معين بسهولة في إطار عمل آخر دون تحويلات معقدة أو الحفاظ على أنظمة منفصلة لكل إطار عمل. وهذا يؤدي إلى تدفقات عمل تطوير ونشر غير متصلة.

تم إنشاء تنسيق Open Neural Network Exchange (ONNX) لكسر هذه الحواجز، حيث يوفر معيارًا "متعدد المنصات" و"محايدًا للموردين" للنماذج. ويحقق ذلك من خلال تحديد بنية النموذج (الرسم البياني الحسابي) بطريقة مجردة ومستقلة عن أي إطار عمل واحد. وبالمثل، يركز تنسيق GGUF، على الرغم من أنه صُنع في الأصل لمشروع llama.cpp، على تحسين التوافق للنماذج اللغوية الكبيرة (LLMs) عبر منصات مختلفة.

يعكس تنوع التنسيقات اليوم توترًا أساسيًا في صناعة التعلم الآلي: الرغبة في ميزات خاصة بإطار العمل أثناء التطوير (على سبيل المثال، الرسم البياني الديناميكي لـ PyTorch لمرونة البحث) مقابل الحاجة إلى نشر عالمي وفعال وآمن. ويعني هذا التوتر أن تنسيقات متعددة ستستمر في الوجود، مما يجعل أدوات التحويل وخطوط أنابيب MLOps المتقدمة أكثر حيوية لربط تطوير النماذج بالنشر. ستستمر التنسيقات المختلفة في الاستخدام لمراحل محددة من دورة حياة التعلم الآلي بناءً على نقاط قوتها الفريدة.

2. فهم تنسيق Safetensors

يمثل Safetensors خطوة كبيرة إلى الأمام في تسلسل النماذج، حيث صُمم خصيصًا لإصلاح مشاكل الأمان والكفاءة في أساليب تخزين النماذج التقليدية.

التعريف ومبادئ التصميم الأساسية

Safetensors هو تنسيق تسلسل حديث وآمن وسريع لنماذج التعلم العميق، تم إنشاؤه بواسطة Hugging Face. هدفه الرئيسي هو توفير طريقة آمنة لتخزين ومشاركة الموترات (tensors)— وهي المصفوفات متعددة الأبعاد التي تعد اللبنات الأساسية للبيانات في التعلم الآلي. صُمم التنسيق ليكون أكثر أمانًا وسرعة من التنسيقات القديمة مثل pickle.

أحد المبادئ الأساسية لـ Safetensors هو الفصل الصارم بين أوزان النموذج (الموترات) وأي تعليمة برمجية قابلة للتشغيل. يعالج هذا التصميم مباشرة الثغرات الأمنية الموجودة في طرق التسلسل القديمة.

الميزات الرئيسية

  • التحميل بدون نسخ والتحميل الكسول: من أهم أسباب أداء Safetensors قدرته على "التحميل بدون نسخ" (zero-copy). يسمح هذا بربط بيانات النموذج مباشرة من القرص إلى الذاكرة دون إنشاء نسخ إضافية، مما يوفر الذاكرة ويسرع التحميل. كما أنه يدعم "التحميل الكسول" (lazy loading)، مما يعني أنه يتم تحميل الأجزاء الضرورية فقط من النموذج الكبير في ذاكرة الوصول العشوائي عند الحاجة. وهذا مفيد جدًا للنماذج الكبيرة للغاية أو الأنظمة ذات الذاكرة المحدودة.
  • معالجة البيانات الوصفية المنظمة: يتضمن كل ملف Safetensors قسمًا منفصلاً للبيانات الوصفية بتنسيق JSON. يسرد هذا القسم جميع الموترات في النموذج مع تفاصيل مثل شكلها ونوع بياناتها واسمها. تشير البيانات الوصفية إلى مكان تخزين بيانات الموتر الفعلية بشكل منفصل في الملف، مما يحسن كلاً من قابلية القراءة والأمان.
  • تخزين بيانات الموترات فقط: أهم ميزة أمنية في Safetensors هي أنه مصمم ليحتوي على "بيانات الموترات الأولية والبيانات الوصفية المرتبطة بها فقط". وبحكم بنيته، فإنه "لا يسمح بتسلسل تعليمات بايثون البرمجية العشوائية". هذا الخيار التصميمي الأساسي يزيل خطر تشغيل تعليمات برمجية ضارة عند تحميل النموذج.
  • دعم التكميم (Quantization): يمكن لـ Safetensors التعامل مع الموترات المكممة، مما يساعد على جعل النماذج أصغر حجمًا وتستخدم ذاكرة أقل. ومع ذلك، فإن دعم التكميم فيه "ليس مرنًا مثل GGUF" لأنه يعتمد على الميزات التي يوفرها إطار عمل PyTorch.

الفوائد الأساسية

  • أمان معزز (تخفيف تنفيذ التعليمات البرمجية العشوائية): هذه هي أكبر ميزة لـ Safetensors. فهو يمنع تمامًا، بحكم تصميمه، حفظ تعليمات بايثون البرمجية في الملف. وهذا يزيل أخطر المخاطر الأمنية الموجودة في التنسيقات القائمة على pickle: تشغيل تعليمات برمجية ضارة عند تحميل النموذج. وهذا يجعل Safetensors الخيار الأفضل لمشاركة واستخدام النماذج من مصادر عامة أو غير موثوقة. يتضمن التنسيق أيضًا ميزات أمان أخرى مثل "تقنيات تشفير متقدمة" وضوابط وصول لمنع التلاعب بالبيانات.
  • تحسين الأداء: يؤدي استخدام التحميل بدون نسخ والتحميل الكسول إلى "أوقات تحميل أسرع واستخدام أقل للذاكرة". تظهر المعايير أنه "أسرع" بكثير من pickle ويمكن أن يكون "أسرع بـ 76.6 مرة على وحدة المعالجة المركزية وأسرع بمرتين على وحدة معالجة الرسومات مقارنة بطريقة الحفظ التقليدية في PyTorch".
  • قابلية النقل: صُمم التنسيق ليكون قابلاً للنقل، مما يعني أنه يعمل عبر لغات برمجة مختلفة. وهذا يسهل مشاركة واستخدام النماذج في أنظمة برمجية متنوعة.
  • التكامل السلس: يتمتع Safetensors بـ"تكامل سلس مع أطر عمل ومكتبات التعلم الآلي الحالية". وهذا يسمح للمطورين بتبني هذا التنسيق الأكثر أمانًا بسهولة، دون إجراء تغييرات كبيرة على تدفقات عملهم الحالية.

مقارنة مع التسلسل التقليدي (مثل Pickle)

تُعد وحدة pickle في بايثون، والتي تستخدم لملفات .pt و.pth في PyTorch، غير آمنة بطبيعتها. فهي تسمح بإخفاء أي تعليمة برمجية داخل ملف مُسلسل وتشغيلها تلقائيًا عند تحميل الملف. وهذه ثغرة أمنية معروفة وخطيرة، خاصة عند استخدام النماذج التي يتم تنزيلها من مواقع الويب العامة. وفي حين أن أدوات مثل picklescan يمكنها اكتشاف بعض الأنماط الضارة، إلا أنها ليست مضمونة ولا يمكنها ضمان السلامة.

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

تعني الثغرة الأمنية في pickle ببايثون أن تنزيل ملف .pt أو .pth من مصدر غير موثوق لا يقتصر على تنزيل البيانات فقط؛ بل هو بمثابة تشغيل برنامج قد يكون ضارًا. ومن المعروف أنه "لا يوجد حل مضمون 100% للتحقق من سلامة ملف pickle دون تنفيذه". وهذا يضع عبء التحقق من سلامة الملف على المستخدم، وهو أمر صعب وغير موثوق.

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

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

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

3. نظرة عامة على تنسيقات النماذج الرئيسية

إلى جانب Safetensors، هناك العديد من التنسيقات المهمة الأخرى في عالم التعلم الآلي، لكل منها ميزاته وحالات استخدامه الخاصة.

3.1. CKPT (نقاط التحقق)

نقطة التحقق (checkpoint) في الذكاء الاصطناعي ليست نوع ملف واحد، بل هي لقطة لحالة النموذج يتم حفظها في نقطة محددة أثناء التدريب. تعد نقاط التحقق ضرورية لحفظ التقدم أثناء مهام التدريب الطويلة.

الخصائص وحالات الاستخدام النموذجية

تحتوي نقطة التحقق عادةً على المعلمات التي تعلمها النموذج، مثل أوزانه وانحيازاته. ويمكنها أيضًا تخزين معلومات مهمة أخرى مطلوبة لاستئناف التدريب، مثل حالة المُحسِّن، ورقم الحقبة الحالية، وجدول معدل التعلم. تختلف امتدادات ملفات نقاط التحقق حسب إطار العمل. فبالنسبة لـ PyTorch، تكون عادةً .pt أو .pth، بينما بالنسبة لـ TensorFlow/Keras، تكون .ckpt أو .h5.

تشمل الفوائد الرئيسية لملفات CKPT ما يلي:

  • إمكانية إعادة الإنتاج: تضمن تصرف النموذج بشكل متسق عند إعادة تحميله، وهو أمر حيوي للتحقق من صحة الأبحاث والحفاظ على أداء موثوق.
  • التعاون: يسهل مشاركتها، مما يسمح للمطورين بتكرار النتائج أو البناء على الأعمال الحالية.
  • المرونة: تتميز تنسيقات .pt/.pth في PyTorch بمرونة خاصة، مما يسهل حفظ وتحميل النماذج لأغراض البحث.

تشمل حالات الاستخدام الشائعة لملفات CKPT ما يلي:

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

الاعتبارات الأمنية

ينبع أكبر خطر أمني في ملفات CKPT، خاصة تنسيقات .pt و.pth في PyTorch، من اعتمادها على وحدة pickle في بايثون. هذا يعني أنه يمكن تصميم هذه الملفات لاحتواء وتشغيل تعليمات برمجية ضارة عند تحميلها (إذا تم استخدام دالة torch.load بدون إعداد weights_only=True). يمكن أن يكون لهذه الثغرة (CWE-502: إلغاء تسلسل البيانات غير الموثوقة) عواقب وخيمة، مثل سرقة البيانات، أو تغيير سلوك النموذج، أو حتى السيطرة الكاملة على النظام.

لقد اعترفت الصناعة بهذا الخطر، وبرز Safetensors كخيار أكثر أمانًا. كما لوحظ، "تُحفظ معظم نقاط التحقق الخاصة بنماذج Stable Diffusion AI بتنسيقات مثل .ckpt أو .safetensors... ويُعد .safetensors بديلاً أكثر أمانًا، مصممًا لمنع تنفيذ التعليمات البرمجية الضارة". وهذا يدل على اتجاه واضح نحو تنسيقات أكثر أمانًا لمشاركة النماذج.

تُعرف نقاط التحقق CKPTs، خاصة في تنسيق .pt/.pth الخاص بـ PyTorch، بكونها "عالية المرونة". تسمح هذه المرونة بحفظ ليس فقط أوزان النموذج ولكن أيضًا حالة المُحسِّن وحتى فئات بايثون المخصصة، وهو أمر مفيد جدًا لاستئناف التدريب بدقة.

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

يتمثل حل الصناعة في اعتماد تنسيقات مثل Safetensors لتوزيع النماذج، حتى لو كانت تنسيقات .pt/.pth الأكثر مرونة لا تزال تستخدم للتدريب في بيئات خاضعة للرقابة. وهذا يدل على فهم متزايد بأن المراحل المختلفة من دورة حياة التعلم الآلي تتطلب مستويات مختلفة من الأمان. من الأفضل الاحتفاظ بقوة حفظ حالة التدريب الكاملة داخل بيئة تطوير موثوقة، بينما تتطلب المشاركة والنشر تنسيقات ذات ضمانات أمنية مدمجة.

3.2. ONNX (Open Neural Network Exchange)

ONNX، وهو اختصار لـ Open Neural Network Exchange، هو تنسيق مفتوح المعيار لنماذج التعلم الآلي. وهو مصمم للسماح للنماذج بالعمل عبر أطر عمل التعلم العميق المختلفة.

الخصائص وحالات الاستخدام الأساسية

يحتوي ملف ONNX على بنية النموذج الكاملة، بما في ذلك تسلسل عملياته (الرسم البياني الحسابي)، وأوزانه المستفادة، وبيانات وصفية أخرى. تكمن إحدى نقاط القوة الرئيسية لـ ONNX في أنه يعمل كمترجم عالمي. يمكن تحويل النماذج المدربة في أطر عمل مثل PyTorch أو TensorFlow أو scikit-learn إلى تنسيق ONNX، مما يتيح نهج "التدريب مرة واحدة، والنشر في أي مكان".

على عكس التنسيقات التي تخزن أوزان النموذج فقط (مثل Safetensors أو GGUF)، يتضمن ONNX الرسم البياني الحسابي للنموذج. توفر هذه البنية القائمة على الرسم البياني "مرونة أكبر عند تحويل النماذج بين أطر العمل المختلفة". يوفر ONNX قابلية نقل ممتازة عبر العديد من المنصات والأجهزة ومسرعات الأجهزة (وحدات المعالجة المركزية، ووحدات معالجة الرسومات، وشرائح الذكاء الاصطناعي). يتم تخزين النماذج بتنسيق Protobuf، وهو طريقة فعالة ومحايدة للمنصة لحفظ البيانات المنظمة.

تشمل حالات الاستخدام الأساسية لـ ONNX ما يلي:

  • النشر عبر أطر العمل: تشغيل نموذج في إطار عمل أو بيئة مختلفة عن تلك التي تم تدريبه فيها.
  • الاستدلال عالي الأداء: يعد ONNX Runtime محرك استدلال يقوم بتحسين النماذج تلقائيًا لأجهزة معينة، مما يؤدي غالبًا إلى أداء أسرع.
  • النشر على الأجهزة الطرفية والمتنقلة: حجمه الصغير ووقت تشغيله المحسن يجعلان ONNX خيارًا جيدًا لتشغيل النماذج على الأجهزة محدودة الموارد.
  • أنظمة الإنتاج: متانته وقابليته للنقل تجعله شائعًا لنشر النماذج في بيئات الإنتاج كثيفة المتطلبات.

الاعتبارات الأمنية

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

للحد من هذه التهديدات، يوصى بالعديد من الممارسات:

  • التوقيع الرقمي لنماذج ONNX لضمان عدم التلاعب بها.
  • نشر النماذج في بيئات معزولة، مثل حاويات Docker، مع أمان شبكة قوي.
  • استخدام أدوات المراقبة لتتبع سلوك النموذج واكتشاف الحالات الشاذة.
  • اتباع أفضل ممارسات الأمان العامة، مثل تطهير المدخلات وتحديث البرامج.

يُعد ONNX بشكل عام أكثر أمانًا من التنسيقات القائمة على pickle لأنه لا يقوم بتشغيل تعليمات برمجية عشوائية عند تحميله. ومع ذلك، إذا كان نموذج ONNX يستخدم طبقات مخصصة يتم تنفيذها خارجيًا، فمن المحتمل أن تحتوي هذه الطبقات على تعليمات برمجية ضارة إذا لم تتم إدارتها بعناية.

العيوب

على الرغم من أن ONNX يدعم النماذج المكممة، فإنه "لا يدعم أصلاً الموترات المكممة" بسلاسة كما يفعل GGUF. فهو يقسمها إلى موترات منفصلة للأعداد الصحيحة وعوامل القياس، مما "قد يؤدي إلى انخفاض الجودة". قد يكون تحويل النماذج ذات الطبقات المعقدة أو المخصصة غير القياسية في ONNX صعبًا أيضًا وقد يتطلب عملاً مخصصًا يمكن أن يبطئ الأداء.

تقوم التنسيقات التقليدية القائمة على pickle في بايثون (مثل ملفات .pt) بحفظ كائنات بايثون، والتي يمكن أن تتضمن تعليمات برمجية قابلة للتشغيل. وهذا يعامل النموذج كبرنامج. في المقابل، يركز ONNX على حفظ "الرسم البياني الحسابي" للنموذج— وهو تمثيل أكثر تجريدًا لعملياته وتدفق بياناته، بدلاً من تطبيق برمجي معين.

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

3.3. GGUF (GPT-Generated Unified Format)

GGUF (GPT-Generated Unified Format) هو تنسيق ملف مصمم خصيصًا لتخزين وتشغيل النماذج اللغوية الكبيرة (LLMs) بكفاءة. وهو نسخة محسنة من سابقه، GGML، ويهدف إلى جعل استخدام النماذج اللغوية الكبيرة أسهل، خاصة على أجهزة الكمبيوتر الشخصية.

الخصائص وحالات الاستخدام الأساسية

صُمم GGUF لجعل النماذج اللغوية الكبيرة أصغر حجمًا وأسرع في التحميل. وهذا أمر حاسم لتشغيل النماذج محليًا، حيث غالبًا ما تكون مساحة التخزين وذاكرة الوصول العشوائي محدودة. يستخدم التنسيق "تقنيات ضغط متقدمة" لتحقيق ذلك. كما أنه يوفر طريقة قياسية لتجميع أوزان النموذج وبنيته وبياناته الوصفية، مما يضمن عمله بشكل متسق عبر البرامج المختلفة، خاصة مع محركات الاستدلال القائمة على llama.cpp.

إحدى الميزات الرئيسية لـ GGUF هي دعمه الممتاز للتكميم (quantization). يقلل التكميم من الدقة العددية لأوزان النموذج (على سبيل المثال، من أرقام 16 بت إلى 4 بت)، مما يقلل بشكل كبير من حجم الملف والحوسبة اللازمة لتشغيله. تتوفر نماذج GGUF بمستويات تكميم مختلفة (من Q2 إلى Q8)، مما يوفر مجموعة من المقايضات بين الحجم والجودة.

  • مستويات التكميم المنخفضة (مثل Q2 أو Q3) تؤدي إلى ملفات صغيرة جدًا يمكن تشغيلها على أجهزة ذات ذاكرة وصول عشوائي أقل، ولكن قد يكون هناك انخفاض طفيف في جودة النموذج.
  • مستويات التكميم الأعلى (مثل Q6 أو Q8) تحافظ على جودة أفضل ولكنها تتطلب مساحة تخزين وذاكرة وصول عشوائي أكبر.

تشمل حالات الاستخدام الأساسية لـ GGUF ما يلي:

  • النشر المحلي للنماذج اللغوية الكبيرة: تستخدم أدوات مثل Ollama تنسيق GGUF لتسهيل تشغيل المستخدمين للنماذج اللغوية الكبيرة القوية على أجهزة الكمبيوتر الخاصة بهم.
  • مساعدو الذكاء الاصطناعي بدون اتصال بالإنترنت: تستخدم العديد من التطبيقات نماذج GGUF لتوفير بدائل محلية وخاصة لأدوات الذكاء الاصطناعي السحابية.
  • المساعدة في البرمجة: بدأت بيئات التطوير المتكاملة ومحررات الأكواد في استخدام نماذج GGUF للإكمال الذكي للكود.
  • روبوتات الدردشة المحلية: غالبًا ما تستخدم نماذج GGUF لأنظمة الذكاء الاصطناعي الحوارية الخاصة والسريعة الاستجابة.
  • أبحاث الذكاء الاصطناعي: مرونته ودعمه للتكميم تجعله شائعًا بين الباحثين لتجربة النماذج اللغوية الكبيرة على أجهزة متاحة.

الاعتبارات الأمنية

على عكس الاعتقاد الشائع، كانت هناك ثغرات موثقة في مكتبة GGML الأساسية (التي يعتمد عليها GGUF) تتعلق بـ "التحقق غير الكافي من ملف الإدخال". يمكن أن تؤدي هذه العيوب إلى "ثغرات أمنية محتملة في تلف الذاكرة أثناء التحليل". تم تحديد مشكلات أمنية محددة حيث يمكن أن يتسبب إدخال المستخدم غير المتحقق منه في تجاوز سعة الكومة (heap overflows)، مما قد يسمح للمهاجم بتشغيل تعليمات برمجية ضارة.

هناك اعتقاد خاطئ شائع بأن ملف GGUF "لا يمكن أن يحتوي على تعليمات برمجية" وأنه "مجرد ملف نموذج". ومع ذلك، أظهر تقرير أمني من Databricks أنه على الرغم من أن ملف GGUF نفسه لا يحتوي على تعليمات بايثون قابلة للتنفيذ، إلا أن ملفًا تم تصميمه خصيصًا يمكنه استغلال عيوب في المحلل (البرنامج الذي يقرأ الملف) لإحداث تلف في الذاكرة وتحقيق تنفيذ التعليمات البرمجية.

للحد من هذه المخاطر، من الأفضل:

  • استخدام نماذج وأدوات من مصادر معروفة وذات سمعة طيبة (مثل Koboldcpp).
  • تشغيل النماذج اللغوية الكبيرة في بيئات معزولة (مثل حاويات Docker).
  • بالنسبة للمهام شديدة الحساسية، ضع في اعتبارك استخدام جهاز مخصص بدون اتصال بالإنترنت.

العيوب

أحد العيوب الرئيسية لـ GGUF هو أن معظم النماذج يتم تطويرها أولاً في أطر عمل أخرى (مثل PyTorch) ويجب تحويلها إلى تنسيق GGUF. عملية التحويل هذه ليست سهلة دائمًا، وقد لا تكون بعض النماذج مدعومة بالكامل من قبل الأدوات المتوافقة مع GGUF. بالإضافة إلى ذلك، فإن تعديل أو ضبط نموذج بعد أن يكون في تنسيق GGUF "ليس بالأمر السهل" بشكل عام.

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

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

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

4. تحليل مقارن للتنسيقات

يُعد اختيار تنسيق تسلسل النماذج المناسب قرارًا استراتيجيًا يعتمد على موازنة عوامل مختلفة، بما في ذلك الأمان، والأداء، وكفاءة الموارد، والتشغيل البيني، وسياق التطبيق المحدد. يقدم الجدول أدناه نظرة عامة مقارنة بين Safetensors، وCKPT، وONNX، وGGUF عبر هذه الأبعاد الحاسمة.

الميزة / التنسيق Safetensors CKPT (.pt/.pth) ONNX GGUF
الغرض الأساسي تخزين آمن وسريع للموترات لنماذج التعلم العميق نقاط تحقق التدريب، معلمات النموذج، حفظ الحالة التشغيل البيني عبر أطر العمل، النشر عبر أجهزة متنوعة تخزين فعال للنماذج اللغوية الكبيرة، استدلال محلي محسن على الأجهزة الاستهلاكية
الملف الأمني عالٍ (لا يوجد تنفيذ لتعليمات برمجية عشوائية بحكم التصميم) منخفض (تنفيذ تعليمات برمجية عشوائية عبر إلغاء تسلسل Pickle) متوسط (لا يوجد تنفيذ لتعليمات برمجية عشوائية، ولكن الأبواب الخلفية في البنية ممكنة) متوسط (ثغرات في المكتبة الأساسية، لكن الملف نفسه ليس كود بايثون قابل للتنفيذ)
سرعة التحميل سريع جدًا (بدون نسخ، تحميل كسول) متفاوت (يمكن أن يكون أبطأ من Safetensors بسبب التحميل الكامل) سريع (وقت تشغيل محسن، تحسينات على الرسم البياني) سريع (mmap، فعال للنماذج اللغوية الكبيرة)
استخدام الذاكرة فعال (تحميل كسول، تحميل جزئي) يمكن أن يكون مرتفعًا (يحمل الرسم البياني للكائن بالكامل) فعال (تحسينات وقت التشغيل) فعال جدًا (تكميم، توفير VRAM)
مساحة القرص فعال (ضغط، موترات فقط) متفاوت (يمكن أن يكون كبيرًا، يشمل الحالة الكاملة) فعال (تنسيق Protobuf) فعال جدًا (تكميم، ضغط متقدم)
دعم التكميم نعم، لكن أقل مرونة من GGUF (يعتمد على PyTorch) نعم (يعتمد على إطار العمل) دعم أصلي محدود (يفكك الموترات) قوي (مستويات متعددة، Q2-Q8، متغيرات متخصصة)
قابلية النقل عالية (عبر لغات برمجة مختلفة) منخفضة (مرتبطة بإحكام بأطر عمل معينة) عالية جدًا (عبر أطر العمل، عبر المنصات، أجهزة متنوعة) عالية (خاصة لنظام llama.cpp البيئي)
التطبيقات الأساسية مشاركة آمنة للنماذج، الافتراضي في Hugging Face التدريب، الضبط الدقيق، البحث، حفظ النماذج النشر في الإنتاج، الأجهزة المحمولة/الطرفية، التشغيل البيني الاستدلال المحلي للنماذج اللغوية الكبيرة، الأجهزة الاستهلاكية، تطبيقات الدردشة
الميزة الرئيسية الأمان بحكم التصميم، تحميل سريع، استهلاك منخفض للذاكرة الحفاظ على حالة التدريب، إمكانية إعادة إنتاج تفصيلية نشر عالمي، تحسين وقت التشغيل، استقلالية عن إطار العمل كفاءة النماذج اللغوية الكبيرة على الأجهزة الاستهلاكية، تكميم مرن
العيب الرئيسي يتطلب محلل JSON للبيانات الوصفية في C++ خطر تنفيذ التعليمات البرمجية العشوائية، أحجام ملفات كبيرة تعقيد للطبقات المخصصة، دعم تكميم أصلي محدود يتطلب التحويل غالبًا، تباطؤ محتمل في الاستدلال مع مستويات التكميم المنخفضة

5. الخلاصة

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

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

يحل ONNX مشكلة عدم توافق أطر العمل الرئيسية. فمن خلال تمثيل النماذج كرسوم بيانية حسابية مجردة، فإنه يسمح بنشرها عبر أجهزة وبرامج مختلفة. وفي حين أن ONNX يمنع تنفيذ التعليمات البرمجية العشوائية الموجودة في pickle، إلا أن له مخاوف أمنية خاصة به، مثل الأبواب الخلفية في البنية، والتي تتطلب تدابير وقائية مختلفة.

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

في النهاية، يعتمد أفضل تنسيق على السياق المحدد.

  • Safetensors هو الخيار الأفضل لمشاركة نماذج التعلم العميق بشكل آمن وفعال.
  • ONNX مثالي لنشر النماذج عبر أطر عمل وأجهزة مختلفة.
  • GGUF يوفر كفاءة لا مثيل لها لتشغيل النماذج اللغوية الكبيرة على الأجهزة المحلية محدودة الموارد.

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *