소식 · · 읽는 시간 13분

AWS TorchNeuron 공개: Trainium을 PyTorch 기본 장치로 붙인 백엔드와 서울 리전 공백

이 글의 차례
  1. 이전 XLA 경로와 바뀐 코드
  2. 첫 판에서 빠진 기능
  3. 같은 고객 사례에 붙은 세 가지 수치
  4. 서울 리전에 없는 Trn2
  5. 한국 팀이 따져 볼 것
  6. 아직 적은 반응
  7. 한계
  8. 출처

AWS가 2026년 10월 19일 TorchNeuron을 발표했습니다. 자사 AI 칩 Trainium을 PyTorch의 정식 장치(neuron)로 등록하는 오픈소스 백엔드이고, 10월 20일 PyTorch Conference North America에서 Apache 2.0 라이선스의 공개 베타로 풀립니다. 바뀌는 것은 코드입니다. 지금까지 Trainium에서 PyTorch를 돌리려면 PyTorch/XLA 방식으로 장치 지정, 단계 끝 mark_step(), 전용 옵티마이저 호출을 넣어야 했습니다. TorchNeuron에서는 .to('neuron') 한 줄이 그 자리를 대신합니다. 한국 팀에게는 제약도 분명합니다. TorchNeuron은 Trn2·Trn3 인스턴스에서만 돌고, AWS EC2 문서의 리전별 인스턴스 목록에는 서울 리전에 Trn 계열이 하나도 없습니다.

이 글에서는 이전 경로와 바뀐 코드 실물, 첫 판에서 빠진 기능, 같은 고객 사례에 붙은 서로 다른 세 수치, 리전 공백이 한국 팀에 주는 의미를 다룹니다.

이전 XLA 경로와 바뀐 코드

이전 Trainium용 PyTorch 패키지(torch-neuronx 구버전)는 PyTorch/XLA 위에 있었습니다. AWS Neuron 문서의 프로그래밍 가이드는 이 방식을 "lazy mode"로 설명합니다. 텐서는 계산 그래프를 쌓는 자리표시자이고, xm.mark_step()이 불릴 때 그래프가 컴파일되고 실행됩니다. 그래서 학습 루프 끝마다 mark_step()을 넣어야 했고, 중간에 loss.item()이나 print(loss)를 부르면 원치 않는 컴파일·실행이 끼어들었습니다. 이 경로는 학습용으로는 이미 끝났습니다. Neuron 문서에 따르면 Neuron 2.30부터 Trainium에서 PyTorch/XLA 학습은 지원되지 않고, XLA 기반 학습의 마지막 판은 PyTorch 2.9였습니다.

같은 단일 장치 학습 루프를 두 방식으로 나란히 놓으면 차이가 보입니다. 아래 두 코드는 Neuron 프로그래밍 가이드와 PyTorch 블로그의 예제 조각을 같은 루프에 맞춰 직접 정리한 것입니다. Trainium 인스턴스에서 실행해 본 코드는 아닙니다.

# 이전: PyTorch/XLA 기반 torch-neuronx
import torch_xla.core.xla_model as xm

device = xm.xla_device()          # XLA 장치
model = MyModel().to(device)
for batch, targets in dataloader:
    optimizer.zero_grad()
    loss = criterion(model(batch.to(device)), targets.to(device))
    loss.backward()
    optimizer.step()
    xm.mark_step()                # 여기서 그래프 컴파일·실행
# TorchNeuron
model = MyModel().to('neuron')    # 바뀌는 곳은 이 줄
for batch, targets in dataloader:
    optimizer.zero_grad()
    loss = criterion(model(batch), targets)
    loss.backward()
    optimizer.step()

두 번째 코드에는 torch_xla import도 mark_step()도 없습니다. PyTorch 블로그는 이 줄에 "the only change"라는 주석을 달았습니다. 다만 그 예제는 입력 텐서를 장치로 옮기는 부분을 생략했습니다. 실제 코드에서는 배치를 neuron 장치로 옮기는 처리가 dataloader 쪽 어딘가에 있어야 합니다.

