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 + 상용)를 통해 독점 코드를 비공개로 유지하면서 규정을 준수할 수 있습니다. |
어떻게 작동하나요?
- 설치 – 리포지토리를 클론하고, CMake를 실행하고, CPU 전용 또는 CUDA 지원 빌드를 선택합니다. 빌드는 Eigen과 zlib를 자동으로 가져옵니다. 다른 선택적 런타임(MKL, oneDNN 등)은 사용자가 제공해야 합니다.
- 프로그래밍 모델 – 공개 헤더(예:
opennn/network/network.h)를 포함하고OpenNN::네임스페이스를 사용하여 레이어, 손실 함수, 옵티마이저 등을 생성합니다. 라이브러리는 모듈식 구조(코어, 데이터, 네트워크, 백엔드)를 따릅니다. - 훈련 및 추론 – 데이터(CSV, 이미지 폴더 등)를
DataSet객체에 공급하고,NeuralNetwork를 구성하고,train()을 호출한 다음 추론을 위해predict()를 호출합니다. 동일한 모델을 일반 C 또는 Python 소스 코드로 내보내 전체 라이브러리가 필요 없는 플랫폼에 배포할 수 있습니다. - 벤치마크 및 검증 –
benchmarks/폴더에는 OpenNN의 속도와 정확성을 PyTorch와 비교하는 스크립트가 포함되어 있으며, 문서화된 측정 프로토콜을 따릅니다. - 테스트 및 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 구성 요소가 필요하거나 배포 및 라이선스에 대한 세밀한 제어를 원하는 개발자에게 견고한 선택입니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트