InstructLab 핵심 기능 — 택소노미와 스킬·지식 기여
InstructLab 핵심 기능
InstructLab의 정렬 튜닝은 **택소노미(taxonomy)**에 의해 주도돼요. 택소노미는 대부분 수작업으로 정성껏 만들어진 지식 트리이고, 여기에 스킬(skill)과 지식(knowledge)을 추가해 모델을 조정해요. 어떤 구조인지 자세히 볼게요.
스킬과 지식
택소노미에는 두 종류가 있어요.
- 스킬(skills) — 수행적 행동(performative actions)
- 지식(knowledge) — 사실·데이터·참조를 포함하는 질문에 답하는 것
택소노미 트리 구조
InstructLab의 택소노미 트리는 계단식 파일 구조예요.
- 최상위 디렉터리 = 트리의 루트(root)
- 하위 디렉터리 = 트리의 브랜치(branch)
- 최종 디렉터리 = 리프 노드(leaf node),
qna.yaml파일을 포함
.
└── linguistics
├── writing
│ ├── brainstorming
│ │ ├── idea_generation
│ │ │ └── qna.yaml
│ │ │ attribution.txt
│ │ └── refute_claim
│ │ └── qna.yaml
│ │ attribution.txt
│ ├── prose
│ │ ├── articles
│ │ └── qna.yaml
│ │ attribution.txt
└── grammar
└── qna.yaml
attribution.txt
└── spelling
└── qna.yaml
attribution.txt
InstructLab 프로세스에서 리프 노드에 필수인 파일은 qna.yaml이에요. 상류(upstream) 택소노미에서는 인용 정보를 담은 attribution.txt도 함께 있어요.
트리 구조가 중요한 이유
트리 구조는 합성 데이터 생성 과정이 지식 덩어리들을 관련지을 때 사용돼요. 트리 구조가 없으면 훈련 정확도가 떨어져요. 트리 요구 사항:
- 지식은
knowledge디렉터리 안 - 비접지(un-grounded) 구성 스킬은
compositional_skills디렉터리 안 - 접지(grounded) 구성 스킬은
compositional_skills/grounded/구조 knowledge와compositional_skills는 하나의 루트 디렉터리 안
이렇게 해야 합성 데이터 생성·훈련 과정이 파일을 올바른 순서로 파싱해요.
지식·스킬 정렬
각 지식 조각당 qna.yaml 파일 하나를 두는 게 원칙이에요. 예컨대 구름 형태를 다루는 모델을 만들 때, 구름 형태마다(cumulonimbus, cirrus, cumulus, incus, lenticular) 리프 노드 디렉터리를 만들고 각각 전용 qna.yaml을 두는 식이에요.
상류 택소노미 분류
상류 트리는 도메인 지정에 듀이십진분류(DDC) 시스템을 사용해요. 예컨대 별자리 지식을 기여하려면 knowledge/science/astronomy/constellations/ 브랜치에 디렉터리를 추가해요.
파일·폴더 이름에 공백을 쓰지 말고 단어 사이는 밑줄(_)을 써요.
기여 방법
포크와 풀 모델(fork-and-pull)로 기여해요. 두 가지 방식이 있어요.
- 기존 리프 노드에 새 예제 추가
- 기존 도메인에 해당하는 새 브랜치·스킬 추가
기여한 스킬·지식은 며칠 안에 LLM 빌드에 반영될 수 있어요.