2 poin oleh GN⁺ 2024-04-25 | 1 komentar | Bagikan ke WhatsApp
  • CoreNet adalah toolkit yang memungkinkan peneliti dan engineer melatih model jaringan neural untuk berbagai tugas, mulai dari foundation model seperti CLIP dan LLM hingga klasifikasi objek, deteksi objek, dan segmentasi semantik
  • Pada Oktober 2024, CoreNet 0.1.1 menyertakan KV Prediction sebagai proyek baru, dengan riset terkait yang bertujuan meningkatkan Time to First Token
  • Sejumlah riset Apple menggunakan CoreNet, dan folder projects/ menyediakan resep pelatihan/evaluasi beserta tautan ke model pralatih
  • Model dan dataset disusun dalam direktori per tugas, dan kelas model dihubungkan ke pelatihan/evaluasi melalui dekorator @MODEL_REGISTRY.register serta nilai models.<task_name>.name pada konfigurasi YAML
  • CoreNet berkembang dari CVNets dan mencakup aplikasi yang lebih luas di luar computer vision, memperluas cakupannya hingga pelatihan foundation model termasuk LLM

Tujuan dan cakupan CoreNet

  • CoreNet adalah toolkit jaringan neural mendalam untuk melatih model standar serta model kecil dan besar yang baru
  • Cakupan tugas yang didukung mencakup:
    • Foundation model: CLIP, LLM
    • Klasifikasi objek
    • Deteksi objek
    • Segmentasi semantik

Pembaruan Oktober 2024

Riset Apple dan resep proyek

Instalasi dan persyaratan eksekusi

  • Untuk pengujian, menjalankan notebook Jupyter, dan berkontribusi, Git LFS perlu dipasang dan diaktifkan
  • Di Linux, disarankan menggunakan Python 3.10+ dan PyTorch v2.1.0 atau lebih baru
  • Di macOS, Python 3.9+ bawaan sistem disebut sudah cukup
  • Dependensi opsional untuk pemrosesan audio dan video adalah sebagai berikut:
    • Linux: libsox-dev, ffmpeg
    • macOS: sox, ffmpeg
  • Karena sistem file macOS tidak membedakan huruf besar-kecil, hal ini dapat menimbulkan masalah di Git; karena itu, repositori harus diakses dengan path yang huruf besar-kecilnya sama seperti yang terlihat di ls

Struktur repositori dan alur penggunaan

  • tutorials/ menyediakan contoh untuk memulai dengan CoreNet
    • Melatih model baru pada dataset baru
    • Panduan Slurm dan pelatihan multi-node
    • Notebook untuk CLIP, segmentasi semantik, dan deteksi objek
  • projects/ menyediakan resep pelatihan yang dapat direproduksi per makalah serta bobot pralatih dan checkpoint
    • README.md masing-masing proyek menyediakan dokumentasi, tautan bobot pralatih, dan informasi sitasi
    • <task_name>/<model_name>.yaml menyediakan konfigurasi untuk mereproduksi pelatihan dan evaluasi
    • Contoh proyek meliputi kv-prediction, byteformer, catlip, clip, fastvit, mobileone, mobilevit, openelm, resnet, vit, dan lainnya
  • mlx_examples/ menyediakan contoh MLX untuk menjalankan model CoreNet secara efisien di Apple Silicon
    • Contoh yang disertakan adalah clip, open_elm

Model, dataset, dan komponen

  • Implementasi model disusun berdasarkan tugas di bawah corenet/modeling/models
    • audio_classification
    • classification
    • detection
    • language_modeling
    • multi_modal_img_text
    • segmentation
  • Setiap kelas model didaftarkan dengan dekorator @MODEL_REGISTRY.register(name="<model_name>", type="<task_name>")
  • Untuk menggunakan model dalam pelatihan atau evaluasi CoreNet, tetapkan models.<task_name>.name = <model_name> pada konfigurasi YAML
  • Dataset juga diklasifikasikan ke dalam direktori per tugas, sama seperti model
  • Komponen internal utama mencakup:
    • loss_fn, metrics, optims, scheduler
    • train_eval_pipelines
    • collate_fns, sampler, text_tokenizer, transforms, video_reader
    • layers, modules, neural_augmentor, text_encoders

Hubungan dengan CVNets

  • CoreNet adalah proyek yang berkembang dari CVNets
  • Cakupan yang diperluas mencakup aplikasi yang lebih luas di luar computer vision
  • Perluasan ini memungkinkan pelatihan foundation model, termasuk LLM
  • Saat menggunakan CoreNet, README meminta sitasi makalah CVNets: High Performance Library for Computer Vision

