الوصف
GraphSAINT هو إطار عمل عام ومرن مصمم لتدريب شبكات الرسم البياني العصبية (GNNs) على الرسوم البيانية واسعة النطاق. يميز نفسه من خلال منهجية تدريب جديدة بالدفعات الصغيرة تستخدم أخذ عينات من الرسم البياني، وهو انحراف عن أساليب أخذ عينات الطبقات التقليدية. تسمح تقنية أخذ عينات الرسم البياني هذه ببناء طبقات GNN كاملة على رسوم بيانية فرعية صغيرة تم أخذ عينات منها، بدلاً من أخذ العينات داخل الطبقات. يؤدي هذا التحول الأساسي في المنظور إلى العديد من المزايا الرئيسية.
يتم تحسين الدقة من خلال تقنيات تطبيع بسيطة وفعالة تخفف من التحيز الذي أدخلته عينات الرسم البياني. علاوة على ذلك، يقترح GraphSAINT أدوات أخذ عينات رسم بياني خفيفة الوزن تحافظ على الجيران الحاسمين بناءً على الخصائص الطوبولوجية، مما يعالج فقدان المعلومات المتأصل في أي عملية أخذ عينات. يمكن أيضًا النظر إلى هذا كشكل من أشكال زيادة البيانات أو تنظيم التدريب.
يتم تحسين الكفاءة بشكل كبير من خلال حل مشكلة "انفجار الجيران"، وهي تحدٍ شائع في طرق أخذ عينات الطبقات. من خلال بناء طبقات GNN كاملة وغير مأخوذة عينات على الرسوم البيانية الفرعية، يظل عدد الجيران ثابتًا بغض النظر عن عمق الشبكة، مما يقلل تكلفة الحساب لكل دفعة صغيرة من الأسي إلى الخطي فيما يتعلق بعمق GNN. هذا يقلل أيضًا بشكل كبير من حمل الاتصال في الإعدادات الموزعة.
المرونة هي مبدأ أساسي في GraphSAINT. يتطابق انتشار الطبقات على رسم بياني فرعي بالدفعات الصغيرة بشكل وثيق مع الانتشار على الرسم البياني الكامل، مما يتيح التدريب السلس لمعظم معماريات GNN المصممة للرسوم البيانية الكاملة. هذا يتناقض مع بعض خوارزميات أخذ عينات الطبقات التي تدعم معماريات GNN محدودة فقط. يتم تحقيق قابلية التوسع عبر حجم الرسم البياني وحجم النموذج والموارد المتوازية. لا تحتاج أحجام الرسوم البيانية الفرعية إلى النمو بشكل متناسب مع حجم الرسم البياني، مما يسمح للرسوم البيانية الكبيرة بالملاءمة في ذاكرة وحدة معالجة الرسومات. تتناسب تكاليف التدريب خطيًا مع عرض وعمق GNN، وأخذ عينات الرسم البياني قابل للتوازي بدرجة عالية.
يوفر المستودع تطبيقات Python في كل من TensorFlow و PyTorch، بالإضافة إلى تطبيق C ++ لتقنيات التدريب المتوازية. يدعم معماريات GNN المختلفة مثل GraphSAGE و GAT و JK-Net، والعديد من أدوات أخذ عينات الرسم البياني بما في ذلك Node و Edge و RW و MRW. تم تصميم الإطار للباحثين والممارسين الذين يعملون مع مجموعات بيانات الرسم البياني الكبيرة الذين يحتاجون إلى تدريب GNN فعال ودقيق.
أبرز ملامح GraphSAINT
تدريب بالدفعات الصغيرة لشبكات GNN العميقة على الرسوم البيانية الكبيرة
طريقة تعلم استقرائية تعتمد على أخذ عينات الرسم البياني
نهج تدريب جديد بالدفعات الصغيرة باستخدام أخذ عينات الرسم البياني
يزيل التحيز الذي أدخلته عينات الرسم البياني عبر التطبيع
أدوات أخذ عينات رسم بياني خفيفة الوزن للحفاظ على الجيران المهمين
يحل مشكلة "انفجار الجيران" من أجل الكفاءة
قابل للتوسع فيما يتعلق بحجم الرسم البياني وحجم النموذج والموارد المتوازية
يدعم معماريات GNN متعددة (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
يدعم أدوات أخذ عينات رسم بياني متنوعة (Node, Edge, RW, MRW, Full graph)
متاح في تطبيقات TensorFlow و PyTorch
يتضمن تطبيق C ++ لتقنيات التدريب المتوازية
يسهل التخصيص لمجموعات البيانات وأدوات أخذ العينات الخاصة بك
البدء مع GraphSAINT
الوصول إلى النموذج: استنساخ مستودع GitHub.
إعداد البيئة: تثبيت التبعيات بما في ذلك Python و TensorFlow/PyTorch و Cython و g++.
تجميع أدوات أخذ العينات: تشغيل `python graphsaint/setup.py build_ext --inplace`.
إعداد مجموعة البيانات: تنسيق بيانات الرسم البياني الخاصة بك إلى `adj_full.npz` و `adj_train.npz` و `role.json` و `class_map.json` و `feats.npy`.
تكوين التدريب: تعيين المعلمات الفائقة باستخدام ملفات تكوين YAML في `./train_config/`.
تشغيل التدريب: تنفيذ نصوص التدريب باستخدام `python -m graphsaint.<tensorflow/pytorch>_version.train` مع علامات مناسبة للبيانات والتكوين واستخدام GPU.
حالات استخدام GraphSAINT
- تدريب الرسم البياني واسع النطاق
- التعلم الاستقرائي على الرسوم البيانية
- تعلم تمثيل الرسم البياني
- تصنيف العقد
- التنبؤ بالروابط
- التنبؤ على مستوى الرسم البياني
- تطوير GNN مخصص







