attorch: PyTorch의 nn 모듈을 OpenAI의 Triton을 사용하여 재작성하는 프로젝트

:pytorch:PyTorchKR:kr:

  • attorch는 PyTorch의 nn 모듈의 일부를 OpenAI의 Triton을 사용하여 Python으로 작성된 라이브러리입니다. PyTorch의 효율성을 유지하거나 향상시키면서도 쉽게 해킹할 수 있고, 자체적으로 완결성이 있으며 읽기 쉬운 신경망 모듈의 컬렉션을 목표로 하고 있습니다. 특히 NLP뿐만 아니라 컴퓨터 비전과 같은 다양한 분야에 적용 가능한 레이어를 제공하며, 학습과 추론 모두에서 사용할 수 있어 더욱 폭넓은 활용이 기대됩니다. :astonished:


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.0triton==2.2.0 버전을 설치해야 합니다. 이후 GitHub 리포지터리를 클론하여 설치할 수 있습니다. 사용 예제는 다음과 같습니다:

from attorch import nn
lin = nn.Linear(10, 20)  # attorch의 선형 레이어 사용
gap = nn.AdaptiveAvgPool2d(1)  # attorch에 없는 경우 PyTorch의 글로벌 풀링 사용

더 읽어보기

attorch GitHub 저장소

PyTorch 공식 문서: nn Module

https://pytorch.org/docs/stable/nn.html

OpenAI의 Triton GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요