چکپوینت (Checkpoint) یا نقطه بازگشت، ثبت وضعیت قابل بازیابی یک سیستم در یک لحظه مشخص است. این مفهوم در دیتابیس، پردازش جریانی، سیستمهای توزیعشده و آموزش مدل هوش مصنوعی کاربرد دارد و نباید آن را فقط به ذخیره وزنهای مدل محدود کرد.
چکپوینت در دیتابیس و WAL
پایگاههای داده میتوانند برای بازیابی پس از Crash از Write-Ahead Log و چکپوینت استفاده کنند. در یک چکپوینت، بخشی از وضعیت تغییرکرده پایگاه داده روی ذخیرهسازی پایدار میشود تا هنگام بازیابی، لازم نباشد تمام تاریخچه Log از ابتدا بازپخش شود. سازوکار دقیق به موتور دیتابیس وابسته است.
چکپوینت در پردازش جریانی
در یک پردازشگر استریم، چکپوینت ممکن است Offset پیامها و State محاسبه را نگه دارد. پس از خرابی Worker، پردازش از وضعیت ذخیرهشده بازیابی میشود. تضمین Exactly-once به هماهنگی چکپوینت و اثرات جانبی خارجی هم وابسته است.
چکپوینت در یادگیری ماشین
در آموزش شبکه عصبی، چکپوینت معمولا شامل وزنهای مدل، وضعیت Optimizer و شماره Epoch است تا آموزش از نقطه توقف ادامه پیدا کند.
import torch
torch.save({"epoch": epoch, "model": model.state_dict(),
"optimizer": optimizer.state_dict()}, "checkpoint.pt")
چکپوینت، Snapshot و Backup
چکپوینت بیشتر برای ادامه یا بازیابی فرایند طراحی میشود. Snapshot نمای وضعیت در یک زمان است و Backup نسخهای برای بازیابی مستقل، این سه ممکن است همپوشانی داشته باشند ولی مترادف نیستند.
برای مطالعه مرتبط، رایتاهد لاگ، اسنپشات و رولبک را ببینید.