TorchNeuron: AWS Trainium에서 Hugging Face 모델을 위한 네이티브 PyTorch 백엔드

TorchNeuron은 AWS Trainium을 위한 네이티브 PyTorch 백엔드를 제공하여, eager execution 및 torch.compile과 같은 표준 PyTorch 기능을 프레임워크에 직접 통합함으로써 Trainium에서 Hugging Face 모델을 실행하고 공유하는 과정을 획기적으로 단순화합니다.

TorchNeuron 개요

TorchNeuron은 AWS Trainium 칩 전용의 새로운 백엔드를 도입하는 PyTorch 플러그인입니다. 이 백엔드는 eager 모드, torch.compile, FSDP 및 TP(텐서 병렬 처리)를 포함한 네이티브 분산 API를 지원합니다.

2026년 10월 20일 기준으로 TorchNeuron은 공개 베타로 제공되며 pip install torch-neuronx를 사용하여 설치할 수 있습니다.

기술적 전환: 네이티브 PyTorch 통합

TorchNeuron은 이전 방법과 비교하여 Hugging Face 라이브러리가 AWS Trainium과 상호 작용하는 방식을 근본적으로 변경합니다. 이전에는 Hugging Face 경험이 PyTorch XLA 기반의 torch-neuronx를 사용하는 optimum-neuron에 의존했습니다. 이전 접근 방식은 개발자가 컴파일러처럼 사고하고, lazy tensor를 관리하고, 정적 형태를 강제하고, 모든 그래프 중단 시 재컴파일해야 했습니다.

TorchNeuron은 PyTorch에 직접 통합함으로써 이러한 복잡성을 제거합니다. neuron을 네이티브 디바이스로 노출하여 eager execution, torch.compile, DTensor 및 FSDP2와 같은 네이티브 분산 프리미티브를 포함한 표준 PyTorch 프리미티브를 지원합니다. 결과적으로 Transformers, Diffusers, Accelerate, PEFT 및 TRL을 포함한 Hugging Face 라이브러리는 다른 가속기에서 사용하는 것과 동일한 클래스와 스크립트를 사용하여 Trainium에서 실행될 수 있어 하드웨어가 표준 PyTorch 디바이스처럼 느껴집니다.

Transformers: LLM 추론 및 훈련

추론 기능

TorchNeuron을 사용하여 다양한 모델에 대해 텍스트 생성이 이제 Transformers에서 네이티브로 지원됩니다. 이 새로운 백엔드를 통해 가장 많이 사용되는 상위 100개 텍스트 생성 모델 아키텍처의 89%가 기본적으로 지원되며, 이는 Optimum Neuron v0.4.5가 지원하는 46%에서 크게 증가한 수치입니다. 사용자는 코드에서 device_map=neuron 인수를 전달하여 Neuron 디바이스를 활성화합니다. 최적의 성능을 위해 빈번한 재컴파일을 방지하려면 생성에 대한 정적 캐싱을 강력히 권장합니다.

훈련 기능

Trainium에서의 훈련은 이제 전용 트레이너나 Neuron 특화 모델 코드 없이 표준 Hugging Face 라이브러리(Transformers, Accelerate, PEFT, TRL)를 활용합니다. 표준 TRL 미세 조정 스크립트는 최소한의 Neuron 특화 구성으로 Trainium 인스턴스에서 실행될 수 있습니다.

Trainium에서 훈련할 때 주요 고려 사항은 다음과 같습니다:

  • 정적 형태: 스크립트는 torch.compile에서 자동 동적 형태를 비활성화하고 래핑된 패킹을 사용하여 최대 2048 토큰의 시퀀스를 생성해야 합니다. Neuron의 배치는 128 토큰의 배수로 패딩되어 입력 형태의 수를 제한합니다. 컴파일된 그래프는 동일한 형태의 후속 단계에서 재사용됩니다.
  • torch.compile: 훈련을 활성화하려면 --torch_compile true를 전달해야 합니다. Trainium 인스턴스에서 torch.compile은 자동으로 디바이스를 감지하고 Neuron 백엔드를 선택합니다.
  • 비동기 로딩: Transformers의 내장 비동기 가중치 로딩은 Neuron에서 지원되지 않으며 HF_DEACTIVATE_ASYNC_LOAD=1을 사용하여 비활성화해야 합니다.

병렬 처리는 model_init_kwargs에서 텐서 병렬(TP) 및 FSDP 크기를 지정하여 DistributedConfig를 통해 네이티브로 관리됩니다. Trainer는 --fsdp 플래그나 Accelerate FSDP 구성 없이 이 분산을 처리합니다.

Diffusers: 이미지 생성 파이프라인

Diffusers 라이브러리 내의 많은 파이프라인은 TorchNeuron과 호환되며 eager 및 컴파일된 모드를 모두 지원합니다. FLUX.1-dev, FLUX.2, Qwen-Image, Qwen-Image-2.1 및 H3를 포함한 특정 모델은 Neuron 디바이스 사용을 극대화하기 위해 텐서 병렬 처리(TP)와 호환됩니다.

텐서 병렬 처리는 Neuron 백엔드용으로 구성된 DeviceMesh를 참조하는 TensorParallelConfig로 transformer를 초기화하여 구현할 수 있습니다. 이를 통해 분산 이미지 생성이 가능하며, 텍스트 인코더는 CPU에 유지하면서 transformer는 Neuron 디바이스에서 작동할 수 있습니다.

커널: 사용자 정의 연산 및 속도 향상

사용자는 Hugging Face Hub에서 점점 더 많이 제공되는 Neuron 커널을 통해 사용자 정의 연산을 활용할 수 있습니다. Neuron 커널은 Neuron Kernel Interface(NKI)를 사용하여 작성할 수 있으며, 특정 연산을 최적화하기 위한 하위 수준 제어를 제공합니다. 예를 들어, 비전 트랜스포머용 특정 커널은 Trainium에서 최대 2.4배 속도 향상을 보여주었습니다.

이점 요약

TorchNeuron은 복잡한 컴파일러 기반 워크플로우를 네이티브 PyTorch 통합으로 대체하여 AWS Trainium에서 전체 ML 수명 주기를 단순화합니다. 이를 통해 연구자와 개발자는 훈련과 추론 모두에 표준 Hugging Face 코드베이스를 사용하면서 특수 하드웨어 가속에 접근할 수 있습니다.

SUMMARY: TorchNeuron은 AWS Trainium을 위한 네이티브 PyTorch 백엔드를 도입하여, eager execution 및 네이티브 PyTorch 프리미티브를 활성화함으로써 Hugging Face 모델(Transformers, Diffusers, Kernels)의 배포와 공유를 단순화합니다.

TITLE: TorchNeuron: AWS Trainium에서 Hugging Face 모델을 위한 네이티브 PyTorch 백엔드

Sources