تسريع GPU في PixInsight: إعداد CUDA وقياسات الأداء الفعلية
جُمعت هذه المقالة من ملاحظات مدوّنة بين عامي 2021 و2024، وقد طرأت تحديثات على بعض الأدوات وإصدارات CUDA وخطوات الإعداد (وعلى الأخص أن PixInsight صار يدعم في إصداراته المتأخرة الإعداد بنقرة واحدة)، لذا يرجى الانتباه إلى الإطار الزمني أثناء القراءة.
منذ أن بدأت العمليات القائمة على الشبكات العصبية — مثل إزالة النجوم وخفض الضوضاء بالذكاء الاصطناعي وزيادة الحدة بالذكاء الاصطناعي — تدخل تباعًا إلى سير العمل في PixInsight، صار السؤال «هل أضيف بطاقة رسومية إلى حاسوب المعالجة؟» سؤالًا عمليًا جدًا. تجمع هذه المقالة خلاصة قياساتي الفعلية وخبرتي في الإعداد مع تسريع GPU خلال السنوات الأخيرة، بما في ذلك سبب استخدام GPU، وطريقة تفعيله، ومقدار الوقت الذي يوفّره، والفروق بين المنصّات.
لماذا نحتاج إلى تسريع GPU
العمليات التي تدعم تسريع GPU في PixInsight حاليًا هي أساسًا تلك التي تعتمد على حسابات الشبكات العصبية: StarNet++ وStarNet 2 وStarXTerminator (SXT) وNoiseXTerminator (NXT) وBlurXTerminator (BXT). وإذا شُغّلت هذه العمليات على المعالج المركزي (CPU) وحده، فإن زمن الانتظار يصبح كبيرًا جدًا، ولا سيما مع كبر أبعاد الصورة.
ومن الأمثلة التي تُشعر المرء بالفارق بوضوح إزالةُ النجوم بالدفعات: فعند معالجة المذنبات بالطريقة الحديثة، يلزم في الحالة الخطية إزالة النجوم من كل صورة مذنب على حدة قبل التجميع. فمثلًا مع أكثر من مئتي صورة بدقة 9 ملايين بكسل، لا تستغرق الصورة الواحدة سوى نحو 20 ثانية بتسريع نسخة RTX 3060 Laptop؛ أما بالاعتماد على المعالج المركزي وحده، فإن الزمن الإجمالي يكفي لجعل المرء يشكّك في اختياراته في الحياة.
وبمجرد تجربة تسريع GPU، لا عودة إلى الوراء على الأرجح.
أول مرة نجحت فيها في تفعيل CUDA
في أواخر عام 2021، وبعد ساعات من اختبار إصدارات مختلفة من NVIDIA CUDA وcuDNN وTensorFlow، نجحت أخيرًا في تسخير GPU (بطاقة NVIDIA RTX 3060) للمساعدة في إزالة النجوم:
- StarXTerminator لم يحتج سوى نحو 15 ثانية؛
- StarNet++ أقل من 10 ثوانٍ؛
لإتمام إزالة النجوم من صورة واحدة. وبالمقارنة مع المعالج المركزي وحده، كان الفارق واضحًا جدًا.

كيفية التفعيل: من الإعداد اليدوي إلى التثبيت بنقرة واحدة
الطريقة القديمة: وضع الملفات يدويًا
في البدايات، كان تفعيل تسريع GPU يقتضي تنزيل الإصدارات المتوافقة من ملفات CUDA وcuDNN وTensorFlow وغيرها يدويًا ووضعها في المواضع الصحيحة. ولم تكن عتبة هذه العملية منخفضة، كما أنها تنطبق فقط على مستخدمي Windows الذين ثبّتوا PixInsight ويملكون بطاقة رسومية NVIDIA مزوّدة بأنوية CUDA. ويرجى من مستخدمي بطاقات AMD (بما فيها الرسوميات المدمجة) تخطّي هذا القسم مباشرة، أما مستخدمو Linux فيلزمهم مقابلة النظائر بأنفسهم. وبعد إتمام الإعداد، ترتفع سرعة تنفيذ StarNet وStarNet++ وSXT وNXT وBXT ارتفاعًا كبيرًا.
والمزعج أن تحديث PixInsight كان يستوجب في الغالب إعادة وضع هذه الملفات في كل مرة، وهو أمر يسهل نسيانه.
الطريقة الحالية: الإعداد بنقرة واحدة المدمج في PI
مع مطلع عام 2024 تحسّن الوضع تحسّنًا كبيرًا — إذ يكفي الآن إضافة مستودع تحديث (repository) داخل PixInsight لاستخدام تسريع GPU مباشرة، دون أي تثبيت أو إعداد إضافي. وهذه هي الطريقة التي أتاحها RC (Russell Croman)، مؤلف سلسلة XTerminator، في منتدى PixInsight. وفي حينه كانت هذه الميزة متاحة على Windows فقط، بينما كانت نسخة Linux لا تزال قيد التطوير؛ أما نظام Mac فلم يكن يحتاج إلى هذا النوع من الإعداد أصلًا.
كيفية التأكّد من أن GPU يقوم بالحساب فعلًا
لمعرفة ما إذا كان GPU يبذل جهدًا أثناء إزالة النجوم أو خفض الضوضاء، على Windows 10/11: يرجى فتح Task Manager، ثم الانتقال إلى صفحة GPU واختيار الصفحة الفرعية CUDA؛ فإذا ظهرت نسبة استخدام على أنوية CUDA فهذا يعني أن GPU مستخدَم فعلًا (فعند تشغيل SXT مثلًا يمكن ملاحظة قفز أنوية CUDA إلى نسبة استخدام 87%)؛ أما إذا لم تتحرك أنوية CUDA إطلاقًا، فمعنى ذلك أن GPU لا يُستغل.