나머지 차이는 나열형이라 표로 정리했습니다. 구버전 열은 Neuron 문서 보관본, TorchNeuron 열은 PyTorch 블로그와 GitHub README 기준입니다.

항목이전 PyTorch/XLA 경로TorchNeuron
장치 지정xm.xla_device() 또는 'xla''neuron'
실행 방식lazy, mark_step() 때 컴파일·실행eager 기본, torch.compile(backend="neuron") 선택
데이터 병렬 학습xm.optimizer_step(), MpDeviceLoader, 'xla' 백엔드torch.distributed 표준 API(DDP, FSDP2 등)
대상 인스턴스Trn1, Trn2Trn2, Trn3

TorchNeuron이 이렇게 동작하는 이유는 등록 방식에 있습니다. PyTorch에는 외부 하드웨어를 장치로 붙이는 공식 확장 지점 PrivateUse1이 있고, TorchNeuron은 그 지점으로 Trainium을 등록합니다. AWS는 이 덕분에 torch.nn, torch.autocast, torch.distributed, torch.profiler가 neuron 장치에서 그대로 동작한다고 설명합니다. Hugging Face Transformers에서는 device_map="neuron"이나 device_map="auto"로 모델을 Trainium에 올립니다.

첫 판에서 빠진 기능

"코드 한 줄"은 모델이 첫 판의 지원 범위 안에 있을 때의 이야기입니다. GitHub README의 알려진 한계 목록에서 실무에 가장 크게 걸리는 것은 정적 shape입니다. torch.compile은 dynamic=False만 지원하고, 새 입력 shape가 들어올 때마다 다시 컴파일합니다. README는 입력을 패딩하거나 묶어서(bucketing) shape 수를 줄이라고 권합니다. 길이가 제각각인 텍스트를 받는 LLM 서빙에서는 이 처리가 사실상 필수로 보입니다.

수치 정밀도에도 조건이 있습니다. float64는 float32로 실행되고, int64 지원은 연산마다 다릅니다. 저정밀 학습은 두 출처의 표현이 다릅니다. PyTorch 블로그는 TorchAO와 FP8이 비공개 베타이고 다음 릴리스에서 일반 공개된다고 썼습니다. README는 이번 릴리스에서 TorchAO 연동을 쓸 수 없다고 적었습니다.

AWS는 호환성을 두 가지 방식으로 쟀다고 밝혔습니다. 하나는 Hugging Face와 TorchTitan 모델을 넓게 돌려 보는 방식이고, Hugging Face 쪽은 다운로드 수 기준 실사용의 99.9%를 덮는 모델 10만 개를 계속 돌립니다. 다른 하나는 PyTorch 업스트림 테스트 묶음입니다. 업스트림 테스트의 구성은 그림 1과 같습니다.

그림 1. TorchNeuron PyTorch 업스트림 테스트 결과 구성. PyTorch 블로그의 AWS 발표 수치로 직접 정리

AWS가 2026년 8월에 돌린 실행에서 나온 테스트 결과는 약 154,000건이고, 그중 약 69,000건이 건너뛴 테스트입니다. 약 30,000건은 CUDA 전용이나 CPU 전용처럼 PyTorch가 스스로 제외한 것입니다. 나머지 약 39,000건은 Neuron 쪽이 의도적으로 건너뛴 것이고, 가장 큰 덩어리는 Neuron 네이티브 구현이 아직 없는 연산자 약 22,000건입니다. 실행된 약 85,000건은 154,000에서 69,000을 빼서 직접 계산한 값입니다. 블로그 본문에는 통과율이 숫자로 적혀 있지 않아서 그림에도 넣지 않았습니다.

첫 판에서 일부러 지원하지 않는 기능 목록도 블로그에 있습니다. 희소 텐서, NestedTensor, forward-mode autograd, 동적·기호 shape, 채널별 양자화가 여기에 들어갑니다. AWS는 고객이 요청하지 않아서 첫 판에서 뺐다고 설명합니다.

