PyTorch / التخزين والاسترجاع والتنفيذ المحول / الدرس 18
قبول نموذج اصطناعي كامل
اجمع عقد استدلال PyTorch صغيراً وافصل دليل صحة التنفيذ المحلي عن ادعاءات جودة النموذج.
في هذه الصفحة
أهداف الدرس
- جمع حالة معالجة مسجلة وتركيب وحدات ومعاملات ثابتة.
- فحص مدخلات معلومة وحد استرجاع مقصود.
- تحديد دلالات المدخل وغير المدعوم ودليل التنفيذ بدقة.
يبدأ القبول بعقد دالة كامل
يستهلك المثال النهائي قياسين مرتبين بالسنتيمتر، ويطرح متوسطات التدريب المخزنة، ويقسم على المقاييس المخزنة، ويطبق تحويلاً مخفياً ثابتاً وReLU، ويعيد درجة عددية واحدة. اختيرت معماريته وأوزانه المسندة لحساب شفاف ولم تتعلم من مجتمع خارجي. حدد هوية المشاهدة وترتيب السمات والوحدات والفقد والمجال الصالح وشكل الخرج ومعنى الدرجة بجوار واجهة الموتر. لا تكتسب نتيجة تشبه التنبؤ تفسيراً واقعياً تلقائياً. يقبل الدرس عقد سلوك اصطناعي محلياً فقط، لا منتجاً أو سياسة أو جودة نموذج إحصائية.
يحفظ التسجيل حالة الاستدلال المطلوبة
تسجل الوحدة التوضيحية مخزني center وscale وتؤلف طبقاتها عبر Sequential. تجعل الإسنادات الصريحة أول خريطة خطية هوية والأخيرة فرقاً. يتطبع المدخلان الخامان إلى [1,1] و[2,0] ولا تغيرهما ReLU، فينتجان صفراً واثنين. تتلقى وحدة جديدة متوافقة state_dict منسوخاً عميقاً بتحميل صارم وتستخدم وضع التقييم. تقارن الشيفرة النتائج بعدها ضمن inference_mode. هذه توقعات معللة تربط الواجهات السابقة؛ ولم ينفذ إنشاء وحدة أو نواة موتر أو تحميل أو سياق استدلال في torch.
import copy
import torch
from torch import nn
class Fixture(nn.Module):
def __init__(self):
super().__init__()
self.register_buffer("center",torch.tensor([10.0,20.0],dtype=torch.float64,device="cpu"))
self.register_buffer("scale",torch.tensor([2.0,4.0],dtype=torch.float64,device="cpu"))
self.body = nn.Sequential(nn.Linear(2,2,bias=False,dtype=torch.float64,device="cpu"),nn.ReLU(),
nn.Linear(2,1,bias=False,dtype=torch.float64,device="cpu"))
with torch.no_grad():
self.body[0].weight.copy_(torch.eye(2,dtype=torch.float64,device="cpu"))
self.body[2].weight.copy_(torch.tensor([[1.0,-1.0]],dtype=torch.float64,device="cpu"))
def forward(self,x):
return self.body((x-self.center)/self.scale)
model = Fixture().eval()
restored = Fixture()
restored.load_state_dict(copy.deepcopy(model.state_dict()),strict=True)
restored.eval()
x = torch.tensor([[12.0,24.0],[14.0,20.0]],dtype=torch.float64,device="cpu")
with torch.inference_mode():
output = model(x)
repeated = restored(x)
print("shape", tuple(output.shape))
print("predictions", output.tolist())
print("same restored", torch.equal(output,repeated))
shape (2, 1)
predictions [[0.0], [2.0]]
same restored True
تعرف مخازن التحويل المسجلة والأوزان المسندة مثال استدلال يمكن فحصه بالكامل؛ ولم تنفذ Module أو استرجاع حالة أو inference_mode أو مخرجات نموذج.
يجب أن يحافظ فحص المدخل على المعنى
يفحص المرافق القياسي وحدات السنتيمتر المعلنة ويرفض الوحدة غير المتوافقة بدلاً من تخمين تحويل. ويرفض قياسات مشوهة أو منطقية أو غير منتهية وفق سياسة النوع العددي الدقيقة. قد يسمح منتج آخر بتحويل وحدة صريح، لكنه يحتاج قاعدة محددة مختبرة. ميز المدخل غير الصالح من درجة صفر مشروعة. يحسب المرافق التطبيع والحساب المخفي والخرج الثابت مستقلاً، ولا يفحص تسجيل PyTorch أو سلوك نوعه أو دفعاته أو مخازنه أو اشتقاقه. يدعم خرجه المثال الرياضي فقط.
from math import isfinite
def score(values,units):
if units != ["cm","cm"]:
raise ValueError("expected centimeters")
if len(values)!=2 or not all(type(x) in (int,float) and isfinite(x) for x in values):
raise ValueError("expected two finite measurements")
z = [(x-m)/s for x,m,s in zip(values,[10.0,20.0],[2.0,4.0])]
hidden = [max(0.0,x) for x in z]
return hidden[0]-hidden[1]
print("scores", [score(row,["cm","cm"]) for row in [[12.0,24.0],[14.0,20.0]]])
try:
score([12.0,24.0],["mm","mm"])
except ValueError as error:
print(str(error))
scores [0.0, 2.0]
expected centimeters
يفحص المرافق المنفذ سياسة الوحدات المسماة والمدخل المنتهي والتطبيع والتقويم وحساب الدرجة. ولا يثبت قبول إطار أو جودة تنبؤية واقعية.
تشمل الفحوص السلوكية الحدود والحالة
استخدم مدخلات معلومة وسمات متبادلة ووحدات باطلة وقيماً مفقودة ودفعات مسموحة وحالات قرب عتبة إذا استهلك قرار الدرجة. قارن الحالة المسماة والسلوك المرتبط بالوضع قبل الاسترجاع وبعده. إذا أضيفت ترجمة أو تصدير لاحقاً فأعد تقييم مجالهما المدعوم وقارن سلوك المدخل الخام كاملاً. تحتاج متابعة التدريب أدلة تحديث تالٍ إضافية تتجاوز دورة الاستدلال هذه. لا يثبت اجتياز مثال محلي غياب التسرب أو معايرة احتمالات أو ملاءمة مجموعات أو متانة لمجتمع جديد أو حد موارد في بيئة فعلية.
اعرض ما روجع وما نُفذ فعلاً
احفظ هدف الوثائق المثبت والمعمارية وعقد الحالة والأمثلة والتوقعات وسياسة التحقق والحدود. افصل الاشتقاق الرياضي وتنفيذ مرافق Python عن تحقق الإطار غير المتاح. ينبغي لمتعلم ذي بيئة متوافقة تشغيل أمثلة الإطار في بيئة CPU نظيفة والتحقيق في التحذيرات والاختلاف قبل الاعتماد عليها. لا يتطلب العارض العام تثبيتاً أو أثراً خارجياً؛ فهو يعرض الشيفرة دون تنفيذها. تختبر المرافقات القياسية وحدها؛ ولم يختبر محلل PyTorch أو بيئته أو نموذج أو GPU أو مترجم أو منمط أو محمل أو برنامج مصدر.
الأخطاء الشائعة وإصلاحها
رُوج لمثال استدلال اصطناعي كدقة متعلمة
- لماذا يحدث؟
- اختلط السلوك المعين يدوياً بالتعلم والدليل المحجوز.
- كيف تصلحه؟
- سم المثال الثابت وقيّم مرشحين حقيقيين بصورة مستقلة وفق بروتوكول صالح.
- كيف تتجنب تكراره؟
- افصل سجلات صحة التنفيذ والقبول الإحصائي.
أخفت درجة صفر مدخلاً باطلاً
- لماذا يحدث؟
- استُبدل الفشل بخرج عادي يبدو معقولاً.
- كيف تصلحه؟
- ارفض أو أعد حالة صريحة موثقة قبل حساب الدرجة.
- كيف تتجنب تكراره؟
- اختبر الوحدات والأنواع والشكل والفقد غير المدعومة.
عوملت حالة موترات مسترجعة كالتطبيق كله
- لماذا يحدث؟
- أُهمل معنى المعالجة والوضع وقواعد قرار المستهلك.
- كيف تصلحه؟
- افحص عقد الخام إلى القرار كاملاً.
- كيف تتجنب تكراره؟
- اجمع أدلة المدخل المعلوم والحالة المسماة والتوافق والحدود.
اختبر فهمك
1. اشتق درجتي المثال النهائي خطوة خطوة.
اعرض الحل المشروح
لـ[12,24] اطرح [10,20] لتحصل على [2,4]، ثم اقسم على [2,4] لتعطي [1,1]. تبقي ReLU الموجبين ويعطي الفرق صفراً. ولـ[14,20] يعطي الطرح [4,0] والقسمة [2,0]، وتبقي ReLU [2,0] ويعطي الفرق النهائي اثنين. يحمل الخرج درجة واحدة لكل من مشاهدتين.
2. ماذا يبقى على المتعلم التحقق منه قبل ادعاء تشغيل برنامج PyTorch صحيحاً؟
اعرض الحل المشروح
يحتاج بيئة torch مدعومة فعلياً، وينبغي أن يشغل برنامج CPU ويفحص التحذيرات والأشكال والحالة المسماة والقيم المتوقعة وسلوك الاسترجاع وفق البيئة المعلنة. لا يثبت مرافق Python المنفذ حدوث عمليات الإطار. تحتاج الفائدة الإحصائية والأداء التشغيلي دليلاً إضافياً خاصاً بالمهمة.
أهم ما تعلمته
- اقبل عقد المدخل إلى الخرج كاملاً ضمن نطاقه المعلن.
- تهم الحالة المسجلة والتحقق الدلالي معاً.
- اعرض التنفيذ الفعلي منفصلاً عن توقعات الإطار المشتقة.