PyTorch 2.14 @dynamic_spec으로 배치 가변 차원을 compile·export에 한 번에 선언합니다 | DAKER 커뮤니티

동적 형상을 한곳에
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14의 @dynamic_specShapesSpec은 가변 배치·시퀀스 차원을 함수나 모듈에 붙여 둡니다. torch.compiletorch.export가 같은 선언을 읽어, 호출부마다 다른 dynamic 설정을 흩뿌리지 않아도 됩니다.

배치 크기가 바뀔 때마다 export용 dict와 compile용 플래그를 따로 맞추다 보면, 같은 모델인데도 선언이 어긋나기 쉽습니다. 오늘은 가변으로 둘 차원을 먼저 고르고, 그 이름을 스펙 한곳에만 적어 보십시오. 호출부에서 다시 설명하지 않아도 compile과 export가 같은 규칙을 따릅니다.

재현해 볼 실험 조건

  1. 배치 차원에 최소·최대와 짝수 같은 가정을 둔 ShapesSpec을 만듭니다.
  2. 같은 스펙을 @dynamic_spec으로 forward에 붙인 버전과, 호출부 dynamic_shapes만 쓰는 버전을 준비합니다.
  3. 둘 다 compile과 export로 넘긴 뒤, 배치를 바꿔 재컴파일·가드 차이를 비교합니다.

스펙으로 선언한 차원은 unbacked 심볼로 잡혀, 우연히 본 배치에 조용히 특화되지 않습니다. 그 대신 형상에 의존하는 분기는 데이터 의존 오류로 드러납니다. 참가자 입장에서는 “어느 축이 변하는지”를 모델 옆에 남겨 두는지가 재현성을 가릅니다.

실무에서 바로 볼 포인트

관련 DAKER 학습

설명용 생성 이미지입니다. 스펙 동작은 로컬 compile·export 결과로 확인하십시오.