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

ส่วนนี้จะอธิบายรายละเอียดไปป์ไลน์การฝึก

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

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

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

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

สาเหตุที่พบบ่อยของไปป์ไลน์ที่ขึ้นอยู่กับอินพุตมีดังนี้

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

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

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

สรุป: เรียกใช้การประเมินที่ขนาดกลุ่มใหญ่กว่าการฝึก เรียกใช้การประเมิน ในช่วงขั้นตอนปกติ ไม่ใช่ช่วงเวลาปกติ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การทําให้เป็นมาตรฐานแบบกลุ่มจะทําให้การเปิดใช้งานเป็นมาตรฐานโดยใช้ค่าเฉลี่ยและความแปรปรวน ในกลุ่มปัจจุบัน อย่างไรก็ตาม ในการตั้งค่าแบบหลายอุปกรณ์ สถิติเหล่านี้จะแตกต่างกันในแต่ละอุปกรณ์ เว้นแต่จะมีการซิงค์อย่างชัดเจน รายงานแบบบอกเล่า (ส่วนใหญ่ใน ImageNet) ระบุว่าการคำนวณสถิติการทําให้เป็นปกติเหล่านี้โดยใช้ตัวอย่างเพียงประมาณ 64 รายการทํางานได้ดีกว่าในทางปฏิบัติ (ดูคำอธิบายของการทำ Normalization แบบ Ghost Batch ใน Train longer, generalize better: closing the generalization gap in large batch training of neural networks) การแยกขนาดกลุ่มทั้งหมดและจำนวนตัวอย่างที่ใช้ในการ คำนวณสถิติการจัดกลุ่มปกติมีประโยชน์อย่างยิ่งสำหรับการเปรียบเทียบขนาดกลุ่ม

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

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

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

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

ทำดังนี้สำหรับไปป์ไลน์แบบหลายโฮสต์

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

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