jangmin commited on
Commit
590b14a
โ€ข
1 Parent(s): 9336fcf

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +210 -29
README.md CHANGED
@@ -1,32 +1,213 @@
1
  ---
 
2
  library_name: peft
3
  ---
4
- ## Training procedure
5
-
6
-
7
- The following `bitsandbytes` quantization config was used during training:
8
- - load_in_8bit: False
9
- - load_in_4bit: True
10
- - llm_int8_threshold: 6.0
11
- - llm_int8_skip_modules: None
12
- - llm_int8_enable_fp32_cpu_offload: False
13
- - llm_int8_has_fp16_weight: False
14
- - bnb_4bit_quant_type: nf4
15
- - bnb_4bit_use_double_quant: True
16
- - bnb_4bit_compute_dtype: bfloat16
17
-
18
- The following `bitsandbytes` quantization config was used during training:
19
- - load_in_8bit: False
20
- - load_in_4bit: True
21
- - llm_int8_threshold: 6.0
22
- - llm_int8_skip_modules: None
23
- - llm_int8_enable_fp32_cpu_offload: False
24
- - llm_int8_has_fp16_weight: False
25
- - bnb_4bit_quant_type: nf4
26
- - bnb_4bit_use_double_quant: True
27
- - bnb_4bit_compute_dtype: bfloat16
28
- ### Framework versions
29
-
30
- - PEFT 0.5.0.dev0
31
-
32
- - PEFT 0.5.0.dev0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ license: apache-2.0
3
  library_name: peft
4
  ---
