A custom hybrid Deep Learning Framework with JAX and MLX backend
Project description
NovaGrad
NovaGrad는 JAX와 MLX 백엔드를 완벽하게 추상화하여, 클라우드(Colab TPU/GPU)와 로컬(Mac 통합 메모리) 환경을 자유롭게 넘나드는 하이브리드 딥러닝 프레임워크입니다.
NovaGrad의 탄생 과정
- 혼자 딥러닝 공부를 하며, 직접 라이브러리를 만들고 그걸 통제하는게 기존 라이브러리를 쓰는 것보다 더 편할 거 같아서 만들었습니다.
- 공부는 어떻게?
- 책과 인터넷을 통해 공부를 하고, 파이썬으로 실습코드 개조하면서 공부 중입니다.
- 현재 군대에 있느라, 짬내서 조금씩 공부해나가고 있어요.
- 이 라이브러리는 실전을 위하기보단, 스스로 공부와 연구를 하기 위해 만든 도구입니다.
- 기존 프레임워크의 틀에 갇혀있지 않고 자유롭게 코드를 만질 수 있어요.
- 그만큼 무언가 실험하기 용이합니다.
- 하드웨어 가속은 어떻게?
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d149982a50363a6178b82f63ce0ff9a911317379a9de62be7a74723a720c6f0
|
|
| MD5 |
8015a5fa625bf10012b6835831d24a42
|
|
| BLAKE2b-256 |
b185ce479b36c067a5fc49022a9765aa23005fe752913a16194881e1ec2de887
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7289b8953a4f60fc8df6b575a410f5ad25e4d4d29395131bc342dcb5a1df2ab5
|
|
| MD5 |
957abb5cc5927cf14a13595ac8fb755c
|
|
| BLAKE2b-256 |
fafee62368aa3158f0fb939a7f7c3388ca831d229e025bf3c9967020301d8d59
|