14.1. دعم المدخلات المتوافقة مع Array API
#
المقدرات والأدوات الأخرى في scikit-learn التي تدعم المدخلات المتوافقة مع واجهة برمجة تطبيقات المصفوفة.
14.1.1. المقدرات#
decomposition.PCA
(معsvd_solver="full"
،svd_solver="randomized"
وpower_iteration_normalizer="QR"
)linear_model.Ridge
(معsolver="svd"
)discriminant_analysis.LinearDiscriminantAnalysis
(معsolver="svd"
)preprocessing.KernelCenterer
preprocessing.MaxAbsScaler
preprocessing.MinMaxScaler
preprocessing.Normalizer
14.1.2. المقدرات الوصفية#
المقدرات الوصفية التي تقبل مدخلات واجهة برمجة تطبيقات المصفوفة بشرط أن يقوم المقدر الأساسي بذلك أيضًا:
model_selection.GridSearchCV
model_selection.RandomizedSearchCV
model_selection.HalvingGridSearchCV
model_selection.HalvingRandomSearchCV
14.1.3. المقاييس#
sklearn.metrics.cluster.entropy
sklearn.metrics.mean_poisson_deviance
(يتطلب تمكين دعم واجهة برمجة تطبيقات المصفوفة لـ SciPy)sklearn.metrics.pairwise.euclidean_distances
(انظر ملاحظة حول دعم الجهاز لـ float64)sklearn.metrics.pairwise.rbf_kernel
(انظر ملاحظة حول دعم الجهاز لـ float64)
14.1.4. الأدوات#
model_selection.train_test_split
من المتوقع أن تنمو التغطية بمرور الوقت. يرجى اتباع مشكلة التعريف على GitHub لتتبع التقدم.
14.1.5. نوع قيم الإرجاع والسمات المناسبة#
عند استدعاء الدوال أو الطرق مع مدخلات متوافقة مع واجهة برمجة تطبيقات المصفوفة، فإن الاصطلاح هو إرجاع قيم المصفوفة من نفس نوع حاوية المصفوفة والجهاز مثل بيانات الإدخال.
وبالمثل، عندما يتم ملاءمة مقدر مع مدخلات متوافقة مع واجهة برمجة تطبيقات المصفوفة، ستكون السمات المناسبة عبارة عن مصفوفات من نفس المكتبة مثل الإدخال ويتم تخزينها على نفس الجهاز.
تتوقع طريقة predict
و transform
لاحقًا مدخلات من نفس مكتبة المصفوفة والجهاز مثل البيانات التي تم تمريرها إلى طريقة fit
.
لاحظ مع ذلك أن وظائف التسجيل التي تُرجع قيمًا عددية تُرجع عدديًا Python (عادةً مثيل float
) بدلاً من قيمة عددية للمصفوفة.
14.2. فحوصات المقدر الشائعة#
أضف علامة array_api_support
إلى مجموعة علامات المقدر للإشارة إلى أنه يدعم واجهة برمجة تطبيقات المصفوفة.
سيؤدي ذلك إلى تمكين عمليات فحص مخصصة كجزء من الاختبارات الشائعة للتحقق من أن نتائج المقدرات هي نفسها عند استخدام مدخلات NumPy و Array API العادية.
لتشغيل هذه الفحوصات، تحتاج إلى تثبيت array_api_compat في بيئة الاختبار الخاصة بك.
لتشغيل مجموعة الفحوصات الكاملة، تحتاج إلى تثبيت كل من PyTorch و CuPy ولديك وحدة معالجة رسومات.
سيتم تخطي عمليات الفحص التي لا يمكن تنفيذها أو التي تفتقد إلى تبعيات تلقائيًا.
لذلك من المهم تشغيل الاختبارات باستخدام علامة -v
لمعرفة عمليات الفحص التي تم تخطيها:
pip install array-api-compat # والمكتبات الأخرى حسب الحاجة
pytest -k "array_api" -v
14.2.1. ملاحظة حول دعم جهاز MPS#
على macOS، يمكن لـ PyTorch استخدام Metal Performance Shaders (MPS) للوصول إلى مسرعات الأجهزة (على سبيل المثال، مكون وحدة معالجة الرسومات الداخلية لرقائق M1 أو M2). ومع ذلك، فإن دعم جهاز MPS لـ PyTorch غير مكتمل في وقت كتابة هذا التقرير. راجع مشكلة github التالية لمزيد من التفاصيل:
لتمكين دعم MPS في PyTorch، قم بتعيين متغير البيئة PYTORCH_ENABLE_MPS_FALLBACK=1
قبل تشغيل الاختبارات:
PYTORCH_ENABLE_MPS_FALLBACK=1 pytest -k "array_api" -v
في وقت كتابة هذا التقرير، يجب أن تجتاز جميع اختبارات scikit-learn، ومع ذلك، فإن سرعة الحساب ليست بالضرورة أفضل من سرعة جهاز وحدة المعالجة المركزية.
14.2.2. ملاحظة حول دعم الجهاز لـ float64
#
ستؤدي عمليات معينة داخل scikit-learn تلقائيًا إلى إجراء عمليات على قيم الفاصلة العائمة بدقة float64
لمنع الفائض وضمان الصحة (على سبيل المثال، metrics.pairwise.euclidean_distances
).
ومع ذلك، فإن مجموعات معينة من مساحات أسماء المصفوفة والأجهزة، مثل PyTorch on MPS
(انظر ملاحظة حول دعم جهاز MPS) لا تدعم نوع البيانات float64
.
في هذه الحالات، سيعود scikit-learn إلى استخدام نوع البيانات float32
بدلاً من ذلك.
يمكن أن يؤدي ذلك إلى سلوك مختلف (عادةً نتائج غير مستقرة عدديًا) مقارنة بعدم استخدام إرسال واجهة برمجة تطبيقات المصفوفة أو استخدام جهاز يدعم float64
.