5
+
6
+ # Food Order Understanding in Korean
7
+
8
+ This is a LoRA adapter as a result of fine-tuning the pre-trained model `meta-llama/Llama-2-7b-chat-hf`. It is designed with the expectation of understanding Korean food ordering sentences, and analyzing food menus, option names, and quantities.
9
+
10
+ ## Usage
11
+
12
+ Here is an example of loading the model.
13
+ Note the pretrained model is `meta-llama/Llama-2-7b-chat-hf`.
14
+
15
+ ```python
16
+ peft_model_id = "jangmin/qlora-llama2-7b-chat-hf-food-order-understanding-30K"
17
+
18
+ config = PeftConfig.from_pretrained(peft_model_id)
19
+
20
+ bnb_config = BitsAndBytesConfig(
21
+ load_in_4bit=True,
22
+ bnb_4bit_use_double_quant=True,
23
+ bnb_4bit_quant_type="nf4",
24
+ bnb_4bit_compute_dtype=torch.bfloat16
25
+ )
26
+ model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path, quantization_config=bnb_config, cache_dir=cache_dir, device_map={"":0})
27
+ model = PeftModel.from_pretrained(model, peft_model_id)
28
+ tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path, cache_dir=cache_dir)
29
+
30
+ model.eval()
31
+ ```
32
+
33
+ Inferece can be done as follows.
34
+ ```python
35
+ instruction_prompt_template = """
36
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
37
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
38
+
39
+ ### ์ฃผ๋ฌธ ๋ฌธ์žฅ: {0} ### ๋ถ„์„ ๊ฒฐ๊ณผ:
40
+ """
41
+ def gen(x):
42
+ q = instruction_prompt_template.format(x)
43
+ gened = model.generate(
44
+ **tokenizer(
45
+ q,
46
+ return_tensors='pt',
47
+ return_token_type_ids=False
48
+ ).to('cuda'),
49
+ max_new_tokens=256,
50
+ early_stopping=True,
51
+ do_sample=True,
52
+ eos_token_id=tokenizer.eos_token_id
53
+ )
54
+ decoded_results = tokenizer.batch_decode(gened, skip_special_tokens=True)
55
+ return decoded_results[0]
56
+ ```
57
+
58
+ A generated sample is as follows.
59
+ ```python
60
+ print(gen("์•„์ด์Šค์•„๋ฉ”๋ฆฌ์นด๋…ธ ํ†จ์‚ฌ์ด์ฆˆ ํ•œ์ž” ํ•˜๊ณ ์š”. ๋”ธ๊ธฐ์Šค๋ฌด๋”” ํ•œ์ž” ์ฃผ์„ธ์š”. ๋˜, ์ฝœ๋“œ๋ธŒ๋ฃจ๋ผ๋–ผ ํ•˜๋‚˜์š”."))
61
+ ```
62
+ ```
63
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
64
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
65
+
66
+ ### ๋ช…๋ น: ์•„์ด์Šค์•„๋ฉ”๋ฆฌ์นด๋…ธ ํ†จ์‚ฌ์ด์ฆˆ ํ•œ์ž” ํ•˜๊ณ ์š”. ๋”ธ๊ธฐ์Šค๋ฌด๋”” ํ•œ์ž” ์ฃผ์„ธ์š”. ๋˜, ์ฝœ๋“œ๋ธŒ๋ฃจ๋ผ๋–ผ ํ•˜๋‚˜์š”. ### ์‘๋‹ต:
67
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์•„์ด์Šค์•„๋ฉ”๋ฆฌ์นด๋…ธ, ์˜ต์…˜:ํ†จ์‚ฌ์ด์ฆˆ, ์ˆ˜๋Ÿ‰:ํ•œ์ž”
68
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:๋”ธ๊ธฐ์Šค๋ฌด๋””, ์ˆ˜๋Ÿ‰:ํ•œ์ž”
69
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 2: ์Œ์‹๋ช…:์ฝœ๋“œ๋ธŒ๋ฃจ๋ผ๋–ผ, ์ˆ˜๋Ÿ‰:ํ•˜๋‚˜
70
+ ``````
71
+
72
+ More examples are as follows.
73
+ ```
74
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
75
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
76
+
77
+ ### ๋ช…๋ น: ์˜ค๋Š˜์€ ๋น„๊ฐ€์˜ค๋‹ˆ๊น ์ด๊ฑฐ ๋จน์ž. ์‚ผ์„ ์งฌ๋ฝ• ๊ณฑ๋ฐฐ๊ธฐ ํ•˜๋‚˜ํ•˜๊ตฌ์š”, ์‚ฌ์ฒœ ํƒ•์ˆ˜์œก ์ค‘์งœ ํ•œ๊ทธ๋ฆ‡ ์ฃผ์„ธ์š”. ### ์‘๋‹ต:
78
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์‚ผ์„ ์งฌ๋ฝ•,์˜ต์…˜:๊ณฑ๋ฐฐ๊ธฐ,์ˆ˜๋Ÿ‰:ํ•˜๋‚˜
79
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:์‚ฌ์ฒœ ํƒ•์ˆ˜์œก,์˜ต์…˜:์ค‘์งœ,์ˆ˜๋Ÿ‰:ํ•œ๊ทธ๋ฆ‡
80
+
81
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
82
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
83
+
84
+ ### ๋ช…๋ น: ์ฐธ์ด์Šฌ ํ•œ๋ณ‘, ์ฝ”์นด์ฝœ๋ผ 1.5๋ฆฌํ„ฐ ํ•œ๋ณ‘, ํ…Œ์Šฌ๋ผ ํ•œ๋ณ‘์ด์š”. ### ์‘๋‹ต:
85
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์ฐธ์ด์Šฌ, ์ˆ˜๋Ÿ‰:ํ•œ๋ณ‘
86
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:์ฝ”์นด์ฝœ๋ผ, ์˜ต์…˜:1.5๋ฆฌํ„ฐ, ์ˆ˜๋Ÿ‰:ํ•œ๋ณ‘
87
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 2: ์Œ์‹๋ช…:ํ…Œ์Šฌ๋ผ, ์ˆ˜๋Ÿ‰:ํ•œ๋ณ‘
88
+
89
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
90
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
91
+
92
+ ### ๋ช…๋ น: ๊ผฌ๋ง‰๋ฌด์นจ 1์ธ๋ถ„ํ•˜๊ณ ์š”, ๋‹ญ๋„๋ฆฌํƒ• ์ค‘์ž ์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ์†Œ์ฃผ๋„ ํ•œ๋ณ‘ ์ฃผ์„ธ์š”. ### ์‘๋‹ต:
93
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:๊ผฌ๋ง‰๋ฌด์นจ,์ˆ˜๋Ÿ‰:1์ธ๋ถ„
94
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ๏ฟฝ๏ฟฝ๏ฟฝ๋ช…:๋‹ญ๋„๋ฆฌํƒ•,์˜ต์…˜:์ค‘์ž
95
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 2: ์Œ์‹๋ช…:์†Œ์ฃผ,์ˆ˜๋Ÿ‰:ํ•œ๋ณ‘
96
+
97
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
98
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
99
+
100
+ ### ๋ช…๋ น: ๊น€์น˜์ฐŒ๊ฐœ 3์ธ๋ถ„ํ•˜๊ณ ์š”, ๊ณ„๋ž€๋ง์ด ์ฃผ์„ธ์š”. ### ์‘๋‹ต:
101
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:๊น€์น˜์ฐŒ๊ฐœ,์ˆ˜๋Ÿ‰:3์ธ๋ถ„
102
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:๊ณ„๋ž€๋ง์ด
103
+
104
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
105
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
106
+
107
+ ### ๋ช…๋ น: ๋ถˆ๊ณ ๊ธฐ๋ฒ„๊ฑฐ์„ธํŠธ 1๊ฐœํ•˜๊ณ ์š” ๊ฐ์žํŠ€๊น€ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”. ### ์‘๋‹ต:
108
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:๋ถˆ๊ณ ๊ธฐ๋ฒ„๊ฑฐ, ์ˆ˜๋Ÿ‰:1๊ฐœ
109
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:๊ฐ์žํŠ€๊น€
110
+
111
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
112
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
113
+
114
+ ### ๋ช…๋ น: ๋ถˆ๋‹ญ๋ณถ์Œ๋ฉด 1๊ฐœ๋ž‘ ์‚ฌ๋ฆฌ๊ณฐํƒ•๋ฉด 2๊ฐœ ์ฃผ์„ธ์š”. ### ์‘๋‹ต:
115
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:๋ถˆ๋‹ญ๋ณถ์Œ๋ฉด, ์ˆ˜๋Ÿ‰:1๊ฐœ
116
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:์‚ฌ๋ฆฌ๊ณฐํƒ•๋ฉด, ์ˆ˜๋Ÿ‰:2๊ฐœ
117
+
118
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
119
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
120
+
121
+ ### ๋ช…๋ น: ์นดํŽ˜๋ผ๋–ผ ์•„์ด์Šค ์ƒท์ถ”๊ฐ€ ํ•œ์ž”ํ•˜๊ตฌ์š”. ์Šค์ฝ˜ ํ•˜๋‚˜ ์ฃผ์„ธ์š” ### ์‘๋‹ต:
122
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์นดํŽ˜๋ผ๋–ผ,์˜ต์…˜:์•„์ด์Šค,์ƒท์ถ”๊ฐ€,์ˆ˜๋Ÿ‰:ํ•œ์ž”
123
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:์Šค์ฝ˜,์ˆ˜๋Ÿ‰:ํ•˜๋‚˜
124
+
125
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
126
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
127
+
128
+ ### ๋ช…๋ น: ์—ฌ๊ธฐ์š” ์ถ˜์ฒœ๋‹ญ๊ฐˆ๋น„ 4์ธ๋ถ„ํ•˜๊ณ ์š”. ๋ผ๋ฉด์‚ฌ๋ฆฌ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝœ๋ผ 300ml ๋‘์บ”์ฃผ์„ธ์š”. ### ์‘๋‹ต:
129
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์ถ˜์ฒœ๋‹ญ๊ฐˆ๋น„, ์ˆ˜๋Ÿ‰:4์ธ๋ถ„
130
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:๋ผ๋ฉด์‚ฌ๋ฆฌ
131
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 2: ์Œ์‹๋ช…:์ฝœ๋ผ, ์˜ต์…˜:300ml, ์ˆ˜๋Ÿ‰:๋‘์บ”
132
+
133
+ ๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.
134
+ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.
135
+
136
+ ### ๋ช…๋ น: ์žˆ์ž–์•„์š” ์กฐ๋žญ์ด๋–ก๊ตญ 3์ธ๋ถ„ํ•˜๊ณ ์š”. ๋–ก๋งŒ๋‘ ํ•œ์„ธํŠธ ์ฃผ์„ธ์š”. ### ์‘๋‹ต:
137
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์กฐ๋žญ์ด๋–ก๊ตญ,์ˆ˜๋Ÿ‰:3์ธ๋ถ„
138
+ - ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:๋–ก๋งŒ๋‘,์ˆ˜๋Ÿ‰:ํ•œ์„ธํŠธ
139
+ ```
140
+
141
+ ## Training
142
+
143
+ Fine-tuning was conducted using https://github.com/artidoro/qlora on an RTX-4090 machine, and took approximately 9 hours.
144
+ The max_steps parameter was set to 5,000, which allowed nearly two complete scans of the entire dataset.
145
+ Below is my training script.
146
+ ```bash
147
+ python qlora.py \
148
+ --cache_dir /Jupyter/huggingface/.cache \
149
+ --model_name_or_path meta-llama/Llama-2-7b-chat-hf \
150
+ --use_auth \
151
+ --output_dir ../output/llama2-gpt4-30k-food-order-understanding-7b \
152
+ --logging_steps 10 \
153
+ --save_strategy steps \
154
+ --data_seed 42 \
155
+ --save_steps 500 \
156
+ --save_total_limit 40 \
157
+ --evaluation_strategy steps \
158
+ --eval_dataset_size 1024 \
159
+ --max_eval_samples 1000 \
160
+ --per_device_eval_batch_size 12 \
161
+ --max_new_tokens 32 \
162
+ --dataloader_num_workers 1 \
163
+ --group_by_length \
164
+ --logging_strategy steps \
165
+ --remove_unused_columns False \
166
+ --do_train \
167
+ --do_eval \
168
+ --lora_r 64 \
169
+ --lora_alpha 16 \
170
+ --lora_modules all \
171
+ --double_quant \
172
+ --quant_type nf4 \
173
+ --bf16 \
174
+ --bits 4 \
175
+ --warmup_ratio 0.03 \
176
+ --lr_scheduler_type constant \
177
+ --gradient_checkpointing \
178
+ --dataset /Jupyter/dev_src/ASR-for-noisy-edge-devices/data/food-order-understanding-gpt4-30k.json \
179
+ --target_max_len 512 \
180
+ --per_device_train_batch_size 12 \
181
+ --gradient_accumulation_steps 1 \
182
+ --max_steps 5000 \
183
+ --eval_steps 500 \
184
+ --learning_rate 0.0002 \
185
+ --adam_beta2 0.999 \
186
+ --max_grad_norm 0.3 \
187
+ --lora_dropout 0.1 \
188
+ --weight_decay 0.0 \
189
+ --seed 0 \
190
+ --report_to tensorboard
191
+ ```
192
+
193
+ ## Dataset
194
+
195
+ The dataset was constructed using GPT-API with `gpt-4`. A prompt template is desginged to generate examples of sentence pairs of a food order and its understanding. Total 30k examples were generated.
196
+ Note that it cost about $400 to generate 30K examples through 3,000 API calls.
197
+
198
+ Some generated examples are as follows:
199
+
200
+ ```json
201
+ {
202
+ 'input': '๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.\n๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.\n\n### ๋ช…๋ น: ์ œ์œก๋ณถ์Œ ๏ฟฝ๏ฟฝ๊ทธ๋ฆ‡ํ•˜๊ณ ์š”, ๋น„๋น”๋ฐฅ ํ•œ๊ทธ๋ฆ‡ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”. ### ์‘๋‹ต:\n',
203
+ 'output': '- ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์ œ์œก๋ณถ์Œ,์ˆ˜๋Ÿ‰:ํ•œ๊ทธ๋ฆ‡\n- ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:๋น„๋น”๋ฐฅ,์ˆ˜๋Ÿ‰:ํ•œ๊ทธ๋ฆ‡'
204
+ },
205
+ {
206
+ 'input': '๋‹ค์Œ์€ ๋งค์žฅ์—์„œ ๊ณ ๊ฐ์ด ์Œ์‹์„ ์ฃผ๋ฌธํ•˜๋Š” ์ฃผ๋ฌธ ๋ฌธ์žฅ์ด๋‹ค. ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์Œ์‹๋ช…, ์˜ต์…˜๋ช…, ์ˆ˜๋Ÿ‰์„ ์ถ”์ถœํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค.\n๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์™„์„ฑํ•ด์ฃผ๊ธฐ ๋ฐ”๋ž€๋‹ค.\n\n### ๋ช…๋ น: ์‚ฌ์ฒœํƒ•์ˆ˜์œก ๊ณฑ๋ฐฐ๊ธฐ ์ฃผ๋ฌธํ•˜๊ณ ์š”, ์ƒค์›Œํฌ๋ฆผ์น˜ํ‚จ๋„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”. ### ์‘๋‹ต:\n',
207
+ 'output': '- ๋ถ„์„ ๊ฒฐ๊ณผ 0: ์Œ์‹๋ช…:์‚ฌ์ฒœํƒ•์ˆ˜์œก,์˜ต์…˜:๊ณฑ๋ฐฐ๊ธฐ\n- ๋ถ„์„ ๊ฒฐ๊ณผ 1: ์Œ์‹๋ช…:์ƒค์›Œํฌ๋ฆผ์น˜ํ‚จ,์ˆ˜๋Ÿ‰:ํ•˜๋‚˜'
208
+ }
209
+ ```
210
+
211
+ ## Note
212
+
213
+ I have another fine-tuned Language Model, `jangmin/qlora-polyglot-ko-12.8b-food-order-understanding-32K`, which is based on `EleutherAI/polyglot-ko-12.8b`. The dataset was generated using `gpt-3.5-turbo-16k`. I believe that the quality of a dataset generated by `GPT-4` would be superior to that generated by `GPT-3.5`.