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에 의존하는 별도 패키지로 개발하는 것이 좋습니다.

Back to Blog

관련 글

더 보기 »

C# Minimal API: 응답 캐싱

Response Caching 응답 캐싱은 클라이언트나 프록시가 웹 서버에 보내는 요청 수를 줄여줍니다. 또한 웹 서버가 수행해야 하는 작업량도 감소시킵니다.