MPS에서 F.linear 시퀀스 길이 1 디코드가 느렸던 함정 — PyTorch 2.14에서 경로가 고쳐졌습니다 | DAKER 커뮤니티

디코드 경로를 고칩니다
설명용 생성 이미지입니다.

한 줄 요약
Apple Silicon MPS에서 자동회귀 디코드는 종종 활성값을 [B, 1, K] 형태로 F.linear에 넣습니다. 예전에는 이 모양이 빠른 경로를 벗어나 bf16·fp16에서 크게 느려질 수 있었습니다. PyTorch 2.14는 시퀀스 길이 1 라우팅과 GEMV 커널을 보강해 이 간극을 줄입니다.

맥에서 디코드만 유난히 답답했다면, 모델 구조보다 선형층의 입력 shape를 먼저 의십시오. 배치·시퀀스·특징 차원 표기가 한 칸만 달라도 커널 선택이 갈립니다.

재현하기 쉬운 조건

  1. MPS 장치에서 F.linear 입력 shape를 [B, 1, K]로 둡니다.
  2. dtype은 bf16 또는 fp16으로 맞춥니다.
  3. 같은 연산량을 2.13과 2.14에서 각각 재어 커널·지연을 비교합니다.

공식 정리 기준으로, 시퀀스 길이 1이 빠른 경로를 벗어나던 경우가 수정되었고, 벡터-행렬 형태를 받는 GEMV 커널이 보강되었습니다. CUDA 대비 남았던 디코드 병목 중 큰 축 하나를 줄이는 변경입니다.

실무 체크

관련 DAKER 학습

설명용 생성 이미지입니다. 실측 배속은 기기·버전별로 다시 재십시오.