คู่มือสําหรับการเริ่มโครงการใหม่

ส่วนนี้จะอธิบายวิธีเลือกการตั้งค่าต่อไปนี้เมื่อเริ่มต้นโปรเจ็กต์ ML

  • สถาปัตยกรรมโมเดล
  • นักเพิ่มประสิทธิภาพ
  • ขนาดกลุ่ม
  • การกำหนดค่าเริ่มต้น

สมมติฐาน

คำแนะนำในส่วนนี้มีวัตถุประสงค์ดังต่อไปนี้

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

สมมติว่าคุณมีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นทั้งหมดแล้ว ตอนนี้คุณก็พร้อมที่จะแบ่งเวลาให้กับสถาปัตยกรรมโมเดลและการกำหนดค่าการฝึกแล้ว

เลือกสถาปัตยกรรมโมเดล

เรามาเริ่มที่คำจำกัดความต่อไปนี้กัน

  • สถาปัตยกรรมโมเดลเป็นระบบสำหรับการสร้างการคาดการณ์ สถาปัตยกรรมโมเดลมีเฟรมเวิร์กสำหรับการแปลงข้อมูลอินพุตเป็นการคาดการณ์ แต่ไม่มีค่า parameter ตัวอย่างเช่น โครงข่ายระบบประสาทเทียมที่มี 3 เลเยอร์ที่ซ่อนอยู่ ได้แก่ 10 โหนด, 5 โหนด และ 3 โหนด ตามลำดับ ต่างก็เป็นสถาปัตยกรรมโมเดล
  • modelคือสถาปัตยกรรมโมเดลและค่าเฉพาะสำหรับพารามิเตอร์ทั้งหมด ตัวอย่างเช่น โมเดลประกอบด้วยโครงข่ายระบบประสาทเทียมที่อธิบายในคำจำกัดความของสถาปัตยกรรมโมเดล รวมถึงค่าเฉพาะสำหรับน้ำหนักและความเอนเอียงของแต่ละโหนด
  • กลุ่มโมเดลคือเทมเพลตสำหรับการสร้างสถาปัตยกรรมโมเดลโดยใช้ชุดพารามิเตอร์ไฮเปอร์

การเลือกสถาปัตยกรรมโมเดลหมายถึงการเลือกชุดโมเดลที่แตกต่างกัน (1 ชุดต่อการตั้งค่าไฮเปอร์พารามิเตอร์ของโมเดลแต่ละรายการ)

หากเป็นไปได้ ให้ลองค้นหาฐานของโค้ดที่เป็นเอกสารประกอบซึ่งจะแก้ไขปัญหาต่างๆ ที่ใกล้เคียงกับปัญหาปัจจุบันมากที่สุด จากนั้นจึงทำซ้ำโมเดลนั้นเป็นจุดเริ่มต้น

เลือกเครื่องมือเพิ่มประสิทธิภาพ

ไม่มีเครื่องมือเพิ่มประสิทธิภาพใดที่ "ดีที่สุด" ในปัญหาแมชชีนเลิร์นนิงและสถาปัตยกรรมโมเดลทุกประเภท แม้แต่การเปรียบเทียบประสิทธิภาพตัวเพิ่มประสิทธิภาพ ก็เป็นเรื่องยาก 🤖 เราขอแนะนำให้ใช้เครื่องมือเพิ่มประสิทธิภาพที่เป็นที่รู้จักและได้รับความนิยม โดยเฉพาะเมื่อเริ่มโปรเจ็กต์ใหม่

