////

변환/최적화 패스는 shape·metadata 불변식을 함께 갱신해야 한다

컴파일러나 텐서 그래프 최적화에서 연산의 shape, rank, slice alignment 등을 바꾸면 기존 sharding, padding, dimension 매핑 같은 부가 메타데이터가 즉시 무효가 될 수 있다. 변환 로직은 데이터 경로뿐 아니라 verifier가 보는 모든 주석과 경계 조건을 함께 재계산하거나 안전하게 제거하는 방식으로 작성하는 것이 좋다.

////

Summary#

컴파일러나 텐서 그래프 최적화에서 연산의 shape, rank, slice alignment 등을 바꾸면 기존 sharding, padding, dimension 매핑 같은 부가 메타데이터가 즉시 무효가 될 수 있다. 변환 로직은 데이터 경로뿐 아니라 verifier가 보는 모든 주석과 경계 조건을 함께 재계산하거나 안전하게 제거하는 방식으로 작성하는 것이 좋다.

Problem#

TensorFlow/XLA PR들에서 bitcast hoist 후 fusion output shape가 바뀌었지만 sharding annotation이 그대로 남아 HloVerifier가 실패했고, reshape operand의 leading unit dimension을 잘못 대응시켜 slice-of-reshape 최적화가 잘못 bail out되었다. MatrixDiag 계열 gradient도 op의 실제 padding/align 규칙과 gradient 구현의 기본값이 달라 padded entry로 gradient가 흐르는 문제가 있었다.

Solution#

IR 변환 후에는 shape/rank에 종속된 sharding·layout·slice index·padding 정책을 재검증하고, 새 shape에 맞게 재작성할 수 없으면 annotation을 clear한다. leading size-1 dimension, ignored padding, default alignment처럼 의미상 사라지거나 암묵적인 차원은 별도 케이스로 테스트하고, gradient나 inverse transform도 forward op의 정확한 semantics를 공유하게 만든다.

Failure Modes#

  • shape만 변경하고 sharding/layout annotation을 유지해 verifier 또는 런타임에서 실패
  • unit dimension을 실제 sliced dimension으로 잘못 매핑해 합법적인 최적화를 막거나 잘못 적용
  • forward op에는 없는 기본 align/padding 정책을 gradient에서 사용해 silent numerical error 발생
  • rank 변경 케이스, padding 무시 케이스, finite-difference gradient 검증이 테스트에 없음

Sources#

  • https://github.com/tensorflow/tensorflow/pull/127491
  • https://github.com/tensorflow/tensorflow/pull/127433
  • https://github.com/tensorflow/tensorflow/pull/127282
  • https://github.com/tensorflow/tensorflow/pull/127343
  • https://github.com/tensorflow/tensorflow/pull/127333
  • https://github.com/tensorflow/tensorflow/pull/127418
  • https://github.com/tensorflow/tensorflow/pull/127286
  • https://github.com/tensorflow/tensorflow/pull/126192
  • https://github.com/tensorflow/tensorflow/pull/127358
  • https://github.com/tensorflow/tensorflow/pull/127283
  • https://github.com/tensorflow/tensorflow/pull/127419
  • https://github.com/tensorflow/tensorflow/pull/127408
  • https://github.com/huggingface/transformers/pull/48760
  • https://github.com/huggingface/transformers/pull/48853
  • https://github.com/huggingface/transformers/pull/48846
  • https://github.com/huggingface/transformers/pull/48809
  • https://github.com/huggingface/transformers/pull/48798
  • https://github.com/huggingface/transformers/pull/48660
  • https://github.com/huggingface/transformers/pull/48852
  • https://github.com/huggingface/transformers/pull/48652
  • https://github.com/tinode/chat/pull/1014
  • https://github.com/tinode/chat/pull/1009
  • https://github.com/tinode/chat/pull/1007
  • https://github.com/tinode/chat/pull/1006
  • https://github.com/tinode/chat/pull/1003
  • https://github.com/tinode/chat/pull/1004
  • https://github.com/tinode/chat/pull/1001
  • https://github.com/tinode/chat/pull/1005
  • https://github.com/tinode/chat/pull/1002
  • https://github.com/tinode/chat/pull/998
  • https://github.com/tinode/chat/pull/997
  • https://github.com/heroiclabs/nakama/pull/2554
  • https://github.com/heroiclabs/nakama/pull/2551
  • https://github.com/heroiclabs/nakama/pull/2532
  • https://github.com/heroiclabs/nakama/pull/2533
  • https://github.com/heroiclabs/nakama/pull/2536
  • https://github.com/heroiclabs/nakama/pull/2539
  • https://github.com/heroiclabs/nakama/pull/2541
  • https://github.com/heroiclabs/nakama/pull/2538
  • https://github.com/heroiclabs/nakama/pull/2540
  • https://github.com/heroiclabs/nakama/pull/2542
  • mined_at: 2026-09-16T11:38:53Z

Sagwan Revalidation 2026-09-16T12:18:35Z#

  • verdict: ok
  • note: 일반 원칙과 TensorFlow/XLA 사례 모두 현재 관행과 충돌하지 않는다.

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1