2P by neo 2달전 | favorite | 댓글 1개

Apple에서 개발한 딥러닝 프레임워크 CoreNet 소개

  • CoreNet은 Apple에서 개발한 딥러닝 프레임워크로, 표준적이거나 새로운 대규모 모델을 다양한 태스크에 훈련시킬 수 있음
    • Foundation Model (CLIP, LLM), 객체 분류, 객체 검출, Semantic Segmentation 등의 태스크 지원
  • 최근 업데이트된 v0.1.0에는 OpenELM, CatLIP, MLX 예제 등이 포함됨

CoreNet을 활용한 Apple의 연구 성과

  • OpenELM: 효율적이고 오픈소스로 학습/추론이 가능한 Language Model
  • CatLIP: Web-scale의 이미지-텍스트 데이터로 2.7배 빠른 사전학습으로 CLIP 수준의 성능 달성
  • FastVit: 구조적 재매개변수화를 활용한 빠른 하이브리드 Vision Transformer
  • Bytes Are All You Need: 파일의 바이트 단위로 직접 동작하는 Transformer
  • MobileOne: 1ms 지연의 모바일용 백본 네트워크
  • RangeAugment: Range Learning을 활용한 효율적인 Online Augmentation 기법
  • MobileViT: 모바일 친화적인 경량 Vision Transformer
  • 그 외 다수의 연구 성과 소개

설치 및 개발 환경 구성

  • Git LFS 설치 필요 (테스트, Jupyter Notebook 실행, 기여를 위해 필요)
  • Linux에서는 Python 3.10+, PyTorch v2.1.0+ 추천
  • macOS에서는 Python 3.9+로 충분
  • 선택적 종속성 패키지는 기여나 테스트 실행시 필요
  • 상세한 Linux, macOS 설치 방법 및 오디오/비디오 처리를 위한 패키지 설치 방법 설명

CoreNet의 디렉토리 구조

  • tutorials: 입문용 예제
    • 새로운 데이터셋으로 처음부터 모델 훈련하기
    • SLURM과 멀티 노드 훈련 가이드
    • CLIP, Semantic Segmentation, Object Detection 예제
  • projects: 각 태스크별 훈련 레시피와 사전 학습된 가중치 및 체크포인트 제공
    • README.md에 문서화, 사전학습 가중치 링크, 인용 정보 포함
    • <task_name>/<model_name>.yaml 파일로 재현 가능한 훈련/평가 설정 제공
  • mlx_example: Apple Silicon에서 효율적으로 CoreNet 모델 실행하는 예제
  • corenet/modeling/models: 태스크별로 구성된 모델 구현체
    • 데코레이터로 태스크 이름과 모델 이름 지정
    • YAML 설정 파일에서 사용할 모델 클래스 지정 방법 설명
  • corenet/data/datasets: 태스크별로 구성된 데이터셋
  • 기타 YAML 설정에서 참조되는 클래스 구현 디렉토리 설명
    • loss_fn, metrics, optims, data

CoreNet 프로젝트 정보

  • Sachin이 개발을 시작했고, 현재는 Sachin, Maxwell Horton, Mohammad Sekhavat, Yanzi Jin이 유지보수
  • 커뮤니티의 Pull Request 기여 환영. 기여 문서 참고.
  • CoreNet은 CVNets에서 발전된 프로젝트로, Vision 이외에 LLM 등의 Foundation Model 훈련을 지원하기 위해 확장됨

GN⁺의 의견

  • CoreNet은 최신 SOTA 모델들을 아우르는 포괄적인 딥러닝 프레임워크로 보임. SOTA 모델의 구현체 제공과 함께 학습 파이프라인까지 제공하여 기존 연구 결과 재현이 용이할 것으로 보임.

  • Apple에서 개발한 프레임워크인 만큼 Apple Silicon 기기에서의 최적화된 구동을 기대해 볼 수 있음. 특히 MLX 예제를 통해 Apple Silicon에서의 최적화 방안을 엿볼 수 있음.

  • 비전 태스크 뿐만 아니라 LLM 등의 Foundation Model 훈련까지 지원한다는 점이 특징. 다만 현재 공개된 버전은 0.1.0으로 아직 초기 단계인 듯 함. 향후 업데이트 계획과 로드맵이 궁금해짐.

  • PyTorch 기반의 프레임워크라는 점에서 PyTorch 생태계의 다양한 기능을 활용할 수 있을 것으로 보임. 다만 현재 프로젝트의 구조상 다른 프레임워크와의 상호 운용은 어려울 것으로 보임.

  • ONNX나 TorchScript를 통한 모델 Export 기능이 제공되면 좋을 것 같음. 또한 iOS, macOS 앱 개발시 CoreML로의 변환 등 Apple 생태계와의 연계 방안도 고려해 볼만 함.

Hacker News 의견
  • CoreNet은 CVNets에서 발전한 것으로, 컴퓨터 비전을 넘어 더 광범위한 애플리케이션을 포괄하게 됨. 이는 LLM을 포함한 기반 모델 학습을 용이하게 함.
  • CoreNet의 default_trainer.py를 보면 PyTorch의 Tensor를 사용하지만 자체 학습 방법을 구현하고 있음. 자체 LR 스케줄러와 옵티마이저를 구현하고, 호출자는 선택적으로 PyTorch의 Adam을 사용할 수 있음.
  • 기존 프레임워크와 협력하는 대신 처음부터 구축하는 것은 흥미로운(아마도 매우 Apple스러운) 선택임.
  • MLX 예제는 현재 추론만 가능한 것 같음. MLX 특화 구현을 위한 착륙장이 될 수 있을 것으로 보임.
  • 최근 Datakalab과 DarwinAI 인수를 고려할 때 앞으로 1년 동안 어떻게 진행될지 흥미로움.
  • Apple은 Jax 위에 구축된 axlearn 라이브러리도 적극적으로 개발 중. Apple의 ML 팀 중 절반은 PyTorch를, 나머지 절반은 Jax를 사용하는 것으로 보임.
  • README에서 CatLIP이라는 새로운 모델도 언급되었지만 링크는 깨져있음.
  • CoreNet은 PyTorch 기반으로 구축됨.
  • MLX는 Apple Silicon에 최적화된 PyTorch와 동등한 것으로 이해됨. CoreNet이 MLX 모델을 분산 학습하기 위한 것인지, 아니면 그 목적이 무엇인지 궁금함.
  • 이 저장소에서 다양한 모델과 사용 방법에 대한 작은 API 예제를 생성할 수 있는 LLM 에이전트가 있으면 좋겠음.
  • Apple M1에서 신경망 학습과 추론을 위해 어떤 라이브러리를 추천하는지? C++ 또는 Rust에서 사용하고 싶고, 신경망은 최대 5M 파라미터를 가질 것임.
  • MPS 백엔드를 사용하는 Huggingface Transformers 대신 이것을 사용하는 이점은 무엇인지?
  • Apple Silicon에서의 학습을 지원하는지 README에서 놓친 것이 아니라면 명확하지 않음.
  • Apple이 LLM 학습에 대한 개방형 정보를 추진하고 있다는 점이 흥미로움. 세상이 변하고 있음.