Web Analytics

pytorch-accelerated

⭐ 193 stars Persian by Chris-hughes10

🌐 زبان

pytorch-accelerated

کتابخانه pytorch-accelerated یک ابزار سبک است که برای تسریع فرآیند آموزش مدل‌های PyTorch با ارائه یک حلقه آموزشی حداقلی اما قابل توسعه - که در یک شیء واحد به نام Trainer جای گرفته است - طراحی شده است. این حلقه به اندازه کافی انعطاف‌پذیر است تا اکثر موارد استفاده را پوشش دهد و می‌تواند بدون نیاز به تغییر کد، از سخت‌افزارهای مختلف استفاده کند. کتابخانه pytorch-accelerated مجموعه‌ای ساده از قابلیت‌ها را ارائه می‌دهد و تاکید زیادی بر سادگی و شفافیت دارد،

برای اینکه کاربران بتوانند دقیقاً متوجه شوند که در پشت صحنه چه اتفاقی می‌افتد، اما بدون اینکه مجبور باشند خودشان کدهای تکراری را بنویسند و نگهداری کنند! ویژگی‌های کلیدی عبارتند از:

رفتار آن را می‌توان با استفاده از ارث‌بری و/یا callbackها سفارشی کرد.
  • مدیریت جای‌گذاری روی دستگاه، دقت ترکیبی، یکپارچگی با DeepSpeed، آموزش چند GPU و توزیع‌شده بدون نیاز به تغییر کد.
  • استفاده از اجزای خالص PyTorch، بدون تغییرات یا بسته‌بندی اضافه، و تعامل آسان با
کتابخانه‌های محبوب دیگر مانند
timm، transformers و torchmetrics. تلاش زیادی شده تا اطمینان حاصل شود هر بخش از کتابخانه - چه اجزای داخلی و چه خارجی - تا حد ممکن واضح و ساده باشد، تا سفارشی‌سازی، دیباگ و درک دقیق آنچه در پشت صحنه در هر مرحله اتفاق می‌افتد آسان شود؛ بیشتر رفتار مربی (trainer) در یک کلاس واحد قرار دارد! در روحیه پایتون، هیچ چیز پنهان نیست و همه چیز قابل دسترسی است.

کتابخانه pytorch-accelerated با افتخار و شفافیت روی Hugging Face Accelerate ساخته شده است، که مسئول انتقال داده‌ها بین دستگاه‌ها و راه‌اندازی پیکربندی‌های آموزش است. هنگام سفارشی‌سازی trainer یا راه‌اندازی آموزش، توصیه می‌شود کاربران به مستندات Accelerate مراجعه کنند تا از همه گزینه‌های موجود مطلع شوند؛ Accelerate توابع راحتی برای عملیات‌هایی مثل جمع‌آوری تنسورها و برش گرادیان ارائه می‌دهد که استفاده آن‌ها را می‌توانید در پوشه examples کتابخانه pytorch-accelerated ببینید!

برای آشنایی بیشتر با انگیزه‌های پشت این کتابخانه و همچنین راهنمای آغاز به کار کامل، به این پست وبلاگ مراجعه کنید.

نصب

کتابخانه pytorch-accelerated را می‌توانید با دستور زیر از pip نصب کنید:

pip install pytorch-accelerated
برای اینکه بسته تا حد امکان سبک باشد، بسته‌هایی که برای اجرای مثال‌ها لازم هستند به طور پیش‌فرض گنجانده نشده‌اند. برای افزودن این بسته‌ها، می‌توانید از دستور زیر استفاده کنید:

pip install pytorch-accelerated[examples]

شروع سریع

برای شروع، کافی است Trainer از پکیج pytorch-accelerated را همانطور که در قطعه کد زیر نشان داده شده است، ایمپورت و استفاده کنید، و سپس آموزش را با استفاده از رابط خط فرمان accelerate که در زیر توضیح داده شده است، راه‌اندازی کنید.

# examples/core/train_mnist.py
import os

from torch import nn, optim from torch.utils.data import random_split from torchvision import transforms from torchvision.datasets import MNIST

from pytorch_accelerated import Trainer

