ไลบรารี Python

10 ไลบรารี Python ที่ดีที่สุดสำหรับการเรียนรู้เชิงลึก

mm
เพิ่ม Unite.AI ลงในแหล่งข้อมูลที่คุณต้องการบน Google

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

เราได้ประเมินไลบรารีทั้ง 10 รายการอย่างเป็นอิสระ โดยพิจารณาจากเอกสารทางการฉบับปัจจุบัน ความเหมาะสมกับเวิร์กโฟลว์ ข้อกำหนดด้านการผสานรวม และข้อจำกัดในการใช้งานจริง ณ เดือนตุลาคม 2026 PyTorch ยังคงเป็นตัวเลือกแรกของเราสำหรับการใช้งานทั่วไป ส่วน Keras มีอินเทอร์เฟซที่รองรับแบ็กเอนด์หลายแบบและใช้งานได้สะดวก ขณะที่ Transformers เป็นจุดเริ่มต้นที่ดีสำหรับโมเดลพื้นฐานที่ฝึกไว้ล่วงหน้า การจัดอันดับนี้เป็นการประเมินเชิงบรรณาธิการ ไม่ใช่ผลการทดสอบความเร็วหรือความแม่นยำจากการทดลองใช้งานจริงครั้งใหม่

เครื่องมือหลายรายการในลิสต์นี้ออกแบบมาให้ทำงานร่วมกันได้ Lightning และ fastai ต่อยอดจาก PyTorch ส่วน Flax ต่อยอดจาก JAX และ Keras ใช้แบ็กเอนด์สำหรับประมวลผลได้มากกว่าหนึ่งแบบ เป้าหมายคือการเลือกชุดเครื่องมือที่ทำงานร่วมกันได้อย่างลงตัว แทนที่จะติดตั้งไลบรารีที่ติดอันดับสูงทุกรายการ

เปรียบเทียบไลบรารี Python ที่ดีที่สุดสำหรับการเรียนรู้เชิงลึก

เครื่องมือ AIเหมาะที่สุดสำหรับฟีเจอร์
PyTorchการเรียนรู้เชิงลึกสำหรับงานทั่วไปและการสร้างโมเดลแบบกำหนดเองเทนเซอร์; การหาอนุพันธ์อัตโนมัติ; โครงข่ายประสาทเทียม; การคอมไพล์; การฝึกแบบกระจาย
Kerasสร้างโมเดลได้สะดวกบนแบ็กเอนด์หลายแบบAPI ระดับสูงสำหรับการฝึก; แบ็กเอนด์ TensorFlow, JAX และ PyTorch; การดำเนินการที่พกพาไปใช้ได้
Transformersการใช้งานและปรับแต่งโมเดลพื้นฐานที่ฝึกไว้ล่วงหน้าคำจำกัดความของโมเดล; ตัวตัดคำและตัวประมวลผล; การสร้างเนื้อหา; อินเทอร์เฟซสำหรับการฝึก
JAXงานวิจัยด้านการคำนวณเชิงตัวเลขและการแปลงโปรแกรมที่นำมาประกอบใช้ร่วมกันได้การคำนวณอาร์เรย์; การหาอนุพันธ์; การคอมไพล์; การทำเวกเตอร์; การแบ่งข้อมูล
TensorFlowแอปพลิเคชัน TensorFlow ที่ใช้งานมานานและไปป์ไลน์สำหรับการนำไปใช้งานการดำเนินการกับเทนเซอร์; การหาอนุพันธ์อัตโนมัติ; ไปป์ไลน์ข้อมูล; การฝึกแบบกระจาย; การส่งออก
PyTorch Lightningจัดระเบียบเวิร์กโฟลว์การฝึก PyTorch ให้ทำซ้ำได้LightningModule; Trainer; ความละเอียดของตัวเลข; จุดตรวจสอบ; กลยุทธ์การประมวลผลแบบกระจาย
Flaxสร้างโครงข่ายประสาทเทียมบน JAXโมดูล NNX; สถานะของโมเดล; การแปลง JAX; แนวทางการย้ายจาก Linen
Diffusersเวิร์กโฟลว์สำหรับสร้างภาพ วิดีโอ และเสียงไปป์ไลน์ที่ฝึกไว้ล่วงหน้า; องค์ประกอบแบบโมดูลาร์; อะแดปเตอร์; การเพิ่มประสิทธิภาพการฝึกและการอนุมาน
DeepSpeedการฝึกโมเดลแบบกระจายภายใต้ข้อจำกัดด้านหน่วยความจำระดับของ ZeRO; การแบ่งพาร์ติชันสถานะ; การถ่ายโอนข้อมูลออก; การประมวลผลโมเดลขนาดใหญ่
fastaiเรียนรู้และสร้างค่าฐานสำหรับการเรียนรู้เชิงลึกที่นำไปใช้ได้จริงAPI ระดับสูงของ PyTorch; บล็อกข้อมูล; คอลแบ็ก; องค์ประกอบการฝึกที่ปรับใช้ได้

