PretrainedConfig
공식 문서 : https://huggingface.co/transformers/main_classes/configuration.html
코드 : https://huggingface.co/transformers/_modules/transformers/configuration_utils.html#PretrainedConfig
모든 모델들의 configuration class의 base class. 모델들의 configuration 값들을 가지고 있고, 모델을 저장하고 불러오는데 필요한 configuration 들도 가지고 있다.
공통적으로 사용되는 파라미터
- model_type
- vocab_size
- hidden_size
- num_attention_heads : multi-head attention layer 에서 attention_head 의 개수
- num_hidden_layers : 모델의 블록 개수
- name_or_path : from_pretrained() 를 통해서 pretrained_model_name_or_path 로 전달된 값
- output_hidden_states (False) : 모든 hidden state를 리턴할지 → BERT의 경우 12개의 층으로 구성되어 있기 때문에, 해당 옵션을 주면 12개의 층에서 생성된 모든 hidden state들을 모두 리턴한다.
- output_attentions (False) : 모든 attention을 리턴할지 여부
- return_dict (True) : False로 지정하는 경우 일반적인 tuple을 리턴, True인 경우는 transformers.file_utils.ModelOutput 으로 리턴
- is_encoder_decoder
- is_decoder (False) : decoder로 사용되는지 여부, 아닌 경우는 encoder로 사용된다고 판단.
- tie_encoder_decoder (False) : encdoer weight가 decoder weight와 동일하게 사용될지 여부
- chunk_size_feed_forward : residual attention block 내부에서 feed forward를 할 때의 chunk 크기.
Residual attention block은 보통 self-attention layer 이후에 2개의 feed forward layer로 구성이 된다. 보통 intermediate embedding size (첫 번째 feed forward layer를 통과한 후의 크기) 는 hidden size 보다 크게 설정한다. (bert-base 등)
보통 (batch_size, sequence_length, hidden_size)의 입력이 들어왔을 때, 한 개의 feed forward layer를 거치면 (batch_size, sequence_length, intermediate_size) 로 변환이 되는데, 이 때 sequence를 구성하는 요소들 (batch_size, hidden_size) * sequence_length 은 서로 독립적인 연산을 수행하게 된다. 그러므로 (batch_size, hidden_size)의 입력을 sequence_length 개 만큼 동시에 연산하는 것과 동일하다. → computation time, memory use에서 장점이 있음
chunk_size_feed_forward는 feed forward chunking을 할 때의 동시에 처리할 chunk의 크기를 지정하게 된다.
Sequence generation을 위한 파라미터
- max_length (10)
- min_length (10)
- do_sample (False)
- early_stopping (False)
- num_beams (1) : 1로 지정되어 있으면 beam search 를 하지 않겠다는 뜻
- top_k (50) : generate 할 때 가장 높은 확률의 vocabulary를 k개 유지하게 된다.
- top_p (1)
- repetition_penalty
- length_penalty
- output_scores (False) : 모델이 마지막에 logit들을 리턴해야 할지 여부
Fine-tuning을 위한 파라미터
- finetuning_task
- id2label : map index to label
- label2id
- num_labels : classification task등을 해결할 때, 마지만 layer에 추가될 label의 수
- problem_type : XXXForSequenceClassification 모델들을 위한 problem type
Tokenizer와 관련된 파라미터
- tokenizer_class
- prefix
- bos_token_id : beginning of stream token id
- pad_token_id : padding token id
- eos_token_id : end-of-stream token id
- decoder_start_token_id : encoder-deocder모델의 경우, decodeing을 시작할 때 사용한 token id
- sep_token_id : seperation token id
'필기 노트 > Huggingface Transformers' 카테고리의 다른 글
[Huggingface] Datasets / Preprocessing / Training / Evaluating (0) | 2021.07.18 |
---|---|
[Huggingface] PreTrainedTokenizer class (1) | 2021.07.18 |
[Huggingface] PreTrainedModel class (0) | 2021.07.16 |
[Huggingface] Huggingface Tokenizer (1) | 2021.07.09 |
댓글