들어가며 — 카드를 위에서 아래로 읽으면 필요한 정보를 못 찾습니다
모델 카드의 화면 배분은 저자의 관심사를 그대로 반영합니다. 벤치마크 표가 스크롤의 절반을 차지하고, 그 아래에 설치 명령어와 예제 코드가 길게 붙습니다. 반면 우리가 배포 판단에 실제로 쓰는 정보는 프런트매터의 한 줄, 각주 한 문장, 또는 아예 없습니다.
그래서 카드를 위에서 아래로 읽으면 시간은 많이 쓰고 판단에 필요한 것은 못 건집니다. 저는 순서를 뒤집어 읽습니다. 벤치마크는 마지막에 보거나 아예 안 보고, 대신 이 일곱 가지를 순서대로 확인합니다.
- 라이선스와 접근 조건
- 학습 데이터 공개 여부
- 평가 점수의 출처
- 컨텍스트 길이의 표기와 실제
- 토크나이저와 채팅 템플릿
- 양자화 변형과 그 출처
- 파일 형식과 로딩 경로
이 순서에는 이유가 있습니다. 위쪽 항목일수록 뒤집을 수 없는 결정을 만듭니다. 라이선스가 안 맞으면 아래 여섯 개는 볼 필요가 없습니다. 반대로 아래쪽 항목은 대체로 고칠 수 있는 문제입니다.
이 글은 트렌딩 목록에서 원본과 파생본을 구별하는 방법과 요즘 오픈 모델이 어떻게 만들어지는가를 다룬 두 글의 실무 짝입니다. 어떤 모델이 있는지 알았고 어떻게 만들어졌는지도 알았다면, 남은 것은 눈앞의 카드 한 장에서 5분 안에 판단을 뽑아내는 일입니다.
라이선스 — 가중치가 공개된 것과 오픈소스인 것은 다릅니다
가장 흔한 오해부터 정리합니다. 내려받을 수 있다는 것과 마음대로 쓸 수 있다는 것은 다른 얘기입니다.
허깅페이스 카드의 프런트매터에는 보통 license: 한 줄이 있습니다. 이 값이 apache-2.0이나 mit이면 대체로 고민할 것이 없습니다. 그런데 other라면 그때부터가 시작입니다. other는 "자체 라이선스가 있다"는 뜻이고, 그 내용은 저장소의 LICENSE 파일을 직접 열어야 알 수 있습니다.
자체 라이선스에서 확인할 항목은 대체로 정해져 있습니다.
| 확인할 것 | 왜 중요한가 | 실제 사례에서 보이는 형태 |
|---|---|---|
| 상업적 사용 | 사업에 못 쓰면 나머지가 무의미 | cc-by-nc-4.0은 비상업적 사용만 허용 |
| 매출·사용자 문턱 | 회사가 커지면 조건이 바뀜 | 연 매출 또는 월간 활성 사용자 기준을 넘으면 별도 계약 |
| 파생물 명명 의무 | 파인튜닝 결과물의 이름이 묶임 | 파생 모델 이름이 특정 접두어로 시작해야 함 |
| 귀속 표시 의무 | 제품 UI와 문서에 영향 | 화면에 모델 이름을 표시해야 하는 조항 |
| 사용 제한 목록 | 금지 용도 목록이 계약에 딸려 옴 | OpenRAIL 계열의 부속 사용 제한 |
| 출력물의 권리 | 생성 결과를 학습에 재사용할 수 있는가 | 출력물로 경쟁 모델을 학습하는 것을 금지하는 조항 |
여기서 중요한 것은 이 조건들 대부분이 아파치 2.0이나 MIT에는 없다는 점입니다. 오픈소스 정의는 사용 분야에 따른 차별을 금지하므로, 사용 제한 목록이 붙은 라이선스는 이름이 무엇이든 오픈소스가 아닙니다. 사내에서 "오픈소스 모델을 쓴다"고 말하는 순간 법무가 아파치 2.0을 가정하고 검토를 건너뛸 수 있는데, 실제 조건은 전혀 다를 수 있습니다. 용어를 정확히 쓰는 편이 낫습니다. 가중치가 공개된 모델이면 오픈 웨이트라고 부르고, 라이선스는 따로 말하는 것입니다.
세 가지를 덧붙입니다.
파생본에서 라이선스는 완화되지 않습니다. 원본이 상업적 사용을 제한하면 GGUF 변환본도 제한됩니다. 변환본 카드에 라이선스가 비어 있거나 애매하게 적힌 경우가 있는데, 그건 업로더가 안 적은 것이지 조건이 없어진 것이 아닙니다. 기준은 항상 원본입니다.
접근 승인 저장소는 별개 문제입니다. 카드에 gated: auto 또는 gated: manual이 걸려 있으면 약관 동의나 승인이 필요합니다. 라이선스가 아파치 2.0이어도 게이트는 걸릴 수 있습니다. 실무에서 이게 물리는 지점은 CI입니다. 로컬에서는 이미 로그인해 둔 토큰으로 받아지는데, 빌드 서버에서는 인증 없이 받으려다 실패합니다. 게이트 여부는 배포 파이프라인을 짜기 전에 확인해야 합니다.
라이선스는 커밋될 수 있습니다. 릴리스 직후 조건이 바뀌는 경우가 실제로 있습니다. 판단 근거로 삼은 라이선스 파일은 커밋 해시와 함께 저장해 두는 편이 안전합니다.
from huggingface_hub import HfApi
api = HfApi()
info = api.model_info("Qwen/Qwen3.6-27B", files_metadata=False)
print("license :", info.card_data.get("license"))
print("license_link :", info.card_data.get("license_link"))
print("gated :", info.gated) # False 또는 'auto' 또는 'manual'
print("sha :", info.sha) # 이 값을 판단 기록에 함께 남깁니다
학습 데이터 — 안 적혀 있다는 사실 자체가 정보입니다
카드에서 학습 데이터 항목을 찾는 일은 대체로 빠르게 끝납니다. 없기 때문입니다.
요즘 프런티어급 오픈 웨이트 모델의 카드는 아키텍처를 문단으로 설명하면서 데이터는 한 줄로 지나갑니다. 토큰 개수나 언어 비율까지 적어 주면 성의 있는 편이고, 구체적인 코퍼스 목록이나 필터링 규칙까지 밝힌 경우는 드뭅니다.
이 공백을 "정보 없음"으로 넘기지 말고 판단 재료로 쓰는 편이 낫습니다. 데이터가 공개되지 않았다는 사실은 세 가지를 뜻합니다.
첫째, 벤치마크 오염을 외부에서 검증할 수 없습니다. 평가 세트가 학습에 섞였는지 확인하려면 학습 데이터를 봐야 하는데 볼 수 없습니다. 그러므로 카드의 점수는 반증 불가능한 주장입니다. 다음 절의 근거가 여기서 나옵니다.
둘째, 저작권과 개인정보 리스크를 실사할 수 없습니다. 규제 산업에서 이 부분은 실제로 문제가 됩니다. 데이터 출처를 밝히지 못하는 모델을 최종 사용자에게 노출되는 경로에 넣을 때, 그 리스크를 누가 지는지가 정해져 있어야 합니다.
셋째, 성능이 특정 도메인에 몰려 있는지 알 수 없습니다. 한국어 성능이 좋은 모델과 한국어 벤치마크 점수가 좋은 모델은 다를 수 있고, 데이터 비율이 없으면 이걸 사전에 구분할 방법이 없습니다.
그래서 데이터 절이 비어 있는 카드를 만나면 저는 이렇게 합니다. 카드가 링크한 기술 보고서를 확인하고(보고서에 있는 경우가 종종 있습니다), 그것도 없으면 평가를 내 데이터로 직접 돌리는 비용을 예산에 넣습니다. 데이터가 공개되지 않은 만큼의 불확실성을 자체 평가로 메우는 것입니다. 이 부분은 감으로 하지 않는 LLM 평가에서 다룬 방식이 그대로 적용됩니다.
카드에 적힌 점수를 그대로 믿으면 안 되는 이유
벤치마크 표는 카드에서 가장 눈에 잘 띄고 가장 신뢰도가 낮은 부분입니다. 이유가 다섯 가지 겹칩니다.
자체 측정입니다. 모델을 만든 팀이 자기 모델을 재서 자기 카드에 적었습니다. 제3자 검증이 없습니다. 부정이 있다는 뜻이 아니라, 검증 절차가 구조적으로 없다는 뜻입니다.
비교 대상을 저자가 골랐습니다. 표의 열에 어떤 모델이 들어갈지는 카드를 쓰는 쪽이 정합니다. 자기 모델이 이기는 조합이 선택될 유인이 있고, 실제로 그렇게 보이는 표가 많습니다. 열에 없는 모델이 더 강할 가능성은 표 안에서 확인할 수 없습니다.
측정 조건이 안 적혀 있습니다. 같은 벤치마크라도 프롬프트 형식, few-shot 개수, 파싱 규칙, 평가 하네스 버전, 샘플링 파라미터, 재시도 횟수에 따라 점수가 몇 점씩 움직입니다. 에이전트 벤치마크는 스캐폴딩까지 결과를 좌우합니다. 카드가 이 조건을 다 적는 경우는 거의 없습니다.
오염을 배제할 수 없습니다. 앞 절에서 말한 그대로입니다.
포화된 벤치마크가 섞여 있습니다. 상위 모델들이 전부 90점대에 몰려 있는 항목은 변별력이 없습니다. 0.4점 차이를 근거로 모델을 고르는 것은 측정 잡음을 근거로 고르는 것과 같습니다.
그러면 벤치마크 표는 어디에 씁니까. 저는 이렇게 씁니다.
- 탈락시키는 데 씁니다. 내가 필요한 능력의 항목에서 크게 낮으면 후보에서 뺍니다. 점수가 높다고 뽑지는 않습니다.
- 성격을 읽는 데 씁니다. 코딩은 높은데 다국어가 낮다면 사후학습이 어디에 쏠렸는지 짐작할 수 있습니다.
- 같은 계열의 세대 비교에 씁니다. 같은 팀이 같은 방법으로 잰 이전 버전과의 차이는 절대값보다 신뢰할 만합니다.
그리고 실제 선택은 언제나 내 데이터에서 재봅니다. 50개짜리 골든 세트로 30분 돌린 결과가 카드의 표 전체보다 판단에 유용합니다. 후보가 셋이면 셋 다 돌립니다.
컨텍스트 길이 — 표기된 숫자와 쓸 수 있는 범위
카드에 "1M 컨텍스트"라고 적혀 있어도 그 길이로 서비스를 설계하면 안 됩니다. 이유가 세 갈래입니다.
표기된 상한은 대개 확장값입니다. 요즘 카드는 네이티브 길이와 확장 가능 길이를 나눠 적습니다. 확장은 대개 YaRN 같은 RoPE 스케일링으로 하고, 그것은 학습된 능력이 아니라 추론 시점의 설정 변경입니다. 그래서 확장 구간의 품질은 별도로 확인해야 합니다.
확장을 켜면 짧은 입력이 나빠집니다. 이건 제 주장이 아니라 카드가 직접 경고하는 내용입니다. 뒤에서 읽을 Qwen3.6-27B 카드는 "모든 주요 오픈소스 프레임워크가 정적 YaRN을 구현하며, 이는 스케일링 인자가 입력 길이와 무관하게 일정하다는 뜻이고 짧은 텍스트의 성능에 영향을 줄 수 있다"고 적고, 긴 컨텍스트가 필요할 때만 설정을 바꾸라고 권합니다. 즉 100만 토큰 설정을 켜 두고 평소에 2천 토큰을 넣으면 손해입니다.
메모리가 먼저 무너집니다. 컨텍스트를 두 배로 늘리면 KV 캐시가 두 배가 되고, 그만큼 동시 처리 가능한 요청 수가 줄어듭니다. 카드가 최대 길이를 적어 두더라도 우리 GPU에서 그 길이를 감당할 수 있는지는 별개의 계산입니다. 이 계산은 추론 VRAM 계산에 정리해 두었습니다.
실무 기준은 이렇게 잡습니다. 네이티브 길이의 절반까지는 대체로 안전하고, 네이티브 길이 근처는 검증이 필요하며, 확장 구간은 그 용도로만 켭니다. 그리고 우리 문서로 만든 needle 테스트를 한 번은 돌려 봅니다. 문서 중간에 답이 있는 질문 스무 개면 충분히 감이 옵니다.
토크나이저와 채팅 템플릿 — 여기서 오류 없이 망가집니다
카드에서 가장 짧게 지나가면서 사고는 가장 많이 내는 부분입니다. 이유는 하나입니다. 틀려도 예외가 안 납니다. 출력이 나오긴 나오는데 조금씩 나쁩니다. 그래서 원인을 모델 품질로 오해하고, 프롬프트를 고치고, 파인튜닝을 검토하는 데까지 갑니다.
요즘 저장소의 파일 구성을 먼저 봅니다.
tokenizer.json 토크나이저 본체
tokenizer_config.json 특수 토큰 정의, 옛날에는 여기에 템플릿도 있었음
chat_template.jinja 채팅 템플릿 (최근 저장소는 파일로 분리)
generation_config.json 기본 샘플링 파라미터
chat_template.jinja가 별도 파일로 나온 것이 최근 방식입니다. 예전에는 tokenizer_config.json 안의 문자열이었고, 지금도 그렇게 배포하는 저장소가 있습니다. 어느 쪽이든 직접 렌더링해서 눈으로 확인하는 것이 가장 빠릅니다.
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("Qwen/Qwen3.6-27B")
messages = [
{"role": "system", "content": "간결하게 답하세요."},
{"role": "user", "content": "안녕하세요"},
]
# add_generation_prompt=True 가 핵심입니다.
# 이걸 빼면 어시스턴트 차례를 여는 토큰이 없어서 모델이 사용자 말을 이어 씁니다.
text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
print(repr(text))
ids = tok.apply_chat_template(messages, add_generation_prompt=True)
print("토큰 수:", len(ids))
print("앞 8개 :", tok.convert_ids_to_tokens(ids[:8]))
print("BOS :", tok.bos_token, "| EOS:", tok.eos_token)
repr로 찍는 이유는 줄바꿈과 공백을 눈으로 보기 위해서입니다. 템플릿 사고의 상당수가 개행 하나 차이입니다.
자주 겪는 고장 다섯 가지를 정리하면 이렇습니다.
| 증상 | 원인 | 확인 방법 |
|---|---|---|
| 모델이 사용자 말을 이어서 씀 | add_generation_prompt를 안 켬 | 렌더링 결과 끝에 어시스턴트 시작 토큰이 있는지 확인 |
| 첫 토큰이 두 번 들어감 | 템플릿이 BOS를 넣는데 토크나이저도 넣음 | tokenize=False 결과와 실제 토큰 목록 대조 |
| 사고 과정이 답변에 섞여 나옴 | 추론 태그를 파싱하지 않음 | 카드의 사고 모드 설명과 파싱 규칙 확인 |
| 멀티턴에서만 품질이 떨어짐 | 이전 턴의 사고 내용을 그대로 다시 넣음 | 히스토리에 무엇을 남길지 카드가 지정한 방식 확인 |
| 서빙 엔진에서만 결과가 다름 | 엔진이 자체 템플릿을 씀 | 엔진 로그에서 실제 적용된 템플릿 확인 |
마지막 줄이 특히 성가십니다. vLLM이나 SGLang은 저장소의 템플릿을 쓰기도 하고, 옵션으로 덮어쓴 것을 쓰기도 합니다. 로컬 transformers에서 잘 되던 것이 서빙에서만 다르게 나오면 이걸 먼저 봅니다.
사고 모드가 있는 모델은 한 겹이 더 있습니다. 템플릿에 인자를 넘겨야 동작이 바뀌는 구조라, 그 인자 이름을 카드에서 찾아야 합니다. 그리고 그 인자는 OpenAI 호환 API로 서빙할 때 요청 본문의 어느 필드에 넣어야 하는지가 엔진마다 다릅니다. 카드에 예제가 있으면 그대로 복사하는 편이 낫습니다.
양자화 변형 고르기와 파일 형식
원본 저장소를 그대로 서빙하는 경우는 오히려 드뭅니다. 대부분 양자화 변형을 고르게 되고, 여기서 선택 기준이 필요합니다.
먼저 형식이 런타임을 결정합니다. 반대가 아닙니다. 쓸 런타임이 정해져 있으면 형식은 자동으로 정해집니다.
| 형식 | 주 런타임 | 성격 | 고르는 상황 |
|---|---|---|---|
| safetensors (BF16/FP16) | transformers, vLLM, SGLang | 원본 정밀도 | 파인튜닝 기반, 품질 기준선 측정 |
| GGUF | llama.cpp, Ollama, LM Studio | CPU·통합 메모리 친화, 등급이 세밀 | 노트북, 단일 사용자, 오프라인 |
| AWQ / GPTQ | vLLM, SGLang | 4비트 가중치 양자화 | GPU 서빙에서 메모리 절감 |
| FP8 / NVFP4 | vLLM, TensorRT-LLM | 최신 GPU의 네이티브 저정밀도 | 최신 세대 GPU에서 처리량 |
| MLX | mlx-lm | 애플 실리콘 전용 | 맥에서 로컬 실행 |
| ONNX | onnxruntime | 이식성 중시 | 임베디드, 비주류 런타임 |
그다음에 볼 것은 누가 만들었고 검증 흔적이 있는가입니다. 변환 파이프라인을 공개하고 회귀 확인을 남기는 계정과, 이름에 형용사만 잔뜩 붙은 개인 병합본은 다릅니다. 변환본 카드에서 최소한 이 세 가지를 확인합니다.
- 어느 커밋의 원본을 변환했는가. 원본이 이후에 토크나이저나 템플릿을 고쳤다면 변환본은 그걸 안 따라갑니다.
- 보정 데이터가 무엇인가. 영어 위주로 보정한 4비트 모델이 한국어에서 유독 나빠지는 일이 있습니다.
- 어떤 등급을 권하는가. GGUF는 등급이 여러 개고, 카드가 권장 등급을 적어 두는 경우가 많습니다.
마지막으로 파일 형식과 로딩입니다. 저장소 파일 목록에서 확인할 것은 세 가지입니다. config.json이 있는지(없으면 원본이 아니라 변환본입니다), 샤드와 함께 model.safetensors.index.json이 있는지, 그리고 config.json의 model_type과 architectures 값이 지금 설치된 라이브러리 버전에서 지원되는지입니다. 마지막 항목이 신규 모델에서 가장 흔한 실패 원인입니다. 카드가 요구하는 라이브러리 버전 하한이 Quickstart 절에 파묻혀 있는 경우가 많으니 그것도 함께 봅니다.
5분 체크리스트로 카드 하나 끝까지 읽기
이제 실제 카드를 이 순서대로 읽어 보겠습니다. 2026년 8월 2일에 허깅페이스에서 직접 조회한 Qwen/Qwen3.6-27B입니다. 아파치 2.0이고 다운로드가 많은, 말하자면 가장 무난해 보이는 카드입니다. 그런데도 순서대로 읽으면 걸리는 것이 나옵니다.
1. 라이선스와 접근 조건. 프런트매터에 license: apache-2.0이고 license_link가 저장소의 LICENSE 파일을 가리킵니다. API 응답의 gated는 false입니다. 여기서 걸릴 것은 없습니다. 5분 중 20초입니다.
2. 학습 데이터. 카드에 데이터 절이 없습니다. Model Overview는 파라미터 수, 히든 차원, 레이어 수, 어텐션 헤드 구성까지 적지만 무엇으로 학습했는지는 적지 않습니다. 앞 절에서 말한 대로, 자체 평가 예산을 잡아야 한다는 신호입니다.
3. 평가 점수. Benchmark Results에 Language와 Vision Language 두 개의 큰 표가 있습니다. 비교 열에 이전 세대인 Qwen3.5 계열, 타사 오픈 모델, 그리고 상용 모델이 함께 들어 있습니다. 전형적인 자체 측정 표입니다. 측정 조건은 적혀 있지 않습니다. 다만 같은 팀이 같은 방식으로 잰 이전 세대와의 차이는 참고할 만합니다. 표를 오래 볼 이유는 없습니다.
4. 컨텍스트 길이. Model Overview에 "262,144 natively and extensible up to 1,010,000 tokens"라고 적혀 있습니다. 네이티브와 확장이 명확히 구분된, 좋은 표기입니다. 그리고 Processing Ultra-Long Texts 절에 확장 방법이 YaRN이라는 것과 설정 예시가 있으며, 앞에서 인용한 정적 YaRN 경고가 붙어 있습니다. 여기에 더해 Quickstart의 경고 상자가 이렇게 적습니다. OOM이 나면 컨텍스트를 줄이되, 사고 능력을 유지하려면 최소 128K는 두라는 것입니다. 즉 이 모델은 컨텍스트를 짧게 잘라도 되는 모델이 아닙니다. 서빙 메모리 계산의 하한이 카드에서 정해진 셈입니다.
5. 토크나이저와 채팅 템플릿. 파일 목록에 tokenizer.json, tokenizer_config.json, 그리고 별도 파일인 chat_template.jinja가 있습니다. 사고 모드가 기본으로 켜져 있고, 끄려면 템플릿 인자로 enable_thinking을 거짓으로 넘겨야 합니다. 이전 턴의 사고 내용을 유지하는 preserve_thinking 인자가 따로 있는데, 이건 이 릴리스에서 새로 들어간 기능이라 예전 코드에는 없습니다.
그리고 Best Practices 절에 이 카드에서 가장 실무적인 정보가 있습니다. 샘플링 파라미터가 모드별로 다릅니다.
| 모드 | temperature | top_p | top_k | presence_penalty |
|---|---|---|---|---|
| 사고 모드, 일반 작업 | 1.0 | 0.95 | 20 | 0.0 |
| 사고 모드, 정밀 코딩 | 0.6 | 0.95 | 20 | 0.0 |
| Instruct(비사고) 모드 | 0.7 | 0.80 | 20 | 1.5 |
세 번째 줄의 presence_penalty 값이 눈에 띕니다. 사고 모드에서는 0인데 비사고 모드에서는 1.5입니다. 기본값을 그대로 쓰면 이 설정이 반영되지 않고, 카드가 경고하는 대로 반복이 늘어날 수 있습니다. 카드를 안 읽고 서빙하면 놓치는 종류의 항목이고, 품질 저하가 모델 탓으로 오해되는 전형적인 경로입니다.
6. 양자화 변형. 모델 페이지에 이 모델을 원본으로 하는 양자화 저장소가 수백 개 걸려 있습니다. 원본 팀이 직접 낸 것이 아니라 커뮤니티 변환본입니다. 앞 절의 세 가지 기준으로 골라야 합니다.
7. 파일 형식과 로딩. 여기서 가장 조심할 것이 나옵니다. API의 config를 보면 model_type이 qwen3_5입니다. 모델 이름은 3.6인데 config의 타입은 3.5입니다. architectures는 Qwen3_5ForConditionalGeneration입니다. 그리고 pipeline_tag가 image-text-to-text입니다.
이 세 줄이 뜻하는 바가 큽니다.
- 이건 텍스트 전용 LLM이 아니라 비전 인코더가 붙은 모델입니다.
AutoModelForCausalLM으로 열면 아키텍처가 안 맞을 수 있습니다. - 로딩 클래스는
ForConditionalGeneration계열입니다. 파일 목록에preprocessor_config.json과video_preprocessor_config.json이 함께 있는 것도 같은 얘기입니다. - 라이브러리가
qwen3_5라는 타입을 알아야 열립니다. 이름만 보고 최신 모델이니 최신 버전이면 되겠지 하고 넘기면, 정작 필요한 것은 3.5 계열 지원이라는 사실을 못 봅니다.
가중치는 15개 샤드로 나뉜 safetensors이고 model.safetensors.index.json이 함께 있습니다. Quickstart 절에는 서빙 프레임워크별 버전 하한이 적혀 있습니다. SGLang은 0.5.10 이상을 권장합니다. 이런 하한은 카드 중간에 파묻혀 있어서 스크롤로 지나치기 쉽습니다.
읽기를 마치고 정리하면 이렇습니다. 라이선스는 문제없고, 데이터는 비공개이며, 점수는 자체 측정이고, 컨텍스트는 표기가 정직한 대신 하한 제약이 있고, 사고 모드와 샘플링 설정을 안 맞추면 조용히 나빠지고, 로딩은 이름이 아니라 config를 보고 해야 합니다. 5분이면 충분하고, 이 여섯 문장이 벤치마크 표 전체보다 배포 판단에 유용합니다.
체크리스트로 접으면 이렇습니다.
| 순서 | 확인할 것 | 어디를 보나 | 걸리면 |
|---|---|---|---|
| 1 | 라이선스, 게이트 | 프런트매터, LICENSE 파일 | 즉시 중단 |
| 2 | 학습 데이터 | 데이터 절, 기술 보고서 링크 | 자체 평가 예산 확보 |
| 3 | 평가 출처 | 벤치마크 표 주변 서술 | 탈락 용도로만 사용 |
| 4 | 컨텍스트 | Overview, 장문 처리 절 | 네이티브 기준으로 설계 |
| 5 | 템플릿, 토크나이저 | 파일 목록, Best Practices | 직접 렌더링해 확인 |
| 6 | 양자화 변형 | 파생 저장소 목록 | 출처와 보정 데이터 확인 |
| 7 | 형식과 로딩 | config.json, Quickstart | 클래스와 버전 하한 확인 |
마치며 — 카드에서 확인할 수 있는 것과 믿어야 하는 것
모델 카드는 두 종류의 문장으로 되어 있습니다. 검증할 수 있는 문장과 믿어야 하는 문장입니다.
라이선스, 파일 목록, config의 값, 템플릿의 내용, 컨텍스트 표기는 전부 검증할 수 있습니다. 내려받아서 확인하면 됩니다. 반면 벤치마크 점수, 학습 토큰 수, 데이터 구성에 대한 서술은 믿는 수밖에 없습니다. 반증할 수단이 우리에게 없습니다.
카드를 읽는 기술이란 결국 이 둘을 구분하고, 검증 가능한 쪽에 판단의 무게를 싣는 일입니다. 벤치마크 표는 화면의 절반을 차지하지만 믿어야 하는 쪽에 속하고, 프런트매터의 license: 한 줄과 config의 model_type 한 줄은 눈에 안 띄지만 검증 가능한 쪽에 속합니다. 화면 배분과 중요도가 반대로 되어 있는 셈이고, 그래서 읽는 순서를 뒤집어야 합니다.
한 줄로 줄이면 이렇습니다 — 점수는 저자가 쓴 것이고, 설정 파일은 모델이 쓴 것입니다.
현재 단락 (1/137)
모델 카드의 화면 배분은 저자의 관심사를 그대로 반영합니다. 벤치마크 표가 스크롤의 절반을 차지하고, 그 아래에 설치 명령어와 예제 코드가 길게 붙습니다. 반면 우리가 배포 판단에...