CoreNet: ไลบรารีสำหรับการฝึกโครงข่ายประสาทเทียมเชิงลึก
(github.com/apple)แนะนำ CoreNet เฟรมเวิร์กดีปเลิร์นนิงที่พัฒนาโดย Apple
- CoreNet เป็นเฟรมเวิร์กดีปเลิร์นนิงที่พัฒนาโดย Apple ซึ่งสามารถใช้ฝึกโมเดลขนาดใหญ่ทั้งแบบมาตรฐานและแบบใหม่สำหรับงานที่หลากหลาย
- รองรับงานอย่าง Foundation Model (CLIP, LLM), การจัดประเภทวัตถุ, การตรวจจับวัตถุ, Semantic Segmentation เป็นต้น
- เวอร์ชัน v0.1.0 ที่อัปเดตล่าสุดมี OpenELM, CatLIP, ตัวอย่าง MLX และอื่น ๆ รวมอยู่ด้วย
ผลงานวิจัยของ Apple ที่ใช้ CoreNet
- OpenELM: Language Model แบบมีประสิทธิภาพและโอเพนซอร์ส ที่สามารถฝึก/ทำอนุมานได้
- CatLIP: บรรลุประสิทธิภาพระดับ CLIP ด้วยการ pretrain เร็วขึ้น 2.7 เท่า โดยใช้ข้อมูลภาพ-ข้อความระดับ Web-scale
- FastVit: Vision Transformer แบบไฮบริดความเร็วสูงที่ใช้การ reparameterization เชิงโครงสร้าง
- Bytes Are All You Need: Transformer ที่ทำงานกับข้อมูลระดับไบต์ของไฟล์โดยตรง
- MobileOne: โครงข่าย backbone สำหรับมือถือที่มี latency 1ms
- RangeAugment: เทคนิค Online Augmentation ที่มีประสิทธิภาพโดยใช้ Range Learning
- MobileViT: Vision Transformer น้ำหนักเบาที่เหมาะกับอุปกรณ์พกพา
- รวมถึงผลงานวิจัยอื่น ๆ อีกจำนวนมาก
การติดตั้งและการตั้งค่าสภาพแวดล้อมพัฒนา
- ต้องติดตั้ง Git LFS (จำเป็นสำหรับการทดสอบ การรัน Jupyter Notebook และการมีส่วนร่วมพัฒนา)
- บน Linux แนะนำ Python 3.10+ และ PyTorch v2.1.0+
- บน macOS ใช้ Python 3.9+ ก็เพียงพอ
- แพ็กเกจ dependency แบบเลือกติดตั้งจำเป็นเมื่อร่วมพัฒนาหรือรันทดสอบ
- มีคำอธิบายวิธีติดตั้งอย่างละเอียดสำหรับ Linux, macOS รวมถึงวิธีติดตั้งแพ็กเกจสำหรับประมวลผลเสียง/วิดีโอ
โครงสร้างไดเรกทอรีของ CoreNet
tutorials: ตัวอย่างสำหรับผู้เริ่มต้น- ฝึกโมเดลตั้งแต่ต้นด้วยชุดข้อมูลใหม่
- คู่มือการฝึกด้วย SLURM และแบบหลายโหนด
- ตัวอย่าง CLIP, Semantic Segmentation, Object Detection
projects: มี recipe การฝึกสำหรับแต่ละงาน พร้อมน้ำหนักที่ pretrain แล้วและ checkpoint- มีเอกสารใน
README.mdพร้อมลิงก์น้ำหนักที่ pretrain แล้วและข้อมูลการอ้างอิง - มีไฟล์
<task_name>/<model_name>.yamlสำหรับการตั้งค่าฝึก/ประเมินผลที่ทำซ้ำได้
- มีเอกสารใน
mlx_example: ตัวอย่างการรันโมเดล CoreNet อย่างมีประสิทธิภาพบน Apple Siliconcorenet/modeling/models: โค้ด implementation ของโมเดลที่จัดตามประเภทงาน- ใช้ decorator เพื่อกำหนดชื่องานและชื่อโมเดล
- อธิบายวิธีกำหนดคลาสโมเดลที่จะใช้จากไฟล์ตั้งค่า YAML
corenet/data/datasets: ชุดข้อมูลที่จัดตามประเภทงาน- คำอธิบายไดเรกทอรี implementation ของคลาสอื่น ๆ ที่ถูกอ้างอิงจากการตั้งค่า YAML
- เช่น
loss_fn,metrics,optims,dataเป็นต้น
- เช่น
ข้อมูลโครงการ CoreNet
- Sachin เป็นผู้เริ่มพัฒนา และปัจจุบันดูแลโดย Sachin, Maxwell Horton, Mohammad Sekhavat และ Yanzi Jin
- ยินดีรับ Pull Request จากชุมชน โปรดดูเอกสารการมีส่วนร่วม
- CoreNet เป็นโครงการที่ต่อยอดมาจาก CVNets และขยายให้รองรับการฝึก Foundation Model เช่น LLM นอกเหนือจากงานด้าน Vision
ความเห็นของ GN⁺
-
CoreNet ดูเป็นเฟรมเวิร์กดีปเลิร์นนิงแบบครอบคลุมที่รองรับโมเดล SOTA รุ่นใหม่จำนวนมาก พร้อมทั้งมี implementation ของโมเดลและ pipeline การฝึก จึงน่าจะช่วยให้การทำซ้ำผลวิจัยเดิมทำได้ง่าย
-
ในฐานะที่เป็นเฟรมเวิร์กที่พัฒนาโดย Apple จึงน่าคาดหวังถึงการทำงานที่ปรับแต่งมาอย่างเหมาะสมบนอุปกรณ์ Apple Silicon โดยเฉพาะอย่างยิ่งจากตัวอย่าง MLX ที่ช่วยให้เห็นแนวทางการเพิ่มประสิทธิภาพบน Apple Silicon
-
จุดเด่นคือรองรับไม่เพียงงานด้านวิชัน แต่รวมถึงการฝึก Foundation Model อย่าง LLM ด้วย อย่างไรก็ตาม เวอร์ชันที่เปิดเผยในตอนนี้คือ 0.1.0 จึงดูเหมือนยังอยู่ในระยะเริ่มต้น ทำให้น่าสนใจว่าแผนอัปเดตและโรดแมปในอนาคตจะเป็นอย่างไร
-
การที่เป็นเฟรมเวิร์กบนพื้นฐาน PyTorch ทำให้น่าจะใช้ประโยชน์จากความสามารถหลากหลายของ ecosystem ของ PyTorch ได้ แต่จากโครงสร้างโครงการในปัจจุบัน การทำงานร่วมกับเฟรมเวิร์กอื่นอาจยังทำได้ยาก
-
น่าจะดีหากมีฟีเจอร์ export โมเดลผ่าน ONNX หรือ TorchScript รวมถึงอาจพิจารณาแนวทางเชื่อมต่อกับ ecosystem ของ Apple เช่น การแปลงเป็น CoreML สำหรับการพัฒนาแอป iOS และ macOS
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
default_trainer.pyของ CoreNet จะเห็นว่าใช้ Tensor ของ PyTorch แต่มีการอิมพลีเมนต์วิธีการฝึกของตัวเอง มีทั้ง LR scheduler และ optimizer ของตัวเอง และผู้เรียกใช้สามารถเลือกใช้ Adam ของ PyTorch ได้