본문 바로가기
필기 노트/Huggingface Transformers

[Huggingface] PretrainedConfig class

by misconstructed 2021. 7. 16.
728x90


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

728x90

댓글