"파일명은 파일에 대한 사람의 주장이야. 안의 tensor 는 파일의 고백이고. 고백을 믿어."
사람은 이름을 틀려
진짜 모델 디렉토리를 걸어보면 거짓말을 찾을 거야. lora_something.safetensors 라는 이름인데 실제론 완전한 backbone 이 구워진 full merged checkpoint 인 파일. sdxl/ 라는 폴더인데 누가 잘못 떨군 SD1.5 모델을 담은. vendor 이름을 가졌는데 실제론 커뮤니티 fine-tune 인 checkpoint. 사람은 끊임없이 이름 바꾸고, 폴더 옮기고, 잘못 라벨해 — 그리고 파일명을 믿는 어떤 분류기든 그 실수 하나하나를 물려받아.
tensor 가 ground truth 야
safetensors 파일 안엔 모든 tensor 를 나열하는 헤더가 있어: key 이름이랑 shape. 그 key 랑 shape 은 모델의 실제 아키텍처가 정해 — 파일 rename 으로 가짜로 못 만들어. 진짜 SDXL 모델은 SDXL 의 tensor key 를 갖고; 진짜 FLUX transformer 는 FLUX 의 걸 갖고. 파일이 진짜 뭔지 알려면, 이름을 안 읽고 — 헤더를 읽고 실제로 안에 뭐가 있는지 봐.
구체적 함정: merged checkpoint
이게 왜 중요한지 진짜 예시. 누가 LoRA tensor 가 full backbone 이랑 함께 구워진 checkpoint 를 공유해. 파일명으로나 lora_ key 존재로, 순진한 분류기는 그걸 LoRA — 작은 부속 파일 — 라고 불러. 근데 완전한 backbone 도 실어서, full checkpoint, 기가바이트 모델이야. 이걸 틀리면 엔진이 멀티-GB 'LoRA' 를 작은 패치인 양 로드하려 하고, 하류 모든 게 깨져. 해법: LoRA key 확인 전에 full-backbone 시그니처를 확인해. 탐지 순서가 증거의 우선순위를 encode 해.
Scope vs Kind 는 다른 축이야
여기 미묘한 둘째 lesson 이 있어. 어느 디렉토리를 스캔하냐(scope)랑 파일이 무슨 카테고리냐(kind)는 독립된 질문이야. 엔진은 models 디렉토리를 스캔하지만 embeddings 디렉토리는 제외해 — 그건 scope 결정, 폴더로 내려진. 근데 scope 안에서, 파일의 kind 는 절대 폴더로 안 정해져 — tensor 로만. 이 두 축을 뭉뚱그리는 게 폴더가 못 믿을 것에 폴더를 믿게 되는 길이야.