C++로 딥러닝 프레임워크를 밑바닥부터 직접 구현하는 프로젝트입니다.
Python 기반의 DeZero를 모티브로 하되,
더 저수준에서 제어 가능한 구조와 고성능 구현을 목표로 합니다.
프로젝트 진행 중의 기술 결정, 개선 사항, 설계 기록은 아래 Notion 페이지에서 확인하실 수 있습니다:
DeepCZero/
├── src/ # 프레임워크 핵심 구현 (Variable, Function 등)
├── include/ # 헤더 파일
├── test/ # 테스트 코드 (자동화된 유닛 테스트들)
├── build/ # (자동 생성) 오브젝트 파일 저장
├── bin/ # (자동 생성) 테스트 실행 파일
├── Makefile # 빌드 및 테스트 자동화
└── README.md
sudo apt install valgrind
sudo apt install graphviz
sudo apt install libcurl4-gnutls-dev
sudo apt install libzip-dev
make
make test
make memory
- 메모리 안정성 확보: Valgrind를 통한 누수 점검 완료 (cyclic reference 제거)
- Tensor: 행렬 저장 및 행렬 연산 지원 클래스
- Variable: Tensor 기반 값 및 gradient 저장, weak_ptr 기반 연산그래프 creator 추적
- Parameter: 학습 가능한 모델 파라미터를 표현하며, Variable을 상속하여 gradient 추적 기능 포함
- Function: 다입력/다출력 지원, 자동 그래프 연결 및 shared_from_this 연동
- Graph: 계산 그래프 자동 구성 및 Topological 정렬 기반 backward 연산
- Ops: Square, Exp, Add 등 기본 Function 구현
- Layer: Linear 등 가중치를 포함한 모듈 구성 단위로, 순전파와 파라미터 관리 기능 제공
- Model: 여러 Layer를 조합한 학습 가능한 구조(예: MLP)로, Layer를 상속하여 재귀적 sublayer 관리
- Optimizer: SGD 등 최적화 알고리즘 클래스 구현, 등록된 Parameter의 gradient를 활용해 파라미터 갱신 수행
- 자동 미분 엔진
- 기본 연산 (Square, Add, Mul 등)
- Tensor 지원 확장 (vector, matrix)
- Computational Graph
- 멀티스레딩 지원 (ThreadPool 등)
- GEMM 커널 (자체 구현 or BLAS 연동)
- Convolution 연산 지원
- Detect 모델/LLM용 연산 흐름 구성
- Eigen / xtensor 최적화
- OpenBLAS / Intel MKL 연동
- GPU 커널 백엔드 (OpenCL, CUDA 등)
- CMake 전환
- gtest 기반 유닛 테스트
- 모델 저장/불러오기, 학습 루프, Optimizer
MIT License