التطبيقات المحمولة والسحابة

تشغيل وتسريع نماذج LLM على معالجات ARM (Graviton4/Neoverse): دليل عملي لتقليل التكلفة وزيادة الأداء

دليل عملي لتشغيل وتسريع نماذج LLM على Graviton4 ومعالجات ARM: اختيار المثيلات، قياس الأداء، تقنيات الكمّ والتحسين لتقليل التكلفة وزيادة الإنتاجية.

Man taking a selfie outdoors by the lake with scenic background, capturing the essence of travel and adventure.

مقدمة: لماذا تشغيل LLM على معالجات ARM مهم الآن؟

مع تزايد الحاجة إلى استدلال نماذج اللغة الكبيرة (LLMs) في الإنتاج، أصبحت كفاءة التكلفة ومعدل الاستجابة عوامل حاسمة. معالجات ARM الحديثة مثل عائلة Arm Neoverse وشرائح AWS Graviton4 تُقدّم تحسّنًا ملموسًا في أداء الحوسبة مقابل التكلفة، ما يجعلها خيارًا جذابًا لخدمات الاستدلال على السحابة.

في هذا الدليل العملي سنغطي خطوات الانتقال، قياسات الأداء الأساسية، تحسينات منخفضة المستوى (تجميع SIMD، SVE/NEON)، استراتيجيات الكمّ (quantization) المناسبة للـ CPU، ونماذج نشر عملية لتقليل التكلفة مع المحافظة على جودة الاستجابات.

developer optimizing LLM on ARM server cloud
صورة: Christina Morillo — Pexels

ما الذي يجعل Neoverse وGraviton4 مناسبين لاستدلال LLM؟

تحسينات معالجات Neoverse (سلسلة V) تتركز حول وحدات SIMD متقدمة (SVE/SVE2) وتحسينات في IPC والذاكرة والتي تُسرِّع عمليات الضرب المصفوفي (GEMM) وعمليات التحويل (prefill) التي تعتمدها نماذج التحويل (Transformers). تقارير ومقارنات أداء أظهرت زيادات ملحوظة في أداء استدلال LLM وعلميات GEMM على Neoverse مقابل أجيال سابقة أو مقابل منصات x86 في حالات سعر-أداء محددة.

من ناحية AWS، Graviton4 مبنيّ على نوى Neoverse ويقدّم زيادة في throughput لكل دولار في العديد من اختبارات قواعد البيانات وعمليات ML وLLM، مما يجعله مناسبًا لتشغيل خدمات inference متوسّطة الحجم أو متعددة المستأجرين. عند اختيار أنواع المثيلات، قارن بين أنواع الذاكرة، عرض النطاق الداخلي (network bandwidth)، وعدد النوى الفعّالة للـ SIMD عند تحديد إعدادات الـ threading.

خطوات عملية لترحيل وتشغيل نموذج LLM على Graviton4 / ARM

1) اختبار التوافق وتجهيز بيئة التنفيذ

  • اختبر نسخة AArch64 من محرك الاستدلال (مثال: llama.cpp أو llama.cpp + GGUF) لأنَّ هذه المشاريع تحتوي على تسريع NEON/SVE مدمجًا ويعملون جيدًا على السحابة المعتمدة على ARM.
  • ركّب مكتبات النظام الأساسية (OpenBLAS أو BLIS أو kernels مخصّصة) وتأكّد من تمكين تعليمات SVE/NEON أثناء التجميع.

2) اختيار المثيل وتهيئة النظام

  • ابدأ بمقارنة السعر/الأداء عبر أحجام المثيلات: ركّز على مثيلات تحتوي ذاكرة كافية لتحميل النموذج المكمي (quantized) وممر ذاكرة واسع. تقارير مستقلة أشارت إلى تفوّق Graviton4 في نسبة السعر/الأداء لبعض أحمال LLM.
  • اعمل اختبارًا بسيطًا (baseline): حساب TPS أو tokens/sec على مداخل معقولة (batch=1–8)، واقرأ زمن الاستجابة 95th/99th percentile.

3) الكمّ (Quantization) — توازن بين الجودة والذاكرة

لا تعتمد على FP16 على الـ CPU؛ بدلاً من ذلك استخدم صيغًا مخصّصة للـ CPU مثل GGUF (int8/int4 وNF4) أو طرق GPTQ/AWQ عند الحاجة. الكمّ إلى 8‑bit أو 4‑bit يمكن أن يقلّل الذاكرة بنسبة كبيرة مع خسارة دقة صغيرة تُحتمل للعديد من تطبيقات الـ RAG والدردشة. تأكد من اختبار جودة المخرجات على مهامك الفعلية لأن الأثر يختلف بحسب النموذج وطبيعة المهمة.

4) ضبط الأداء التشغيلي (threads, affinity, memory)

  • ضبط متغيّرات البيئة: export OMP_NUM_THREADS=..., KMP_AFFINITY=granularity=fine,compact أو استخدام taskset لتثبيت الخيوط على الأنوية السريعة.
  • اختر عددًا من الخيوط يساوي أو أقل من عدد الأنوية الفيزيائية الفعّالة لاختبارات الاستنتاج الأحادية الدفعة؛ واستخدم التجارب للعثور على sweet‑spot للتنفيذ متعدد‑المستأجرين.

أمثلة سريعة

# مثال: تجميع llama.cpp مع دعم AArch64 (مبسّط)
make clean && CFLAGS="-O3 -march=armv8.4-a -mtune=native" make -j$(nproc)

# إعداد بيئة تشغيل
export OMP_NUM_THREADS=8
./main -m model.gguf --prompt "مرحبا" --tokens 128

قياس الأداء ومقاييس يجب مراقبتها

