Skip to main content

A custom hybrid Deep Learning Framework with JAX and MLX backend

Project description

NovaGrad

PyPI version Python Version License: MIT



NovaGrad는 JAX와 MLX 백엔드를 완벽하게 추상화하여, 클라우드(Colab TPU/GPU)와 로컬(Mac 통합 메모리) 환경을 자유롭게 넘나드는 하이브리드 딥러닝 프레임워크입니다.

NovaGrad의 탄생 과정

  1. 혼자 딥러닝 공부를 하며, 직접 라이브러리를 만들고 그걸 통제하는게 기존 라이브러리를 쓰는 것보다 더 편할 거 같아서 만들었습니다.
  2. 공부는 어떻게?
    • 책과 인터넷을 통해 공부를 하고, 파이썬으로 실습코드 개조하면서 공부 중입니다.
    • 현재 군대에 있느라, 짬내서 조금씩 공부해나가고 있어요.
  3. 이 라이브러리는 실전을 위하기보단, 스스로 공부와 연구를 하기 위해 만든 도구입니다.
    • 기존 프레임워크의 틀에 갇혀있지 않고 자유롭게 코드를 만질 수 있어요.
    • 그만큼 무언가 실험하기 용이합니다.
  4. 하드웨어 가속은 어떻게?
    • JAX, MLX를 사용합니다.
    • JAX로 구글의 TPU나 일반 GPU에서의 가속을, MLX로 맥에서의 가속을 지원할 수 있게 만들고 있어요.
    • TPU는 가성비가 있다고 생각해서 쓰고 있습니다.
    • MLX로 맥에서 가속하는 이유는 단순히 제가 맥을 갖고 있는데 이걸 가만히 두긴 아깝다고 생각했어요.

설치 방법

pip install novagrad

또는

pip install git+https://github.com/yeunzu/NovaGrad.git

주의사항

현재 초기 개발도 끝나지 않은 상태입니다. 따라서 수없이 말도 안되는 버그들이 많다는 점 이해해주시면 좋겠습니다

퀵 스타트 (Quick Start)

가장 간단한 다층 퍼셉트론(MLP)으로 MNIST 데이터를 학습하는 예제입니다. 모델이 이런 식으로 구성되게 만들었다 정도의 코드입니다.

import novagrad
from novagrad.models import MyModel
from novagrad.layers import Affine, Relu, Softmax
from novagrad.optimizers import Adam
from novagrad.losses import CrossEntropyError

# 1. 백엔드 자동 감지 및 초기화 (JAX or MLX)
be = novagrad.Backend()

# 2. 모델 조립
model = MyModel(backend=be)
model.add_layer(Affine(input_size=784, output_size=256, optimizer=Adam, backend=be))
model.add_layer(Relu(backend=be))
model.add_layer(Affine(input_size=256, output_size=10, optimizer=Adam, backend=be))
model.add_layer(Softmax(backend=be))

model.set_loss_func(CrossEntropyError(backend=be))

# 3. 학습 시작!
# trainer.fit() 등을 이용해 학습을 경험하세요.

공식 문서 (Documentation)

레이어별 상세 파라미터, 데이터 증강(Albumentations) 사용법, 그리고 커스텀 모델 구축 가이드는 아래 공식 Notion 페이지에서 확인하실 수 있습니다. 아직은 코드도 완전히 완성되지 않아서, 아무 내용이 없습니다! 빠른 시일 내에 뭐라도 적어놓을게요.

-> NovaGrad 공식 사용 설명서 (Notion 링크)

기여하기

버그 리포트, 기능 제안, Pull Request를 언제나 환영합니다!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

novagrad-0.1.1.tar.gz (29.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

novagrad-0.1.1-py3-none-any.whl (42.1 kB view details)

Uploaded Python 3

File details

Details for the file novagrad-0.1.1.tar.gz.

File metadata

  • Download URL: novagrad-0.1.1.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for novagrad-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9d149982a50363a6178b82f63ce0ff9a911317379a9de62be7a74723a720c6f0
MD5 8015a5fa625bf10012b6835831d24a42
BLAKE2b-256 b185ce479b36c067a5fc49022a9765aa23005fe752913a16194881e1ec2de887

See more details on using hashes here.

File details

Details for the file novagrad-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: novagrad-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 42.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for novagrad-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7289b8953a4f60fc8df6b575a410f5ad25e4d4d29395131bc342dcb5a1df2ab5
MD5 957abb5cc5927cf14a13595ac8fb755c
BLAKE2b-256 fafee62368aa3158f0fb939a7f7c3388ca831d229e025bf3c9967020301d8d59

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page