GaiaExGaiaEx
أساسيات PyTorch: بناء وتدريب النماذج
مطوّرالذكاء الاصطناعي والتعلم الآلي13 min read

أساسيات PyTorch: بناء وتدريب النماذج

إطار العمل الأكثر شعبية للتعلّم العميق — ابدأ عمليًّا

مشاركة المنشورات

التنفيذ الفوري (Eager) وسرعة البحث

PyTorch يعتمد افتراضيًّا التنفيذ الفوري (eager execution): الموترات (tensors) تتدفّق عبر عمليات Python وتستطيع طبعها، تقطيعها، وتصحيحها كبيانات عادية. هذا مهمّ في التمويل، حيث نصف المهمّة إعادة تشكيل جداول خصائص فوضوية والتحقّق من أن لا تسريب استباقي ينسلّ إلى الموتر الذي تُغذّي به النموذج.

قارن ذلك بمسار العمل القديم «ابنِ رسمًا بيانيًّا ثابتًا، ثم شغّل جلسة». الباحثون لا يزالون يُصدِّرون النماذج للنشر، لكن العمل اليومي يستفيد من الفورية: غيّر طبقة، أعِد تشغيل خلية، فحّص التفعيلات.

Dynamic graph: each forward pass can differ x f g loss .backward Branches and Python control flow can change which ops run per batch — the graph follows the code. Finance tip: if your sequence length varies by asset, mask padding instead of silently averaging missing days into the loss.
العمليات تترابط في رسم بياني عند التمرير الأمامي؛ autograd يفكّه عند التمرير الخلفي.

الموترات، الأجهزة، وAutograd

الموتر (tensor) مصفوفة متعدّدة الأبعاد؛ requires_grad=True يُعلِّم الأوراق التي تريد مشتقّات لها. Autograd يُسجِّل العمليات لبناء رسم بياني خلفي بحيث تُعبِّئ loss.backward() .grad على المُعامِلات.

import torch
x = torch.randn(32, 10, requires_grad=True)
w = torch.randn(10, 1, requires_grad=True)
y = (x @ w).mean()
y.backward()
print(w.grad.shape)

ضع الموترات على cuda أو mps حين تتوفّر؛ حافظ على وضع الجهاز ثابتًا حتى لا تُحرِّك موترات صغيرة ذهابًا وعودة عن طريق الخطأ كل خطوة.

nn.Module كتركيب

افرع من nn.Module، عرِّف الطبقات في __init__، وصِلها في forward. التسجيل يضمن ظهور المُعامِلات في model.parameters() للمُحسِّنات.

import torch.nn as nn

class MLP(nn.Module):
    def __init__(self, n):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(n, 64), nn.ReLU(), nn.Linear(64, 1)
        )
    def forward(self, x):
        return self.net(x)

لنماذج التسلسل، طبقات nn.LSTM وnn.TransformerEncoder شائعة؛ لألفا الجداول، شبكات MLP والتعزيز التدرّجي لا تزالان تتنافسان — اختر بحسب انضباط التحقّق، لا بحسب الرائج.

حلقة الأسطر الأربعة (زائد النظافة)

التدريب مُتكرِّر عمدًا: تمرير أمامي، خسارة، تصفير التدرّج، تمرير خلفي، خطوة. الإضافات مهمّة: model.train() مقابل model.eval() تُبدِّل الإسقاط (dropout) والتسوية الطبقية؛ torch.no_grad() يُغلِّف التحقّق لتوفير الذاكرة.

One training step (supervised) forward loss zero_grad backward → step Optimizer updates weights using stored grads; clip norms if your task spikes loss. Walk-forward validation on time series — never shuffle future into past. GaiaEx / Hyperliquid features: label leakage is a bug, not a flex.
الحلقة نفسها تتكرّر لكل دُفعة حتى يتوقّف منحنى التحقّق عن التحسّن.

Datasets، DataLoaders، والتسرّب

افرع من Dataset لتجسيد الخصائص والتسميات؛ غلِّف بـDataLoader للدفعات. للبيانات الزمنية، احفظ عادة shuffle=False على التحقّق وغالبًا على التدريب إن قطّعت نوافذ متتالية — وإلّا ستُلطِّخ المعلومة عبر الزمن.

إن دُرِّبت على بيانات نقرات من GaiaEx أو تغذيات مشابهة، حاذِ الشموع لساعة واحدة، عالِج الطبعات المفقودة صريحًا، وأصدِر شيفرة خصائصك جنبًا إلى جنب مع نقطة تفتيش النموذج.

TorchScript وحدود الخدمة

للاستدلال منخفض زمن الاستجابة، تُتابِع الفرق أو تُخطِّط النموذج غالبًا، ثم تُشغِّله في بيئة تشغيل C++ أو خدمة sidecar. احفظ بيئة التدريب (إصدارات المكتبات) مُثبَّتة إلى ما استخدمته للتصدير.

PyTorch Lightning وأطر مشابهة تُقلِّل الشيفرة المُتكرِّرة للتدريب متعدّد وحدات الرسومات والسجلّات؛ لا تُعوِّض عن تصميم خصائص دقيق. الميزة في التداول تأتي عادة من نظافة البيانات والوعي بالنظام، لا من مُحسِّن أنيق قليلًا أكثر.