1. PyTorch

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

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

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

ข้อดีและข้อเสีย

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

ดู PyTorch เพิ่มเติม

2. Keras

Keras สมควรมีหัวข้อแยกเป็นของตัวเอง เพราะ Keras ในปัจจุบันไม่ใช่แค่ชื่อเรียกอีกชื่อหนึ่งของอินเทอร์เฟซสำหรับสร้างโมเดลของ TensorFlow เท่านั้น Keras 3 รองรับแบ็กเอนด์ TensorFlow, JAX และ PyTorch พร้อมแนวทางระดับสูงสำหรับการจัดการเลเยอร์ โมเดล การฝึก และการซีเรียลไลซ์ นับเป็นตัวเลือกที่เหมาะอย่างยิ่งสำหรับนักพัฒนาที่ต้องการนิยามโมเดลที่อ่านเข้าใจง่ายและอินเทอร์เฟซการฝึกที่สม่ำเสมอ โดยไม่ต้องเขียนลูปทุกชุดด้วยตนเอง

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

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

ข้อดีและข้อเสีย

  • API สำหรับสร้างและฝึกโมเดลที่กระชับ
  • รองรับแบ็กเอนด์สำหรับการฝึกหลายแบบ
  • การดำเนินการที่ไม่ขึ้นกับแบ็กเอนด์ช่วยให้พกพาข้ามแพลตฟอร์มได้ดีขึ้น
  • โค้ดที่เขียนขึ้นเองและผูกกับแบ็กเอนด์เฉพาะทำให้พกพาข้ามแพลตฟอร์มได้ยากขึ้น
  • ความสามารถและพฤติกรรมด้านตัวเลขแตกต่างกันไปตามแบ็กเอนด์

สำรวจ Keras

3. Transformers

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

การแก้ไขข้อมูลสำคัญด้านความเข้ากันได้คือ Transformers v5 โดย Hugging Face มุ่งเน้นการใช้ PyTorch เป็นแบ็กเอนด์ และยุติการรองรับ TensorFlow และ Flax ที่เคยมีมาก่อน ตัวอย่างเก่าที่นำเข้าคลาสโมเดลเฉพาะของ TensorFlow ไม่ควรถูกคาดหมายว่าจะใช้ได้กับการติดตั้งเวอร์ชันปัจจุบัน งานด้านความเข้ากันได้ในส่วนอื่นของระบบนิเวศ JAX เป็นคนละเรื่องกับการคงแบ็กเอนด์รุ่นเก่าเหล่านั้นไว้ในตัว Transformers เอง

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

ข้อดีและข้อเสีย

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

สำรวจ Transformers

4. JAX

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

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

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

ข้อดีและข้อเสีย

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

สำรวจ JAX

5. TensorFlow

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

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

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

ข้อดีและข้อเสีย

  • เหมาะกับโครงสร้างพื้นฐาน TensorFlow ที่ใช้งานอยู่แล้ว
  • มีเครื่องมือด้านการคำนวณเชิงตัวเลขและการประมวลผลข้อมูลในตัว
  • เวิร์กโฟลว์การฝึกและส่งออกที่ผ่านการพัฒนามาอย่างดี
  • ความเข้ากันได้กับระบบนำไปใช้งานขึ้นอยู่กับโมเดล
  • ต้องคำนึงถึงความแตกต่างระหว่างเวอร์ชันของ Keras และ TensorFlow

สำรวจ TensorFlow

6. PyTorch Lightning

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

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

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

ข้อดีและข้อเสีย

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

สำรวจ PyTorch Lightning

7. Flax

Flax มีส่วนประกอบพื้นฐานสำหรับสร้างโครงข่ายประสาทเทียมในระบบนิเวศ JAX เอกสารปัจจุบันเน้นที่ NNX ซึ่งช่วยให้นักพัฒนาเขียนโมเดลโดยใช้วัตถุ Python ทั่วไป พร้อมยังเข้าถึงการแปลงของ JAX ได้ เป็นตัวเลือกที่เหมาะอย่างยิ่งสำหรับทีมที่ต้องการใช้ JAX ในการคำนวณ แต่ก็ต้องการวิธีจัดระเบียบเลเยอร์ พารามิเตอร์ และสถานะอื่น ๆ ของโมเดลอย่างเป็นระบบ

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

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

