Hugging Face TorchTPU 네이티브 통합

PyTorch의 네이티브 TPU 지원

TorchTPU는 Google의 Tensor Processing Unit(TPU)에 대한 네이티브 PyTorch 지원을 가능하게 하여 torch_xla나 JAX와 같은 복잡한 우회 방법이 필요 없게 합니다. TPU를 표준 장치 백엔드로 통합함으로써, 개발자는 이제 익숙한 PyTorch 구문을 사용하여 Hugging Face Transformers 및 Diffusers 모델을 TPU 하드웨어에서 직접 실행할 수 있습니다. 장치를 "tpu"로 설정하기만 하면 모델이 즉시 실행 모드(eager mode)로 실행되며, 향상된 성능을 위해 torch.compile을 선택적으로 지원합니다.

기존 워크플로우를 넘어서

과거에는 PyTorch를 TPU에서 실행하려면 torch_xla가 필요했으며, 이는 지연 텐서 평가(lazy tensor evaluation), 복잡한 디버깅, 빈번한 그래프 재컴파일과 같은 문제를 야기했습니다. TorchTPU의 도입으로 이전의 Optimum TPU 라이브러리가 필요 없게 되었으며, 더욱 원활한 경험을 제공합니다. 설치는 다음 단일 명령어로 수행됩니다:

pip install torch-tpu --extra-index-url https://download.pytorch.org/whl/cpu

이 접근 방식은 불필요한 CUDA 의존성을 피하기 위해 torch의 CPU 빌드를 사용하며, TPU 하드웨어에 맞게 환경을 최적화합니다.

Transformers 및 Diffusers와의 통합

Transformers v5는 이제 TPU를 일등 시민으로 취급합니다. 사용자는 from_pretrained에 device_map="tpu"를 전달하여 모델을 TPU 하드웨어에 직접 로드할 수 있습니다. Diffusers의 경우, 파이프라인은 표준 .to("tpu") 메서드를 통해 TPU를 지원합니다.

단일 칩의 메모리 용량을 초과하는 대규모 모델의 경우, 사용자는 TensorParallelConfig를 전달하여 텐서 병렬 처리를 구현할 수 있습니다. 이는 로딩 과정에서 모델을 여러 칩에 걸쳐 샤딩(sharding)하여 TPU 포드에서 대규모 아키텍처를 실행할 수 있게 합니다.

고성능 커널

Hugging Face Kernels Hub의 특수 커널을 활용하여 TPU 성능을 더욱 최적화할 수 있습니다. 이 커널들은 Pallas로 작성되어 저수준 하드웨어 제어를 제공합니다. 예를 들어, Mixture-of-Experts(MoE) 모델을 위해 Tokamax의 ragged-dot 커널을 사용하면 처리량이 크게 향상되는 것이 확인되었습니다. 배치 크기 64에서 Qwen3-30B-A3B 및 Gemma 4 26B-A4B와 같은 모델의 디코딩 속도는 기본 구현 대비 각각 21.5배 및 12.8배의 성능 향상을 보였습니다.

지속적인 테스트 및 신뢰성

안정성을 보장하기 위해 Hugging Face는 TPU 지원을 지속적 통합(CI) 파이프라인에 통합하고 있습니다. 현재 테스트된 라이브러리 제품군의 96.5%가 TPU 하드웨어에서 통과하고 있습니다. 팀은 실패 사례를 적극적으로 추적하고, TorchTPU 저장소에 문제를 보고하며, 전반적인 호환성을 개선하기 위해 Transformers 라이브러리에 수정 사항을 업스트림하고 있습니다. 이러한 지속적인 노력은 TPU 배포를 기존의 GPU 기반 워크플로우만큼 안정적으로 만드는 것을 목표로 합니다.

Sources