PyTorchKR
- attorch는 PyTorch의
nn
모듈의 일부를 OpenAI의 Triton을 사용하여 Python으로 작성된 라이브러리입니다. PyTorch의 효율성을 유지하거나 향상시키면서도 쉽게 해킹할 수 있고, 자체적으로 완결성이 있으며 읽기 쉬운 신경망 모듈의 컬렉션을 목표로 하고 있습니다. 특히 NLP뿐만 아니라 컴퓨터 비전과 같은 다양한 분야에 적용 가능한 레이어를 제공하며, 학습과 추론 모두에서 사용할 수 있어 더욱 폭넓은 활용이 기대됩니다.
attorch: PyTorch의 nn 모듈을 OpenAI의 Triton을 사용하여 재작성하는 프로젝트
소개
attorch는 기존의 CUDA 커널을 작성할 기술적 전문성이나 자원이 부족한 개발자들이 사용자 정의 딥러닝 작업을 개발할 수 있는 접근성 높은 출발점으로서 기능하도록 설계되었습니다. 이는 순수 PyTorch 구현의 속도에 만족하지 못하는 이들을 위한 대안으로, 기존의 PyTorch와 비슷한 다른 프레임워크들과 비교했을 때 보다 포괄적인 레이어 지원을 자랑합니다.
또한, attorch는 기존의 PyTorch 프레임워크와 비교하여 특히 추론보다는 학습 과정에서의 성능을 강화하는 데 초점을 맞추고 있습니다. 이는 attorch가 훈련 및 추론 모두를 지원하는 반면, 일부 다른 인퍼런스 전용 엔진들은 주로 추론 성능을 최적화하는 데 집중한다는 점에서 차별화됩니다.
attorch는 다음에 소개하는 레이어들이 구현되어 있으며, 문서에 별도로 명시되지 않는 한, PyTorch 공식 구현과 동일하게 동작합니다:
-
합성곱 레이어(Conv2d): 입력에 가중치를 사용하여 2D 합성곱을 수행하고, 선택적으로 편향을 추가합니다.
-
활성화 함수: GELU, ReLU, SiLU, Sigmoid, Tanh 등의 활성화 함수를 지원합니다.
-
정규화 레이어: BatchNorm과 LayerNorm을 통해 입력을 정규화합니다.
-
선형 변환(Linear): 가중치를 사용하여 입력을 선형 변환하고, 선택적으로 편향을 추가하며 활성화 함수를 결합할 수 있습니다.
-
손실 함수: L1Loss, MSELoss, CrossEntropyLoss 등을 통해 다양한 손실을 측정할 수 있습니다.
사용 방법
attorch를 사용하기 위해서는 먼저 torch==2.2.0
및 triton==2.2.0
버전을 설치해야 합니다. 이후 GitHub 리포지터리를 클론하여 설치할 수 있습니다. 사용 예제는 다음과 같습니다:
from attorch import nn
lin = nn.Linear(10, 20) # attorch의 선형 레이어 사용
gap = nn.AdaptiveAvgPool2d(1) # attorch에 없는 경우 PyTorch의 글로벌 풀링 사용
더 읽어보기
attorch GitHub 저장소
https://github.com/BobMcDear/attorch
PyTorch 공식 문서: nn Module
https://pytorch.org/docs/stable/nn.html
OpenAI의 Triton GitHub 저장소
https://github.com/openai/triton
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~