변경 이력#
과거에 산출된 값을 현재 값과 비교하거나, 예전 checkpoint 를 다시 다룰 때 필요한 정보.
metric 정의 변경 (2026-07)#
다섯 모델의 metric.py 가 서로 어긋나 있던 것을 정리하면서 지표 정의가 바뀌었다.
이 시점 이전에 산출된 지표 값은 현재 값과 직접 비교할 수 없다.
| 변경 | 이전 | 현재 |
|---|---|---|
rel_l2% 정의 |
스칼라 필드에서 제곱근 누락, pixel space 는 정의 자체가 달랐음 | 다섯 모델 모두 |
rmse 정의 |
물리량 모델에서 격자점 수로 나누지 않은 합이라 격자 해상도에 의존 | 격자점 수로 나눈 참 RMS |
| 지표 이름 | mrse% |
rel_l2% (값과 식은 불변) |
| 계산 영역 | 캔버스 전체 | fluid 영역만 (회귀 경로) |
| mesh 가중 | vertex 단순 평균 | 면적 가중 |
| 샘플 단위 | 배치 안에서 합산 → 배치 크기에 값이 의존 | 샘플 하나씩 계산 후 평균 |
| 3D 테스트 샘플 | 슬라이스 1장 | 케이스 전체 |
| 공간 분리 | 물리 공간과 정규화 공간을 따로 계산 | 물리 공간 한 번의 패스 |
과거 산출물 다룰 때#
mrse%라는 이름은 옛 학습 상태 파일과 엑셀에 남아 있다. 이름만 바꾸지 않았을 뿐rel_l2%와 같은 값이다.- 3D 지표는 샘플 정의가 슬라이스에서 케이스로 바뀌었으므로 이전 값과 비교할 수 없다.
wmape%는 현재 기본 테스트 지표에 포함되지만 그 이전 학습의 얼려둔 설정에는 없다. 옛 학습에서 이 값이 필요하면 전체 재평가를 돌린다. 얼려둔 설정에 이름만 추가하면 재개 시 실패한다.abs_error_p95는 한때 추가됐다가mae·rmse와 중복이라 제거됐다.
아직 캔버스 전체로 계산되는 경로#
fluid 한정은 회귀 경로에 적용돼 있다. 다음은 캔버스 전체다.
- aicfd-grid-building-physical, aicfd-grid-building-rgb 의 AE 및 확산 계열 평가
- contour AE (Collator 가 마스크를 전달하지 않음)
- 도메인 AE (복원 대상이 마스크 자체)
WSS 정규화 변경 (2026-08)#
| 이전 | 현재 | |
|---|---|---|
| 변환 | ||
| 기준값 | 표준편차 (목표 표준편차 1) | 면적가중 중앙값 (목표 중앙값 1) |
| 극단값 처리 | 얕은 clip 으로 scale 보호 | clip 없음. 중앙값이 극단값에 둔감 |
이전 방식은 몇 개 안 되는 극단값이 표준편차를 좌우해서 clip 이 필요했다. 현재 방식은 정보 손실이 없고 inverse transform 이 정확하다.
target_stats 는 학습된 모델의 일부다. checkpoint 에 저장된 값을 그대로 쓰며, 다른 fold 나 다른 지수로
다시 계산하면 그 모델의 예측 scale 이 달라진다. 2026-08 이전 checkpoint 는 옛 변환 기준의 a_ref 를 갖고 있다.
현재 사양은 nondim 참고.
WSS 정규화 변경 2차 (2026-08)#
| 이전 | 현재 | |
|---|---|---|
| 변환 | ||
| 기준값 | 학습 fold 면적가중 중앙값 (checkpoint 동결) | 물리 유도 지수 + 고정 코드 literal. 학습 통계 없음 |
| 극단값 처리 | clip 없음. 중앙값이 극단값에 둔감 | 학습 target 을 per-case 면적가중 quantile 0.999 로 winsorize |
| 데이터 | — | h5 에 volume 추가 (벽면 mesh divergence theorem, 전처리가 backfill) |
형상별 잔여 scale(×3.89)가 cavity 부피와 상관해서 항으로 보정한다. 이 시점 이전 checkpoint 는
target_stats 기반이라 현재 코드로 평가할 수 없고, target 공간도 달라 학습 곡선을 직접 비교할 수 없다.
현재 사양은 nondim 참고.
WSS 정규화 변경 3차 (2026-08)#
| 이전 | 현재 | |
|---|---|---|
| 변환 | ||
| 크기 계수 | 고정 코드 literal 2.7e7. 전 데이터(평가 fold 포함) 면적가중 중앙값의 역수 |
해석 설정값에서 계산한다 — ρ, ν, 라벨을 질량유량으로 바꾸는 상수의 곱. 통계가 들어가지 않는다 |
| 극단값 처리 | 학습 target 을 per-case 면적가중 quantile 0.999 로 winsorize | 자르지 않는다 |
literal 은 평가 fold 까지 포함한 통계였다. 한동안 학습 fold 의 면적가중 중앙값으로 대신했다가, 계수 자리에 들어갈 상수가 이미 해석 설정에 다 있다는 것이 확인되면서 그쪽으로 옮겼다. 그래서 지금은 target 공간에 통계가 하나도 없고, 변환은 상수배를 거친 값이 아니라 dimensionless group 그 자체다. 크기도 따로 맞출 필요가 없다 — 면적가중 중앙값이 32 로 나와 float16 범위 안에 들어온다.
clip 은 재 보니 자를 대상이 없었다. 상위 면적 0.1% 를 넘는 면들의 면적 중앙값이 전체의 0.53배로 sliver 라 하기 어렵고, 최댓값도 cap 의 2.34배에 그쳤다. L1 loss 가 이미 꼬리에 둔감하다.
이 시점 이전 checkpoint 는 target 공간이 상수배만큼 다르다.
mesh 노드 병합 (2026-08)#
CGNS 가 패치 이음매의 노드를 두 번 적어 두는 것을 전처리가 그대로 받아들이고 있었다. 벽면이 위상적으로 여러 조각(case 0001 은 8조각)이라 Laplacian 이 조각마다 끊겼고, 부피 계산은 이음매를 개구부로 보고 캡을 씌웠다. 전처리에서 좌표가 같은 노드를 합치도록 바꿨다.
| 이전 | 현재 | |
|---|---|---|
| 벽면 연결성 | case 0001 기준 8조각 | 전 케이스 한 덩어리 |
| 경계 루프 | 형상당 12~67개 (이음매 포함) | 3~4개 (콧구멍·인두) |
| cavity 부피 | 18~54 cm³ | 28.5~60.3 cm³ |
| 부피 지수 실측 | 기울기 −0.95±0.29 (r=−0.76), 보정 후 잔여 ×3.18 | −1.39±0.20 (r=−0.92), 보정 후 ×1.82 |
부피가 바뀌므로 이 시점 이전 h5 와 그 데이터로 학습한 checkpoint 는 target scale 이 다르다. 형상별 잔여가 절반으로 준 것은 그만큼이 부피 계산 오차였다는 뜻이다.
좌표 정규화 기준 (2026-08)#
확산 시간은 학습되는 값이고, 뜻하는 바는 geodesic conv 의 kernel 크기다. 형상마다 같은 크기를 뜻해야 하는데 좌표를 최대 반지름으로 정규화하고 있었다. 그 반지름은 중심에서 가장 먼 점 하나 — 전두동이나 인두 끝 — 가 정하는 값이라 통로 크기와 무관하고, 형상 10개 사이에서 정규화 후 표면적이 ×1.56 만큼 어긋나 있었다. 표면적을 1 로 맞추는 방식으로 바꿨다. 퍼짐은 ×1.000, 평균 edge 의 변동계수는 0.097 에서 0.053 으로 줄었다.
좌표가 바뀌므로 operator cache 의 hash 도 바뀐다. 이 시점 이전 cache 는 재사용되지 않고 eigenbasis 를 다시 만든다.
repo 이름 변경 (2026-10)#
repo 이름을 aicfd-<표현>-<대상>-<target> 순서로 바꿨다. 이전 이름은 접두사 aicfd-·aifem- 이
표현을 대신했고, 렌더 이미지를 pixel 이라고 불렀다.
| 이전 이름 | 현재 이름 |
|---|---|
aicfd-building-pixel |
aicfd-grid-building-rgb |
aicfd-building-physical |
aicfd-grid-building-physical |
aicfd-indoor-physical |
aicfd-grid-indoor-physical |
aicfd-nasal-pixel |
aicfd-grid-nasal-rgb |
aifem-nasal-physical |
aicfd-mesh-nasal-physical |
2026-10-01 이전의 output 폴더, Notion 지표 기록, NAS 경로에는 이전 이름이 남아 있다.
aicfd-mesh-nasal-physical 의 패키지 디렉터리도 aifem/ 에서 aicfd/ 로 바꿨다. checkpoint 에 저장된 config 의
_target_ 이 aifem. 으로 시작하는 output 은 aicfd. 로 고쳐야 읽힌다. 가중치는 그대로 쓴다.
데이터 재생성 이력#
| 모델 | 보간 안전장치 | O(1) clip | 양자화 범위 |
|---|---|---|---|
| aicfd-grid-indoor-physical | 적용 | 적용 ( m/s, °C) | 실제 분포에 맞게 재산정 완료 |
| aicfd-grid-building-physical | 적용 | 미적용 | 안전장치 도입 이전 범위 유지 |
aicfd-grid-building-physical 의 양자화 범위를 좁히는 절차는 운영 절차 에 있다.