체이너

체이너(Chainer)는 파이썬 기반의 NumPy 및 CuPy 파이썬 라이브러리 위에 순수 파이썬으로 작성된 오픈 소스 딥 러닝 프레임워크이다. 일본 벤처 기업 Preferred Networks가 IBM, 인텔, 마이크로소프트, 엔비디아와의 협력을 통해 개발을 주도하고 있다.

체이너는 "정의-실행(define-by-run)" 방식의 조기 채택과 대규모 시스템에서의 성능으로 유명하다. 첫 버전은 2015년 6월에 출시되었으며, 그 이후 일본에서 큰 인기를 얻었다. 또한 2017년에는 KDnuggets에서 상위 10개 오픈 소스 기계 학습 파이썬 프로젝트에 선정되었다.

2019년 12월, Preferred Networks는 체이너에서 PyTorch로의 개발 노력 전환을 발표했으며, v7 출시 후에는 유지 보수 패치만 제공할 예정이다.

Define-by-run
체이너는 정의-실행(define-by-run) 방식을 도입한 최초의 딥 러닝 프레임워크이다. 네트워크를 훈련하는 전통적인 절차는 두 단계로 이루어져 있었다. 첫째, 네트워크에서 수학적 연산(행렬 곱셈 및 비선형 활성화 등) 간의 고정된 연결을 정의하고, 둘째, 실제 훈련 계산을 실행하는 것이다. 이를 정의-실행(define-and-run) 또는 정적 그래프 방식이라고 한다. 테아노와 텐서플로는 이러한 방식을 채택한 주요 프레임워크이다. 반면, 정의-실행(define-by-run) 또는 동적 그래프 방식에서는 훈련 시작 시 네트워크의 연결이 결정되지 않는다. 네트워크는 실제 계산이 수행됨에 따라 훈련 중에 결정된다.

이 방식의 장점 중 하나는 직관적이고 유연하다는 것이다. 네트워크에 조건문과 반복문과 같은 복잡한 제어 흐름이 있을 경우, 정의-실행 방식에서는 이러한 구조를 위한 특별히 설계된 연산이 필요하다. 반면, 정의-실행 방식에서는 if 문과 for 루프와 같은 프로그래밍 언어의 기본 구조를 사용하여 이러한 흐름을 설명할 수 있다. 이러한 유연성은 특히 순환 신경망을 구현하는 데 유용하다.

또 다른 장점은 디버깅이 쉽다는 것이다. 정의-실행 방식에서는 훈련 계산 중 오류(예: 숫자 오류)가 발생했을 때, 네트워크를 정의하는 코드와 실제 오류 발생 지점이 분리되어 있어 문제를 검사하기 어려운 경우가 많다. 정의-실행 방식에서는 언어에 내장된 디버거를 사용하여 계산을 중단하고 네트워크 코드에서 흐르는 데이터를 검사할 수 있다.

정의-실행 방식은 체이너의 도입 이후 인기를 얻었으며, PyTorch 및 텐서플로를 포함한 다른 많은 프레임워크에서도 구현되었다.

확장 라이브러리
체이너는 ChainerMN, ChainerRL, ChainerCV 및 ChainerUI의 네 가지 확장 라이브러리를 가지고 있다. ChainerMN은 체이너를 여러 GPU에서 사용할 수 있게 하며, 다른 딥 러닝 프레임워크보다 훨씬 빠른 성능을 제공한다. 1024개의 GPU에서 체이너를 실행하는 슈퍼컴퓨터는 ResNet-50 네트워크에서 90 에포크의 이미지넷 데이터셋을 15분 만에 처리했는데, 이는 페이스북이 보유한 이전 기록보다 4배 빠르다. ChainerRL은 최신 딥 강화 학습 알고리즘을 추가하고, ChainerUI는 관리 및 시각화 도구이다.

 응용 
체이너는 사용자 입력을 최소화하여 흑백, 선화, 스케치 그림을 자동으로 컬러링하는 서비스인 페인츠체이너(PaintsChainer)의 프레임워크로 사용된다.

 같이 보기 
 딥 러닝 소프트웨어 비교
 기계 학습
 인공 신경망

 각주 

 외부 링크 


분류:파이썬으로 작성된 자유 소프트웨어
분류:MIT 라이선스 소프트웨어
분류:딥 러닝 소프트웨어
분류:오픈 소스 인공지능