رفتن به محتوای اصلی
بازگشت به وبلاگ

داده و ارزیابی

Seed کافی نیست؛ آزمون رفتار قطعی و خطای backend در PyTorch

با دو مسیر seed-only و الگوریتم قطعی، منشأ اختلاف اجرای PyTorch را بررسی کنید؛ خطای backend، هشدار و تکرارپذیری را از ثبت تنظیمات جدا نگه دارید.

برای بررسی اختلاف دو اجرای مدل، ثبت تنظیمات کافی نیست؛ باید رفتار محاسبات را با آزمایش کنترل‌شده مقایسه کنیم. این راهنما تفاوت «تثبیت مولد تصادف» و «محدودکردن الگوریتم‌های غیرقطعی» را به یک پروتکل عملی تبدیل می‌کند. هیچ آزمایش GPU روی دستگاه اپرا یا نتیجه بنچمارک واقعی در این نوشته گزارش نشده است.

دو مسیر آزمایش بسازیم

یک ورودی ساختگی کوچک، وزن ثابت و دستگاه مشخص انتخاب کنید. در مسیر اول فقط بذرها را تثبیت کنید؛ در مسیر دوم همان ورودی را با درخواست الگوریتم قطعی اجرا کنید. حالت آموزش یا ارزیابی، ترتیب نمونه‌ها و مقدار اولیه باید برابر بمانند. اگر هر بار برنامه تازه شروع می‌شود، تمام مراحل راه‌اندازی نیز دوباره اجرا شوند؛ مقایسه دو فراخوانی پشت‌سرهم با وضعیت تصادفِ جلو‌رفته، همان آزمایش نیست.

کنترل مرتبط در PyTorch

در مستندات بررسی‌شده PyTorch 2.15، manual_seed برای مولدهای PyTorch است. کنترل الگوریتم‌های شناخته‌شده غیرقطعی، تنظیم دیگری دارد. گزینه warn_only صرفاً هشدار می‌دهد و نباید نتیجه آن را به‌عنوان الزام سخت‌گیرانه معرفی کرد.

import torch
torch.manual_seed(17)
torch.use_deterministic_algorithms(True, warn_only=False)

برای کتابخانه‌های دارای مولد تصادف مستقل، سیاست همان کتابخانه را نیز بررسی کنید. این چند خط تضمین برابری میان نسخه‌ها، CPU و GPU یا همه سخت‌افزارها نیست. انتخاب الگوریتم convolution با benchmark نیز موضوعی جدا از قطعی‌بودن خود الگوریتم است؛ فقط یک کلید را تغییر دهید تا علت تفاوت قابل پیگیری بماند.

جدول ثبت نتیجه، نه نتیجه ازپیش‌ساخته

مسیر آزمایشیآنچه ثبت می‌کنیمتفسیر مجاز
بذر ثابت، کنترل قطعی خاموشخروجی تکرارها و اختلاف عددیبرابری یا اختلاف باید واقعاً سنجیده شود
همان ورودی، کنترل سخت‌گیرانه روشنخروجی یا نام عملیاتِ دارای خطاخطا، نشانه نیاز به بررسی مسیر محاسبه است
حالت فقط هشدارپیام هشدار و خروجیهشدار، اثبات قطعی‌بودن نیست
نسخه یا دستگاه دیگرمحیط و دامنه مقایسه تازهآن را تکرار همان آزمایش هم‌محیط ننامیم

با اختلاف یا خطا چه کنیم؟

ابتدا کوچک‌ترین ورودی بازتولیدکننده را پیدا کنید. اگر فقط یک عملیات خطا دارد، نام عملیات، شکل داده و نسخه backend را همراه مورد آزمایشی نگه دارید. حذف بی‌خبر کنترل سخت‌گیرانه، خطا را حل‌شده نمی‌کند؛ نتیجه باید «مسیر قطعی فراهم نشد» باقی بماند. اگر خروجی عددی کمی متفاوت است، معیار مقایسه را پیش از دیدن نتیجه تعیین کنید: برابری بیتی برای یک هدف و تحمل عددی مستند برای هدفی دیگر است. حد تحمل دلخواه را پس از مشاهده اختلاف بزرگ نکنید.

کاربرگ و محدودیت استفاده

کاربرگ چهار مسیر آزمایش ستون نتیجه را خالی دارد تا اندازه‌گیری واقعی خودتان را ثبت کنید. داده حساس لازم نیست. این پروتکل برای تشخیص منشأ اختلاف است و سرعت یا کیفیت مدل را ثابت نمی‌کند. اگر هدف نهایی دستیار سازمانی است، معیار پذیرش پاسخ را جدا از برابری محاسبات تعریف کنید؛ نمونه معیار پذیرش کاربرد تفاوت این دو سطح را روشن می‌کند.

منبع فنی

راهنمای رسمی Reproducibility در PyTorch 2.15، تاریخ به‌روزرسانی نمایش‌داده‌شده ۱۴ مه ۲۰۲۶؛ مطالعه در ۱ نوامبر ۲۰۲۶. برای نسخه نصب‌شده خود، مستندات همان نسخه را بخوانید.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه