autograd-cpp
발행: (2025년 12월 17일 오전 11:31 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
Overview
동적 계산 그래프를 이용한 가벼우면서도 고성능 C++ 자동 미분 라이브러리.
- 계산 그래프 기반 AD: 동적 그래프를 통한 순전파 및 역전파
- Jacobian & Hessian: 1차·2차 미분 계산 지원
- Optimizers: 학습률 스케줄링(linear, exponential, cosine, polynomial)을 갖춘 SGD
- Header‑mostly: 최소한의 의존성, 손쉬운 통합
- CMake Package:
FetchContent지원으로 원활한 통합 가능
Installation
Using CMake FetchContent
include(FetchContent)
FetchContent_Declare(
autograd_cpp
GIT_REPOSITORY https://github.com/queelius/autograd-cpp.git
GIT_TAG main
)
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(BUILD_TESTS OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(autograd_cpp)
target_link_libraries(your_app PRIVATE autograd::autograd)
Building from source
git clone https://github.com/queelius/autograd-cpp.git
cd autograd-cpp
mkdir build && cd build
cmake ..
make -j$(nproc)
Run examples
./examples/simple_gradients
./examples/hessian_demo
Requirements
- C++17 이상
- CMake 3.14 이상
- 선택 사항: 병렬화를 위한 OpenMP
Basic Usage
#include
using namespace autograd;
int main() {
// Create computation graph
auto x = constant(3.0);
auto y = constant(4.0);
auto z = mul(x, y); // z = x * y
auto result = add(z, constant(2.0)); // result = z + 2
// Compute gradients
result->backward();
std::cout data[0] grad[0] grad[0] << std::endl; // 3
return 0;
}
Library Structure
tensor.hpp– 그래디언트 추적이 가능한 Tensor 클래스ops.hpp– 연산들(add,mul,exp,log,matmul등)jacobian.hpp– Jacobian 행렬 계산hessian.hpp– Hessian 행렬 계산optim.hpp– 학습률 스케줄을 지원하는 SGD 옵티마이저
Applications
핵심 자동 미분 엔진은 다음과 같은 분야의 기반으로 활용될 수 있습니다:
- 신경망 및 딥러닝
- 통계 모델링 및 추론
- 그래디언트가 필요한 물리 시뮬레이션
- 최적화 알고리즘
- 일반 과학 컴퓨팅
Design Goals
- Minimal – 핵심 AD 기능만 제공; 도메인 특화 기능은 별도로 구축 가능.
- Efficient – 선택적인 OpenMP 병렬화를 통해 성능 최적화.
- Flexible – 동적 계산 그래프를 통해 임의의 연산 지원.
- Portable – 표준 C++17 기반, 모든 플랫폼에서 동작.
License
[Specify your license]
Contributing
기여를 환영합니다! 이 저장소는 핵심 AD 엔진을 제공하며, 도메인 특화 확장(예: 신경망, 통계 모델)은 autograd-cpp에 의존하는 별도 패키지로 개발하는 것이 좋습니다.