محتويات الدورة

PyTorch / التخزين والاسترجاع والتنفيذ المحول / الدرس 15

التنميط وأدلة الموارد

افصل الصحة وأعداد التخزين التحليلية ومشاهدات المنمط والأداء المقاس الذي يراه المستخدم.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تعريف حمل محدود وحد توقيت قبل التنميط.
  • تفسير جمع أحداث CPU دون اختلاق نتائج معيار.
  • تسمية فئات الذاكرة وحفظ السلوك خلال التحسين.

يتطلب سؤال الأداء عقد حمل

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

يسجل المنمط أحداثاً وفق قواعد جمع مدعومة

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

python برنامج توضيحي للمعالج المركزي وفق وثائق PyTorch 2.14؛ لم تتوفر torch والخرج المتوقع مشتق
import torch
from torch.profiler import profile, record_function, ProfilerActivity
x = torch.tensor([1.0,2.0,3.0],dtype=torch.float64,device="cpu")
with profile(activities=[ProfilerActivity.CPU],record_shapes=True) as observation:
    with record_function("lab_forward"):
        value = (2*x+1).sum()
print("result", value.item())
print("label present", any(event.key == "lab_forward" for event in observation.key_averages()))
الناتج المتوقع
result 15.0
label present True

يفترض التوقع بناء يدعم منمط CPU الموثق. لم ينفذ منمط أو توقيت أو عملية موتر أو جمع أحداث؛ ولم تختلق قيمة زمن.

يجب تسمية فئات تقديرات الذاكرة

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

python مثال مرافق حتمي بالمكتبة القياسية نُفذ فعلياً
features, outputs, batch, bytes_per_value = 32,4,12,8
parameters = features*outputs+outputs
parameter_bytes = parameters*bytes_per_value
fixed = parameter_bytes*4
def named_payload(n):
    return fixed+n*(features+outputs)*bytes_per_value
print("parameter count", parameters)
print("assumed payload bytes", named_payload(batch))
print("double-batch payload bytes", named_payload(2*batch))
الناتج المتوقع
parameter count 132
assumed payload bytes 7680
double-batch payload bytes 11136

يشمل التقدير أوزاناً وتدرجات ومصفوفتي محسن ومدخلاً وخرجاً بقيم ثمانية بايت. يغفل تنشيطات أخرى ومساحات عمل وكلفة المخصص وPython؛ ولا تخصص موترات.

قد تغير أدوات القياس الحمل نفسه

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

اقبل التحسين بعد التحقق من السلوك فقط

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

الأخطاء الشائعة وإصلاحها

عُرضت نسبة حجم ملفات كتحسن ذروة ذاكرة تدريب

لماذا يحدث؟
عُدت المعاملات المخزنة فقط.
كيف تصلحه؟
قدر وقس فئات الذاكرة الكاملة ذات الصلة.
كيف تتجنب تكراره؟
احفظ الفروض والإغفالات المسماة مع الحساب.

سُمي جدول أثر زمن طلب كامل

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

غير المسار الأسرع التنبؤات المقبولة

لماذا يحدث؟
غير التحسين المعنى دون فحص تكافؤ.
كيف تصلحه؟
تحقق من عقد الخرج كاملاً قبل مقارنة الأداء.
كيف تتجنب تكراره؟
احفظ أمثلة مدخل معلوم وحدود وقرارات حساسة.

اختبر فهمك

1. لماذا لا تضاعف مضاعفة الدفعة تقدير المرافق كله؟

اعرض الحل المشروح

الأوزان والتدرجات ومصفوفتا المحسن المفترضة ثابتة بالمعاملات الـ132. تنمو حمولة المدخل والخرج فقط مع الدفعة في الصيغة الضيقة. تغيب تخصيصات واقعية أخرى؛ فتشرح النتيجة الفئات ولا تتنبأ بذروة تنفيذ مرصودة.

2. لماذا لا نستنتج مدة من result=15؟

اعرض الحل المشروح

خمسة عشر المجموع الرياضي لـ3 و5 و7 للموتر المعطى. قد تنتج النتيجة نفسها في عتاد وبرمجيات وجمع مختلف. لا يحتوي الحساب الصحيح معلومات توقيت، ولم ينفذ برنامج منمط PyTorch.

أهم ما تعلمته

  • حدد الحمل ونطاق القياس أولاً.
  • الأعداد التحليلية والموارد المرصودة دليلان مختلفان.
  • احفظ السلوك قبل قبول تغيير أداء.

المراجع الرسمية