본문 바로가기

프로그래밍

한국어 문장 생성 AI - KoGPT2

반응형

ி 설치

 
> pip install opyrator transformers torch
설치 도중 아래 에러 메시지가 발생한다면 
ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: 'path/collect_and_distribute_fpn_rpn_proposals_op_test.test_collect_and_dist.zip'
관리자 CMD를 실행하고 파일명 길이 제한 해제 레지스트리 추가 후 재설치
> reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f



ி 실행

 

CLI

 
> python CLI_GPT.py
 from transformers import PreTrainedTokenizerFast, GPT2LMHeadModel
 import torch
 
 tokenizer = PreTrainedTokenizerFast.from_pretrained("skt/kogpt2-base-v2",
 bos_token='</s>', eos_token='</s>', unk_token='<unk>',
 pad_token='<pad>', mask_token='<mask>') 
 
 
 model = GPT2LMHeadModel.from_pretrained('skt/kogpt2-base-v2')
 text = '근육이 커지기 위해서는'
 input_ids = tokenizer.encode(text)
 gen_ids = model.generate(torch.tensor([input_ids]),
 	max_length=128,
 	repetition_penalty=2.0,
 	pad_token_id=tokenizer.pad_token_id,
 	eos_token_id=tokenizer.eos_token_id,
 	bos_token_id=tokenizer.bos_token_id,
 	use_cache=True)
 generated = tokenizer.decode(gen_ids[0,:].tolist())
 print(generated)
 opyrator launch-ui [파일명]:[메인함수]
 opyrator launch-ui main:generated_text

max_length - 키워드 입력 길이 제한
repetition_panalty - 단어가 반복됐을 때 새로운 단어가 생성되도록 만듬

 



WEB GUI

 
opyrator 환경변수 등록 후 실행
> opyrator launch-ui [파일명]:[메인함수]
 from transformers import PreTrainedTokenizerFast, GPT2LMHeadModel
 import torch
 from pydantic import BaseModel, Field 
 
 tokenizer = PreTrainedTokenizerFast.from_pretrained("skt/kogpt2-base-v2",
 bos_token='</s>', eos_token='</s>', unk_token='<unk>',
 pad_token='<pad>', mask_token='<mask>') 
 
 
 model = GPT2LMHeadModel.from_pretrained('skt/kogpt2-base-v2')
 
 class Input(BaseModel):
 	text: str = Field(
 		title='문장을 입력해주세요',
 		max_length=128
 	)
 	max_length: int = Field(
 		128,
 		ge=5,
 		le=128
 	)
 	repetition_penalty: float = Field(
 		2.0,
 		ge=0.0,
 		le=2.0
 	)
 	
 class Output(BaseModel):
 	generated_text: str
 	
 def generated_text(input: Input) -> Output:
 	input_ids = tokenizer.encode(input.text)
 	gen_ids = model.generate(torch.tensor([input_ids]),
 		max_length=input.max_length,
 		repetition_penalty=input.repetition_penalty,
 		pad_token_id=tokenizer.pad_token_id,
 		eos_token_id=tokenizer.eos_token_id,
 		bos_token_id=tokenizer.bos_token_id,
 		use_cache=True)
 	generated = tokenizer.decode(gen_ids[0,:].tolist())
 	return Output(generated_text=generated)
> opyrator launch-ui GPT2:generated_text


실행 후 웹 브라우저에서 Network URL 접속 


  • 참고
https://github.com/kairess/KoGPT2
https://www.youtube.com/watch?v=FQ0vq2CBaL4





반응형

'프로그래밍' 카테고리의 다른 글

python exe 파일 만들기  (0) 2022.01.16
안드로이드 계산기 앱 제작 및 배포  (0) 2021.07.18
이클립스 디버깅  (0) 2021.01.10
Python 문법 정리  (0) 2020.11.10
Pyqt 문법 정리  (0) 2020.11.10