ML/AI/SW Developer

GPT - applications

1. GPT 언어 모델

1.1 GPT 모델 소개

  • 자연어 문장 $\rightarrow$ 분류, 성능이 아주 좋은 디코더
  • 적은 양의 데이터에서도 높은 분류 성능
  • 다양한 자연어 task에서 SOTA 달성 (BERT 나오기 전에)
  • BERT로 발전하는 밑거름
  • 하지만, 여진히 지도 학습을 필요로 하는 단점 존재
  • fine tunning한 모델은 다른 task에서 사용 불가능

1.2 GPT의 응용

  • 상식 Q&A
  • 텍스트 데이터 파싱
  • 의학
  • Awesome GPT-3: 약 70개 가량 예제 수록

1.3 GPT의 한계?

  • 다음 단어 혹은 masked 단어 예측하는 LM 학습 방식으로 정말 다 해결이 되는가?
    • Weight update가 없으면, 새로운 학습이 없다는 것
    • 시기에 따라 달라지는 문제에 대응 불가 (E.g 현재 대통령은?)
  • 멀티 모달이 필요하다! (글로만 배우지 말자)

2. GPT 활용해 보기

2.1 코드

  • GPT2 불러오기

      from transformers import GPT2Config, GPT2LMHeadModel
      # creating the configurations from which the model can be made
      config = GPT2Config(
      vocab_size=tokenizer.get_vocab_size(),
      bos_token_id=tokenizer.token_to_id("<s>"),
      eos_token_id=tokenizer.token_to_id("</s>"),
      )
      # creating the model
      model = GPT2LMHeadModel(config)
    
  • Trainer 정의

      from transformers import Trainer, TrainingArguments
    
      training_args = TrainingArguments(
          output_dir='model_output',
          overwrite_output_dir=True,
          num_train_epochs=50,
          per_device_train_batch_size=64,
          save_steps=1000,
          save_total_limit=2,
          logging_steps=100
    
      )
    
      trainer = Trainer(
          model=model,
          args=training_args,
          data_collator=data_collator,
          train_dataset=dataset
      )
    
  • 훈련해보기

      trainer.train()
    
  • 사용하기

    • output_sequences에 생성된 문장이 닮긴다.
      # GPT는 generate 라는 함수를 지원
      output_sequences = model.generate(input_ids=input_ids, do_sample=True, max_length=100, num_return_sequences=3)