ส่วนนี้แสดงรายละเอียดไปป์ไลน์การฝึก
การเพิ่มประสิทธิภาพไปป์ไลน์อินพุต
สรุป: สาเหตุและการแทรกแซงของไปป์ไลน์ที่ผูกกับอินพุตมีการพึ่งพางานสูง ใช้เครื่องมือสร้างโปรไฟล์เพื่อดูปัญหาที่พบบ่อย
ใช้เครื่องมือสร้างโปรไฟล์ที่เหมาะสม เช่น เครื่องมือต่อไปนี้เพื่อวินิจฉัยไปป์ไลน์ของอินพุต
- Perfetto สําหรับ JAX
- TensorFlow profiler สําหรับ TensorFlow
สุดท้ายแล้ว สาเหตุและสาเหตุที่เฉพาะเจาะจงจะขึ้นอยู่กับงานเป็นหลัก การพิจารณาด้านวิศวกรรมที่กว้างขึ้น (เช่น การลดการใช้งานดิสก์ขั้นต่ํา) อาจส่งผลเสียต่อประสิทธิภาพของไปป์ไลน์อินพุต
ต่อไปนี้คือสาเหตุที่พบบ่อยของไปป์ไลน์ที่มีอินพุต
- ข้อมูลไม่เข้ากันกับกระบวนการฝึกอบรม ทําให้เวลาในการตอบสนองของ I/O เช่น การอ่านข้อมูลการฝึกผ่านเครือข่ายอาจทําให้เกิดเวลาในการตอบสนอง I/O
- การประมวลผลข้อมูลออนไลน์ล่วงหน้าที่มีราคาแพง พิจารณาประมวลผลล่วงหน้าเมื่อออฟไลน์ และบันทึกผลลัพธ์
- อุปสรรคในการซิงค์โดยไม่ตั้งใจ ซึ่งรบกวนการดึงข้อมูลไปป์ไลน์ล่วงหน้า เช่น เมื่อซิงค์ข้อมูลเมตริกระหว่างอุปกรณ์และโฮสต์ใน CommonLoopUtils
ขอแนะนําให้ดําเนินการดังต่อไปนี้กับไปป์ไลน์ที่ผูกกับอินพุต
- ไปป์ไลน์อินพุตเครื่องมือเพื่อดึงตัวอย่างล่วงหน้า (เช่น tf.data.Dataset.prefetch)
- นําฟีเจอร์และข้อมูลเมตาที่ไม่ได้ใช้ออกจากไปป์ไลน์ให้มากที่สุดเท่าที่จะทําได้
- เพิ่มจํานวนการจําลองงานที่สร้างตัวอย่างสําหรับไปป์ไลน์อินพุต เช่น โดยใช้ tf.data service
การประเมินประสิทธิภาพโมเดล
สรุป: ทําการประเมินเป็นกลุ่มใหญ่กว่าการฝึกอบรม ทําการประเมินในช่วงเวลาปกติ ไม่ใช่ช่วงเวลาปกติ
การตั้งค่าการประเมิน
คุณสามารถใช้การตั้งค่าต่อไปนี้เพื่อประเมินประสิทธิภาพของโมเดล
- การประเมินออนไลน์: รวบรวมเมตริกเมื่อโมเดลแสดงการคาดการณ์ในสภาพแวดล้อมการใช้งานจริง โดยทั่วไปการประเมินออนไลน์จะให้การประเมินคุณภาพโมเดลที่สมจริงที่สุด เนื่องจากตรงกับวิธีการใช้งานโมเดล
- การประเมินแบบออฟไลน์: รวบรวมเมตริกเมื่อมีการเรียกใช้โมเดลกับ การฝึกออฟไลน์ การตรวจสอบ หรือชุดการทดสอบที่เป็นตัวแทนของสภาพแวดล้อมที่ใช้งานจริง การประเมินแบบออฟไลน์อาจมี ผลกระทบค่อนข้างมากและมีค่าใช้จ่ายในการคํานวณสูง
- การประเมินเป็นระยะ: รวบรวมเมตริกระหว่างการฝึกโมเดลซึ่งอาจเป็นพร็อกซีสําหรับการประเมินออฟไลน์ และ/หรือชุดย่อยของข้อมูลที่ใช้ในการประเมินออฟไลน์ การประเมินเป็นระยะๆ เป็นตัวเลือกที่ใช้งานได้จริงและประหยัดค่าใช้จ่ายที่สุด แต่อาจไม่ได้แสดงถึงสภาพแวดล้อมการผลิตทั้งหมด พยายามใช้พร็อกซีที่เร่งด่วนสําหรับการประเมินแบบออฟไลน์ โดยไม่สูญเสียความน่าเชื่อถือของสัญญาณที่ได้รับในระหว่างการฝึก
การตั้งค่าการประเมินเป็นระยะ
เราขอแนะนําให้ทําการประเมินเป็นระยะระหว่างการฝึกอบรมด้วยเหตุผลต่างๆ ดังนี้
- ตรวจสอบความคืบหน้าในการฝึกอบรมแบบเรียลไทม์
- เพื่ออํานวยความสะดวกในการเลือกจุดตรวจสอบโมเดลการเรียกคืน
- ตรวจสอบเส้นโค้งการฝึกอบรมในตอนท้ายของการฝึกอบรม
การกําหนดค่าที่ง่ายที่สุดคือทําทั้งการฝึกและการประเมินเป็นระยะในอินสแตนซ์ Compute เดียวกัน โดยสลับเป็นระยะระหว่างการฝึกกับการประเมิน ในกรณีนี้ ขนาดของแบทช์ที่ใช้ในการประเมินควรมีขนาดอย่างน้อยเท่ากับขนาดแบทช์ที่ใช้สําหรับการฝึก นั่นเป็นเพราะว่าคุณไม่ต้องรักษาการเปิดใช้งานโมเดลไว้ขณะประเมินผล ซึ่งจะทําให้ความต้องการด้านการคํานวณน้อยลงสําหรับตัวอย่าง
ทําการประเมินเป็นระยะๆ ตามช่วงก้าวปกติ ไม่ใช่ตามช่วงเวลา การประเมินตามช่วงเวลาอาจทําให้คุณตีความเส้นโค้งการฝึกอบรมได้ยากขึ้น โดยเฉพาะเมื่อการฝึกอาจได้รับผลกระทบจากงานที่เป็นการฝึก ปัญหาเวลาในการตอบสนองของเครือข่าย และอื่นๆ
ระยะเวลาในการตรวจสอบความถูกต้องและเมตริกการทดสอบ (เมื่อใช้ชุดการฝึกแบบสับเปลี่ยน ชุดการตรวจสอบ การแยกชุดทดสอบ) อาจบ่งบอกถึงข้อบกพร่องในการใช้งาน เช่น
- ทดสอบข้อมูลที่ทับซ้อนกันกับข้อมูลการฝึกอบรม
- การสับเปลี่ยนข้อมูลการฝึกไม่ถูกต้อง
การประเมินตามช่วงจังหวะเวลาปกติจะช่วยให้คุณตรวจพบปัญหาเหล่านี้ได้ง่ายขึ้น
แบตช์บางส่วนอาจเกิดขึ้นเมื่อชุดการประเมินไม่สามารถแบ่งย่อยตามขนาดกลุ่ม ตรวจสอบว่าตัวอย่างแบบ Padding ได้รับการถ่วงน้ําหนักอย่างถูกต้อง (เช่นเดียวกับค่าเฉลี่ยแบบถ่วงน้ําหนักเหนือตัวอย่างที่คํานวณการสูญเสียโดยเฉลี่ยในกลุ่ม) เพื่อป้องกันไม่ให้การให้น้ําหนักฟังก์ชันการทํางาน โดยปกติ คุณสามารถให้ตัวอย่างที่ไม่มีแผ่นซึ่งมีน้ําหนักเป็นศูนย์
บันทึกข้อมูลที่เพียงพอต่อการประเมินเพื่อสนับสนุนการวิเคราะห์แบบออฟไลน์ ตามหลักการแล้ว ให้บันทึกการคาดคะเนในการเลือกตัวอย่างของแต่ละรายการ เพราะอาจเป็นการดีบักการแก้ไขข้อบกพร่อง การสร้างอาร์ติแฟกต์ เช่น SavedModel ช่วยให้การตรวจสอบโมเดลเฉพาะกิจง่ายขึ้นหลังจากงานการประเมินเสร็จสิ้น
การเลือกตัวอย่างสําหรับการประเมินผลเป็นระยะๆ
งานการประเมินเป็นระยะๆ อาจไม่ทํางานเร็วพอที่จะคํานวณเมตริกจากการประเมินแบบออฟไลน์เต็มรูปแบบซึ่งมีระยะเวลาที่สมเหตุสมผล ปัญหานี้มักทําให้ต้องใช้ข้อมูลการสุ่มตัวอย่างเพื่อทําการประเมินเป็นระยะ เมื่อสร้างชุดข้อมูลตัวอย่าง ให้พิจารณาปัญหาเกี่ยวกับขนาดตัวอย่างและข้อกังวลพิเศษในชุดข้อมูลที่ไม่สมดุล
ขนาดตัวอย่าง
ตรวจสอบว่าประสิทธิภาพที่คํานวณบนชุดข้อมูลตัวอย่างที่ใช้โดยงานเป็นระยะๆ ตรงกับประสิทธิภาพในชุดการประเมินออฟไลน์ทั้งหมด คือ เพื่อให้แน่ใจว่าชุดข้อมูลตัวอย่างกับชุดข้อมูลแบบเต็มจะไม่มีการบิดเบือน
ชุดข้อมูลที่คุณใช้สําหรับการประเมินเป็นระยะควรเป็นข้อมูล 2 อย่างต่อไปนี้
- มีขนาดเล็กพอที่จะสร้างรูปแบบการคาดการณ์ทั้งหมดได้อย่างง่ายดาย
- ใหญ่พอที่จะทําทั้งสองอย่างต่อไปนี้
- วัดการปรับปรุงแบบจําลองได้อย่างแม่นยํา กล่าวคือ การวัดไม่ควรทําให้สับสนกับป้ายกํากับ
- จัดให้มีการประเมินผลดังกล่าวหลายครั้งในช่วงทดลองใช้ตามลําดับ และยังคงสร้างค่าประมาณที่แม่นยํา กล่าวคือ มีขนาดใหญ่พอที่จะหลีกเลี่ยง "การปรับ" ภาพให้เหมาะกับการตั้งค่าที่ตั้งไว้ในช่วงเวลาหนึ่งได้ โดยไม่ได้สื่อถึงชุดการทดสอบที่ระงับไว้ อย่างไรก็ตาม การพิจารณานี้ ค่อนข้างเป็นข้อกังวลในทางปฏิบัติ
ชุดข้อมูลที่ไม่สมดุล
สําหรับชุดข้อมูลที่ไม่สมดุล ประสิทธิภาพในคลาสของชนกลุ่มน้อยมักจะเสียงดัง สําหรับชุดข้อมูลที่มีตัวอย่างจํานวนเพียงเล็กน้อย ให้บันทึกจํานวนตัวอย่างที่คาดการณ์อย่างถูกต้องเพื่อรับข้อมูลเชิงลึกในการปรับปรุงความแม่นยําเพิ่มเติม ตัวอย่างเช่น การปรับปรุงความไว .05 ฟังดูน่าตื่นตาตื่นใจ แต่การปรับปรุงนี้เกิดจากตัวอย่างที่ถูกต้องเพียง 1 ตัวอย่างเท่านั้น
การบันทึกจุดตรวจสอบและเลือกจุดตรวจสอบย้อนหลังล่าสุด
สรุป: เรียกใช้การฝึกอบรมเป็นจํานวนขั้นตอนคงที่และเลือกจุดตรวจสอบที่ดีที่สุดจากช่วงนี้
เฟรมเวิร์กการเรียนรู้เชิงลึกส่วนใหญ่สนับสนุนการตรวจสอบประเด็น กล่าวคือ สถานะปัจจุบันของโมเดล จะถูกบันทึกลงในดิสก์เป็นระยะ การตรวจสอบจะช่วยให้งานการฝึกมีความยืดหยุ่นในการประมวลผลการขัดจังหวะอินสแตนซ์ จุดตรวจสอบที่ดีที่สุดมักจะไม่ใช่จุดตรวจสอบล่าสุด โดยเฉพาะเมื่อประสิทธิภาพชุดการตรวจสอบไม่เพิ่มขึ้นเมื่อเวลาผ่านไป แต่ความผันผวนของค่าหนึ่งๆ โดยเฉพาะ
ตั้งค่าไปป์ไลน์เพื่อติดตามจุดตรวจสอบที่ดีที่สุด N แห่งที่เห็นจนถึงปัจจุบันระหว่างการฝึกทํางาน ในตอนท้ายของการฝึก การเลือกโมเดล หมายถึงการเลือกจุดตรวจสอบที่ดีที่สุด เราเรียกวิธีนี้ว่าการเลือกจุดตรวจสอบย้อนหลังที่ดีที่สุด โดยปกติเราไม่จําเป็นต้องสนับสนุนการแสดงโฆษณาก่อนกําหนด เพราะคุณจะระบุงบประมาณทดลองใช้ล่วงหน้า และกําลังรักษาจุดตรวจสอบ N รายการที่ดีที่สุดจนถึงตอนนี้
การตั้งค่าการติดตามการทดสอบ
สรุป: เมื่อติดตามการทดลองที่ต่างกัน ให้ติดตามสิ่งสําคัญหลายอย่าง เช่น จุดตรวจสอบที่มีประสิทธิภาพดีที่สุดในการศึกษา และคําอธิบายโดยย่อของการศึกษา
เราขอแนะนําให้ติดตามผลการทดสอบในสเปรดชีต สเปรดชีตของเรามักมีคอลัมน์ต่อไปนี้
- ชื่อการศึกษา
- ลิงก์ไปยังทุกที่ที่เก็บการกําหนดค่าสําหรับการศึกษา
- หมายเหตุหรือคําอธิบายสั้นๆ ของการศึกษา
- จํานวนการทดลองใช้
- ประสิทธิภาพเกี่ยวกับชุดการตรวจสอบของจุดตรวจสอบที่ดีที่สุดในการศึกษา
- คําสั่งทํางานซ้ําหรือหมายเหตุเกี่ยวกับการเปลี่ยนแปลงที่ยังไม่ได้ส่งที่จําเป็นต่อการเริ่มต้นการฝึกใช้งาน
ค้นหาระบบการติดตามที่สะดวก ซึ่งจะรวบรวมข้อมูล ที่ระบุไว้ด้านบน การทดสอบที่ยังไม่ได้ติดตามก็ไม่มีอยู่จริงเช่นกัน
รายละเอียดการใช้งานการทําให้เป็นมาตรฐานเป็นชุด
สรุป: ในปัจจุบัน คุณสามารถแทนที่การทํามาตรฐานเป็นกลุ่มด้วย LayerNorm ได้ แต่ในกรณีที่คุณไม่สามารถแทนที่ได้ จะมีรายละเอียดหลอกเมื่อเปลี่ยนขนาดกลุ่มหรือจํานวนโฮสต์
การปรับให้เป็นแบตช์ก่อนจะปรับข้อมูลการเปิดใช้งานให้เป็นมาตรฐานโดยใช้ค่าเฉลี่ยและความแปรปรวนของกลุ่ม แต่ในการตั้งค่าอุปกรณ์หลายเครื่อง สถิติเหล่านี้ จะแตกต่างกันในแต่ละอุปกรณ์ เว้นแต่จะมีการซิงโครไนซ์อย่างชัดแจ้ง รายงานเล็กๆ น้อยๆ (ส่วนใหญ่ใน ImageNet) ระบุว่าการคํานวณสถิติที่เป็นมาตรฐานเหล่านี้โดยใช้ตัวอย่างประมาณ 64 ตัวอย่างจริงๆ จะให้ผลที่ดีกว่าในทางปฏิบัติ (ดูคําอธิบายของ Ghost Batch Normalization ในฝึกให้ยาวขึ้น ทําให้ข้อมูลโดยรวมดียิ่งขึ้น: ปิดช่องว่างของการสร้างแบบจําลองในการฝึกอบรมจํานวนมากเกี่ยวกับโครงข่ายระบบประสาทเทียม) การแยกขนาดกลุ่มทั้งหมดและจํานวนตัวอย่างที่ใช้ในการคํานวณสถิติกลุ่มบรรทัดมาตรฐานมีประโยชน์อย่างยิ่งสําหรับการเปรียบเทียบขนาดกลุ่ม
การใช้งานการปรับค่ามาตรฐานเป็นกลุ่ม Ghost ไม่ได้จัดการกรณีที่ขนาดกลุ่มต่ออุปกรณ์ใหญ่กว่าขนาดกลุ่มเสมือนเสมอไป ในกรณีนี้ คุณจะต้องสุ่มตัวอย่างกลุ่มย่อยในอุปกรณ์แต่ละเครื่องเพื่อดูจํานวนตัวอย่างสถิติมาตรฐานกลุ่มอย่างถูกต้อง
ค่าเฉลี่ยเคลื่อนที่แบบเอ็กซ์โพเนนเชียล (EMA) ที่ใช้ในการปรับมาตรฐานกลุ่มของโหมดทดสอบเป็นเพียงการรวมสถิติการฝึกอบรมแบบเชิงเส้น ดังนั้น คุณเพียงต้องซิงค์ EMA เหล่านี้ก่อนที่จะบันทึกไว้ในจุดตรวจสอบ อย่างไรก็ตาม การใช้งานกลุ่มมาตรฐานตามปกติจะไม่ซิงค์ข้อมูล EMA เหล่านี้และจะบันทึก EMA จากอุปกรณ์แรกเท่านั้น
ข้อควรพิจารณาสําหรับไปป์ไลน์แบบหลายโฮสต์
สรุป: สําหรับการบันทึก การสํารวจ RNG การตรวจสอบจุด และชาร์ดดิ้ง การฝึกอบรมแบบโฮสต์หลายโฮสต์ช่วยให้แนะนําข้อบกพร่องได้ง่ายมาก
ดําเนินการดังต่อไปนี้กับไปป์ไลน์แบบหลายโฮสต์
- ตรวจสอบว่าไปป์ไลน์มีการบันทึกและเช็คเอาท์ในโฮสต์เดียวเท่านั้น
- ซิงค์ข้อมูลสถิติการทําให้เป็นมาตรฐานแบบกลุ่มในโฮสต์ต่างๆ ก่อนประเมินหรือตรวจสอบ
- ชาร์ดไฟล์ข้อมูลจากโฮสต์ต่างๆ เนื่องจากมักจะปรับปรุงประสิทธิภาพ
วิกฤติ: ตรวจสอบว่าคุณมีเมล็ด RNG ที่เหมือนกันในโฮสต์ต่างๆ (สําหรับการเริ่มต้นโมเดล) และเมล็ดพันธุ์ที่แตกต่างกันในโฮสต์ (สําหรับสับเปลี่ยน/ประมวลผลข้อมูลล่วงหน้า) ดังนั้น อย่าลืมทําเครื่องหมาย ให้เหมาะสม