Huggingface의 LLM 모델 파일구조 살펴보기(1)

규격외 개발자·2025년 5월 8일
post-thumbnail

목적

LLM 모델을 로드하기전에 보게되는 파일들이다. 모델마다 조금씩 다르지만 공통적인 파일 위주로 살펴보려고 한다.

config.json

모델의 구조에 대해 정의된 파일이다.

generation_config.json

bos, eos, temperature, top_k, top_p 등 추론시 사용되는 파라미터들의 기본 값을 저장한 파일이다.

  • do_sample=false인 경우 greedy search가 적용되어 temperature, top_k, top_p가 적용되지 않는다.

.safetensors

모델의 가중치를 저장한 파일이다. pytorch에서 사용되던 .bin 포맷보다 보안 및 로딩속도를 개선한 포맷이다.

  • 이 파일들의 용량을 합산하면 모델을 로드하기 위해 대략적인 vram을 확인할 수 있다. (실제추론시 KV Cache, Activations등을 추가로 고려해야함)

special_tokens_map.json


모델이 사용할 스페셜 토큰들에 대한 정보를 저장한 파일이다. 대부분 bos, eos 토큰들이 정의되어 있으며, gemma3와 같은 multimodal 모델의 경우 이미지 처리(ex. <image_soft_token>)를 위한 토큰도 정의되어있다.

tokenizer_config.json


모든 스페셜 토큰이 정의되어 있는 파일이다.

  • 보통 tokenizer_config.json에는 모든 스페셜 토큰이 정의되어 있고, special_tokens_map.json에는 실제로 사용하는 스페셜 토큰만 따로 정리해서 관리한다.
  • 하지만 최근에는 굳이 분리하지 않고 tokenizer_config.json에만 스페셜 토큰을 정의하는 경우도 존재한다.
  • Fine-tuning에 사용하는 사용자 정의 토큰이나 function_call에 쓰이는 토큰 등 다양한 특수 토큰들이 존재하므로, 사용하는 모델에 따라 어떤 토큰이 정의되어 있는지 확인할 필요가 있다.

tokenizer.json


tokenizer에 대한 설정과 상태를 정의한 파일이다.

  • normalizer
    정규화방식 정의.
    ex) NFC 정규화, 소문자화 등

  • pre_tokenizer
    텍스트를 토큰화하기 전에 처리할 방식 정의.
    ex) 공백을 기준으로 분할, Byte 단위로 분할, 정규식 기준으로 분할 등

  • post_processor
    텍스트를 토큰화한 후에 처리할 방식 정의.
    ex) 스페셜토큰을 자동으로 추가, ByteLevel 처리 등.

  • decoder
    토큰화된 문자열을 원본 문자열로 복원하는 방식 정의.
    ex) Ġ와 같은 바이트 특수 문자들 처리

  • model
    대부분 BPE(Byte-Pair Encoding) 방식의 subword tokenizer이다.

  • vocab
    문자열과 토큰 ID를 매핑해 encode와 decode시 사용.

profile
AI의 Use Case에 관심이 많습니다.

0개의 댓글