เราแนะนำให้เลือกเครื่องมือเพิ่มประสิทธิภาพที่ได้รับความนิยมสูงสุดสำหรับประเภทปัญหาที่คุณกำลังแก้ไข เราขอแนะนำนักเพิ่มประสิทธิภาพที่ได้รับการยอมรับต่อไปนี้:

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

  1. ที่เริ่มต้นโปรเจ็กต์ ให้เลือกเครื่องมือเพิ่มประสิทธิภาพโดยไม่ต้องมีไฮเปอร์พารามิเตอร์ที่ปรับแต่งได้มากนัก ต่อไปนี้เป็นตัวอย่าง 2 รายการ
    • SGD ที่มีโมเมนตัมคงที่
    • Adam กับ Epsilon, Beta1 และ Beta2 แบบคงที่
  2. ในขั้นตอนหลังๆ ของโปรเจ็กต์ ให้เปลี่ยนไปใช้เครื่องมือเพิ่มประสิทธิภาพทั่วไป ซึ่งจะปรับแต่งไฮเปอร์พารามิเตอร์มากขึ้นแทนการแก้ไขเป็นค่าเริ่มต้น

เลือกขนาดกลุ่ม

สรุป: ขนาดกลุ่มจะควบคุมความเร็วในการฝึก อย่าใช้ขนาดกลุ่มเพื่อปรับแต่งประสิทธิภาพของชุดการตรวจสอบโดยตรง

ขนาดกลุ่มจะกำหนดเวลาการฝึกและการใช้ทรัพยากรการประมวลผลอย่างมาก การเพิ่มขนาดกลุ่มมักจะลดเวลาการฝึก ซึ่งจะส่งผลดังนี้

  • ช่วยให้คุณปรับไฮเปอร์พารามิเตอร์ได้ละเอียดขึ้นภายในช่วงเวลาคงที่ ซึ่งอาจสร้างแบบจำลองขั้นสุดท้ายที่ดีขึ้น
  • ลดเวลาในการตอบสนองของวงจรการพัฒนา ทำให้มีการทดสอบแนวคิดใหม่ๆ บ่อยขึ้น

การเพิ่มขนาดกลุ่มอาจลดหรือเพิ่มการใช้ทรัพยากร หรือไม่เปลี่ยนแปลงการใช้ทรัพยากรก็ได้

อย่าถือว่าขนาดกลุ่มเป็นไฮเปอร์พารามิเตอร์ที่ปรับแต่งไม่ได้สำหรับประสิทธิภาพชุดการตรวจสอบ หากเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด ประสิทธิภาพของโมเดลไม่ควรขึ้นอยู่กับขนาดกลุ่ม

  • ไฮเปอร์พารามิเตอร์ของตัวเพิ่มประสิทธิภาพทั้งหมดได้รับการปรับแต่งเป็นอย่างดี
  • การปรับเปลี่ยนให้เป็นมาตรฐานเพียงพอและมีการปรับแต่งอย่างเหมาะสม
  • จำนวนขั้นตอนการฝึกก็เพียงพอแล้ว

