Artelnics/opennn

OpenNN - Open Neural Networks Library

OpenNN이란 무엇인가?

OpenNN은 C++ 코드에서 직접 신경망 모델을 구축, 훈련, 실행할 수 있게 해주는 최신 C++ 라이브러리(C++20 표준으로 작성)입니다. 표 형식 데이터, 이미지, 시계열, 일반 텍스트와 같은 일반적인 데이터 유형을 지원하며, 일반 CPU 또는 선택적으로 CUDA를 통한 NVIDIA GPU에서 실행할 수 있습니다.


누가 사용할 수 있나요?

대상 이유
대규모 C++ 애플리케이션(예: 로봇 공학, 금융, 임베디드 시스템) 내에서 신경망 구성 요소가 필요한 C++ 엔지니어. 언어를 전환하거나 Python 인터프리터를 임베딩할 필요 없이 라이브러리가 바이너리에 직접 컴파일됩니다.
CPU 대 GPU 실행, 스레딩(OpenMP, oneTBB) 및 저수준 최적화를 세밀하게 제어하려는 성능 중심 팀. 하드웨어 및 컴파일 시간 제약에 맞는 백엔드를 선택할 수 있습니다.
무거운 Python 종속성 없이 자체 포함된 오픈 소스 스택을 선호하는 연구자 또는 취미 개발자. 라이브러리에는 PyTorch에 대한 벤치마크 가이드와 빠른 시작 가이드가 포함되어 있습니다.
클로즈드 소스 제품에 상용 친화적인 라이선스가 필요한 기업. 이중 라이선스(AGPL + 상용)를 통해 독점 코드를 비공개로 유지하면서 규정을 준수할 수 있습니다.

어떻게 작동하나요?

  1. 설치 – 리포지토리를 클론하고, CMake를 실행하고, CPU 전용 또는 CUDA 지원 빌드를 선택합니다. 빌드는 Eigen과 zlib를 자동으로 가져옵니다. 다른 선택적 런타임(MKL, oneDNN 등)은 사용자가 제공해야 합니다.
  2. 프로그래밍 모델 – 공개 헤더(예: opennn/network/network.h)를 포함하고 OpenNN:: 네임스페이스를 사용하여 레이어, 손실 함수, 옵티마이저 등을 생성합니다. 라이브러리는 모듈식 구조(코어, 데이터, 네트워크, 백엔드)를 따릅니다.
  3. 훈련 및 추론 – 데이터(CSV, 이미지 폴더 등)를 DataSet 객체에 공급하고, NeuralNetwork를 구성하고, train()을 호출한 다음 추론을 위해 predict()를 호출합니다. 동일한 모델을 일반 C 또는 Python 소스 코드로 내보내 전체 라이브러리가 필요 없는 플랫폼에 배포할 수 있습니다.
  4. 벤치마크 및 검증 – benchmarks/ 폴더에는 OpenNN의 속도와 정확성을 PyTorch와 비교하는 스크립트가 포함되어 있으며, 문서화된 측정 프로토콜을 따릅니다.
  5. 테스트 및 CI – 단위 테스트는 tests/에 있으며, GitHub Actions는 푸시할 때마다 테스트 스위트를 실행합니다.

다른 도구보다 OpenNN을 선택해야 하는 경우는 언제인가요?

상황 OpenNN의 장점
C++ 전용 코드베이스 – Python 런타임이 필요 없습니다. 순수 C++ API로, 정적 또는 공유 라이브러리로 컴파일할 수 있습니다.
임베디드 또는 실시간 시스템 – 엄격한 바이너리 크기 또는 지연 시간 제약. 내보낼 수 있는 C 코드와 세밀하게 조정된 컴파일 옵션, GPU 가속을 위한 선택적 CUDA.
이중 라이선스 필요 – AGPL 기반을 원하지만 독점 제품에는 상용 경로가 필요합니다. Artelnics의 상용 옵션을 갖춘 명시적인 이중 라이선스 모델.
성능 비교 – C++ 구현이 PyTorch와 어떻게 비교되는지 확인하려는 경우. 재현 가능한 프로토콜을 갖춘 내장 벤치마크 스위트.

이미 Python 생태계(PyTorch, TensorFlow)에 크게 의존하고 C++ 통합이 필요하지 않다면 이러한 도구가 더 간단할 수 있습니다. OpenNN은 C++ 통합, 라이선스 유연성 또는 저수준 성능 제어가 주요 관심사일 때 빛을 발합니다.


시작하기(빠른 요약)

# CPU 전용 빌드 클론 및 구성
git clone https://github.com/Artelnics/opennn.git
cd opennn
cmake -S . -B ../opennn-build -DCMAKE_BUILD_TYPE=Release \
      -DOpenNN_DISABLE_CUDA=ON -DOpenNN_BUILD_EXAMPLES=ON
cmake --build ../opennn-build --target blank --parallel
# 최소 예제 실행
../opennn-build/bin/blank

그런 다음 examples/에서 Iris 예제를 따라 분류기를 훈련하고, 평가하고, 모델을 내보냅니다.


TL;DR

OpenNN은 CPU 또는 CUDA GPU에서 실행할 수 있고, 일반적인 데이터 유형을 지원하며, 일반 C/Python으로 내보낼 수 있고, PyTorch에 대한 벤치마크를 포함하며, 이중 AGPL/상용 라이선스를 제공하는 C++20 신경망 라이브러리입니다. 네이티브 C++ ML 구성 요소가 필요하거나 배포 및 라이선스에 대한 세밀한 제어를 원하는 개발자에게 견고한 선택입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트