คําแนะนําเพิ่มเติมสําหรับไปป์ไลน์การฝึก

ส่วนนี้แสดงรายละเอียดไปป์ไลน์การฝึก

การเพิ่มประสิทธิภาพไปป์ไลน์อินพุต

สรุป: สาเหตุและการแทรกแซงของไปป์ไลน์ที่ผูกกับอินพุตมีการพึ่งพางานสูง ใช้เครื่องมือสร้างโปรไฟล์เพื่อดูปัญหาที่พบบ่อย

ใช้เครื่องมือสร้างโปรไฟล์ที่เหมาะสม เช่น เครื่องมือต่อไปนี้เพื่อวินิจฉัยไปป์ไลน์ของอินพุต

สุดท้ายแล้ว สาเหตุและสาเหตุที่เฉพาะเจาะจงจะขึ้นอยู่กับงานเป็นหลัก การพิจารณาด้านวิศวกรรมที่กว้างขึ้น (เช่น การลดการใช้งานดิสก์ขั้นต่ํา) อาจส่งผลเสียต่อประสิทธิภาพของไปป์ไลน์อินพุต

ต่อไปนี้คือสาเหตุที่พบบ่อยของไปป์ไลน์ที่มีอินพุต

  • ข้อมูลไม่เข้ากันกับกระบวนการฝึกอบรม ทําให้เวลาในการตอบสนองของ I/O เช่น การอ่านข้อมูลการฝึกผ่านเครือข่ายอาจทําให้เกิดเวลาในการตอบสนอง I/O
  • การประมวลผลข้อมูลออนไลน์ล่วงหน้าที่มีราคาแพง พิจารณาประมวลผลล่วงหน้าเมื่อออฟไลน์ และบันทึกผลลัพธ์
  • อุปสรรคในการซิงค์โดยไม่ตั้งใจ ซึ่งรบกวนการดึงข้อมูลไปป์ไลน์ล่วงหน้า เช่น เมื่อซิงค์ข้อมูลเมตริกระหว่างอุปกรณ์และโฮสต์ใน CommonLoopUtils

ขอแนะนําให้ดําเนินการดังต่อไปนี้กับไปป์ไลน์ที่ผูกกับอินพุต

การประเมินประสิทธิภาพโมเดล

สรุป: ทําการประเมินเป็นกลุ่มใหญ่กว่าการฝึกอบรม ทําการประเมินในช่วงเวลาปกติ ไม่ใช่ช่วงเวลาปกติ

การตั้งค่าการประเมิน

คุณสามารถใช้การตั้งค่าต่อไปนี้เพื่อประเมินประสิทธิภาพของโมเดล

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

การตั้งค่าการประเมินเป็นระยะ

เราขอแนะนําให้ทําการประเมินเป็นระยะระหว่างการฝึกอบรมด้วยเหตุผลต่างๆ ดังนี้

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

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

ระยะเวลาในการตรวจสอบความถูกต้องและเมตริกการทดสอบ (เมื่อใช้ชุดการฝึกแบบสับเปลี่ยน ชุดการตรวจสอบ การแยกชุดทดสอบ) อาจบ่งบอกถึงข้อบกพร่องในการใช้งาน เช่น

  • ทดสอบข้อมูลที่ทับซ้อนกันกับข้อมูลการฝึกอบรม
  • การสับเปลี่ยนข้อมูลการฝึกไม่ถูกต้อง

การประเมินตามช่วงจังหวะเวลาปกติจะช่วยให้คุณตรวจพบปัญหาเหล่านี้ได้ง่ายขึ้น

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

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

การเลือกตัวอย่างสําหรับการประเมินผลเป็นระยะๆ

งานการประเมินเป็นระยะๆ อาจไม่ทํางานเร็วพอที่จะคํานวณเมตริกจากการประเมินแบบออฟไลน์เต็มรูปแบบซึ่งมีระยะเวลาที่สมเหตุสมผล ปัญหานี้มักทําให้ต้องใช้ข้อมูลการสุ่มตัวอย่างเพื่อทําการประเมินเป็นระยะ เมื่อสร้างชุดข้อมูลตัวอย่าง ให้พิจารณาปัญหาเกี่ยวกับขนาดตัวอย่างและข้อกังวลพิเศษในชุดข้อมูลที่ไม่สมดุล

ขนาดตัวอย่าง

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

