pytorch-accelerated
pytorch-accelerated เป็นไลบรารีน้ำหนักเบาที่ออกแบบมาเพื่อเร่งกระบวนการฝึกโมเดล PyTorch
โดยให้ลูปการฝึกที่เรียบง่ายแต่สามารถขยายได้ - อยู่ในรูปแบบของอ็อบเจกต์ Trainer เดียว
ซึ่งมีความยืดหยุ่นพอที่จะรองรับกรณีการใช้งานส่วนใหญ่ และสามารถใช้ฮาร์ดแวร์แบบต่างๆ ได้โดยไม่ต้องเปลี่ยนโค้ด
pytorch-accelerated มีชุดฟีเจอร์ที่กระชับและเน้นความ เรียบง่าย และ โปร่งใส เป็นหลัก
เพื่อให้ผู้ใช้สามารถเข้าใจได้อย่างชัดเจนว่าเกิดอะไรขึ้นเบื้องหลัง แต่ไม่ต้องเขียนและดูแล boilerplate ด้วยตนเอง!
คุณสมบัติหลัก ได้แก่:
- วนลูปการฝึกที่เรียบง่ายและแยกส่วน แต่สามารถปรับแต่งได้ง่าย ซึ่งควรใช้งานได้ทันทีในกรณีทั่วไป;
- จัดการกับการวางอุปกรณ์, การคำนวณแบบผสมความละเอียด, การเชื่อมต่อ DeepSpeed, การฝึกแบบหลาย GPU และการฝึกแบบกระจาย โดยไม่ต้องเปลี่ยนโค้ด
- ใช้ส่วนประกอบ PyTorch แท้ ๆ โดยไม่มีการปรับแต่งหรือห่อเพิ่มเติม และสามารถทำงานร่วมกับไลบรารีอื่น ๆ ที่ได้รับความนิยมได้อย่างง่ายดาย เช่น timm,
- API ที่มีขนาดเล็กและเรียบง่าย ช่วยให้ผู้ใช้ PyTorch เดิมมีเส้นโค้งการเรียนรู้ต่ำที่สุด
pytorch-accelerated ถูกสร้างขึ้นอย่างภาคภูมิใจและโปร่งใสบนพื้นฐานของ
Hugging Face Accelerate ซึ่งมีหน้าที่ในการเคลื่อนย้ายข้อมูลระหว่างอุปกรณ์และเปิดใช้งานการตั้งค่าการฝึก เมื่อปรับแต่ง trainer หรือเปิดใช้งานการฝึก
ผู้ใช้ควรศึกษาคู่มือของ Accelerate
เพื่อเข้าใจตัวเลือกทั้งหมดที่มีอยู่; Accelerate มีฟังก์ชันอำนวยความสะดวกสำหรับการดำเนินการ เช่น การรวม tensor
และการตัดแต้ม gradient ซึ่งสามารถดูตัวอย่างการใช้งานได้ในโฟลเดอร์ pytorch-accelerated
examples!
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับแรงบันดาลใจเบื้องหลังไลบรารีนี้ พร้อมคู่มือเริ่มต้นใช้งานโดยละเอียด โปรดอ่าน บล็อกโพสต์นี้
การติดตั้ง
สามารถติดตั้ง pytorch-accelerated จาก pip โดยใช้คำสั่งต่อไปนี้:
pip install pytorch-accelerated
เพื่อให้แพ็คเกจมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ แพ็คเกจที่จำเป็นสำหรับการรันตัวอย่างจะไม่ถูกรวมไว้โดยค่าเริ่มต้น หากต้องการรวมแพ็คเกจเหล่านี้ คุณสามารถใช้คำสั่งดังต่อไปนี้:pip install pytorch-accelerated[examples]เริ่มต้นอย่างรวดเร็ว
เพื่อเริ่มต้นใช้งาน ให้นำเข้าและใช้ Trainer จาก pytorch-accelerated ตามตัวอย่างโค้ดด้านล่างนี้
จากนั้นเริ่มการฝึกสอนด้วย
accelerate CLI
ตามที่อธิบายไว้ด้านล่างนี้
# examples/core/train_mnist.py
import osfrom 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 CLI
บนเครื่องของคุณ ให้รันคำสั่ง: accelerate config --config_file accelerate_config.yaml
และตอบคำถามที่ถูกถาม ระบบจะสร้างไฟล์ config ที่จะถูกใช้เพื่อกำหนดค่าเริ่มต้นเมื่อทำการ
accelerate launch --config_file accelerate_config.yaml train.py [--training-args]
หมายเหตุ: การใช้ accelerate CLI เป็นเพียงทางเลือกหนึ่งเท่านั้น คุณสามารถเริ่มฝึกได้ด้วยวิธีปกติด้วย:
python train.py / python -m torch.distributed ...
ขึ้นอยู่กับการตั้งค่าโครงสร้างพื้นฐานของคุณ สำหรับผู้ใช้ที่ต้องการควบคุมคำสั่งการรันได้ละเอียดมากขึ้น
สามารถดูตัวอย่างการฝึกที่ซับซ้อนกว่านี้ได้ในโฟลเดอร์ examples ที่นี่
หรือหากคุณต้องการเข้าใจแนวคิดหลักก่อน สามารถอ่านได้ใน documentation
การใช้งาน
pytorch-accelerated เหมาะกับใคร?
- ผู้ใช้ที่คุ้นเคยกับ PyTorch แต่ต้องการหลีกเลี่ยงการเขียนบล็อกโค้ดฝึกซ้ำ ๆ เพื่อมุ่งเน้นในส่วนที่น่าสนใจของ training loop
- ผู้ใช้ที่ชอบและถนัดในการเลือกและสร้างโมเดล, ฟังก์ชัน loss, ออปติไมเซอร์ และชุดข้อมูลด้วยตนเอง
- ผู้ใช้ที่ให้ความสำคัญกับฟีเจอร์ที่เรียบง่าย กระชับ สามารถดีบั๊ก เข้าใจ และอธิบายพฤติกรรมการทำงานได้ง่าย!
กรณีใดที่ไม่ควรใช้ pytorch-accelerated?
- หากคุณกำลังมองหาโซลูชันแบบครบวงจร ตั้งแต่การโหลดข้อมูลจนถึงอินเฟอเรนซ์
pytorch-accelerated จะโฟกัสเฉพาะกระบวนการเทรน โดยเรื่องอื่น ๆ เป็นความรับผิดชอบของผู้ใช้
- หากคุณต้องการเขียน training loop ทั้งหมดด้วยตัวเอง แต่ไม่อยากจัดการเรื่องอุปกรณ์ต่าง ๆ เอง
Trainer ได้ แต่ training loop จะถูกแบ่งออกเป็นหลายส่วนโดยพื้นฐานวิธีการต่าง ๆ ที่คุณอาจต้อง override แต่ก่อนที่คุณจะไป เขียนลูป for เหล่านั้นสำคัญขนาดนั้นจริงหรือ
ที่จะต้องเริ่มต้นใหม่ อีกครั้ง 😉
- หากคุณกำลังทำงานกับเคสที่ซับซ้อนเฉพาะทางมาก ๆ ซึ่งไม่เข้ากับรูปแบบของลูปเทรนปกติ
คำขอบคุณ
หลายแง่มุมที่อยู่เบื้องหลังการออกแบบและฟีเจอร์ของ pytorch-accelerated ได้รับแรงบันดาลใจอย่างมากจากไลบรารี
และเฟรมเวิร์กยอดเยี่ยมหลายตัว เช่น fastai, timm,
PyTorch-lightning และ Hugging Face Accelerate เครื่องมือแต่ละตัวเหล่านี้
ล้วนมีอิทธิพลอย่างมหาศาลต่อทั้งไลบรารีนี้และชุมชน machine learning และไม่สามารถกล่าวขอบคุณได้เพียงพอ!
pytorch-accelerated ได้รับแรงบันดาลใจเพียงอย่างเดียวจากเครื่องมือเหล่านี้ และฟังก์ชันทั้งหมดที่มีอยู่ในไลบรารีนี้
ถูกพัฒนาขึ้นใหม่ทั้งหมดเพื่อให้เป็นประโยชน์สูงสุดต่อไลบรารีนี้ ข้อยกเว้นมีเพียงบางสคริปต์ในโฟลเดอร์
examples
ซึ่งมีการนำ resource ที่มีอยู่มาแก้ไขเพื่อแสดงความสามารถของ pytorch-accelerated
โดยแต่ละกรณีจะถูกระบุไว้อย่างชัดเจน พร้อมกับให้เครดิตแก่ผู้แต่งต้นฉบับ
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-28 ---