같은 고객 사례에 붙은 세 가지 수치

TorchNeuron의 대표 사례는 음성 AI 회사 Deepgram입니다. 같은 날 나온 세 자료가 이 사례를 서로 다른 숫자로 말합니다. 세 자료를 같은 표에 놓았습니다.

말한 사람실린 곳수치비교 기준과 조건
Deepgram CTOPyTorch 블로그약 60%자사가 평가한 벤치마크에서 기존 GPU 기준선 대비, 달러당 처리한 입력 오디오 초
AWS 솔루션 아키텍트 등AWS 머신러닝 블로그11~70%기존에 쓰던 컴퓨팅 대비, 오프라인 배치, trn2.3xlarge, 평가 당시 인스턴스 가격
AWS 부사장 Colin BraceTechCrunch 인터뷰70%조건 설명 없이 "production-grade accuracy"

세 수치는 같은 측정을 다르게 요약한 것으로 보입니다. AWS 블로그의 11~70%가 범위 전체이고, 70%는 그 위쪽 끝입니다. 측정 조건은 실시간 서빙이 아니라 처리량 위주의 오프라인 배치였습니다. 그리고 세 수치 모두 AWS나 그 고객이 직접 잰 값입니다. TorchNeuron 성능을 제3자가 잰 측정은 이 글을 쓰는 시점에 찾지 못했습니다.

AWS 블로그에 따르면 이 사례도 "한 줄 바꾸기"로 끝나지 않았습니다. Deepgram과 AWS는 NKI-lib의 미리 만든 커널로 일부 층을 바꾸고 커널 소스를 손봤습니다. 서빙 경로에서는 Python과 PyTorch를 빼고 Rust 런타임이 미리 컴파일한 실행 파일을 직접 부르게 만들었습니다. Deepgram CTO도 PyTorch 블로그에서 이 포팅을 여러 달에 걸친(multi-month) 작업이라고 표현했습니다. 위 수치는 설정 한 줄의 효과가 아니라 커널 수준 튜닝까지 마친 뒤의 결과입니다.

서울 리전에 없는 Trn2

README는 설치 조건으로 Trn2 또는 Trn3 인스턴스를 요구합니다. 구버전이 돌던 Trn1은 대상이 아닙니다. 그래서 TorchNeuron을 쓸 수 있는 곳은 Trn2·Trn3가 있는 리전으로 좁혀집니다. AWS EC2 문서의 리전별 인스턴스 목록에서 Trn 계열을 찾아 한국 팀이 고를 만한 리전과 함께 정리했습니다.

리전Trn2함께 있는 Trn·Inf 계열
미국 동부(오하이오)있음Trn1, Trn1n, Inf1, Inf2
아시아 태평양(하이데라바드)있음Trn2u
아시아 태평양(멜버른)있음Trn1
남아메리카(상파울루)있음Inf1, Inf2
아시아 태평양(서울)없음Inf1, Inf2
아시아 태평양(도쿄)없음Inf1, Inf2

이 목록에서 Trn2가 있는 리전은 위 네 곳뿐입니다. Trn3 UltraServer는 2025년 12월 2일 발표됐지만 이 리전 목록 문서에는 아직 없습니다. 서울과 도쿄에 있는 Trn·Inf 계열은 추론용 Inf1과 Inf2뿐입니다. 목록이 실제 콘솔의 가용 상황과 다를 수 있어서, 쓰기 전에 콘솔에서 다시 확인해야 합니다.

한국 팀이 따져 볼 것

TorchNeuron이 바꾸는 것은 Trainium을 시험해 보는 비용입니다. 이전에는 Trainium을 써 보려면 학습 루프를 XLA 방식으로 고치고 lazy 실행을 이해해야 했습니다. 이제는 PyTorch 코드를 거의 그대로 두고 eager로 돌려 보면서 어느 연산이 CPU로 떨어지는지부터 확인할 수 있습니다. GPU 비용이 부담인 팀이 비교 실험을 해 보는 문턱은 확실히 낮아졌습니다.