ชุดข้อมูลที่คุณใช้สําหรับการประเมินเป็นระยะควรเป็นข้อมูล 2 อย่างต่อไปนี้

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

ชุดข้อมูลที่ไม่สมดุล

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

การบันทึกจุดตรวจสอบและเลือกจุดตรวจสอบย้อนหลังล่าสุด

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

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

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

การตั้งค่าการติดตามการทดสอบ

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

เราขอแนะนําให้ติดตามผลการทดสอบในสเปรดชีต สเปรดชีตของเรามักมีคอลัมน์ต่อไปนี้

  • ชื่อการศึกษา
  • ลิงก์ไปยังทุกที่ที่เก็บการกําหนดค่าสําหรับการศึกษา
  • หมายเหตุหรือคําอธิบายสั้นๆ ของการศึกษา
  • จํานวนการทดลองใช้
  • ประสิทธิภาพเกี่ยวกับชุดการตรวจสอบของจุดตรวจสอบที่ดีที่สุดในการศึกษา
  • คําสั่งทํางานซ้ําหรือหมายเหตุเกี่ยวกับการเปลี่ยนแปลงที่ยังไม่ได้ส่งที่จําเป็นต่อการเริ่มต้นการฝึกใช้งาน

ค้นหาระบบการติดตามที่สะดวก ซึ่งจะรวบรวมข้อมูล ที่ระบุไว้ด้านบน การทดสอบที่ยังไม่ได้ติดตามก็ไม่มีอยู่จริงเช่นกัน

รายละเอียดการใช้งานการทําให้เป็นมาตรฐานเป็นชุด

สรุป: ในปัจจุบัน คุณสามารถแทนที่การทํามาตรฐานเป็นกลุ่มด้วย LayerNorm ได้ แต่ในกรณีที่คุณไม่สามารถแทนที่ได้ จะมีรายละเอียดหลอกเมื่อเปลี่ยนขนาดกลุ่มหรือจํานวนโฮสต์

การปรับให้เป็นแบตช์ก่อนจะปรับข้อมูลการเปิดใช้งานให้เป็นมาตรฐานโดยใช้ค่าเฉลี่ยและความแปรปรวนของกลุ่ม แต่ในการตั้งค่าอุปกรณ์หลายเครื่อง สถิติเหล่านี้ จะแตกต่างกันในแต่ละอุปกรณ์ เว้นแต่จะมีการซิงโครไนซ์อย่างชัดแจ้ง รายงานเล็กๆ น้อยๆ (ส่วนใหญ่ใน ImageNet) ระบุว่าการคํานวณสถิติที่เป็นมาตรฐานเหล่านี้โดยใช้ตัวอย่างประมาณ 64 ตัวอย่างจริงๆ จะให้ผลที่ดีกว่าในทางปฏิบัติ (ดูคําอธิบายของ Ghost Batch Normalization ในฝึกให้ยาวขึ้น ทําให้ข้อมูลโดยรวมดียิ่งขึ้น: ปิดช่องว่างของการสร้างแบบจําลองในการฝึกอบรมจํานวนมากเกี่ยวกับโครงข่ายระบบประสาทเทียม) การแยกขนาดกลุ่มทั้งหมดและจํานวนตัวอย่างที่ใช้ในการคํานวณสถิติกลุ่มบรรทัดมาตรฐานมีประโยชน์อย่างยิ่งสําหรับการเปรียบเทียบขนาดกลุ่ม

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

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

ข้อควรพิจารณาสําหรับไปป์ไลน์แบบหลายโฮสต์

สรุป: สําหรับการบันทึก การสํารวจ RNG การตรวจสอบจุด และชาร์ดดิ้ง การฝึกอบรมแบบโฮสต์หลายโฮสต์ช่วยให้แนะนําข้อบกพร่องได้ง่ายมาก

ดําเนินการดังต่อไปนี้กับไปป์ไลน์แบบหลายโฮสต์

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

วิกฤติ: ตรวจสอบว่าคุณมีเมล็ด RNG ที่เหมือนกันในโฮสต์ต่างๆ (สําหรับการเริ่มต้นโมเดล) และเมล็ดพันธุ์ที่แตกต่างกันในโฮสต์ (สําหรับสับเปลี่ยน/ประมวลผลข้อมูลล่วงหน้า) ดังนั้น อย่าลืมทําเครื่องหมาย ให้เหมาะสม