BioPlayground

🧬
← AI Tools
frameworkintermediate

NanoEuler

NanoEuler는 개발자 Vincenzo(JustVugg)가 2026년에 공개한 GPT-2급 언어 모델 구현체로, PyTorch나 TensorFlow 같은 프레임워크 없이 순수 C와 CUDA만으로 역전파(backpropagation), 토크나이저, 어텐션까지 모두 직접 작성한 교육 및 연구용 LLM이다. 프로젝트 이름은 잔차 블록(residual block) x = x + f(x)를 오일러 전진법(forward-Euler method)으로 해석한 데서 유래하며, "깊이(depth)가 적분 시간"이라는 수학적 직관을 반영한다. 아키

NanoEuler는 개발자 Vincenzo(JustVugg)가 2026년에 공개한 GPT-2급 언어 모델 구현체로, PyTorch나 TensorFlow 같은 프레임워크 없이 순수 C와 CUDA만으로 역전파(backpropagation), 토크나이저, 어텐션까지 모두 직접 작성한 교육 및 연구용 LLM이다. 프로젝트 이름은 잔차 블록(residual block) x = x + f(x)를 오일러 전진법(forward-Euler method)으로 해석한 데서 유래하며, "깊이(depth)가 적분 시간"이라는 수학적 직관을 반영한다. 아키텍처는 RMSNorm(pre-norm, bias-free), 회전 위치 임베딩(Rotary Position Embedding, RoPE), SwiGLU 피드포워드, 그룹 쿼리 어텐션(Grouped-Query Attention, GQA), 그리고 직접 작성한 FlashAttention 커널로 구성되며, 약 116M 파라미터 모델을 단일 소비자급 GPU에서 학습할 수 있다. 대부분의 LLM 학습 프로젝트는 PyTorch의 autograd에 의존하기 때문에 역전파 과정에서 실제로 무슨 일이 일어나는지 블랙박스로 남는 경우가 많다. NanoEuler는 이 블랙박스를 완전히 걷어내고, C 레벨에서 그래디언트를 수동 계산하여 double-precision 검증(~1e-6 수준)까지 수행한다. 마치 자동차 엔진을 직접 한 부품씩 조립하면서 내연기관의 원리를 체득하는 것처럼, NanoEuler는 Transformer의 모든 연산을 베어메탈(bare-metal) 수준에서 이해할 수 있게 해준다. Andrej Karpathy의 llm.c에서 영감을 받았으나, 바이트 수준 BPE 토크나이저 자체 구현, 멀티 토큰 예측 헤드(multi-token prediction), 그리고 Alpaca 데이터셋 기반 SFT(Supervised Fine-Tuning)까지 포함하여 학습부터 미세조정, 추론까지 전 파이프라인을 하나의 바이너리로 완결짓는 점이 차별적이다. 생명공학 분야에서 NanoEuler의 가치는 도메인 특화 소형 언어 모델을 밑바닥부터 완전히 제어할 수 있다는 점에 있다. 예를 들어, 단백질 서열이나 SMILES 화학식 같은 도메인 특수 어휘로 BPE 토크나이저를 재학습하고, 기본 코퍼스(Project Gutenberg, FineWeb-Edu) 대신 PubMed 초록이나 UniProt 서열 데이터로 사전 학습하면 연구실 전용 소형 LM을 구축할 수 있다. CUDA 커널을 직접 수정할 수 있으므로 커스텀 어텐션 패턴(예: 서열 내 국소 상호작용에 가중치를 부여하는 변형 어텐션)을 실험하기에도 적합하다. 프레임워크 오버헤드 없이 C/CUDA를 직접 제어하므로, 임베디드 장비나 엣지 디바이스에서의 경량 추론 최적화 연구의 출발점이 될 수 있다. 다만, 현재 생성 품질은 "fluent-ish English" 수준으로 생산용이 아닌 교육 및 실험용임을 저자가 명시하고 있다.

💻 필요한 컴퓨터 사양

🧠RAM

CPU 전용 빌드 가능 (소형 모델 ~1M 파라미터). GPU 모델(116M)은 NVIDIA 8GB+ 권장

💾저장공간

소스 코드 수 MB. FineWeb-Edu 코퍼스 기본 슬라이스 ~1GB, Project Gutenberg ~수십 MB

⚡ 설치법

### 4-1. Quick Start (CPU)

```bash
git clone https://github.com/JustVugg/nanoeuler.git
cd nanoeuler
make check          # 그래디언트 검증
make                # 학습 바이너리 빌드
./nanoeuler train   # 소형 모델 (~1M 파라미터) 학습
./nanoeuler chat    # 대화형 REPL
```

### 4-2. GPU 빌드 및 학습

```bash
cd cuda
# Makefile에서 SM 아키텍처 확인 (기본 sm_89 = Ada)
make
./nanoeuler_cuda t   # 사전 학습 (5k 스텝마다 체크포인트)
./nanoeuler_cuda s   # Alpaca SFT
./nanoeuler_cuda c   # 대화형 채팅
./nanoeuler_cuda i   # 프롬프트 기반 생성
```

### 4-3. 데이터 준비

```bash
# data/ 디렉토리의 스크립트로 코퍼스 다운로드
# Project Gutenberg (~95권 고전), FineWeb-Edu (DuckDB CLI), Alpaca
cd data
bash download_gutenberg.sh   # 예시 (실제 스크립트명은 저장소 확인)
```

🧬 바이오 활용

🔬

🔬 도메인 특화 소형 LM 구축

BPE 토크나이저의 어휘(vocab)를 SMILES 화학식이나 단백질 1-letter 코드로 재학습하고, PubMed 초록 100만건으로 사전 학습하면 ~116M 파라미터 도메인 LM을 단일 GPU에서 수 시간 내에 구축할 수 있다. Alpaca 형식으로 도메인 Q&A 데이터를 정리한 뒤 SFT를 적용하면, 화합물 특성 질의 등 특수 목적 챗봇의 프로토타입으로 활용 가능하다.

🧬

🧬 커스텀 어텐션 메커니즘 실험

CUDA 커널이 직접 노출되어 있으므로, FlashAttention 로직을 수정하여 서열 내 국소 윈도우 어텐션(local windowed attention)이나 위치별 가중치 편향 등 생물학적 가설 기반 변형 어텐션을 실험할 수 있다. 예를 들어, 단백질 2차 구조 예측에서 잔기 간 거리에 비례한 어텐션 감쇠(distance-dependent attention decay)를 구현하고, 기존 Transformer 대비 예측 정확도 변화를 측정하는 연구가 가능하다.

💊

📚 LLM 아키텍처 교육 및 재현 연구

대학원 과정이나 연구실 세미나에서 Transformer의 순전파/역전파를 C 레벨로 한 줄씩 추적하며 학습할 수 있다. make check 명령으로 모든 파라미터의 수치 그래디언트와 해석적 그래디언트를 비교 검증(~1e-6)하므로, RMSNorm, RoPE, SwiGLU, GQA 각 모듈의 미분이 정확히 어떻게 계산되는지 실증적으로 확인할 수 있다.

📄 공식문서🐙 GitHub

📝 업데이트 노트

아직 업데이트 노트가 없습니다.

🧪 관련 생명의 코드

관련된 생명의 코드 글이 아직 없습니다.