|
--- |
|
license: other |
|
library_name: peft |
|
tags: |
|
- trl |
|
- sft |
|
- generated_from_trainer |
|
datasets: |
|
- generator |
|
base_model: google/gemma-7b-it |
|
model-index: |
|
- name: gemma-7b-it-summarization-sft-qlora |
|
results: [] |
|
--- |
|
|
|
# gemma-7b-it-summarization-sft-qlora |
|
|
|
This model is a fine-tuned version of [google/gemma-7b-it](https://huggingface.co/google/gemma-7b-it) on the generator dataset. |
|
|
|
|
|
## Model Details |
|
### Base Model |
|
- https://huggingface.co/google/gemma-7b-it |
|
|
|
### Model Description |
|
- Korean summarization finetune model based on gemma-7b-it model |
|
|
|
- **Finetuned by:** [Kang Seok Ju] |
|
- **Contact:** [[email protected]] |
|
|
|
### Dataset |
|
- https://huggingface.co/datasets/brildev7/new_summary_by_gpt4 |
|
|
|
### Framework versions |
|
|
|
- PEFT 0.8.2 |
|
- Transformers 4.38.0 |
|
- Pytorch 2.2.1+cu121 |
|
- Datasets 2.17.0 |
|
- Tokenizers 0.15.2 |
|
|
|
### Inference Examples |
|
``` |
|
import torch |
|
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig |
|
|
|
model_id = "brildev7/gemma-7b-it-finetune-summarization-ko-sft-qlora" |
|
quantization_config = BitsAndBytesConfig( |
|
load_in_4bit=True, |
|
bnb_4bit_compute_dtype=torch.float16, |
|
bnb_4bit_quant_type="nf4" |
|
) |
|
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
model_id, |
|
device_map="auto", |
|
quantization_config=quantization_config, |
|
torch_dtype=torch.float16, |
|
) |
|
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id) |
|
tokenizer.pad_token_id = tokenizer.eos_token_id |
|
tokenizer.padding_side = 'right' |
|
|
|
|
|
passage = "APΒ·AFP ν΅μ λ± μΈμ μ μμμ μ΅κ³ λΆμλ‘ κΌ½νλ μΈλμ 무μΌμ μλ°λ 릴λΌμ΄μΈμ€ μΈλμ€νΈλ¦¬ νμ₯μ΄ λ§λ΄μλ€μ μ΄νΈν κ²°νΌμμ μ€λΉνλ©΄μ μ μΈκ³ μ΅λ§μ₯μμ ν 리μ°λ μ€ν λ± μ λͺ
μΈμ¬λ€μ λκ±° μ΄λνλ€κ³ 2μΌ(νμ§μκ°) 보λνλ€. μ΄μ λ°λ₯΄λ©΄ κ·Έμ 28μΈ μλ€μΈ μλνΈ μλ°λλ μ€λ 7μ μΈλ μλΆ κ΅¬μλΌνΈμ£Ό μ λκ°λ₯΄μμ μ€λ μ°μΈμΈ λΌλμΉ΄ λ¨Έμ²νΈμ κ²°νΌν μμ μ΄λ€. λ¨Έμ²νΈλ μΈλ μ μ½νμ¬ μμ½λ₯΄ ν¬μ€μΌμ΄μ μ΅κ³ κ²½μμ(CEO) λ°μ΄λ λ¨Έμ²νΈμ λΈμ΄λ€. μ¬νκ° μ§νλ λ μ¬λμ κ²°νΌμμ λ§ν¬ μ 컀λ²κ·Έ λ©ν CEO, λΉ κ²μ΄μΈ λ§μ΄ν¬λ‘μννΈ(MS) μ°½μ
μ, μλ€λ₯΄ νΌμ°¨μ΄ κ΅¬κΈ CEO, λλλ νΈλΌν μ λ―Έκ΅ λν΅λ Ήμ λΈ μ΄λ°©μΉ΄ νΈλΌν λ± 1200λͺ
μ μ λͺ
μΈμ¬λ€μ΄ μ°Έμν μμ μ΄λ€. λ νμ€ν 리νλμ λ§μ μ¬ λ°μ΄λΉλ λΈλ μΈ λ±μ 곡μ°λ μ΄λ¦΄ μμ μ΄λ€. μΈλμ ν¬λ°μ΄λ 리νλκ° μ΄ νμ¬ μΆμ°λ£λ‘ 900λ§ λ¬λ¬(μ½ 120μ΅ μ)λ₯Ό μ μλ°μλ€κ³ 보λνλ€. μ§λ 6μΌ μμΈκΉν¬λΉμ¦λμ€ν곡μΌν°λ₯Ό ν΅ν΄ μλλ©λ―Έλ¦¬νΈμ°ν©(UAE)μΌλ‘ μΆκ΅νκ³ μλ μ΄μ¬μ© μΌμ±μ μ νμ₯. λ΄μμ€ μ΄λ² κ²°νΌμμ μ°Έμνλ νκ°λ€μ μ κΈμ ν
λ§λ‘ ν μμμ μ
κ³ μλνΈ μλ°λκ° μ΄μνλ λλ¬Ό ꡬ쑰 μΌν°λ₯Ό λ°©λ¬Ένλ€. βμ²μ λ³βμ΄λΌλ λ»μ βλ°νλΌβλ‘ μλ €μ§ μ΄κ³³μ λ©΄μ λ§ μ¬μλμ 4λ°° κ·λͺ¨μΈ 12γ’μ λ¬νλ©° μ½λΌλ¦¬ λ± κ°μ’
λ©Έμ’
μκΈ°μ μλ λλ¬Όλ€μ΄ μμνλ€. λ λ§€μΌ μ΄νΈν νν°κ° μ΄λ¦¬λ©° κ·Έλλ§λ€ μλ‘μ΄ λλ μ€ μ½λμ λ§μΆ° μ·μ μ
μ΄μΌ νλ€. μ΄λ² κ²°νΌμμ μν΄ μλ°λλ νλκ΅ μ¬μ λ¨μ§λ₯Ό μλ‘ κ±΄μ€ μ€μ΄λ©°, κ²°νΌμ νν°μλ§ 2500μ¬ κ°μ μμμ΄ μ 곡λ μμ μ΄λ€. μλ°λλ 2018λ
κ³Ό 2019λ
μλ κ°κ° λΈκ³Ό μλ€μ κ²°νΌμν€λ©΄μ μ΄νΈν νν°λ₯Ό μ΄μ΄ μ μΈκ³μ μ΄λͺ©μ μ§μ€μμΌ°λ€. 2018λ
12μμ μ΄λ¦° λΈ μ΄μ€ μλ°λμ κ²°νΌμ μΆνμ°μλ νλ¬λ¦¬ ν΄λ¦°ν΄ μ λ―Έκ΅ κ΅λ¬΄μ₯κ΄κ³Ό μ΄μ¬μ© μΌμ±μ μ νμ₯, μΈλ‘ μ¬λ² 루νΌνΈ λ¨Έλ
μ μ°¨λ¨ μ μμ€ λ¨Έλ
λ±μ΄ μ°Έμνκ³ , μΆν 곡μ°μ νμ€ν λΉμμΈκ° 맑μλ€. μλ°λ νμ₯μ μ΄ κ²°νΌμμλ§ 1μ΅ λ¬λ¬(μ½ 1336μ΅ μ)λ₯Ό μ¬μ©ν κ²μΌλ‘ μ ν΄μ‘λ€. 2019λ
μ₯λ¨ μμΉ΄μ μλ°λμ κ²°νΌμμλ ν λ λΈλ μ΄ μ μκ΅ μ΄λ¦¬λ₯Ό λΉλ‘―ν΄ μλ€λ₯΄ νΌμ°¨μ΄μ λ°κΈ°λ¬Έ μ μ μμ¬λ¬΄μ΄μ₯ λ±μ΄ μ°Έμνλ€. μ΄μ¬μ© νμ₯μ μ΄ λ μΈλ μ ν΅ μμμ μ
κ³ μ°Έμν μ¬μ§μ΄ 곡κ°λΌ νμ κ° λκΈ°λ νλ€. μλ°λ νμ₯μ μμ μ κ°μ€, μμ νν λΆμΌμμ μ±κ³΅ν΄ λ§μ λμ λͺ¨μκ³ 2016λ
릴λΌμ΄μΈμ€ μ§μ€λ₯Ό μμΈμ μΈλ ν΅μ μμ₯μλ μ§μΆ, μΈλ μμ₯μ μ¬μ€μ νμ νλ©΄μ μμμ μ΅κ³ κ°λΆ λμ΄μ μ¬λΌμ°λ€. κ·Έκ° μμ ν μΈλ λλ°μ΄μ 27μΈ΅μ§λ¦¬ μ ν βμν리μβλ μΈκ³μμ κ°μ₯ λΉμΌ κ°μΈ μ£ΌνμΌλ‘ κΌ½νλ€." |
|
text = f"λ¬Έμ₯: {passage}\nμμ½ :" |
|
device = "cuda" |
|
inputs = tokenizer(text, return_tensors="pt").to(device) |
|
outputs = model.generate(**inputs, |
|
max_new_tokens=512, |
|
temperature=1, |
|
use_cache=False) |
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
"μΈλμ λΆμ 무μΌμ μλ°λ νμ₯μ΄ μμ μ 28μΈ μλ€ μλνΈ μλ°λμ κ²°νΌμμ μ€λΉνλ©°, μ μΈκ³ μ΅λ§μ₯μμ ν 리μ°λ μ€ν λ± μ λͺ
μΈμ¬λ€μ μ΄λν΄ λ§ν¬ μ 컀λ²κ·Έ, λΉ κ²μ΄μΈ , μλ€λ₯΄ νΌμ°¨μ΄, λλλ νΈλΌν λΈ μ΄λ°©μΉ΄ νΈλΌν λ±μ΄ μ°Έμν μμ μ." |
|
|
|
|
|
passage = "κ΅λ―Όμν μ₯μΌ μ μμΈ λ
Έμμ λΉνμμμ₯μ΄ 2μΌ κ³΅μ² νλ½μ λ°λ°ν΄ μ¬μλ λΉμ¬ μμμ λΆμ μ μλ μ€μΈ κ²μΌλ‘ μλ €μ‘λ€. νμ¬ κ²½μ°°κ³Ό λμΉ μνλ€. μ₯ μ μμμ₯μ μ΄λ μ€ν λΉμ¬ μμμ νλ°μ λ‘ μΆμ λλ μ‘체λ₯Ό λͺΈμ λΏλ¦° λ€ μ€λ₯Έμμ λΌμ΄ν°λ₯Ό λ€κ³ κ²½μ°°κ³Ό λμΉ μ€μ΄λ€. μμ κ΅λ―Όμνμ μ΄λ λ
Έμκ°μμ κΉκ΄μ μ μμΈμ μμ, κΉμ κ· νκ΅μ¬μ΄λ²λ³΄μνν νμ₯, νκ²½λ³ μ μμΈμμ₯ λΉμμ€μ₯μ 3μ κ²½μ λ°©μΉ¨μ λ°ννλ€. λ
Έμμμλ κΉμ€νΈ μ μμΈλ κ΅κ°μ¬μ μ°κ΅¬μΌν° μ°κ΅¬μμ΄ μ°μ μΆμ²λλ€. μ₯ μ μμμ₯μ λ
Έμκ° κ³΅μ²μ μ μ²νμΌλ κ²½μ λͺ
λ¨κ³Ό μ°μ κ³΅μ² λͺ
λ¨μ ν¬ν¨λμ§ μμλ€." |
|
text = f"λ¬Έμ₯: {passage}\nμμ½: " |
|
device = "cuda" |
|
inputs = tokenizer(text, return_tensors="pt").to(device) |
|
outputs = model.generate(**inputs, |
|
max_new_tokens=1024, |
|
temperature=1, |
|
use_cache=False) |
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
"2μΌ κ²½μ°°κ³Ό λμΉ μ€μΈ μ₯μΌ μ μμΈ λ
Έμ λΉνμμμ₯μ΄ κ΅λ―Όμνμ λ
Έμκ° κ²½μ λ°©μΉ¨ λ°νμ κΉμ€νΈ μ μμΈλ κ΅κ°μ¬μ μ°κ΅¬μΌν° μ°κ΅¬μμ μ°μ μΆμ² μ§μ μΌλ‘ κ³΅μ² νλ½μ΄ μμλλ κ°μ΄λ°, μμ μ μν΄ μ¬μλ λΉμ¬ μμμ λΆμ μ μλνκ³ μλ€." |
|
``` |
|
|
|
|
|
|