학습과 서빙은 따로 판단해야 할 것으로 보입니다. 학습은 데이터가 리전 밖으로 나가도 되는 경우라면 오하이오 같은 해외 리전에서 돌려도 됩니다. 실시간 서빙은 서울에 Trn2가 없다는 점이 지연 시간과 개인정보 국외 이전 검토 양쪽에서 걸립니다. 서울 리전에 남아야 하는 서비스라면 당분간은 Inf2와 기존 Neuron 추론 스택이 현실적인 선택지로 보입니다.

정적 shape 제약도 서빙 쪽에 더 무겁습니다. 이미지 분류처럼 입력 크기가 고정된 모델은 영향이 작습니다. 길이가 계속 바뀌는 텍스트 생성이나 음성 인식은 패딩·버킷 설계가 먼저 필요합니다. Deepgram 사례가 처리량 위주 오프라인 배치였다는 점도 같은 방향을 가리킵니다.

파트너 목록에 한국 회사가 있을 수도 있습니다. PyTorch 블로그는 TorchNeuron으로 Trainium 생태계를 넓히는 파트너 목록에 Nota AI를 넣었습니다. 같은 영문 이름을 쓰는 한국 회사로는 2025년 11월 코스닥에 상장한 AI 모델 경량화 회사 노타가 있습니다. 다만 발표는 이 Nota AI가 어느 나라 회사인지, TorchNeuron으로 무엇을 하는지 밝히지 않아서 같은 회사라고 단정할 수는 없습니다.

아직 적은 반응

발표가 하루 전이라 개발자 커뮤니티의 반응은 아직 거의 없습니다. Hacker News에는 PyTorch 블로그 링크가 올라왔지만, 확인한 시점에 2점에 댓글이 0개였습니다. Reddit과 X에서도 의미 있는 토론을 찾지 못했습니다.

나온 의견은 대부분 발표 당사자와 언론의 것입니다. PyTorch 개발을 이끄는 Meta의 Jana van Greunen은 PyTorch 블로그에서 이렇게 말했습니다. "developers should have a consistent experience across hardware platforms." Hugging Face의 Jeff Boudier는 TorchNeuron이 Trainium을 Transformers와 Diffusers의 네이티브 백엔드로 만든다고 했습니다. 두 사람 모두 발표에 참여한 파트너입니다.

회의적인 쪽은 TechCrunch 기사입니다. 기자는 하드웨어에서 AI 코드를 돌리는 번거로움을 숨기는 것이 PyTorch의 목적 중 하나라고 짚고 이렇게 썼습니다. "We'll have to wait and see if pushing Nvidia out that far gives developers more choice and more affordable options, as Amazon promises, or just more configuration headaches." 같은 기사는 AMD GPU와 Apple 칩도 이미 설정 변경으로 PyTorch를 돌릴 수 있다는 점을 짚었습니다.

한계

항목내용
직접 실행Trainium 인스턴스에서 코드를 돌려 보지 않았다. 코드 비교는 공식 문서 예제를 정리한 것
성능 수치전부 AWS와 고객사 발표. 제3자 측정 없음
통과율업스트림 테스트 통과율은 블로그 본문에 숫자가 없어 싣지 않았다
리전 정보EC2 문서 목록 기준. 실제 콘솔 가용성과 다를 수 있다
시점공개 베타 첫날 기준. 지원 범위는 릴리스마다 바뀐다

이 글의 코드 비교는 바뀐 줄의 위치를 보여 주는 것까지가 목적입니다. 실제 모델이 첫 판에서 몇 줄 수정으로 도는지는 모델이 쓰는 연산자와 입력 shape에 달려 있고, 이 글은 그것을 재지 않았습니다.

출처

1 / 1