قياسات الأداء الفعلية
معالج مركزي راقٍ مقابل بطاقة رسومية متوسطة إلى منخفضة
يسأل كثيرون: إن كان المعالج المركزي قويًا بما يكفي، فهل تبقى حاجة إلى بطاقة رسومية؟ لقد أجريت مقارنة بين معالج مركزي راقٍ من الفئة الاستهلاكية (AMD R9-7950X) وبطاقة رسومية استهلاكية من الفئة المتوسطة إلى المنخفضة (RTX 3060 12G)، والبرنامجان المستخدمان هما PI 1.8.9-1 وSXT 2.05 AI 11 lite:
- المجموعة الأولى من الصور M1 (14.75MP): إزالة النجوم على CPU استغرقت دقيقة و45 ثانية؛ وعلى GPU استغرقت 10.2 ثانية.
- المجموعة الثانية من الصور Webb NGC 3372 (123MP): إزالة النجوم على CPU استغرقت 12 دقيقة و31 ثانية؛ وعلى GPU استغرقت دقيقة و5 ثوانٍ.
وتتّضح من ذلك قاعدتان: كلما كبرت أبعاد الصورة ازداد أثر تسريع GPU وضوحًا؛ وحتى عند مواجهة معالج مركزي راقٍ ببطاقة رسومية متوسطة إلى منخفضة، يحتاج المعالج المركزي إلى عشرة أضعاف زمن البطاقة على الأقل لإنجاز العمل نفسه. وإذا لم يكن المعالج المركزي من الطرازات الراقية، فإن الفارق يتّسع أكثر. ولذلك، ما دام سير العمل يقتضي استخدام عمليات الذكاء الاصطناعي مرارًا، فإنني أنصح بشدة باقتناء بطاقة رسومية من سلسلة RTX 30 من الفئة المتوسطة إلى المنخفضة على الأقل.

تحديث برامج CUDA وحده يكفي لمضاعفة السرعة تقريبًا
وهناك اكتشاف مدهش آخر. فقبل عام ونيّف فعّلت تسريع CUDA لأول مرة على الحاسوب المحمول المزوّد ببطاقة RTX 3060 Laptop، وبعد أكثر من عام، ودون تغيير أي عتاد حسابي على الإطلاق (فالحاسوب المحمول لا يمكن ترقيته أصلًا)، اكتفيت بتحديث البرامج ذات الصلة وأعدت القياس على الصورة نفسها، فإذا بالسرعة قد تضاعفت تقريبًا.
ولنأخذ مثالًا إزالة النجوم من صورة بدقة 120 مليون بكسل (PI 1.8.9-1، SXT 2.05 AI 11 lite، RTX 3060 Laptop 6GB):
- إعداد CUDA الأول (CUDA 11.2.2، TensorFlow 2.6، cuDNN 8.2.1): نحو دقيقتين ونصف.
- إعداد CUDA الثاني (CUDA 11.8، TensorFlow 2.9، cuDNN 8.7، ZLib DLL x64 1.2.3): دقيقة و20 ثانية فقط.
لذلك، من ثبّت CUDA في وقت مبكر ولم يحدّثه بعدها، يرجى تذكّر تحديث برامج CUDA بالرجوع إلى تركيبة «الإعداد الثاني» أعلاه، فذلك أشبه بالتقاط نصف الأداء مجانًا.

