polygot 인퍼런스
안녕하세요. 좋은 결과물 감사드립니다.
https://github.com/Beomi/KoAlpaca/blob/main/Inference%20Test.ipynb 을 통해 llama 베이스 모델은 손쉽게 사용해볼 수 있었는데 혹시 polygot 기반 인퍼런스 코드도 공개해주실 수 있을까요?
https://github.com/Beomi/KoAlpaca/blob/main/nsmc_polyglot_and_koalpaca_by_few_shot.ipynb 을 참고해서 시도했는데, 잘 안되서 이슈남깁니다.
감사합니다.
해당 부분은 학습 부분 Readme와 함께 정리해서 올릴 예정입니다.
기존 LM과 사용 방법이 동일해서 오히려 더 쉽게 쓰실수 있으실거에요 :)
안녕하세요! koalpaca를 공개해 주셔서 감사합니다. 저도 polyglot-5.8b를 백본으로 사용한 koalpaca 모델에 inference를 해보고 있는데 특별히 사용하신 generation parameter가 있으신지 궁금합니다. 아래 코드로도 생성은 되는데 polyglot 예시에 대해서는 polyglutino로 단어가 바뀌는 현상이 있었습니다. 또 긴 글의 생성을 요청할 때도 그리 길지 않은 텍스트를 생성하는 경향이 있는데 (e.g. 한단락, 두단락으로 작성해줘 등) 모델 자체의 특징인지 궁금합니다.
prompt_dict는 올려주신 inference test.ipynb에 있는 동일한 내용을 사용하였습니다.
def main(
load_8bit: bool = False,
base_model: str = "beomi/KoAlpaca-Polyglot",
prompt_template: str = "koalpaca.json", # The prompt template to use, will default to alpaca.
):
model = GPTNeoXForCausalLM.from_pretrained(base_model,
load_in_8bit=load_8bit,
torch_dtype=torch.float16,
device_map = 'auto')
if not load_8bit:
model.half()
model.eval()
tokenizer = GPTNeoXTokenizerFast.from_pretrained(base_model)
with open(f"templates/{prompt_template}", 'r') as f:
prompt_dict = json.load(f)
def gen(prompt, user_input=None, max_new_tokens=128, temperature=0.5):
if user_input:
x = prompt_dict['prompt_input'].format(instruction=prompt, input=user_input)
else:
x = prompt_dict['prompt_no_input'].format(instruction=prompt)
input_ids = tokenizer.encode(x, return_tensors="pt").to('cuda:0')
gen_tokens = model.generate(
input_ids,
max_new_tokens=max_new_tokens,
num_return_sequences=1,
temperature=temperature,
no_repeat_ngram_size=6,
do_sample=True,
eos_token_id = tokenizer.eos_token_id
)
gen_text = tokenizer.decode(gen_tokens[0], skip_special_tokens=False)
return gen_text.replace(x, '')
while True:
prompt = input("prompt and user inputs(seperated by <split>):")
if len(prompt.split("<split>")) > 1:
prompt, user_input = prompt.split("<split>")
else:
user_input = None
print(gen(prompt, user_input))
`polyglot이 어떤 의미야?`
>>polyglutino는 여러 언어를 구사할 수 있는 능력을 의미합니다.
현재 데모 파라미터는 적당히 잘 나오는 파라미터를 임의로 정한 부분인데요,
- temperature 0.5
- top_p 0.95
이 두가지 옵션만 주고 있습니다. (Chatbot의 경우 temperature를 낮게 주는게 조금 더 도움이 됩니다.)
https://github.com/Beomi/KoAlpaca/tree/main/webui 공개로 Close 합니다.