본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

규모가 붙는 네이밍과 레이아웃

~11 min · naming, directory-structure, conventions, tooling

Level 0Kindling
0 XP0/32 lessons0/10 achievements
0/100 XP to next level100 XP to go0% complete

경로가 첫 번째 색인이다

검색 도구는 실패하고, 데이터베이스는 부패하고, 기억은 흐려져 — 근데 디렉토리 트리는 여전히 거기 있어, 미래의 어떤 도구든 읽으면서, 좋은 레이아웃은 그 트리 자체를 유익하게 만들어. 나쁜 레이아웃은 트리를 저자만 풀 수 있는 퍼즐로 만들고, 그것도 몇 년뿐이지. 규모가 붙는 아카이브 레이아웃은, 낯선 이(또는 문맥 없는 미래의 네)가 문서 없이 해석할 수 있는 거야.

작동하는 모양은 수집 좌표를 반영해:

  • 최상위: 메이커. black-forest-labs/, mistralai/ — 감수 사슬의 뿌리. 상류 네임스페이스를 반영해서, 출처가 경로가 말하는 첫 번째 것이 되게.
  • 둘째 수준: 모델. FLUX.1-dev/ — 상류 리포지토리 이름, 있는 그대로, 아무리 못나도. 받으면서 모델 이름을 바꾸는 게 아카이브가 자기 소스로 가는 링크를 잃는 방법이야.
  • 셋째 수준: 변형/revision. bf16-240901/, gguf-q4/ — 정밀도나 포맷, 플러스 수집 스탬프. 한 모델의 두 변형은 형제지 룸메이트가 아니야: 파생 포맷은 자기 디렉토리를 갖고, 자기가 무엇인지 라벨 붙여.
  • 안쪽: 파일들, 플러스 기록들. 텐서, 토크나이저, 모델 카드(복사!), SHA256SUMS, 그리고 revision sha와 출처와 라이선스 줄과 사슬 점수와 날짜가 든 NOTES 파일. 디렉토리가 자기완결적이야: 아카이브의 데이터베이스를 지워도 모든 디렉토리는 여전히 자기를 설명할 수 있어.

집세를 내는 네이밍 규칙

미학보다 중요한 제약들: 네가 만드는 모든 경로 세그먼트는 소문자-하이픈(대소문자 구분이 파일시스템마다 달라서, 대소문자 충돌은 이주가 잘 안 돼). ASCII만(어떤 파일시스템에서 다르게 렌더되는 문자가 든 모델 이름은 미래의 유령 파일이야). 공백 없음(모든 셸과 스크립트에서 따옴표가 달라져). 날짜는 YYMMDDYYYY-MM-DD로(어휘 정렬이 시간 정렬과 같게). 이 규칙을 어겨도 상류 이름은 있는 그대로 둬 — 세그먼트는 규칙을 따르고, 그들의 이름은 데이터야.

보상은 복리로 쌓여: 스크립트가 트리를 걷는 것만으로 수집 메타데이터를 경로에서 재구성해. 복구된 백업이 스스로 재색인돼. 그리고 "그 모델의 BF16 원본이 어디 있지"가 검색 쿼리가 아니라 디렉토리 두 번 조회가 돼.

모든 디렉토리는 자기를 설명할 수 있어야 한다. 파일 + 카드 + 다이제스트 + NOTES 한 줄 — 문맥 없는 독자가 이게 뭔지, 어디서 왔는지, 왜 여기 있는지 디렉토리만으로 재구성할 수 있어야 해.

있는 엉망을 (안전하게) 이주하기

이름 바꾸기는 메타데이터 작업이지만 여전히 쓰기야 — 뒤에 검증해. 있는 더미의 안전한 이주 루프: 정준 레이아웃을 정하고, 모델 하나씩 옮기고(복사-그리고-잊기 말고 이동), 새 위치에서 다이제스트 점검을 다시 돌리고, 색인을 갱신해. 수집 중에 일괄 이름 바꾸기 절대 금지. 활성 전송 중의 레이아웃 변경이 .part 파일을 기대 목적지에서 고아로 만드는 방법이야.

Code

레이아웃, 구체적이고 완전하게·text
archive/
  mistralai/
    Mistral-7B-Instruct-v0.2/
      bf16-231105/                    # 변형 + 수집 스탬프
        config.json
        generation_config.json
        model-00001-of-00003.safetensors
        model-00002-of-00003.safetensors
        model-00003-of-00003.safetensors
        model.safetensors.index.json
        README.md                     # 모델 카드, 복사됨
        tokenizer.json
        tokenizer_config.json
        special_tokens_map.json
        SHA256SUMS                    # 다이제스트, 착지 시 기록
        NOTES                         # rev sha, 출처, 라이선스, 사슬
      gguf-q4-k-m-240920/            # 파생형, 자기 디렉토리
        model-Q4_K_M.gguf
        NOTES                         # 'bf16-231105의 파생형, <기기>용'
  black-forest-labs/
    FLUX.1-dev/
      bf16-240901/
        ...

# NOTES, 최소 실행 가능 내용물:
#   upstream: mistralai/Mistral-7B-Instruct-v0.2
#   revision: 63a8b081895390a26e140280378bc85ec8bce07a...
#   license: apache-2.0
#   chain: L1 org OK / L2 고정 / L3 oid / L4 sha256 OK / L5 스윕 날짜
#   acquired: 2026-09-14
#   why: 연구 의존 (논문 재현)

External links

Exercise

정준 레이아웃을 골격(mkdir -p 스타일)으로 적되, 실제 아티팩트 하나로 완전히 채워진 예시 디렉토리 하나를 함께 — NOTES 파일까지. 그다음 이미 갖고 있는 모델 둘에 적용해: 옮기고, 새 위치에서 다이제스트 검증하고, 낯선 이가 메이커, 모델, 변형, 라이선스, 출처를 디렉토리만으로 알아볼 수 있는지 확인해. 누군가(또는 일주일 뒤의 미래의 너)에게 하나 차게 읽어 달라고 해.
Hint
차가운 읽기 테스트가 인정 바야: 아카이브 루트에 README도, 데이터베이스도 없이 — 트리만. 독자가 라이선스가 뭔지, 파일이 어디서 왔는지 말 못 하면 NOTES 파일이 아직 제 몫을 못 하는 거야.

Progress

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

댓글 0

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

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