عند نشر خدمة استدلال على ARM، راقب المقاييس التالية بانتظام: tokens/sec (throughput)، p95/p99 latency، استخدام الـ CPU لكل نواة، عرض الذاكرة، ونسبة cache‑miss. اختبار الحمل (load testing) مع سيناريوهات واقعية سيكشف عن عنق الزجاجة—سواءً على مستوى الذاكرة المشتركة أو ازدحام الـ NUMA أو القيود الشبكية بين المثيلات. أدوات مثل perf, htop, وملفات السجلات للمحرك (مثلاً llama.cpp/vLLM) ضرورية لتشخيص مشاكل الأداء.

ملاحظة: النتائج المنشورة لاختبارات Graviton4 أظهرت تفوّقًا في بعض حالات LLM مقابل منصات x86 من ناحية السعر/الأداء، لكن النتائج تختلف حسب النموذج، الكمّ، وإعداد التجميع. اختبر دائمًا بنفسك قبل الانتقال إلى الإنتاج.

قائمة التحقق للنشر وخفض التكلفة

  1. اختبر نسخًا مكمّنة بالكمّ (GGUF/Q4/Q8) وقارن الجودة زمنياً على مهمتك.
  2. قارن أنواع المثيلات (ذاكرة، نوى، عرض نطاق شبكي) واحتسب السعر/ثانية عمل حقيقي.
  3. استخدم autoscaling ذكيًا: مزيج من spot/spot‑like instances وsteady‑state Graviton4 لتقليل التكلفة مع الحفاظ على زمن استجابة ثابت.
  4. فعّل مراقبة SLO/SLA وقياس drift للنموذج (تغيّر الجودة) لتجنُّب استدعاءات مكررة للنموذج المكلف.
  5. وَثِّق التكوينات (compiler flags, kernel tunings, affinity) داخل صفحات تشغيل (runbooks) أو IaC لتكرار النشر.

لمزيد من القراءة التقنية حول تحسّن أداء Neoverse في أحمال AI ومقارنات Graviton4، راجع مدونات Arm وتقارير المختبرات المستقلّة التي حللت نسبة السعر/الأداء للحوسبة السحابية.

خاتمة وتوصيات سريعة

إذا كنت تبنّي استدلال LLM ضمن ميزانية محدودة أو تريد تحسين السعر/أداء على السحابة، فالانتقال إلى معالجات ARM الحديثة مثل Graviton4 المدفوعة بتقنيات Neoverse قد يمنحك مكاسب ملموسة. ومع ذلك، يجب:

  • إجراء اختبارات كمية/نوعية على مهمتك الخاصة قبل اتخاذ قرار الإنتاج.
  • الاستفادة من الكمّ والتسريع (NEON/SVE) في محركات الاستدلال المفتوحة مثل llama.cpp وقياس الأثر على جودة المخرج.
  • دمج المراقبة وAutoscaling مع استراتيجيات Spot لتقليل التكلفة دون التضحية بالاستجابة.

مصادر مفيدة للمتابعة: اختبارات Graviton4 ومقارنات السعر/الأداء، وثائق Arm عن Neoverse، ودلائل الكمّ وllama.cpp للبيئات الـ AArch64.

إعلان

مقالات ذات صلة

Breathtaking view of Machu Picchu with lush green terraces under a clear blue sky in Cuzco, Peru.

مراقبة نماذج الإنتاج وSLOs: قياسات drift، تنبيهات ذكية وإجراءات استجابة آلية

دليل عملي لقياس drift، تعريف SLIs/SLOs، إنشاء تنبيهات ذكية واستجابات آلية للنماذج الإنتاجية، مع أمثلة على أدوا…

Palm trees and red flowers with mountains in the background, captured in Stresa, Italy.

استراتيجية Autoscaling لخدمات Inference متعددة المستأجرين: دمج Spot وServerless وEdge للحفاظ على الأداء وتقليل التكلفة

دليل عملي لAutoscaling لخدمات Inference متعددة المستأجرين: تصميم هجيني باستخدام Spot، Serverless وEdge لتقليل…

استخدام eBPF لمراقبة أداء التطبيقات السحابية: تتبّع موزّع، تجميع قياسات دقيقة، وإعداد تنبيهات قابلة للتنفيذ [Mobile & Cloud > Cloud Platforms & DevOps]

استخدام eBPF لمراقبة أداء التطبيقات السحابية: تتبّع موزّع، قياسات دقيقة، وتنبيهات قابلة للتنفيذ

تعلم كيف توظّف eBPF لمراقبة التطبيقات السحابية: آليات التجميع، تكامل OpenTelemetry، قياس الأداء، وأفضل ممارسات…

Free stock photo of 4k, alpine, arka plan

حماية سلسلة التوريد البرمجية في خطوط GitOps: SLSA وSigstore وسياسات توقيع CI/CD عمليًا

دليل عملي لتطبيق SLSA وSigstore في خطوط GitOps: سياسات توقيع CI/CD، إنشاء إثباتات (provenance)، والتحقق قبل ال…

Hands typing on a laptop with coding, phone on desk, symbolizing cybersecurity.

دمج DevOps وMLOps: بناء خط نشر موحّد (CI/CD) من الكود إلى النموذج

دليل عملي لدمج DevOps وMLOps وبناء خط CI/CD موحّد: أدوات، أفضل ممارسات، ونماذج YAML من التدريب إلى النشر والمر…

A dramatic view of an airplane flying above modern skyscrapers in London, UK.

بناء خطوط GitOps مرنة مع تحسين تكاليف السحابة تلقائيًا (Autoscaling + Spot + AI‑rightsizing)

دليل عملي لبناء خطوط GitOps قابلة للتخصيص تجمع Autoscaling، Spot Instances وAI‑driven rightsizing لتقليل تكلفة…