2 คะแนน โดย GN⁺ 2024-04-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำ 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 Silicon
  • corenet/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 ความคิดเห็น

 
GN⁺ 2024-04-25
ความคิดเห็นบน Hacker News
  • CoreNet พัฒนาต่อยอดมาจาก CVNets และขยายขอบเขตให้ครอบคลุมแอปพลิเคชันที่กว้างกว่า computer vision ซึ่งช่วยให้การฝึก foundation model รวมถึง LLM ทำได้ง่ายขึ้น
  • เมื่อดู default_trainer.py ของ CoreNet จะเห็นว่าใช้ Tensor ของ PyTorch แต่มีการอิมพลีเมนต์วิธีการฝึกของตัวเอง มีทั้ง LR scheduler และ optimizer ของตัวเอง และผู้เรียกใช้สามารถเลือกใช้ Adam ของ PyTorch ได้
  • การเลือกสร้างขึ้นใหม่ตั้งแต่ต้นแทนที่จะทำงานร่วมกับเฟรมเวิร์กเดิมเป็นทางเลือกที่น่าสนใจ (และอาจจะเป็นสไตล์แบบ Apple มาก)
  • ดูเหมือนว่าตัวอย่าง MLX ตอนนี้จะทำได้แค่ inference และอาจกลายเป็นจุดลงจอดสำหรับอิมพลีเมนต์ที่เฉพาะทางกับ MLX ได้
  • เมื่อพิจารณาจากการเข้าซื้อกิจการ Datakalab และ DarwinAI เมื่อไม่นานมานี้ ก็น่าสนใจว่าจะเดินหน้าอย่างไรในอีก 1 ปีข้างหน้า
  • Apple ก็กำลังพัฒนาไลบรารี axlearn ที่สร้างบน Jax อย่างจริงจังด้วย ดูเหมือนว่าครึ่งหนึ่งของทีม ML ที่ Apple ใช้ PyTorch และอีกครึ่งใช้ Jax
  • ใน README ยังพูดถึงโมเดลใหม่ชื่อ CatLIP ด้วย แต่ลิงก์เสีย
  • CoreNet ถูกสร้างขึ้นบนพื้นฐานของ PyTorch
  • เข้าใจว่า MLX เทียบได้กับ PyTorch ที่ปรับให้เหมาะกับ Apple Silicon เลยสงสัยว่า CoreNet มีไว้เพื่อฝึกแบบกระจายสำหรับโมเดล MLX หรือจริง ๆ แล้วมีเป้าหมายอะไร
  • น่าจะดีถ้ามี LLM agent ในรีโปนี้ที่สามารถสร้างตัวอย่าง API ขนาดเล็กสำหรับโมเดลต่าง ๆ และวิธีใช้งานได้
  • ถ้าจะฝึกและทำ inference สำหรับโครงข่ายประสาทบน Apple M1 ควรแนะนำไลบรารีอะไร? อยากใช้จาก C++ หรือ Rust และโครงข่ายประสาทจะมีพารามิเตอร์สูงสุดประมาณ 5M
  • มีข้อดีอะไรในการใช้สิ่งนี้แทน Huggingface Transformers ที่ใช้ MPS backend?
  • ถ้าไม่ได้อ่าน README พลาดไป ก็ยังไม่ชัดเจนว่ารองรับการฝึกบน Apple Silicon หรือไม่
  • น่าสนใจที่ Apple กำลังผลักดันข้อมูลแบบเปิดเกี่ยวกับการฝึก LLM โลกกำลังเปลี่ยนไป