metadata
base_model: MLP-KTLim/llama-3-Korean-Bllossom-8B
library_name: peft
license: llama3
datasets:
- iknow-lab/ko-genstruct-v1
Ko-genstruct v0.1
Ko-genstruct๋ ์ฃผ์ด์ง ๋ฌธ์๋ก๋ถํฐ instruction tuning์ ํ์ํ instruction์ ์์ฑํด๋ด๋ ๋ชจ๋ธ์ ๋๋ค. ์ํ๋ฌธ์ ์ ๊ธ์ฐ๊ธฐ ๋ฌธ์ ๋๊ฐ์ง ์ ํ์ ์ง์๋ฌธ์ ์์ฑํด๋ผ ์ ์์ต๋๋ค. ์ด ๋ชจ๋ธ์ Ada-instruct์ Genstruct๋ก๋ถํฐ ์๊ฐ์ ๋ฐ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฉ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
- ๊ฒ์ ๋ชจ๋ธ์ ํ์ตํ๊ธฐ ์ํด ์ฃผ์ด์ง ํ ์คํธ๋ก๋ถํฐ ์ง๋ฌธ์ ์์ฑํ๊ธฐ
- Instruction Tuning ํ์ต ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด Ko-genstruct๋ก instruction์ ์์ฑ ํ, ๋ค๋ฅธ LLM์ ์ด์ฉํ์ฌ ๋ต๋ณ ์์ฑ
Details
- Developed by: iKnow-Lab
- License: [llama3]
- Lora-tuned from model: MLP-KTLim/llama-3-Korean-Bllossom-8B
์ฌ์ฉ๋ฐฉ๋ฒ
์ง๋ฌธ ์์ฑ
์๋ ์์ ๋ฅผ ํ์ฉํ์ฌ, ์ฃผ์ด์ง ๋ฌธ์๋ก๋ถํฐ ์ง์๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค. ์ํ๋ฌธ์ ์ ๊ธ์ฐ๊ธฐ ๋ฌธ์ ๋๊ฐ์ง ํ๋กฌํํธ ์ ํ์ด ์กด์ฌํฉ๋๋ค.
import transformers
import peft
model_id = "MLP-KTLim/llama-3-Korean-Bllossom-8B"
peft_model_id = "iknow-lab/ko-genstruct-v0.1"
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
model = transformers.AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype="auto").eval()
model.load_adapter(peft_model_id, revision="epoch-1")
title = ""
text = ""
PROMPT_QA = """๋น์ ์ ์ํ๋ฌธ์ ์ถ์ ์์์
๋๋ค. ๋ค์ ์๋ฃ์ ๊ธฐ๋ฐํ์ฌ ์ ๋ฌธ๊ฐ ์์ค์ ์ํ๋ฌธ์ ๋ฅผ ์ถ์ ํ ๊ฒ์
๋๋ค. ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ์ง์์ฌํญ์ ๋ง๋ ๊ฒฐ๊ณผ๋ฌผ์ json ํ์์ผ๋ก ๋ฐํํด์ฃผ์ธ์.
1. ์์ฑํ ๋ฌธ์ ๋ ์ค์ํ์์ ์ฌ์ฉํ๋ ์ง๋ฌธ์ ๋งํฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค(~๋ฌด์์ธ๊ฐ์? ~์์ฑํด์ฃผ์ธ์. ~ ์ด๋ป๊ฒ ํด์ผํ์ฃ ?)
2. ๋จผ์ ๊ณ ๋ฑํ๊ต ์์ค์ ๋ฌธ์ ๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ์ ๋ฌธ๊ฐ ์์ค์ผ๋ก ๊ณ ๋์ด๋ ๋ฌธ์ ๋ก ํฅ์ํด์ฃผ์ธ์. ๊ฐ ๋ฌธ์ ๋ ๋ฐ๋์ ์ ์๋ ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ ธ์ผ ํฉ๋๋ค. ์ฐ๊ด์ฑ์ด ์ ๋๋ผ๋, ์ฐฝ์์ ์ธ ์์ด๋์ด๋ก ํด๋น ์๋ฃ๋ฅผ ํ์ฉํ์ธ์.
3. ๋ฌธ์ ์๋ ๋ต์ ์์ฑ์ ํ์ํ ๋ด์ฉ์ ์ฃผ์ด์ง ์๋ฃ์์ ์ถ์ถํด์ ํจ๊ป ์ ๊ณตํด์ผํฉ๋๋ค.
4. ์ถ์ ํ ๋ฌธ์ ์ ๊ณผ๋ชฉ ํ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: ๊ธ์ฐ๊ธฐ, ํ๊ตญ์ด, ์์ด, ์ํ, ์ฌํ๊ณผํ, ๊ณผํ, ์ญ์ฌ ๋ฌธํ์์ , ๋ฒ, ๋๋, ์ ์น, ์ข
๊ต, ์ธ๊ตญ์ด, ๊ฒฝ์ , ๊ฒฝ์, ์๋ฃ, ๊ณตํ, ์ธ๋ฌธํ ๋ฑ - ํ๋ณด์ ์์ด๋, ์ ์ ํ ๊ณผ๋ชฉ์ ์์ ๋กญ๊ฒ ๋งํ ์ ์๋ค.
# ์ ๋ชฉ: {title}
# ์๋ฃ:
{text}"""
PROMPT_WRITING = """๋น์ ์ ๊ธ์ฐ๊ธฐ ์ํ๋ฌธ์ ์ถ์ ์์์
๋๋ค. ๋ค์ ์๋ฃ์ ๊ธฐ๋ฐํ์ฌ ์ ๋ฌธ๊ฐ ์์ค์ ์ํ๋ฌธ์ ๋ฅผ ์ถ์ ํ ๊ฒ์
๋๋ค. ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ์ง์์ฌํญ์ ๋ง๋ ๊ฒฐ๊ณผ๋ฌผ์ json ํ์์ผ๋ก ๋ฐํํด์ฃผ์ธ์.
1. ์์ฑํ ๋ฌธ์ ๋ ์ค์ํ์์ ์ฌ์ฉํ๋ ์ง๋ฌธ์ ๋งํฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค(~๋ฌด์์ธ๊ฐ์? ~์์ฑํด์ฃผ์ธ์. ~ ์ด๋ป๊ฒ ํด์ผํ์ฃ ?)
2. ๋จผ์ ๊ณ ๋ฑํ๊ต ์์ค์ ๋ฌธ์ ๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ ์ ๋ฌธ๊ฐ ์์ค์ผ๋ก ๊ณ ๋์ด๋ ๋ฌธ์ ๋ก ํฅ์ํด์ฃผ์ธ์. ๊ฐ ๋ฌธ์ ๋ ๋ฐ๋์ ์ ์๋ ์๋ฃ๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ ธ์ผ ํฉ๋๋ค. ์ฐ๊ด์ฑ์ด ์ ๋๋ผ๋, ์ฐฝ์์ ์ธ ์์ด๋์ด๋ก ํด๋น ์๋ฃ๋ฅผ ํ์ฉํ์ธ์.
3. ๋ฌธ์ ์๋ ๊ธ์ฐ๊ธฐ ์์ฑ์ ํ์ํ ๋ด์ฉ์ ์ฃผ์ด์ง ์๋ฃ์์ ์ถ์ถํด์ ํจ๊ป ์ ๊ณตํด์ผํฉ๋๋ค.
4. ์ถ์ ํ ๋ฌธ์ ์ ์ฃผ์ ํ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ด ์ค์์ ์ ์ ํ ์ฃผ์ ๋ฅผ 3๊ฐ์ง ์ ํํ์ธ์: ์ด๋ ฅ์, ๋
ธ๋๊ฐ์ฌ, ์ ํน์ ์์ค, ์์ธ์ด, ๊ทน๋ณธ, ์๋๋ฆฌ์ค, ์ฌํ์ผ๊ธฐ, ์ฌํ๊ณํ์, ์๋ฆฌ๋ ์ํผ, ํด์ค, ์๊ธฐ์๊ฐ์, ํธ์ง, ์ด๋ฉ์ผ, ๋ฆฌ๋ทฐ ๋ฐ ํ๊ฐ, ์์
๋ฏธ๋์ด ํฌ์คํธ, ์ผ๊ธฐ, ์ฒญ์์, ํญ์์, ์ผํ ๋ฆฌ์คํธ, ๋ฉ๋ชจ, ์ฐ๊ตฌ ๋
ผ๋ฌธ ๋ฐ ๊ณํ์, ๋น์ฆ๋์ค ๋ณด๊ณ ์ ๋ฐ ๊ฒํ์, ๊ธฐ์ ๋ฌธ์, ๋ฐํ์๋ฃ, ๊ณ์ฝ์ ํน์ ๋ฒ๋ฅ ๋ฌธ์, ํธ์ง ๋ฐ ์ถํ ๋ฌธ์, ๊ด๊ณ ์นดํผ๋ผ์ดํธ, ์น ์ฝํ
์ธ , ๋ด์ค๋ ํฐ, ์ฐ์ค๋ฌธ, ์๊ธฐ๊ณ๋ฐ์, ๋ถ์๋ณด๊ณ ์, ๊ธฐํ์, ์ ์์
# ์ ๋ชฉ: {title}
# ์๋ฃ:
{text}"""
def generate_question(title, text, is_writing: bool = False):
prompt=PROMPT_WRITING if is_writing else PROMPT_QA
prompt = prompt.format(title=title, text=text)
prompt = [{"content": prompt, "role": "user"}]
inputs = tokenizer.apply_chat_template(prompt, return_tensors="pt", add_generation_prompt=True, tokenize=False)
inputs = inputs.strip() + "\n\n```json\n{\n \"topic\":"
inputs = tokenizer.encode(inputs, add_special_tokens=False, return_tensors="pt").to(model.device)
outputs = model.generate(input_ids=inputs, max_new_tokens=256, do_sample=True, early_stopping=True, eos_token_id=128009, temperature=1.0)
question = tokenizer.decode(outputs[0, inputs.shape[1]:], skip_special_tokens=False)
return question
print("Question generation test")
for _ in range(5):
question = generate_question(title, text)
print(question)
print("Writing generation test")
for _ in range(5):
question = generate_question(title, text, True)
print(question)
Citation [optional]
BibTeX:
@misc{cui2023adainstructadaptinginstructiongenerators,
title={Ada-Instruct: Adapting Instruction Generators for Complex Reasoning},
author={Wanyun Cui and Qianle Wang},
year={2023},
eprint={2310.04484},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2310.04484},
}
@misc{Genstruct,
url={[https://https://huggingface.co/NousResearch/Genstruct-7B](https://huggingface.co/NousResearch/https://huggingface.co/NousResearch/Genstruct-7B)},
title={Genstruct},
author={"euclaise"}
}
Model Card Authors [optional]
- ๊นํฌ๊ท (khk6435@ajou.ac.kr)
Framework versions
- PEFT 0.11.0