1 komentar

 
GN⁺ 2024-04-25
Komentar Hacker News
  • CoreNet tampaknya berkembang dari CVNets untuk menangani penggunaan yang lebih luas di luar computer vision, dan kini juga memungkinkan pelatihan model fondasi seperti LLM
    Titik awalnya mungkin ada di sini: https://apple.github.io/ml-cvnets/index.html
    Ini terlihat seperti implementasi lapisan perantara untuk pelatihan dan inferensi, dan jika melihat default_trainer.py[1], mesinnya menggunakan Tensor dari torch tetapi metode pelatihannya diimplementasikan sendiri. Scheduler learning rate dan optimizer juga diimplementasikan sendiri, meski pemanggil bisa memilih untuk memakai Adam dari torch
    Pilihan untuk membangun dari bawah alih-alih bekerja sama dengan framework yang sudah ada demi dukungan kelas satu itu menarik, dan mungkin merupakan pilihan yang sangat khas Apple
    Contoh MLX untuk saat ini tampaknya hanya untuk inferensi. Namun, itu juga terlihat seperti titik pendaratan untuk implementasi khusus MLX di masa depan: https://github.com/apple/corenet/blob/5b50eca42bc97f6146b812...
    Jika juga mempertimbangkan akuisisi terbaru mereka atas Datakalab https://news.ycombinator.com/item?id=40114350 dan DarwinAI https://news.ycombinator.com/item?id=39709835, akan menarik melihat bagaimana mereka mengejar ketertinggalan dalam satu tahun ke depan
    1: https://github.com/apple/corenet/blob/main/corenet/engine/de...

    • Antarmukanya juga terlihat cukup khas Apple. Strukturnya tampak memberi antarmuka sederhana: buat file konfigurasi, lalu masukkan model dan hyperparameter yang memang sudah ada dalam pikiran
      Saya penasaran seberapa berguna ini bagi peneliti yang ingin membongkar-pasang arsitektur model sesuka hati
      Contoh: https://github.com/apple/corenet/tree/main/projects/clip#tra...
    • Pernyataan tentang proyeknya benar, tetapi PyTorch berjalan di Mac dan TensorFlow juga sudah di-port Apple ke Mac
    • Soal pernyataan bahwa ini tampak seperti implementasi lapisan perantara untuk pelatihan dan inferensi, saya tidak terlalu paham bidang ini dan jadi penasaran seperti apa sebenarnya implementasi pelatihan modern
      Kebanyakan model tidak merilis source code pelatihan, dataset, preprocessing, maupun kode evaluasi. Kalau begitu, apakah bentuk implementasi tingkat tinggi semacam ini memang diketahui?
    • Sulit dibilang benar-benar implementasi sendiri, karena optimizer-nya hanya mewarisi optimizer PyTorch
    • Pilihan untuk membangun dari bawah alih-alih bekerja sama dengan framework yang ada demi dukungan kelas satu terasa agak terburu-buru menjelang WWDC
      Apple tampak cukup tertinggal di AI dan sekarang sedang berusaha mengejar
  • Menarik bahwa Apple juga aktif mengembangkan https://github.com/apple/axlearn, yaitu library di atas Jax
    Sepertinya setengah tim machine learning Apple memakai PyTorch, dan setengah lainnya memakai Jax. Mungkin juga mereka terbagi antara Google Cloud dan AWS

    • Di perusahaan besar seperti Apple, hal seperti ini cukup umum. Biaya koordinasi memang besar
      Jika tidak ada alasan kuat untuk menstandarkan pada satu alat, biasanya lebih mudah membiarkan tim memilih alat yang sesuai dengan masalah yang mereka kerjakan dan pengalaman tim tersebut
    • Saya belum pernah bekerja langsung di sana, tetapi saya selalu mendengar bahwa Apple lebih mirip kumpulan banyak perusahaan atau startup daripada satu organisasi yang konsisten seperti Meta
      Setahu saya, tiap organisasi punya otonomi yang cukup besar
  • README juga memuat ini:
    CatLIP: CLIP-level Visual Recognition Accuracy with 2.7x Faster Pre-training on Web-scale Image-Text Data
    Saya baru pertama kali mendengar CatLIP, dan tautannya tampaknya rusak

  • Dibangun di atas PyTorch

  • Saya penasaran bagaimana perbandingannya dengan MLX. Dari yang saya pahami, MLX setara dengan PyTorch tetapi dioptimalkan untuk Apple Silicon
    Apakah ini untuk melatih model MLX secara terdistribusi? Atau sebenarnya apa tujuannya?

    • MLX juga tampak menjadi bagian dari rencana ini. https://github.com/apple/corenet mencantumkan MLX examples sebagai salah satu komponen yang dirilis pada April
    • Seperti tertulis di mlx_examples/open_elm, “MLX is an Apple deep learning framework similar in spirit to PyTorch, which is optimized for Apple Silicon based hardware.”
    • Jika melihat sekilas README, ini tampak seperti lapisan di atas MLX. Rasanya lebih dekat ke lapisan framework yang mempermudah machine learning
  • Dibandingkan dengan memasang backend MPS pada Huggingface Transformers, saya penasaran apa kelebihan menggunakan ini

    • “Contoh MLX menunjukkan cara menjalankan model CoreNet secara efisien di Apple Silicon. Silakan lihat informasi lebih lanjut di file README.md dalam direktori contoh terkait.”
      mlx_example/clip adalah contoh yang mengonversi implementasi model CLIP milik CoreNet ke contoh CLIP milik MLX dan menambahkan beberapa penyesuaian khusus.
      Varian FP16 Base: peningkatan kecepatan 60% dibanding PyTorch
      Varian FP16 Huge: peningkatan kecepatan 12%
      mlx_example/open_elm adalah port MLX dari model OpenELM yang dilatih dengan CoreNet. MLX adalah framework deep learning Apple yang sifatnya mirip PyTorch dan dioptimalkan untuk perangkat keras berbasis Apple Silicon.
      Keunggulannya tampaknya adalah adanya peningkatan kecepatan tambahan berkat optimasi khusus Apple Silicon. Untuk model kecil, ini mungkin bisa menjadi framework pelatihan deep neural network yang paling hemat daya, tetapi itu baru bisa dipastikan setelah ada benchmark nyata
    • Implementasi di sini terlihat cukup rapi dan modular, sedangkan Transformers dan Diffusers tidak seperti itu kecuali hanya memakai modul-modulnya secara terpisah.
      Repositori ini punya banyak utilitas yang praktis, serta implementasi yang cukup rapi untuk model umum dan metrik evaluasi.
      Dengan kata lain, ini tampaknya lebih cocok untuk menulis model baru daripada untuk inferensi
    • Tidak ada yang terlalu istimewa; pada dasarnya ini adalah PyTorch berlogo Apple
  • Akan bagus kalau ada agen LLM yang bisa secara andal membuat contoh API kecil untuk berbagai model dan pola penggunaan di repositori seperti ini

  • Saya penasaran apakah ini mendukung pelatihan di Apple Silicon. Kalau saya tidak melewatkannya di README, hal itu tidak terlalu jelas

    • Saya tidak yakin kemampuan pelatihan seperti itu akan berguna selain untuk eksperimen skala kecil. Apple sudah tidak lagi membuat produk server, dan bahkan saat masih membuatnya pun harganya mahal.
      Kecuali jika Anda punya server privat berbasis Apple Silicon untuk keperluan pelatihan sendiri
    • Contoh MLX tampaknya memungkinkan hal itu. Ini terlihat lebih seperti framework serbaguna daripada sesuatu yang khusus untuk Mac
  • Setelah melihat-lihat foldernya, tampaknya ada banyak kelas yang hanya mewarisi kelas PyTorch dan torchvision tanpa melakukan hal baru.
    Semua optimizer, scheduler, dan sebagian besar layer tampaknya seperti itu. Namun ada cukup banyak blok yang merupakan kombinasi layer dari berbagai paper, mirip dengan monai.networks.blocks.
    Dari sisi “komponen”, ada juga beberapa fungsi loss dan metrik evaluasi yang diimplementasikan sendiri

  • Saya penasaran library apa yang direkomendasikan untuk pelatihan dan inferensi neural network di Apple M1. Saya ingin memakainya dari C++ atau Rust, dan neural network-nya kemungkinan sekitar maksimal 5 juta parameter

    • Sebagai titik awal, saya akan memakai PyTorch. Di Apple Silicon, backend Metal cukup cepat, dan ini adalah library yang paling luas dipakai mulai dari pengembang hobi sampai pengembang model dasar