[DL] huggingface generate 함수 configuration

eenzeenee·2023년 1월 28일
0

DeepLearning

목록 보기
1/7

출력 길이 조절

  • max_length
    : 생성할 토큰의 최대 길이 수 (입력 프롬프트 + 새로 생성할 토큰의 수)
  • max_new_tokens
    : 입력 프롬프트의 길이를 무시하고 새로 생성할 최대 토큰 수
  • min_length
    : 생성할 시퀀스의 최소 길이 (입력 프롬프트 + 새로 생성할 토큰의 수)
  • min_new_tokens
    : 입력 프롬프트의 길이를 무시하고 새로 생성할 최소 토큰 수
  • early_stopping
    : beam search 기법 활용 시, True로 설정하면 더 나은 후보를 찾을 가능성이 없을 경우 생성을 중지함 (EOS 토큰이 나올 경우 중단)

생성 방식 조절

  • do_sample
    : 생성의 각 시점에서 모델이 예측한 토큰의 확률 분포를 이용해 토큰을 샘플링 한 뒤 문장을 완성
  • temperature
    : 샘플링 확률 분포의 첨도를 조절함 (0에 가까울수록 균등분포에 가까워짐) - 일관성 없이 횡설수설하는 결과물을 생성해낼 때 큰 수로 활용하면 유리 [기본값 = 1]
  • top_k
    : 가장 확률이 높은 k개의 next token만 사용하고 해당 단어들에 대해 확률 질량을 재분배함 (첫 단어가 잘못 선택 될 경우 끝까지 잘못된 결과를 낳을 가능성 존재)
  • top_p
    : 누적 확률이 p에 다다르는 최소한의 단어 집합으로부터 샘플링 시도 (가장 높은 확률을 갖는 단어부터 시작해, 확률 합이 p가 될때까지 샘플링 후보에 토큰 추가) [0 ~ 1]
  • repeating_penalty
    : 이미 생성된 단어에 대해 그 확률을 낮춰줘 다시 등장할 가능성을 낮춤 - 반복 등장에 대한 페널티 [기본값 = 1 (페널티 없음)]
  • no_repeat_ngram_size
    : 설정한 n 그램 크기의 토큰 모임은 생성 결과에서 단 한번만 등장 가능
  • num_beams
    : beam search 방식을 위한 변수 [기본값 = 1 (greedy search 사용)]
  • diversity_penalty
    : beam search 방식을 활용할 때, 특정 타임스텝에서 다른 그룹의 빔 결과와 동일한 토큰을 생성하는 경우 페널티 부여
  • bad_words_ids
    : 토큰 ID 중, 생성 결과에 나타나면 안되는 토큰의 ID list
  • force_words_ids
    : 토큰 ID 중, 생성 결과에 반드시 나타나야 하는 토큰의 ID list

활용 예시

outputs = model.generate(input_ids,
						do_sample = True, # 샘플링 전략 활용
                        max_length = 50, # 최대 출력 길이
                        min_length = 10, # 최소 출력 길이
                        tok_p = 0.95, # 누적 확률이 0.95 이상인 후보군에서만 선택
                        num_return_sequences = 3 # 3개의 결과물 도출
                        )

Appendix

  • min_length, min_new_tokens는 주로 비교적 긴 요약문을 필요로 할때 EOS 토큰이 특정 길이 이전에는 나타나지 않도록 강제하기 위해 활용
profile
Steadily

0개의 댓글