pytorch-accelerated
pytorch-accelerated는 PyTorch 모델의 학습 과정을 가속화하기 위해 설계된 경량 라이브러리입니다.
최소한이지만 확장 가능한 학습 루프를 제공하며, 이 모든 것이 하나의 Trainer
객체에 캡슐화되어 있습니다. 이 객체는 대부분의 사용 사례를 처리할 수 있을 만큼 유연하며,
코드를 변경하지 않고도 다양한 하드웨어 옵션을 사용할 수 있습니다.
pytorch-accelerated는 간소화된 기능 세트를 제공하며, 단순성과 투명성을 매우 중시합니다.
사용자가 내부 동작을 정확히 이해할 수 있도록 하면서도, 반복적으로 작성하고 유지해야 하는 보일러플레이트 코드를 직접 관리하지 않아도 되도록 설계되었습니다!
주요 기능은 다음과 같습니다:
- 간단하고 독립적이지만 손쉽게 커스터마이즈할 수 있는 트레이닝 루프를 제공하며, 일반적인 경우에는 별도의 설정 없이 바로 사용할 수 있습니다;
- 디바이스 할당, 혼합 정밀도, DeepSpeed 통합, 멀티 GPU 및 분산 학습을 코드 변경 없이 처리합니다.
- 별도의 수정이나 래퍼 없이 순수 PyTorch 컴포넌트만을 사용하며,
- 간결하고 효율적인 API는 기존 PyTorch 사용자들이 최소한의 학습 곡선으로 사용할 수 있도록 보장합니다.
pytorch-accelerated는
Hugging Face Accelerate를 기반으로 투명하게 구축되었으며,
디바이스 간 데이터 이동과 학습 환경 실행을 담당합니다. 트레이너를 커스터마이즈하거나
학습을 실행할 때, 사용자는 Accelerate 문서를 참고하여
사용 가능한 모든 옵션을 이해하는 것이 좋습니다; Accelerate는 텐서 집합화, 그래디언트 클리핑 등
편리한 기능을 제공하며, 이러한 사용법은 pytorch-accelerated
예제 폴더에서 확인할 수 있습니다!
이 라이브러리의 개발 배경과 자세한 시작 가이드를 알고 싶다면, 이 블로그 포스트를 참고하세요.
설치
pytorch-accelerated는 다음 명령어로 pip를 통해 설치할 수 있습니다:
pip install pytorch-accelerated
패키지를 가능한 한 슬림하게 만들기 위해, 예제를 실행하는 데 필요한 패키지는 기본적으로 포함되어 있지 않습니다. 이러한 패키지를 포함하려면 다음 명령어를 사용할 수 있습니다:pip install pytorch-accelerated[examples]빠른 시작
시작하려면 아래 코드 조각에서 보여주는 것처럼 pytorch-accelerated Trainer를 가져와 사용하고,
그런 다음 아래에 설명된
accelerate CLI를 사용하여 훈련을 시작하세요.
# examples/core/train_mnist.py
import osfrom torch import nn, optim
from torch.utils.data import random_split
from torchvision import transforms
from torchvision.datasets import MNIST
from pytorch_accelerated import Trainer
class MNISTModel(nn.Module):
def __init__(self):
super().__init__()
self.main = nn.Sequential(
nn.Linear(in_features=784, out_features=128),
nn.ReLU(),
nn.Linear(in_features=128, out_features=64),
nn.ReLU(),
nn.Linear(in_features=64, out_features=10),
)
def forward(self, input):
return self.main(input.view(input.shape[0], -1))
def main():
dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor())
train_dataset, validation_dataset, test_dataset = random_split(dataset, [50000, 5000, 5000])
model = MNISTModel()
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
loss_func = nn.CrossEntropyLoss()
trainer = Trainer(
model,
loss_func=loss_func,
optimizer=optimizer,
)
trainer.train(
train_dataset=train_dataset,
eval_dataset=validation_dataset,
num_epochs=8,
per_device_batch_size=32,
)
trainer.evaluate(
dataset=test_dataset,
per_device_batch_size=64,
)
if __name__ == "__main__":
main()
accelerate CLI를 사용하여
머신에서 훈련을 시작하려면 다음을 실행하세요: accelerate config --config_file accelerate_config.yaml
그리고 질문에 답하세요. 이렇게 하면 기본 옵션을 적절히 설정하는 데 사용될 구성 파일이 생성됩니다.
accelerate launch --config_file accelerate_config.yaml train.py [--training-args]
참고: accelerate CLI는 완전히 선택 사항이며, 훈련은 다음과 같이 일반적인 방법으로도 시작할 수 있습니다:
python train.py / python -m torch.distributed ...
이는 인프라 구성에 따라 다르며, 실행 명령을 더 세밀하게 제어하려는 사용자에게 적합합니다.
더 복잡한 훈련 예제는 examples 폴더에서 볼 수 있습니다 여기.
또는 핵심 개념을 먼저 이해하고 싶다면, 문서에서 확인할 수 있습니다.
사용법
pytorch-accelerated는 누구를 위한 것인가요?
- PyTorch에 익숙하지만 일반적인 훈련 루프의 보일러플레이트 코드를 작성하지 않고 훈련 루프의 흥미로운 부분에 집중하고 싶은 사용자.
- 자신만의 모델, 손실 함수, 옵티마이저 및 데이터셋을 선택하고 만드는 데 익숙하고 편한 사용자.
- 동작이 디버그, 이해 및 추론하기 쉽고 단순하고 간소화된 기능 세트를 중요하게 여기는 사용자.
언제 pytorch-accelerated를 사용하지 말아야 하나요?
- 데이터 로딩부터 추론까지 모든 것을 포함하는 엔드투엔드 솔루션을 찾고 있고, 모델, 옵티마이저 또는 손실 함수를 선택하는 데 도움을 받고 싶다면,
pytorch-accelerated는 훈련 과정에만 집중하며,
다른 모든 사항은 사용자의 책임으로 남겨둡니다.
- 전체 훈련 루프를 직접 작성하되, 장치 관리 문제만 없애고 싶다면,
Trainer의 모든 부분을 커스터마이징할 수는 있지만,
훈련 루프는 근본적으로 여러 부분으로 나뉘어져 있습니다.재정의해야 하는 다양한 메서드가 있을 것입니다. 하지만, 떠나기 전에, 그런 for 루프를 작성하는 것이 정말로 다시 처음부터 시작할 만큼 중요한가요 😉.
- 만약 일반적인 학습 루프 패턴에 맞지 않는 맞춤형, 매우 복잡한 사용 사례에 대해 작업 중이며 선택한 하드웨어에서 마지막 성능까지 최대한 끌어내고 싶다면, 아마도 일반 PyTorch를 사용하는 것이 가장 좋습니다; 고수준 API는 매우 특수화된 경우에 오버헤드가 될 수 있습니다!
감사의 글
pytorch-accelerated의 설계와 기능 뒤에는 fastai, timm,
PyTorch-lightning 및 Hugging Face Accelerate와 같은 여러 우수한
라이브러리와 프레임워크에서 크게 영감을 받았습니다. 이 도구들은 이 라이브러리와 머신러닝 커뮤니티 모두에 엄청난 영향을 미쳤으며, 그 영향력은 아무리 강조해도 지나치지 않습니다!
pytorch-accelerated는 이러한 도구들로부터 영감을 받았으며, 포함된 모든 기능은 이 라이브러리에 이익이 되도록 처음부터 직접 구현되었습니다. 예외는
examples
폴더 내 일부 스크립트로, 기존 리소스를 가져와 수정하여 pytorch-accelerated의 기능을 보여주기 위한 경우입니다; 이러한 경우는 명확히 표시되어 있으며 원 저자에게 감사를 표하고 있습니다.
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-28 ---