0Pricing
Learn AI with Python · บทเรียน

การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate

accelerate.Accelerator การฝึกที่ไม่ขึ้นกับอุปกรณ์ การสะสมกราดิเอนต์ และการผสาน DeepSpeed

การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

ปัญหาโค้ดพื้นฐานซ้ำซ้อน

การเขียนการกำหนดอุปกรณ์ การตั้งค่า DDP และความแม่นยำผสมด้วยตนเองมีโค้ดมากและเกิดข้อผิดพลาดได้ง่าย ฮักกิงเฟซ แอ็กเซลเลอเรตช่วยตัดโค้ดพื้นฐานซ้ำซ้อนเหล่านี้ออกไป สคริปต์เดียวกันจึงทำงานบน CPU, GPU หนึ่งตัว, GPU หลายตัว หรือแม้แต่ TPU ได้โดยไม่ต้องเปลี่ยนโค้ด

ออบเจ็กต์ตัวเร่ง

หัวใจของไลบรารีนี้คือ Accelerator คุณสร้างออบเจ็กต์นี้ไว้ด้านบนของสคริปต์ จากนั้นออบเจ็กต์จะตรวจจับสภาพแวดล้อมและจัดการอุปกรณ์ การตั้งค่าการประมวลผลแบบกระจาย และความแม่นยำให้คุณ

from accelerate import Accelerator

accelerator = Accelerator()
device = accelerator.device

การเตรียมออบเจ็กต์

accelerator.prepare รับโมเดล ตัวปรับเหมาะ และตัวโหลดข้อมูลของคุณ แล้วส่งคืนเวอร์ชันที่เชื่อมต่อกับการตั้งค่าปัจจุบัน โดยย้ายไปยังอุปกรณ์ที่ถูกต้อง ห่อหุ้มด้วย DDP หากจำเป็น และแบ่งตัวโหลดข้อมูลข้ามกระบวนการ

model, optimizer, dataloader = accelerator.prepare(
    model, optimizer, dataloader
)

สิ่งที่ prepare ดำเนินการ

เบื้องหลัง prepare จะจัดการงานที่คุณต้องทำเอง มิฉะนั้น ได้แก่ การถ่ายโอนอุปกรณ์ การห่อหุ้มด้วย DDP การสุ่มตัวอย่างแบบกระจาย และการเชื่อมต่อความแม่นยำผสม การเรียกใช้เพียงครั้งเดียวแทนที่โค้ดหลายสิบบรรทัด

ไม่ต้องใช้ .to(device) ด้วยตนเอง

เนื่องจากตัวโหลดข้อมูลที่เตรียมไว้จะส่งคืนชุดข้อมูลที่อยู่บนอุปกรณ์ที่ถูกต้องแล้ว คุณจึงลบการเรียกใช้ x.to(device) ด้วยตนเองออกได้ วงรอบเดียวกันนี้ทำงานได้ในทุกสภาพแวดล้อม

for batch in dataloader:
    inputs, labels = batch   # already on device
    outputs = model(inputs)
    loss = loss_fn(outputs, labels)

accelerator.backward

แทนที่จะใช้ loss.backward() ให้เรียกใช้ accelerator.backward(loss) วิธีนี้จะส่งต่อไปยังเส้นทางที่ถูกต้องสำหรับการฝึกแบบกระจายและการฝึกด้วยความแม่นยำผสม (รวมถึงการปรับสเกลเกรเดียนต์) โดยอัตโนมัติ

optimizer.zero_grad()
accelerator.backward(loss)
optimizer.step()

วงรอบการฝึกฉบับสมบูรณ์

วงรอบ Accelerate ฉบับเต็มมีความกระชับและไม่ยึดติดกับอุปกรณ์อย่างน่าทึ่ง

accelerator = Accelerator()
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

for epoch in range(epochs):
    for batch in dataloader:
        inputs, labels = batch
        outputs = model(inputs)
        loss = loss_fn(outputs, labels)
        optimizer.zero_grad()
        accelerator.backward(loss)
        optimizer.step()

ความแม่นยำผสมผ่านการกำหนดค่า

คุณเปิดใช้ FP16/BF16 ได้โดยไม่ต้องแก้ไขโค้ด เพียงกำหนดค่าเมื่อสร้าง Accelerator หรือผ่านการกำหนดค่าด้วย CLI จากนั้น Accelerate จะจัดการการเลือกความแม่นยำอัตโนมัติและการปรับสเกลเกรเดียนต์ให้คุณ

accelerator = Accelerator(mixed_precision="fp16")

unwrap_model สำหรับการบันทึก

หลังจาก prepare โมเดลอาจถูกห่อหุ้มด้วย DDP ก่อนบันทึก ให้เรียกใช้ accelerator.unwrap_model(model) เพื่อรับโมเดลพื้นฐานที่ไม่ได้ห่อหุ้ม ทำให้จุดตรวจสอบสะอาดและพกพาได้

unwrapped = accelerator.unwrap_model(model)
accelerator.save(unwrapped.state_dict(), "model.pt")

การเปิดใช้งานข้ามอุปกรณ์

คุณเรียกใช้สคริปต์เดียวกันด้วยคำสั่ง accelerate launch ซึ่งอ่านการตั้งค่าของคุณ (จำนวนกระบวนการ เครื่อง ความแม่นยำ) และเริ่มกระบวนการต่าง ๆ โดยจัดการกรณี GPU เดียว หลาย GPU และหลายโหนดให้โดยอัตโนมัติ

accelerate config        # one-time interactive setup
accelerate launch train.py

เหตุผลที่ใช้ Accelerate

Accelerate ช่วยจัดการ หลายอุปกรณ์อย่างโปร่งใส: คุณเขียนลูปที่เป็นระเบียบเพียงชุดเดียว แล้วขยายการทำงานจาก CPU ของแล็ปท็อปไปยังคลัสเตอร์ GPU หลายโหนดได้โดยไม่ต้องเขียนโค้ดใหม่ โดยต่อยอดจากแนวคิด DDP และ AMP เดิมที่คุณเรียนมา เพียงซ่อนรายละเอียดการเชื่อมต่อไว้

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับ Accelerate ของคุณ

ทบทวน

คุณได้เรียนรู้การฝึกโมเดลอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate:

  • Accelerator() ตรวจหาและจัดการสภาพแวดล้อม
  • acc.prepare(model, optimizer, dataloader) เชื่อมต่อทุกอย่างให้เหมาะกับอุปกรณ์ปัจจุบัน
  • acc.backward(loss) จัดการการแพร่ย้อนกลับแบบกระจายและแบบความแม่นยำผสม
  • acc.unwrap_model คืนโมเดลที่พร้อมสำหรับการบันทึก
  • สคริปต์เดียวขยายการทำงานจาก CPU ไปยัง GPU หลายโหนดได้อย่างโปร่งใส

คำถามที่พบบ่อย

บทเรียน “การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate”

accelerate.Accelerator การฝึกที่ไม่ขึ้นกับอุปกรณ์ การสะสมกราดิเอนต์ และการผสาน DeepSpeed คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การฝึกหลาย GPU ด้วย DataParallel
  2. DistributedDataParallel (DDP)
  3. การฝึกความแม่นยำผสมด้วย AMP
  4. การฝึกอย่างมีประสิทธิภาพด้วย Hugging Face Accelerate
← กลับไปที่ Learn AI with Python