بطاقة النسخة المكتبية مقابل بطاقة النسخة المحمولة
تصادف أن لديّ البطاقتين معًا: RTX 3060 12G وRTX 3060 Laptop 6G، وفيما يلي زمن إزالة النجوم بإصدار البرنامج نفسه:
- RTX 3060 12G: دقيقة و4 ثوانٍ؛
- RTX 3060 Laptop 6G: دقيقة و20 ثانية.
الشريحة نفسها في البطاقتين، والفارق يقتصر على سعة الذاكرة وتصميم استهلاك الطاقة بين النسخة المكتبية والنسخة المحمولة، ولذلك فإن الفارق في زمن إزالة النجوم ضئيل. وأما من حيث القيمة مقابل السعر، فإن حاسوبًا محمولًا للألعاب مزوّدًا ببطاقة NVIDIA (بسعر يقارب 30,000 دولار تايواني آنذاك) يُعدّ خيارًا مجزيًا إلى حد بعيد.

حتى بطاقات التعدين القديمة يُحسّ أثرها
لديّ في البيت حاسوب قديم جمّعته قبل نحو أربع سنوات (AMD R5-3600)، وكانت بطاقته الأصلية (R9-270) قد شارفت على نهاية عمرها. فاقتنيت من الإنترنت بطاقة تعدين بأقل من 3000 دولار تايواني — وهي NVIDIA GTX 1660s — وجرّبت عليها إزالة النجوم من صورة كاملة الإطار (نحو 60 مليون بكسل):
- على CPU وحده: 5 دقائق و40 ثانية؛
- على GPU: 51 ثانية؛
أي بفارق يقارب 6.6 أضعاف. ومع أن عدد أنوية CUDA في 1660s لا يتجاوز الألف وأربعمئة ونيّف، يبقى الوقت الموفَّر ملحوظًا. وما دام العمل يتضمن تكرار عمليات مثل إزالة النجوم وخفض الضوضاء بالذكاء الاصطناعي وزيادة الحدة بالذكاء الاصطناعي، فإن تسريع GPU استثمار يستحق العناء.

الفروق بين المنصّات
يختلف دعم إمكانية استخدام عمليات الذكاء الاصطناعي لتسريع GPU باختلاف أنظمة التشغيل والعتاد. وقد جمعت أوضاع المنصّات الثلاث Windows وMac وLinux (بعض نتائج اختبار Mac قدّمها أحد الهواة الزملاء):
- Windows + NVIDIA: بمجرد إتمام الإعداد، يمكن استدعاء CUDA لتسريع SXT وBXT وNXT وStarNet جميعها على GPU.
- أجهزة Mac بمعالجات Apple Silicon (مثل M1 / M1 Ultra): يستدعي كل من BXT وNXT واجهة Metal تلقائيًا للتسريع على GPU دون أي إعداد؛ أما SXT فلا يشغل عند التنفيذ سوى جزء من موارد المعالج المركزي ولا يستفيد من GPU؛ وأما StarNet 2 فيلزم التحوّل إلى النسخة التجريبية المتاحة على الموقع الرسمي (بوضع سطر الأوامر CLI فقط) لتفعيل التسريع على GPU بنجاح.
- أجهزة Mac بمعالجات Intel: لا يستطيع StarNet أن يستخدم سوى المعالج المركزي؛ بينما تستطيع SXT وBXT وNXT استخدام تسريع GPU، ويصح ذلك حتى مع بطاقات AMD.
على منصّة Apple Silicon، تدعم عمليات مثل SXT تسريع GPU دعمًا أصليًا، ولذلك يقارب أداؤها أداء «Windows + تسريع NVIDIA CUDA» إلى حد كبير. وأما نظام Linux على الحواسيب الشخصية، فيمكنه هو الآخر استدعاء GPU لتسريع الحساب.

خلاصة
بالنظر إلى تغيّرات هذه السنوات: انتقل تسريع GPU من إعداد صعب يقتضي «قضاء ساعات في مطابقة إصدارات CUDA» إلى «إنجازه بنقرة واحدة عبر ميزة مدمجة في PI»؛ وتتزايد العمليات القابلة للتسريع باطّراد، حتى إن بطاقة تعدين قديمة بثمن بضع مئات من الدولارات التايوانية قادرة على مضاعفة السرعة عدة مرات. وإذا كان سير العمل يعتمد اعتمادًا كبيرًا على عمليات الذكاء الاصطناعي، فإن بطاقة رسومية NVIDIA من الفئة المتوسطة إلى المنخفضة (أو حاسوب Mac بمعالج Apple Silicon) تكاد تكون ضرورية.