PyTorch 2.14의 @dynamic_spec으로 동적 shape를 compile·export에 한 번에 붙입니다 | DAKER 커뮤니티

한 줄 요약
PyTorch 2.14는 @dynamic_spec·ShapesSpec으로 가변 차원을 함수·모듈에 한 번 선언하면 torch.compile, torch.export, make_fx가 같은 스펙을 읽습니다. 호출마다 다른 방식으로 동적 shape를 넘기던 조건을 줄일 수 있습니다.

공식 2.14 릴리스 블로그의 Compilation and Export 절을 기준으로 정리합니다. API는 실험적이며 블로그에도 「API Unstable」로 표시되어 있습니다.

이전 재현 조건(왜 헷갈렸는지)

같은 모델인데 진입점마다 선언 위치가 달라, 배치 크기만 바뀐 실험에서 재컴파일·가드 실패가 섞이기 쉬웠습니다.

2.14에서 바뀐 점

  1. torch.fx.experimental.dynamic_spec 아래 ShapesSpec으로 차원 이름·범위·파생 차원·가정을 선언합니다. 예: ShapeVar("batch", min=2, max=128), batch % 2 == 0.
  2. @dynamic_spec을 함수나 모듈 forward에 붙이면 호출부에 스펙을 다시 넘기지 않아도 됩니다.
  3. 선언된 차원은 unbacked symbol로 취급되어, 트레이스 때 본 배치 크기로 조용히 특수화되지 않습니다.

성능·해결 시 주의

관련 DAKER 학습

출처: PyTorch 2.14 Release Blog.