8-bit Adam กับ Accelerator
คุณต้องการปรับแต่ง training loop โดยใช้ 8-bit Adam เพื่อลดการใช้หน่วยความจำของโมเดล เตรียม loop ด้วย 8-bit Adam สำหรับการเทรน
สมมติว่า optimizer แบบ 8-bit Adam ถูกกำหนดไว้แล้วในชื่อ adam_bnb_optim และออบเจกต์สำหรับการเทรนอื่น ๆ ได้ถูกกำหนดไว้แล้ว ได้แก่ model, train_dataloader, lr_scheduler, และ accelerator
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch
คำแนะนำการฝึกหัด
- เตรียม 8-bit Adam optimizer สำหรับการเทรนแบบกระจาย
- อัปเดตพารามิเตอร์ของโมเดลด้วย optimizer
- รีเซ็ตค่า gradients ให้เป็นศูนย์ด้วย optimizer
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Prepare the 8-bit Adam optimizer for distributed training
model, adam_bnb_optim, train_dataloader, lr_scheduler = accelerator.prepare(model, ____, train_dataloader, lr_scheduler)
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
# Update the model parameters
adam_bnb_optim.____()
lr_scheduler.step()
# Zero the gradients
adam_bnb_optim.____()
print(f"Loss = {loss}")