API กลยุทธ์การกระจายใน TensorFlow 2.0 เป็นเครื่องมืออันทรงพลังที่ทำให้การฝึกอบรมแบบกระจายง่ายขึ้นโดยจัดเตรียมอินเทอร์เฟซระดับสูงสำหรับการแจกจ่ายและปรับขนาดการคำนวณในอุปกรณ์และเครื่องจักรต่างๆ ช่วยให้นักพัฒนาสามารถใช้ประโยชน์จากพลังการคำนวณของ GPU หลายตัวหรือแม้แต่หลายเครื่องได้อย่างง่ายดายเพื่อฝึกฝนโมเดลของตนให้เร็วขึ้นและมีประสิทธิภาพมากขึ้น
การฝึกอบรมแบบกระจายเป็นสิ่งจำเป็นสำหรับการจัดการชุดข้อมูลขนาดใหญ่และแบบจำลองที่ซับซ้อนซึ่งต้องการทรัพยากรการคำนวณจำนวนมาก ด้วย API กลยุทธ์การกระจาย TensorFlow 2.0 มอบวิธีการที่ราบรื่นในการกระจายการคำนวณไปยังอุปกรณ์ต่างๆ เช่น GPU ภายในเครื่องเดียวหรือหลายเครื่อง สิ่งนี้ทำให้สามารถประมวลผลแบบขนานและช่วยให้มีเวลาฝึกอบรมเร็วขึ้น
API กลยุทธ์การกระจายใน TensorFlow 2.0 รองรับกลยุทธ์ต่างๆ สำหรับการแจกจ่ายการคำนวณ รวมถึงการฝึกอบรมแบบซิงโครนัส การฝึกอบรมแบบอะซิงโครนัส และเซิร์ฟเวอร์พารามิเตอร์ การฝึกอบรมแบบซิงโครนัสช่วยให้มั่นใจได้ว่าอุปกรณ์หรือเครื่องจักรทั้งหมดจะซิงค์กันระหว่างการฝึกอบรม ในขณะที่การฝึกอบรมแบบอะซิงโครนัสช่วยให้มีความยืดหยุ่นมากขึ้นในแง่ของความพร้อมใช้งานของอุปกรณ์หรือเครื่องจักร ในทางกลับกัน เซิร์ฟเวอร์พารามิเตอร์เปิดใช้งานการแชร์พารามิเตอร์ที่มีประสิทธิภาพระหว่างอุปกรณ์หรือเครื่องต่างๆ
ในการใช้ API กลยุทธ์การกระจาย นักพัฒนาจำเป็นต้องกำหนดโมเดลและลูปการฝึกอบรมภายในขอบเขตกลยุทธ์ ขอบเขตนี้ระบุกลยุทธ์การกระจายที่จะใช้และทำให้แน่ใจว่าการคำนวณที่เกี่ยวข้องทั้งหมดได้รับการกระจายตามนั้น TensorFlow 2.0 มีกลยุทธ์การกระจายในตัวหลายตัว เช่น MirroredStrategy ซึ่งฝึกโมเดลพร้อมกันในหลายๆ GPU และ MultiWorkerMirroredStrategy ซึ่งขยาย MirroredStrategy เพื่อรองรับการฝึกในหลายๆ เครื่อง
ต่อไปนี้คือตัวอย่างวิธีใช้ API กลยุทธ์การกระจายใน TensorFlow 2.0:
python import tensorflow as tf strategy = tf.distribute.MirroredStrategy() with strategy.scope(): model = tf.keras.Sequential([...]) # Define your model optimizer = tf.keras.optimizers.Adam() loss_object = tf.keras.losses.SparseCategoricalCrossentropy() train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(batch_size) @tf.function def distributed_train_step(inputs): features, labels = inputs with tf.GradientTape() as tape: predictions = model(features, training=True) loss = loss_object(labels, predictions) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) return loss for epoch in range(num_epochs): total_loss = 0.0 num_batches = 0 for inputs in train_dataset: per_replica_loss = strategy.run(distributed_train_step, args=(inputs,)) total_loss += strategy.reduce(tf.distribute.ReduceOp.SUM, per_replica_loss, axis=None) num_batches += 1 average_loss = total_loss/num_batches print("Epoch {}: Loss = {}".format(epoch, average_loss))
ในตัวอย่างนี้ ก่อนอื่นเราสร้างวัตถุ MirroredStrategy ซึ่งจะกระจายการคำนวณไปยัง GPU ที่มีอยู่ทั้งหมด จากนั้นเราจะกำหนดโมเดล เครื่องมือเพิ่มประสิทธิภาพ ฟังก์ชันการสูญเสีย และชุดข้อมูลการฝึกอบรมภายในขอบเขตกลยุทธ์ ฟังก์ชัน `distributed_train_step` ได้รับการตกแต่งด้วย `@tf.function` เพื่อให้รองรับกราฟ TensorFlow และเพิ่มประสิทธิภาพการดำเนินการ
ในระหว่างการฝึก เราวนซ้ำชุดข้อมูลการฝึกและเรียกเมธอด `strategy.run` เพื่อเรียกใช้ฟังก์ชัน 'distributed_train_step` ในแต่ละเรพลิเคชัน จากนั้นการสูญเสียต่อแบบจำลองจะลดลงโดยใช้เมธอด `strategy.reduce` และคำนวณและพิมพ์การสูญเสียโดยเฉลี่ยสำหรับแต่ละยุค
ด้วยการใช้ API กลยุทธ์การกระจายใน TensorFlow 2.0 นักพัฒนาสามารถปรับขนาดกระบวนการฝึกอบรมได้อย่างง่ายดายเพื่อใช้ประโยชน์จากอุปกรณ์หรือเครื่องจักรหลายเครื่อง ส่งผลให้การฝึกอบรมโมเดลของตนรวดเร็วและมีประสิทธิภาพมากขึ้น
คำถามและคำตอบล่าสุดอื่น ๆ เกี่ยวกับ EITC/AI/TFF TensorFlow Fundamentals:
- เราจะใช้เลเยอร์การฝังเพื่อกำหนดแกนที่เหมาะสมสำหรับการแสดงคำเป็นเวกเตอร์ได้อย่างไร
- จุดประสงค์ของการรวมสูงสุดใน CNN คืออะไร?
- กระบวนการแยกคุณสมบัติในเครือข่ายประสาทเทียม (CNN) นำไปใช้กับการจดจำภาพอย่างไร
- จำเป็นต้องใช้ฟังก์ชันการเรียนรู้แบบอะซิงโครนัสสำหรับโมเดลการเรียนรู้ของเครื่องที่ทำงานใน TensorFlow.js หรือไม่
- พารามิเตอร์จำนวนคำสูงสุด TensorFlow Keras Tokenizer API คืออะไร
- TensorFlow Keras Tokenizer API สามารถใช้ค้นหาคำที่ใช้บ่อยที่สุดได้หรือไม่
- โทโค่คืออะไร?
- อะไรคือความสัมพันธ์ระหว่างยุคต่างๆ ในโมเดล Machine Learning และความแม่นยำของการคาดการณ์จากการรันโมเดล
- Pack Neighbors API ใน Neural Structured Learning ของ TensorFlow สร้างชุดข้อมูลการฝึกอบรมแบบเสริมตามข้อมูลกราฟธรรมชาติหรือไม่
- Pack Neighbors API ใน Neural Structured Learning ของ TensorFlow คืออะไร
ดูคำถามและคำตอบเพิ่มเติมใน EITC/AI/TFF TensorFlow Fundamentals