ควรได้ประสิทธิภาพสุดท้ายแบบเดียวกันโดยใช้กลุ่มขนาดใดก็ได้ (ดู Shallue et al. 2018 และ เหตุใดจึงไม่ควรปรับขนาดกลุ่มเพื่อปรับปรุงประสิทธิภาพของชุดการตรวจสอบโดยตรง

กำหนดขนาดกลุ่มที่เป็นไปได้และประมาณอัตราการส่งข้อมูลการฝึก

สำหรับรุ่นและเครื่องมือเพิ่มประสิทธิภาพที่ระบุ โดยทั่วไปฮาร์ดแวร์ที่มีอยู่จะรองรับกลุ่มขนาดต่างๆ ปัจจัยในการจำกัดมักคือ หน่วยความจำแบบเร่ง น่าเสียดายที่การคำนวณขนาดแบตช์ที่จะพอดีในหน่วยความจำโดยไม่ต้องเรียกใช้ หรืออย่างน้อยคอมไพล์โปรแกรมการฝึกเต็มรูปแบบอาจทำได้ยาก วิธีแก้ปัญหาที่ง่ายที่สุดคือการเรียกใช้งานการฝึกที่ขนาดกลุ่มที่แตกต่างกัน (เช่น การเพิ่มกำลัง 2) สำหรับขั้นตอนเพียงเล็กน้อยจนกว่างานใดงานหนึ่งจะมีขนาดเกินหน่วยความจำที่มี สำหรับขนาดของแต่ละกลุ่ม ให้ฝึกเป็นเวลานานพอที่จะได้รับค่าประมาณที่เชื่อถือได้ของอัตราการส่งข้อมูลการฝึก

อัตราการส่งข้อมูลการฝึก = จำนวนตัวอย่างที่ประมวลผลต่อวินาที

หรือเวลาต่อขั้นตอนจะมีความหมายดังนี้

เวลาต่อขั้นตอน = ขนาดกลุ่ม / อัตราการส่งข้อมูลการฝึก

เมื่อ Accelerator ยังไม่อิ่มตัว หากขนาดกลุ่มเพิ่มเป็น 2 เท่า อัตราการส่งข้อมูลการฝึกควรเป็น 2 เท่าด้วย (หรืออย่างน้อยเกือบ 2 เท่า) ในขั้นเดียวกัน เวลาในแต่ละขั้นตอนควรคงที่ (หรือเกือบคงที่) เมื่อกลุ่มขนาดเพิ่มขึ้น หากไม่ใช่กรณีนี้ ไปป์ไลน์การฝึกจะมีจุดคอขวด เช่น I/O หรือการซิงค์ระหว่างโหนดประมวลผล ลองวินิจฉัยและแก้ไขจุดคอขวดก่อนดำเนินการต่อ

หากอัตราการส่งข้อมูลการฝึกเพิ่มขึ้นจนถึงขนาดกลุ่มสูงสุดเพียงบางกลุ่ม ให้พิจารณาเฉพาะขนาดกลุ่มจนถึงขนาดสูงสุดของกลุ่มดังกล่าว แม้ว่าฮาร์ดแวร์จะรองรับกลุ่มขนาดที่ใหญ่กว่าก็ตาม ประโยชน์ทั้งหมดของการใช้กลุ่มขนาดที่ใหญ่ขึ้นจะถือว่าอัตราการส่งข้อมูลการฝึกเพิ่มขึ้น หากไม่มี ให้แก้ไขจุดคอขวดหรือใช้กลุ่มขนาดเล็กลง

การไล่ระดับสีจะจำลองขนาดแบทช์ที่ใหญ่กว่าที่ฮาร์ดแวร์รองรับได้ จึงไม่มีประโยชน์ในอัตราการส่งข้อมูล โดยทั่วไปแล้วคุณควรหลีกเลี่ยงการสะสมการไล่ระดับสีในงานที่ใช้

คุณอาจต้องทำขั้นตอนเหล่านี้ซ้ำทุกครั้งที่เปลี่ยนรูปแบบหรือเครื่องมือเพิ่มประสิทธิภาพ ตัวอย่างเช่น สถาปัตยกรรมโมเดลที่แตกต่างกันอาจทำให้ขนาดกลุ่มใหญ่ขึ้นเพื่อให้พอดีกับหน่วยความจำ

เลือกขนาดกลุ่มเพื่อประหยัดเวลาในการฝึก

คำจำกัดความของเวลาการฝึกมีดังนี้

  • เวลาการฝึก = (เวลาต่อขั้นตอน) x (จำนวนขั้นตอนทั้งหมด)

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

  • ไม่มีค่าใช้จ่ายในการคำนวณแบบคู่ขนาน
  • วิเคราะห์และแก้ไขจุดคอขวดในการฝึกทั้งหมดแล้ว (ดูส่วนก่อนหน้านี้เพื่อดูวิธีระบุจุดคอขวดของการฝึก ในทางปฏิบัติแล้ว มักจะมีค่าใช้จ่ายอย่างน้อย จากการเพิ่มขนาดกลุ่ม

เมื่อขนาดกลุ่มเพิ่มขึ้น จำนวนขั้นตอนทั้งหมดที่จำเป็นในการบรรลุเป้าหมายประสิทธิภาพคงที่จะลดลงหากคุณปรับแต่งไฮเปอร์พารามิเตอร์ที่เกี่ยวข้องทั้งหมดอีกครั้งเมื่อเปลี่ยนขนาดกลุ่ม (ดู Shallue et al. 2018) เช่น การเพิ่มขนาดกลุ่มเป็น 2 เท่าอาจลดจำนวนขั้นตอนทั้งหมดที่จำเป็นลงครึ่งหนึ่ง ความสัมพันธ์นี้เรียกว่าการปรับขนาดที่เหมาะสม และควรใช้สำหรับขนาดกลุ่มทั้งหมดจนถึงขนาดกลุ่มที่สำคัญ

นอกเหนือจากขนาดกลุ่มที่สำคัญแล้ว การเพิ่มขนาดกลุ่มจะทำให้ผลตอบแทนลดลง กล่าวคือ การเพิ่มขนาดกลุ่มจะไม่ลดขั้นตอนการฝึกอีกต่อไป แต่ก็จะไม่เพิ่มเลย ดังนั้น ขนาดกลุ่มที่ลดเวลาการฝึกสั้นลงมักจะเป็นขนาดกลุ่มที่ใหญ่ที่สุด ซึ่งยังคงช่วยลดขั้นตอนการฝึกที่จำเป็นได้ ขนาดแบตช์นี้ขึ้นอยู่กับชุดข้อมูล โมเดล และเครื่องมือเพิ่มประสิทธิภาพ และถือเป็นปัญหาแบบเปิดเกี่ยวกับวิธีคำนวณนอกเหนือจากการค้นหาการทดสอบกับปัญหาใหม่ทุกรายการ 🤖

เมื่อเปรียบเทียบขนาดกลุ่ม ให้ระวังความแตกต่างระหว่างขนาดต่อไปนี้

  • งบประมาณตัวอย่างหรืองบประมาณ Epoch - เรียกใช้การทดสอบทั้งหมดขณะกำหนดจำนวนงานนำเสนอตัวอย่างการฝึก
  • งบประมาณแบบขั้นตอน ซึ่งก็คือการเรียกใช้การทดสอบทั้งหมดด้วยจำนวนขั้นตอนการฝึกที่แน่นอน

การเปรียบเทียบขนาดกลุ่มกับงบประมาณ Epoch เป็นการตรวจสอบรูปแบบการปรับขนาดที่สมบูรณ์แบบเท่านั้น แม้ว่ากลุ่มขนาดที่ใหญ่ขึ้นอาจยังเพิ่มความเร็วได้อย่างมากโดยการลดจำนวนขั้นตอนการฝึกที่จำเป็น บ่อยครั้งที่ขนาดกลุ่มที่ใหญ่ที่สุดที่ฮาร์ดแวร์ที่ใช้ได้รองรับจะมีขนาดเล็กกว่าขนาดกลุ่มที่สำคัญ ดังนั้น หลักการทั่วไปที่ดี (โดยไม่ต้องเรียกใช้การทดสอบ) คือการใช้กลุ่มขนาดที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้ แต่การใช้กลุ่มขนาดที่ใหญ่ขึ้นนั้นไม่ต้องใช้เวลามากต่อการเพิ่มเวลาการฝึก

เลือกขนาดกลุ่มเพื่อลดการใช้ทรัพยากรให้เหลือน้อยที่สุด

ต้นทุนทรัพยากรที่เกี่ยวข้องกับการเพิ่มขนาดกลุ่มมี 2 ประเภทดังนี้

  • ค่าใช้จ่ายล่วงหน้า เช่น การซื้อฮาร์ดแวร์ใหม่หรือการเขียนไปป์ไลน์การฝึกใหม่เพื่อนำการฝึก Multi-GPU / Multi-TPU
  • ค่าใช้จ่ายการใช้งาน เช่น การเรียกเก็บเงินตามงบประมาณทรัพยากรของทีม การเรียกเก็บเงินจากผู้ให้บริการระบบคลาวด์ ค่าไฟฟ้า / การบำรุงรักษา

หากมีค่าใช้จ่ายล่วงหน้าสูงสำหรับการเพิ่มขนาดกลุ่ม ก็อาจดีกว่าหากจะเลื่อนการเพิ่มขนาดกลุ่มออกไปจนกว่าโปรเจ็กต์จะเติบโตเต็มที่และการประเมินความคุ้มค่าของต้นทุนกับผลประโยชน์ก็จะง่ายขึ้น การใช้โปรแกรมการฝึกอบรมแบบคู่ขนานกับหลายโฮสต์อาจทำให้เกิดbugsและปัญหาที่เป็นรายละเอียดเล็กๆ น้อยๆ ดังนั้นการเริ่มต้นด้วยไปป์ไลน์ที่ง่ายกว่านี้จึงอาจดีกว่า ในทางกลับกัน การเร่งเวลาการฝึกอย่างมากอาจมีประโยชน์อย่างมากในช่วงแรก เมื่อต้องปรับแต่งการทดสอบจำนวนมาก

เราอ้างอิงต้นทุนการใช้งานรวม (ซึ่งอาจรวมต้นทุนที่แตกต่างกันหลายประเภท) เป็นการใช้ทรัพยากรซึ่งคำนวณได้ดังนี้

การใช้ทรัพยากร = การใช้ทรัพยากรต่อ 1 ขั้นตอน x จำนวนขั้นตอนทั้งหมด

การเพิ่มขนาดกลุ่มมักจะลดจำนวนขั้นตอนทั้งหมด การเพิ่มขึ้นหรือลดลงของการใช้ทรัพยากรขึ้นอยู่กับการเปลี่ยนแปลงของการใช้งานในแต่ละขั้น ซึ่งขึ้นอยู่กับขนาดกลุ่มดังต่อไปนี้

  • การเพิ่มขนาดกลุ่มอาจลดการใช้ทรัพยากร เช่น หากเรียกใช้แต่ละขั้นตอนที่มีกลุ่มขนาดใหญ่กว่าได้บนฮาร์ดแวร์เดียวกันกับกลุ่มขนาดเล็ก (โดยใช้เวลาเพิ่มขึ้นเพียงเล็กน้อยใน 1 ขั้นตอน) การใช้ทรัพยากรต่อขั้นตอนที่เพิ่มขึ้นก็อาจถูกน้ำหนักมากกว่าเพราะจำนวนขั้นตอนที่ลดลง
  • การเพิ่มขนาดกลุ่มอาจไม่เปลี่ยนการใช้ทรัพยากร เช่น หากการเพิ่มขนาดกลุ่มเป็น 2 เท่าทำให้จำนวนขั้นตอนที่จำเป็นเพิ่มขึ้นครึ่งหนึ่งและเพิ่มจำนวน GPU ที่ใช้เป็น 2 เท่า ปริมาณการใช้ทั้งหมด (ในแง่ของชั่วโมง GPU) จะไม่เปลี่ยนแปลง
  • การเพิ่มขนาดกลุ่มอาจเพิ่มการใช้ทรัพยากร เช่น หากการเพิ่มขนาดกลุ่มต้องใช้ฮาร์ดแวร์ที่อัปเกรด การใช้งานที่เพิ่มขึ้นต่อ 1 ขั้นตอนอาจมีน้ำหนักมากกว่าการลดจำนวนก้าว

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

ค่าที่เหมาะสมของไฮเปอร์พารามิเตอร์ส่วนใหญ่มีความไวต่อขนาดกลุ่ม ดังนั้น การเปลี่ยนขนาดกลุ่มจึงมักต้องเริ่มกระบวนการปรับแต่งใหม่ทั้งหมด ไฮเปอร์พารามิเตอร์ที่มีปฏิสัมพันธ์กับขนาดกลุ่มมากที่สุด จึงมีความสำคัญที่สุดในการปรับแยกกันสำหรับขนาดแบทช์แต่ละขนาด ดังนี้

  • ไฮเปอร์พารามิเตอร์ของตัวเพิ่มประสิทธิภาพ (เช่น อัตราการเรียนรู้และโมเมนตัม)
  • ไฮเปอร์พารามิเตอร์ regularization

โปรดคำนึงถึงเรื่องนี้เมื่อเลือกขนาดกลุ่มเมื่อเริ่มต้นโปรเจ็กต์ หากต้องการเปลี่ยนไปใช้ขนาดกลุ่มอื่นในภายหลัง การปรับไฮเปอร์พารามิเตอร์อื่นๆ อีกครั้งสำหรับขนาดแบตช์ใหม่อาจยุ่งยาก ใช้เวลานาน และมีค่าใช้จ่ายสูง

วิธีที่กลุ่มมาตรฐานโต้ตอบกับขนาดกลุ่ม

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

เลือกการกำหนดค่าเริ่มต้น

ขั้นตอนแรกในการปรับแต่งไฮเปอร์พารามิเตอร์คือการระบุจุดเริ่มต้นสำหรับสิ่งต่อไปนี้

  • การกำหนดค่าโมเดล (เช่น จำนวนเลเยอร์)
  • ไฮเปอร์พารามิเตอร์ของตัวเพิ่มประสิทธิภาพ (เช่น อัตราการเรียนรู้)
  • จำนวนขั้นตอนการฝึก

การกำหนดค่าเริ่มต้นนี้ต้องมีการเรียกใช้การฝึกและการทดลองและข้อผิดพลาดที่กำหนดค่าด้วยตนเอง

หลักการชี้นำของเรามีดังนี้

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

ที่ไหน

  • ความเรียบง่ายหมายถึงการหลีกเลี่ยงฟีเจอร์ไปป์ไลน์ที่ไม่จำเป็น เช่น เทคนิคพิเศษหรือกลเม็ดทางสถาปัตยกรรม เช่น ไปป์ไลน์ที่ไม่มีการเรียกใช้ตามกำหนดการ (หรือที่ปิดใช้การกำหนดการออกข้อมูลออกเป็นประจำ) จะง่ายกว่าไปป์ไลน์ที่มีการกำหนดรูปแบบการเปิดตัว
  • ประสิทธิภาพที่สมเหตุสมผลจะขึ้นอยู่กับปัญหา แต่อย่างน้อยโมเดลที่ผ่านการฝึกที่สมเหตุสมผลจะทำงานได้ดีกว่าการสุ่มเลือกชุดการตรวจสอบ

การเลือกการกำหนดค่าเริ่มต้นที่เร็วและใช้ทรัพยากรน้อยที่สุดทำให้การปรับแต่งไฮเปอร์พารามิเตอร์มีประสิทธิภาพมากขึ้น เช่น เริ่มต้นด้วยโมเดลที่เล็กกว่า

การเลือกจำนวนขั้นตอนการฝึกอบรมเกี่ยวข้องกับการสร้างสมดุลระหว่างความเครียดต่อไปนี้

  • การฝึกขั้นตอนเพิ่มเติมจะช่วยปรับปรุงประสิทธิภาพและลดความซับซ้อนของการปรับแต่งไฮเปอร์พารามิเตอร์ (ดูรายละเอียดเพิ่มเติมได้ที่ Shallue et al. 2018)
  • ในทางกลับกัน การฝึกให้มีขั้นตอนน้อยกว่าก็หมายความว่าการฝึกทำงานแต่ละครั้งจะเร็วขึ้นและใช้ทรัพยากรน้อยลง ซึ่งช่วยเพิ่มประสิทธิภาพการปรับแต่งโดยการลดระยะเวลาระหว่างรอบการทำงานและช่วยให้คุณทำการทดสอบได้มากขึ้นไปพร้อมๆ กัน นอกจากนี้ หากคุณเลือกงบประมาณสำหรับขั้นตอนจำนวนมากที่ไม่จำเป็นไว้ที่ตอนเริ่มต้นโครงการ การเปลี่ยนงบประมาณในภายหลังอาจทำได้ยาก ตัวอย่างเช่น เมื่อคุณได้ปรับตารางอัตราการเรียนรู้สำหรับขั้นตอนจำนวนนั้นแล้ว