class MNISTModel(nn.Module): def __init__(self): super().__init__() self.main = nn.Sequential( nn.Linear(in_features=784, out_features=128), nn.ReLU(), nn.Linear(in_features=128, out_features=64), nn.ReLU(), nn.Linear(in_features=64, out_features=10), )

def forward(self, input): return self.main(input.view(input.shape[0], -1))

def main(): dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor()) train_dataset, validation_dataset, test_dataset = random_split(dataset, [50000, 5000, 5000]) model = MNISTModel() optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) loss_func = nn.CrossEntropyLoss()

trainer = Trainer( model, loss_func=loss_func, optimizer=optimizer, )

trainer.train( train_dataset=train_dataset, eval_dataset=validation_dataset, num_epochs=8, per_device_batch_size=32, )

trainer.evaluate( dataset=test_dataset, per_device_batch_size=64, ) if __name__ == "__main__": main()

برای اجرای آموزش با استفاده از رابط خط فرمان accelerate ، بر روی دستگاه(های) خود اجرا کنید:

accelerate config --config_file accelerate_config.yaml

و به سوالات پرسیده شده پاسخ دهید. این کار یک فایل پیکربندی تولید می‌کند که برای تنظیم صحیح گزینه‌های پیش‌فرض هنگام اجرای

accelerate launch --config_file accelerate_config.yaml train.py [--training-args]

نکته: استفاده از رابط خط فرمان accelerate کاملاً اختیاری است، آموزش همچنین می‌تواند به روش معمول اجرا شود:

python train.py / python -m torch.distributed ...

بسته به پیکربندی زیرساخت شما، برای کاربرانی که می‌خواهند کنترل دقیق‌تری بر دستور اجرای آموزش داشته باشند.

نمونه‌های پیچیده‌تر آموزش را می‌توانید در پوشه examples اینجا مشاهده کنید.

در عوض، اگر ترجیح می‌دهید ابتدا مفاهیم اصلی را درک کنید، می‌توانید آن را در مستندات پیدا کنید.

نحوه استفاده

مخاطب pytorch-accelerated چه کسانی هستند؟

تا بتوانند روی بخش‌های جالب حلقه آموزش تمرکز کنند.

چه زمانی نباید از pytorch-accelerated استفاده کنم؟

پوشش دهد و به شما در انتخاب مدل، بهینه‌ساز یا تابع خطا کمک کند، احتمالاً fastai گزینه بهتری برای شماست. pytorch-accelerated فقط بر فرایند آموزش تمرکز دارد و سایر موارد را به عهده کاربر می‌گذارد. احتمالاً استفاده مستقیم از Accelerate برای شما مناسب‌تر است! اگرچه امکان سفارشی‌سازی هر بخش از Trainer وجود دارد، اما حلقه آموزش اساساً به چند بخش تقسیم شده است

روش‌های مختلفی وجود دارند که باید آن‌ها را بازنویسی کنید. اما قبل از رفتن، آیا نوشتن آن حلقه‌های for واقعاً آنقدر مهم است که ارزش شروع دوباره از صفر را داشته باشد 😉.

قدردانی

بسیاری از جنبه‌های طراحی و ویژگی‌های pytorch-accelerated به شدت تحت تأثیر تعدادی از کتابخانه‌ها و چارچوب‌های عالی مانند fastai، timm، PyTorch-lightning و Hugging Face Accelerate قرار گرفته است. هر یک از این ابزارها تأثیر عظیمی هم بر این کتابخانه و هم بر جامعه یادگیری ماشین داشته‌اند و نمی‌توان تأثیر آن‌ها را کافی بیان کرد!

pytorch-accelerated تنها از این ابزارها الهام گرفته است و تمامی قابلیت‌های موجود از ابتدا به گونه‌ای پیاده‌سازی شده‌اند که برای این کتابخانه سودمند باشند. تنها استثنا، برخی از اسکریپت‌های موجود در پوشه examples است که منابع موجود گرفته شده و برای نمایش ویژگی‌های pytorch-accelerated تغییر یافته‌اند؛ این موارد به وضوح مشخص شده‌اند و به نویسندگان اصلی تقدیر داده شده است.

--- Tranlated By Open Ai Tx | Last indexed: 2026-02-28 ---