Update README.md
Browse files
README.md
CHANGED
|
@@ -31,6 +31,57 @@ This gemma2 model was trained 2x faster with [Unsloth](https://github.com/unslot
|
|
| 31 |
|
| 32 |
데이터셋은 AI-Hub에 있는 논문자료 요약 데이터 셋과 키프리스에서 직접 청구항을 가져와 조합한 데이터셋을 이용했습니다.
|
| 33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
## 모델 사용법
|
| 35 |
|
| 36 |
1. unsloth를 설치합니다
|
|
@@ -104,10 +155,32 @@ inputs = tokenizer(
|
|
| 104 |
r"""<bos><start_of_turn>user
|
| 105 |
다음 과제해결수단을 보고 발명의 명칭, 기술분야, 청구항을 뽑아주세요.: {}<end_of_turn>
|
| 106 |
<start_of_turn>model""".format(input)
|
| 107 |
-
# train_data[0]["과제의 해결 수단"]
|
| 108 |
], return_tensors = "pt").to("cuda")
|
| 109 |
|
| 110 |
from transformers import TextStreamer
|
| 111 |
text_streamer = TextStreamer(tokenizer)
|
| 112 |
_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 1000)
|
| 113 |
-
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
|
| 32 |
데이터셋은 AI-Hub에 있는 논문자료 요약 데이터 셋과 키프리스에서 직접 청구항을 가져와 조합한 데이터셋을 이용했습니다.
|
| 33 |
|
| 34 |
+
## 모델 학습
|
| 35 |
+
모델 학습은 loRA를 이용하여 진행하였으며, 학습에 사용된 코드는 다음과 같습니다.
|
| 36 |
+
```
|
| 37 |
+
model = FastLanguageModel.get_peft_model(
|
| 38 |
+
model,
|
| 39 |
+
r = 16, # Choose any number > 0 ! Suggested 8, 16, 32, 64, 128
|
| 40 |
+
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
|
| 41 |
+
"gate_proj", "up_proj", "down_proj",],
|
| 42 |
+
lora_alpha = 16,
|
| 43 |
+
lora_dropout = 0, # Supports any, but = 0 is optimized
|
| 44 |
+
bias = "none", # Supports any, but = "none" is optimized
|
| 45 |
+
# [NEW] "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
|
| 46 |
+
use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
|
| 47 |
+
random_state = 3407,
|
| 48 |
+
use_rslora = False, # We support rank stabilized LoRA
|
| 49 |
+
loftq_config = None, # And LoftQ
|
| 50 |
+
)
|
| 51 |
+
```
|
| 52 |
+
```
|
| 53 |
+
from trl import SFTTrainer
|
| 54 |
+
from transformers import TrainingArguments
|
| 55 |
+
from unsloth import is_bfloat16_supported
|
| 56 |
+
|
| 57 |
+
trainer = SFTTrainer(
|
| 58 |
+
model = model,
|
| 59 |
+
tokenizer = tokenizer,
|
| 60 |
+
train_dataset = train_data,
|
| 61 |
+
max_seq_length = max_seq_length,
|
| 62 |
+
formatting_func = generate_prompt,
|
| 63 |
+
dataset_num_proc = 2,
|
| 64 |
+
packing = False, # Can make training 5x faster for short sequences.
|
| 65 |
+
args = TrainingArguments(
|
| 66 |
+
per_device_train_batch_size = 2,
|
| 67 |
+
gradient_accumulation_steps = 4,
|
| 68 |
+
warmup_steps = 5,
|
| 69 |
+
num_train_epochs = 1, # Set this for 1 full training run.
|
| 70 |
+
# max_steps = 100,
|
| 71 |
+
learning_rate = 2e-4,
|
| 72 |
+
fp16 = not is_bfloat16_supported(),
|
| 73 |
+
bf16 = is_bfloat16_supported(),
|
| 74 |
+
logging_steps = 10,
|
| 75 |
+
optim = "adamw_8bit",
|
| 76 |
+
weight_decay = 0.01,
|
| 77 |
+
lr_scheduler_type = "linear",
|
| 78 |
+
seed = 3407,
|
| 79 |
+
output_dir = "outputs",
|
| 80 |
+
),
|
| 81 |
+
)
|
| 82 |
+
```
|
| 83 |
+
|
| 84 |
+
|
| 85 |
## 모델 사용법
|
| 86 |
|
| 87 |
1. unsloth를 설치합니다
|
|
|
|
| 155 |
r"""<bos><start_of_turn>user
|
| 156 |
다음 과제해결수단을 보고 발명의 명칭, 기술분야, 청구항을 뽑아주세요.: {}<end_of_turn>
|
| 157 |
<start_of_turn>model""".format(input)
|
|
|
|
| 158 |
], return_tensors = "pt").to("cuda")
|
| 159 |
|
| 160 |
from transformers import TextStreamer
|
| 161 |
text_streamer = TextStreamer(tokenizer)
|
| 162 |
_ = model.generate(**inputs, streamer = text_streamer, max_new_tokens = 1000)
|
| 163 |
+
```
|
| 164 |
+
|
| 165 |
+
|
| 166 |
+
## 모델 결과
|
| 167 |
+
해당 모델로 실제 특허 명세서의 과제 해결 수단 항목을 가지고 테스트했으며 실제 문서와 비교했을 때
|
| 168 |
+
비교적 유사한 내용을 생성했다.
|
| 169 |
+
```
|
| 170 |
+
[발명의 명칭]
|
| 171 |
+
가방
|
| 172 |
+
|
| 173 |
+
|
| 174 |
+
[기술분야]
|
| 175 |
+
본 발명은 가방에 관한 것으로, 보다 상세하게는 확장 가능한 가방에 관한 것이다.
|
| 176 |
+
|
| 177 |
+
|
| 178 |
+
[청구항]
|
| 179 |
+
내부에 보관할 물건을 넣을 수 있는 기본 내장 공간과 이를 둘러싼 외피를 포함하는 가방에 있어서,
|
| 180 |
+
|
| 181 |
+
상기 외피에는 열리고 닫히는 확장 외피 지퍼가 형성되어 있고,
|
| 182 |
+
|
| 183 |
+
상기 확장 외피 지퍼의 내측에는 상기 확장 외피 지퍼가 열리는 경우 펼쳐지는 확장 내피를 더 포함하되,
|
| 184 |
+
|
| 185 |
+
상기 확장 내피의 내측으로 추가 공간이 형성되어 추가 수납공간을 구비토록 하는 것을 특징으로 하는 추가 수납공간이 구비된 가방.<end_of_turn>
|
| 186 |
+
```
|