cdist·pdist에 이중 역전파가 열려 create_graph=True로 Hessian·기울기 페널티를 통과시킵니다 | DAKER 커뮤니티

cdist 이중 역전파
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14에서 torch.cdisttorch.pdist에 이중 역전파가 구현되었습니다. create_graph=True로 Hessian·기울기 페널티·Hessian-벡터 곱을 쌍거리 연산 위에 올릴 때 더 이상 바로 실패하지 않습니다.

예전에 쌍거리 기반 손실에 이차 미분을 걸면 지원되지 않는다는 오류로 막히는 경우가 많았습니다. 오늘은 작은 배치에서 cdist로 거리를 구한 뒤, create_graph=True로 한 번 더 미분하여 기울기 노름 페널티를 계산하는 경로부터 확인하십시오. 참가자 노트에는 PyTorch 버전, 입력 shape, create_graph 설정, 성공·실패 한 줄을 남깁니다. “빨라졌다”보다 “이차 미분이 통과하는지”가 재현에 도움이 됩니다.

재현해 볼 실험 조건

  1. 작은 실수 텐서 두 개로 torch.cdist 거리를 만들고, 스칼라 손실을 정의합니다.
  2. torch.autograd.grad(..., create_graph=True)로 일차 기울기를 구한 뒤, 그 기울기 노름에 대해 다시 미분합니다.
  3. 같은 코드를 PyTorch 2.13 이전과 비교할 수 있다면, 실패하던 지점이 2.14에서 통과하는지 한 줄로 적습니다. pdist도 같은 방식으로 확인합니다.

node_creation_hook이나 set_output_grad_dtype은 그래프 메타·기울기 dtype 계약이고, 이번 글은 쌍거리 연산의 이차 미분 지원입니다. 실험이 끝나면 사용한 버전·shape·손실 형태를 고정해 두면 다음 참가자가 바로 따라올 수 있습니다.

실무에서 바로 볼 포인트

관련 DAKER 학습

출처: https://pytorch.org/blog/pytorch-2-14-release-blog/

설명용 생성 이미지입니다. 동작은 로컬에서 cdist/pdist 이중 역전파 결과로 확인하십시오.