ข้อดีและข้อเสีย

  • มีโครงสร้างโครงข่ายประสาทเทียมสำหรับโปรเจ็กต์ JAX
  • NNX รองรับรูปแบบการใช้งานวัตถุ Python ที่คุ้นเคย
  • จัดระเบียบสถานะของโมเดลอย่างชัดเจน
  • ยังจำเป็นต้องมีความรู้เกี่ยวกับ JAX
  • ตัวอย่างของ NNX และ Linen ใช้แทนกันไม่ได้

ดู Flax

8. Diffusers

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

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

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

ข้อดีและข้อเสีย

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

ดู Diffusers

9. DeepSpeed

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

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

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

ข้อดีและข้อเสีย

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

ดู DeepSpeed

10. fastai

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

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

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

ข้อดีและข้อเสีย

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

สำรวจ fastai

การเปลี่ยนแปลงด้านความเข้ากันได้ที่สำคัญ

Transformers v5: ประกาศ v5 อย่างเป็นทางการ ของ Hugging Face ระบุว่าจะยุติการรองรับแบ็กเอนด์ TensorFlow และ Flax รุ่นก่อนหน้า แล้วหันมาใช้ PyTorch แทน โปรดตรวจสอบคำแนะนำในการย้ายระบบก่อนอัปเกรดแอปพลิเคชันที่สร้างขึ้นโดยอิงกับคลาสเฉพาะของแบ็กเอนด์รุ่นเก่า การเปลี่ยนแปลงนี้ไม่ได้หมายความว่า JAX หรือ TensorFlow จะยุติการให้บริการ

Keras รองรับหลายแบ็กเอนด์: เอกสารประกอบ Keras 3 อธิบายแบ็กเอนด์สำหรับฝึกโมเดล ได้แก่ TensorFlow, JAX และ PyTorch รวมถึงแบ็กเอนด์ OpenVINO ที่รองรับเฉพาะการอนุมาน การพกพาโมเดลข้ามแบ็กเอนด์ขึ้นอยู่กับการใช้งานที่เข้ากันได้และคอมโพเนนต์ที่กำหนดเอง จึงควรตรวจสอบกับโมเดลจริง

Flax มี API ที่แตกต่างกัน: เอกสารประกอบ Flax แนะนำ NNX สำหรับผู้ใช้ใหม่ แต่ยังคงรองรับ Linen ด้วย ควรเลือกตัวอย่างโค้ดให้ตรงกับ API ที่โปรเจ็กต์ของคุณใช้ แทนการนำโค้ดจากบทแนะนำที่เข้ากันไม่ได้มาผสมกัน

วิธีเลือกและประเมินชุดเครื่องมือสำหรับการเรียนรู้เชิงลึก

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

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

ควรเลือกไลบรารีการเรียนรู้เชิงลึกตัวใด

เริ่มด้วย PyTorch หากต้องการความยืดหยุ่นในการพัฒนาโมเดลอย่างกว้างขวาง ใช้ Keras หากต้องการอินเทอร์เฟซแบบหลายแบ็กเอนด์ที่กระชับ หรือเลือก Transformers เมื่อโมเดลพื้นฐานที่ฝึกไว้ล่วงหน้าเป็นหัวใจสำคัญของงาน เลือก JAX ร่วมกับ Flax เมื่อการแปลงของ JAX และการพัฒนาโครงข่ายประสาทเทียมเหมาะกับโจทย์วิจัย ให้ TensorFlow เป็นตัวเลือกหลักเมื่อโมเดลและโครงสร้างพื้นฐานสำหรับนำไปใช้งานที่มีอยู่ทำให้เป็นตัวเลือกที่ใช้งานได้จริงที่สุด

เพิ่ม PyTorch Lightning เมื่อจำเป็นต้องจัดระเบียบโครงสร้างพื้นฐานสำหรับการฝึกโมเดลที่ต้องทำซ้ำ ใช้ Diffusers สำหรับไปป์ไลน์สื่อสร้างสรรค์ และเลือก DeepSpeed เมื่อข้อจำกัดด้านหน่วยความจำหรือการฝึกแบบกระจายที่วัดได้ทำให้จำเป็นต้องใช้ ใช้ fastai เพื่อเรียนรู้และสร้างโมเดลพื้นฐานที่มีประโยชน์ได้อย่างรวดเร็ว ชุดเครื่องมือที่เล็กกว่าและเข้าใจได้ชัดเจนตรวจสอบและบำรุงรักษาได้ง่ายกว่าการใช้ชุดแนวคิดเชิงนามธรรมที่ทับซ้อนกันหลายชุด

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