torch.linalg.polar로 극분해하면 학습 루프에서 직접 backward가 이어집니다 | DAKER 커뮤니티

극분해에 기울기
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14의 torch.linalg.polar는 cuSOLVER QDWH 극분해에 CPU·CUDA·MPS backward를 붙입니다. 분석용 분해가 아니라, 학습 루프에서 바로 기울기를 이어갈 수 있습니다.

대칭 양정치 행렬을 손으로 고유분해한 뒤 인자만 재조합하던 코드가 있다면, 오늘은 같은 입력으로 torch.linalg.polar 한 줄을 넣어 보십시오. 참가자 입장에서는 “분해가 됐는지”보다 “.backward()가 끊기지 않는지”가 실전 기준입니다. 작은 행렬로도 충분합니다. 먼저 그래프가 이어지는지를 확인한 뒤, 필요하면 디바이스만 바꿔 보십시오.

재현해 볼 실험 조건

  1. 작은 SPD(또는 복소 Hermitian에 가까운) 행렬을 만들고, 손으로 고유분해·재조립한 경로와 torch.linalg.polar 경로를 나란히 둡니다.
  2. 두 경로 모두 requires_grad=True 입력에서 forward를 돌린 뒤, 스칼라 손실로 .backward()를 호출합니다.
  3. CPU와 가능하면 CUDA·MPS에서도 grad가 채워지는지 확인하고, 버전·디바이스를 노트에 남깁니다.

수치 벤치마크 숫자를 만들지 않아도 됩니다. 목표는 “학습 그래프에 극분해가 들어가는지”를 재현하는 것입니다. 행렬 제곱근이 필요하면 같은 릴리스의 matrix_sqrth를 별도 실험으로 나누십시오. 한 글에 두 API를 섞으면 재현 조건이 흐려집니다.

실무에서 바로 볼 포인트

실험 노트를 남길 때는 행렬 크기, dtype, 디바이스, PyTorch 빌드 버전을 같은 줄에 적어둡니다. 기울기가 비어 있으면 입력에 requires_grad가 빠졌는지부터 확인하십시오.

관련 DAKER 학습

설명용 생성 이미지입니다. 극분해 동작은 로컬 autograd 결과로 확인하십시오.