C.W.K.
Stream
Lesson 04 of 04 · published

재작성이 추가가 되다

~12 min · finite-task, interfaces, blast-radius, extensibility

Level 0툴 임차인
0 XP0/33 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"모든 분리 결정의 보상은 새 모델 family 가 도착하는 날 나타나. 그날, 분리가 재작성을 추가로 바꿔."

아키텍처를 시험하는 날

앞 lesson 들의 모든 규율 — 북극성, 다섯 박스, framework-아닌-부품 룰 — 이 하나의 특정한 날 갚아져: 한 번도 본 적 없는 모델 family 가 나오고 사용자가 그걸 원하는 날. 그날, monolith 는 코어 파이프라인을 다시 열고 모든 걸 위험에 빠뜨리게 해. 분리된 엔진은 새 모듈 쓰고 꽂게 하고. 같은 외부 사건, 완전히 다른 두 비용. 그 차이가 아키텍처야.

'유한한 작업' 이 실제로 뜻하는 것

유한한 작업은 알려진, 경계 지어진 폭발 반경을 가져. FLUX 가 분리된 엔진에 도착하면, 물어봐: FLUX 가 다섯 박스 중 어디서 달라? backbone 은 새 DiT, text encoder 는 T5 추가, flow-match sampler 를 원해. 그래서 새 backbone 모듈 쓰고, text-encoder 처리를 확장하고, 기존 flow-match scheduler 를 재사용해. VAE 박스랑 conditioning 박스는 안 건드려. 작업이 인터페이스로 경계 지어져 — 시작 전에 가장자리를 볼 수 있어.

경계 지어진 폭발 반경이 전체 상품이야. 분리의 가치는 우아함이 아니야 — 한 줄 쓰기 전에 변경이 어떤 모듈을 건드리고 어떤 걸 못 건드리는지 정확히 예측할 수 있다는 거야. 작업의 가장자리를 아는 게 무서운 '재작성' 을 일정 잡을 수 있는 '추가' 로 바꿔.

왜 monolith 의 작업은 경계가 없는지

monolith 에선, 같은 FLUX 도착이 경계가 없어. backbone 변경이 sampler 로 닿아, 상태를 공유하니까. 새 text encoder 가 conditioning 모양을 바꾸고, 그게 attention 코드로 번지고, 그게 VAE hand-off 를 건드려. 모든 가정이 모든 다른 가정을 떠받쳐서, 어디든 변경이 어디서든 표면화할 수 있어. 작업을 추정 못 해, 부딪히기 전엔 가장자리를 볼 수 없으니까 — 보통 프로덕션에서.

추정 가능성은 추정자가 아니라 아키텍처의 특징이야. 변경이 얼마나 걸릴지 예측 못 하면, 보통 그건 아키텍처가 폭발 반경이 경계 없다고 말하는 거야. 깨끗한 module 경계가 작업을 추정 가능하게 만들어, 폭발 반경을 미리 보이게 하니까.

복리로 불어나는 수익

분리가 지속적 세금만큼 값어치 하게 만드는 게 이거야: 수익이 복리로 불어나. 첫 새 family 가 seam 이 작동함을 증명해. 둘째가 겹치는 데서 첫째의 새 모듈을 재사용하고. 다섯째 family 쯤이면, backbone, encoder, sampler 구현 라이브러리가 있고, 대부분의 새 family 는 기존 부품 조립 + 진짜 새 조각 하나가 대부분이야. monolith 의 비용은 특수 케이스가 쌓이면서 family 당 올라가고; 분리된 엔진의 비용은 부품 라이브러리가 자라면서 내려가.

두 아키텍처는 갈라져, 그냥 다른 게 아니라. 분리가 family 당 조금 나은 게 아니야. 분리는 싸지는데 monolith 는 비싸져, family 하나씩. 작은 초기 격차가 다섯째 모델쯤이면 못 건널 격차가 돼. 첫 데이터 포인트 말고 궤적을 보고 골라.

피파의 고백

새 family 가 처음 깔끔하게 착륙했을 때 — 새 backbone 모듈, 나머진 다 안 건드림, 오후 하나에 끝 — 난 마침내 아빠가 추상적으로 말하던 걸 몸으로 느꼈어. 깨끗한 seam 의 지루한 규율, 매일 지불한 그게, 끔찍한 한 주 대신 좋은 오후 하나로 현금화돼. 난 module 분리를 오버헤드로 보길 멈추고 내 미래 시간을 되사주는 그것으로 보기 시작했어. 적응성은 그냥 미뤄진 속도야.

Code

유한한-작업 체크리스트·python
# 새 family 가 도착. 유한한-작업 체크리스트:
#
#   이 family 가 다섯 박스 중 어디서 달라?
#
#   박스 1 text encoder : FLUX 가 CLIP 에 T5 추가  -> 확장
#   박스 2 backbone     : 새 DiT, U-Net 아님         -> 새 모듈
#   박스 3 sampler      : flow-match 원함            -> 재사용 (이미 있음)
#   박스 4 conditioning : 같은 attach 인터페이스     -> 안 건드림
#   박스 5 VAE          : 새 weight, 같은 iface       -> 로더 재사용
#
# 코드 쓰기 전에 폭발 반경 알려짐: 새 모듈 1 + 확장 1.
# 그게 일정 잡을 수 있는 유한한 작업이지, 두려운 재작성 아니야.

class FluxBackbone:                 # 진짜 새 조각 하나
    def predict_noise(self, latents, t, cond):  # 박스-2 계약 지킴
        ...                          # 모든 FLUX 특화 복잡성이 여기 살아
# 안 바뀐 sampler, conditioning, VAE 에 꽂혀.

External links

Exercise

네가 유지보수하는 시스템을 골라 그게 마주할 가장 그럴듯한 '새 family' 를 상상해 — 새 결제 provider, 새 파일 포맷, 새 기기 타입. 그 변경이 건드릴 모듈을 나열해. 목록이 짧고 확신 있어(유한한 작업), 아니면 흐릿하고 자라(재작성 위험)? 네 답이 아키텍처 감사야.
Hint
테스트는 변경이 어려운지가 아니라 — 완전한 폭발 반경을 미리 댈 수 있냐야. 가장자리에 대한 확신이 네 seam 이 진짜라는 신호야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.