byminHugging commited on
Commit
07afcbb
ยท
verified ยท
1 Parent(s): a854264

Delete kcmii_lm_rag.ipynb

Browse files
Files changed (1) hide show
  1. kcmii_lm_rag.ipynb +0 -483
kcmii_lm_rag.ipynb DELETED
@@ -1,483 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "markdown",
5
- "id": "9d6fc17a-d548-4ab6-b5d3-51e4b60960bb",
6
- "metadata": {},
7
- "source": [
8
- "### full-fine-tuning ํ•˜๊ธฐ์— ํ•™์Šต ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆผ\n",
9
- "### RAG ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ํ™œ์šฉํ•ด ๊ฐœ๋ฐœํ•ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ ์ง„ํ–‰"
10
- ]
11
- },
12
- {
13
- "cell_type": "markdown",
14
- "id": "33f8253d-352f-4ac6-9205-59b0e773be77",
15
- "metadata": {},
16
- "source": [
17
- "### ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜์˜ RAG ๊ตฌ์ถ• \n",
18
- "\n",
19
- "### ํ๋ฆ„\n",
20
- "[์ž…๋ ฅ: ์ „๊ณต๋ช… 3๊ฐœ] \n",
21
- " โ†“ \n",
22
- "[CSV ๋ฌธ์„œ์—์„œ 3๊ฐœ ์ „๊ณต ์ •๋ณด ์ถ”์ถœ] โ† (Keyword-based Retriever) \n",
23
- " โ†“ \n",
24
- "[์ „๊ณต ์ •๋ณด๋“ค์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ] โ† (Prompt Composer) \n",
25
- " โ†“ \n",
26
- "[LLM์—๊ฒŒ ์ „๋‹ฌํ•˜์—ฌ ์ƒ๊ธฐ๋ถ€ ๋ฌธ๊ตฌ ์ƒ์„ฑ] โ† (Generator)"
27
- ]
28
- },
29
- {
30
- "cell_type": "code",
31
- "execution_count": 4,
32
- "id": "cbe0926d-ccec-4942-8a9e-bf5f940d1a0b",
33
- "metadata": {},
34
- "outputs": [
35
- {
36
- "data": {
37
- "text/plain": [
38
- "(61,\n",
39
- " '[์ „๊ณต๋ช…: ์–ด๋ฌธํ•™]\\n์ „๊ณต์„ค๋ช…: ๋™์„œ์–‘ ์–ธ์–ด์˜ ๊ตฌ์กฐ์™€ ๋ฌธํ•™์  ํ‘œํ˜„์„ ์ฒด๊ณ„์ ์œผ๋กœ ํƒ๊ตฌํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๋ฌธํ™”์  ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ์–ธ์–ด์  ๊ฐ๊ฐ, ๋…ผ๋ฆฌ์  ์‚ฌ๊ณ ๋ ฅ, ๋น„ํŒ์  ๋ถ„์„ ๋Šฅ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ์–ธ์–ด์™€ ๋ฌธํ•™, ๋‹ค์–‘ํ•œ ๊ตญ๊ฐ€์˜ ์‚ฌํšŒยท๋ฌธํ™”์  ํŠน์„ฑ\\n๊ด€๋ จ์ง„๋กœ: ์†Œ์„ค๊ฐ€, ๋ฐฉ์†ก์ž‘๊ฐ€, ๋ฒˆ์—ญ๊ฐ€, ๋ฌธํ•™๋น„ํ‰๊ฐ€, ํ†ต์—ญ์‚ฌ, ์–ธ์–ดํ•™์ž')"
40
- ]
41
- },
42
- "execution_count": 4,
43
- "metadata": {},
44
- "output_type": "execute_result"
45
- }
46
- ],
47
- "source": [
48
- "# ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ „๊ณต๋ช… 3๊ฐœ ์ž…๋ ฅ ๋ฐ›๊ธฐ\n",
49
- "# csv ๋ฐ์ดํ„ฐ์—์„œ ํ•ด๋‹น ์ „๊ณต 3๊ฐœ์˜ ์ •๋ณด ์ถ”์ถœ\n",
50
- "# ์ถ”์ถœ๋œ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กฌํ”„ํŠธ ๊ตฌ์„ฑ\n",
51
- "import pandas as pd\n",
52
- "\n",
53
- "file_path = \"dataset/kcmii_major_rag.csv\"\n",
54
- "df = pd.read_csv(file_path)\n",
55
- "\n",
56
- "def make_major_prompt(df, majors : list) :\n",
57
- " parts = []\n",
58
- " for i, major in enumerate(major, 1) : # enumerate(major, 1) ์Šคํƒ€ํŒ… ๋„˜๋ฒ„ ์„ค์ •\n",
59
- " row = df[df['์ „๊ณต๋ช…']==major]\n",
60
- " if row.empty:\n",
61
- " continue\n",
62
- " r = row.iloc[o]\n",
63
- " \n",
64
- "์ „๊ณต์„ค๋ช…: {row['์ „๊ณต์„ค๋ช…']}\n",
65
- "์š”๊ตฌ์—ญ๋Ÿ‰: {row['์š”๊ตฌ์—ญ๋Ÿ‰']}\n",
66
- "์ „๊ณต๊ด€์‹ฌ: {row['์ „๊ณต๊ด€์‹ฌ']}\n",
67
- "๊ด€๋ จ์ง„๋กœ: {row['๊ด€๋ จ์ง„๋กœ']}\"\"\"\n",
68
- "\n",
69
- "# ๋ฌธ์„œ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ\n",
70
- "documents = df.apply(format_row_as_document, axis=1).tolist()\n",
71
- "\n",
72
- "# ๋ฌธ์„œ ์ˆ˜ ํ™•์ธ ๋ฐ ์ƒ˜ํ”Œ ์ถœ๋ ฅ\n",
73
- "len(documents), documents[0]"
74
- ]
75
- },
76
- {
77
- "cell_type": "code",
78
- "execution_count": 35,
79
- "id": "dbd6f8a1-aca2-44df-9d37-7377025c7126",
80
- "metadata": {},
81
- "outputs": [
82
- {
83
- "data": {
84
- "text/plain": [
85
- "pandas.core.series.Series"
86
- ]
87
- },
88
- "execution_count": 35,
89
- "metadata": {},
90
- "output_type": "execute_result"
91
- }
92
- ],
93
- "source": []
94
- },
95
- {
96
- "cell_type": "code",
97
- "execution_count": 5,
98
- "id": "52fe7db0-e1e2-4f86-9eb7-55bf794ecb3d",
99
- "metadata": {},
100
- "outputs": [],
101
- "source": [
102
- "import pandas as pd\n",
103
- "file_path = \"dataset/kcmii_major_rag.csv\"\n",
104
- "df = pd.read_csv(file_path)\n",
105
- "\n",
106
- "majors = [\"์‹ฌ๋ฆฌ\", \"๊ต์œก\", \"์‚ฌํšŒ๋ณต์ง€\"]\n",
107
- "parts = []\n",
108
- "for i, major in enumerate(majors, 1):\n",
109
- " row = df[df['์ „๊ณต๋ช…']==major]\n",
110
- " r = row.iloc[0] # ์‹œ๋ฆฌ์ฆˆ ๋ณ€ํ™˜\n",
111
- " part = f\"\"\"{i}. {major}\n",
112
- "์ „๊ณต์„ค๋ช…: {r['์ „๊ณต์„ค๋ช…']}\n",
113
- "์š”๊ตฌ์—ญ๋Ÿ‰: {r['์š”๊ตฌ์—ญ๋Ÿ‰']}\n",
114
- "์ „๊ณต๊ด€์‹ฌ: {r['์ „๊ณต๊ด€์‹ฌ']}\n",
115
- "๊ด€๋ จ์ง„๋กœ: {r['๊ด€๋ จ์ง„๋กœ']}\n",
116
- "\"\"\"\n",
117
- " parts.append(part)\n",
118
- "\n",
119
- "majors_str = \", \".join(majors)\n",
120
- "prompt = f\"\"\"OO ํ•™์ƒ์€ ์•„๋ž˜์˜ ์„ธ ์ „๊ณต ๋ถ„์•ผ({majors_str})์— ๋Œ€ํ•ด ํฅ๋ฏธ ์ˆ˜์ค€์ด ๋†’์Šต๋‹ˆ๋‹ค.\n",
121
- "๊ฐ ์ „๊ณต์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ๊ณ ๋“ฑํ•™์ƒ ์ƒํ™œ๊ธฐ๋ก๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”:\n",
122
- "\n",
123
- "{chr(10).join(parts)}\n",
124
- "\"\"\""
125
- ]
126
- },
127
- {
128
- "cell_type": "code",
129
- "execution_count": 6,
130
- "id": "17933069-cd0d-4b15-b424-410b83063dbc",
131
- "metadata": {},
132
- "outputs": [
133
- {
134
- "data": {
135
- "text/plain": [
136
- "['1. ์‹ฌ๋ฆฌ\\n์ „๊ณต์„ค๋ช…: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ๊ณต๊ฐ ๋Šฅ๋ ฅ, ๋ถ„์„๋ ฅ, ๊ด€์ฐฐ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ์ธ๊ฐ„ ํ–‰๋™, ๊ฐ์ •, ์ธ์ง€ ๊ธฐ๋Šฅ\\n๊ด€๋ จ์ง„๋กœ: ์ž„์ƒ์‹ฌ๋ฆฌ์‚ฌ, ์ƒ๋‹ด์‚ฌ, ์กฐ์ง์‹ฌ๋ฆฌ์ „๋ฌธ๊ฐ€, ์—ฐ๊ตฌ์›, ๊ต์ˆ˜\\n',\n",
137
- " '2. ๊ต์œก\\n์ „๊ณต์„ค๋ช…: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•๊ณผ ๊ต์œก ์ œ๋„๋ฅผ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ์†Œํ†ต ๋Šฅ๋ ฅ, ์ธ๋‚ด์‹ฌ, ๊ด€์ฐฐ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ๊ต์œก๊ณผ์ •, ์•„๋™ ๋ฐœ๋‹ฌ, ๊ต์ˆ˜ ํ•™์Šต ๋ฐฉ๋ฒ•\\n๊ด€๋ จ์ง„๋กœ: ๊ต์‚ฌ, ๊ต์œกํ–‰์ •๊ฐ€, ๊ต์œก์—ฐ๊ตฌ์›, ๊ต์ˆ˜, ๊ต์œก์ปจ์„คํ„ดํŠธ\\n',\n",
138
- " '3. ์‚ฌํšŒ๋ณต์ง€\\n์ „๊ณต์„ค๋ช…: ์‚ฌํšŒ๋ณต์ง€๋Š” ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ๋ณต์ง€์™€ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ๊ณต๊ฐ ๋Šฅ๋ ฅ, ๋Œ€์ธ๊ด€๊ณ„๋Šฅ๋ ฅ, ๋ฌธ์ œ ํ•ด๊ฒฐ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›, ๋ณต์ง€ ์ •์ฑ…, ์ธ๊ฐ„ ์กด์—„์„ฑ\\n๊ด€๋ จ์ง„๋กœ: ์‚ฌํšŒ๋ณต์ง€์‚ฌ, ์ฒญ์†Œ๋…„์ง€๋„์‚ฌ, ๋ณต์ง€ํ–‰์ •๊ฐ€, ๊ฐ€์กฑ์ƒ๋‹ด์‚ฌ, ๋‹ค๋ฌธํ™”์ „๋ฌธ๊ฐ€\\n']"
139
- ]
140
- },
141
- "execution_count": 6,
142
- "metadata": {},
143
- "output_type": "execute_result"
144
- }
145
- ],
146
- "source": [
147
- "parts"
148
- ]
149
- },
150
- {
151
- "cell_type": "code",
152
- "execution_count": 7,
153
- "id": "09768d88-b7a6-4ef6-bd3d-e58f23f8e82b",
154
- "metadata": {},
155
- "outputs": [
156
- {
157
- "data": {
158
- "text/plain": [
159
- "'OO ํ•™์ƒ์€ ์•„๋ž˜์˜ ์„ธ ์ „๊ณต ๋ถ„์•ผ(์‹ฌ๋ฆฌ, ๊ต์œก, ์‚ฌํšŒ๋ณต์ง€)์— ๋Œ€ํ•ด ํฅ๋ฏธ ์ˆ˜์ค€์ด ๋†’์Šต๋‹ˆ๋‹ค.\\n๊ฐ ์ „๊ณต์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ๊ณ ๋“ฑํ•™์ƒ ์ƒํ™œ๊ธฐ๋ก๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”:\\n\\n1. ์‹ฌ๋ฆฌ\\n์ „๊ณต์„ค๋ช…: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ๊ณต๊ฐ ๋Šฅ๋ ฅ, ๋ถ„์„๋ ฅ, ๊ด€์ฐฐ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ์ธ๊ฐ„ ํ–‰๋™, ๊ฐ์ •, ์ธ์ง€ ๊ธฐ๋Šฅ\\n๊ด€๋ จ์ง„๋กœ: ์ž„์ƒ์‹ฌ๋ฆฌ์‚ฌ, ์ƒ๋‹ด์‚ฌ, ์กฐ์ง์‹ฌ๋ฆฌ์ „๋ฌธ๊ฐ€, ์—ฐ๊ตฌ์›, ๊ต์ˆ˜\\n\\n2. ๊ต์œก\\n์ „๊ณต์„ค๋ช…: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•๊ณผ ๊ต์œก ์ œ๋„๋ฅผ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ์†Œํ†ต ๋Šฅ๋ ฅ, ์ธ๋‚ด์‹ฌ, ๊ด€์ฐฐ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ๊ต์œก๊ณผ์ •, ์•„๋™ ๋ฐœ๋‹ฌ, ๊ต์ˆ˜ ํ•™์Šต ๋ฐฉ๋ฒ•\\n๊ด€๋ จ์ง„๋กœ: ๊ต์‚ฌ, ๊ต์œกํ–‰์ •๊ฐ€, ๊ต์œก์—ฐ๊ตฌ์›, ๊ต์ˆ˜, ๊ต์œก์ปจ์„คํ„ดํŠธ\\n\\n3. ์‚ฌํšŒ๋ณต์ง€\\n์ „๊ณต์„ค๋ช…: ์‚ฌํšŒ๋ณต์ง€๋Š” ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ๋ณต์ง€์™€ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค.\\n์š”๊ตฌ์—ญ๋Ÿ‰: ๊ณต๊ฐ ๋Šฅ๋ ฅ, ๋Œ€์ธ๊ด€๊ณ„๋Šฅ๋ ฅ, ๋ฌธ์ œ ํ•ด๊ฒฐ๋ ฅ\\n์ „๊ณต๊ด€์‹ฌ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›, ๋ณต์ง€ ์ •์ฑ…, ์ธ๊ฐ„ ์กด์—„์„ฑ\\n๊ด€๋ จ์ง„๋กœ: ์‚ฌํšŒ๋ณต์ง€์‚ฌ, ์ฒญ์†Œ๋…„์ง€๋„์‚ฌ, ๋ณต์ง€ํ–‰์ •๊ฐ€, ๊ฐ€์กฑ์ƒ๋‹ด์‚ฌ, ๋‹ค๋ฌธํ™”์ „๋ฌธ๊ฐ€\\n\\n'"
160
- ]
161
- },
162
- "execution_count": 7,
163
- "metadata": {},
164
- "output_type": "execute_result"
165
- }
166
- ],
167
- "source": [
168
- "prompt\n",
169
- "# ๋„ˆ๋ฌด ๊ธธ๊ฒŒ๋‚˜์™€์„œ ํ•™์Šต์‹œํ‚ฌ๋•Œ ๋ถˆ์•ˆํ•จ..."
170
- ]
171
- },
172
- {
173
- "cell_type": "code",
174
- "execution_count": 17,
175
- "id": "b178159f-cf48-4989-be66-85af3e7ec510",
176
- "metadata": {},
177
- "outputs": [],
178
- "source": [
179
- "# ์„ ํ˜ธ ์ „๊ณต 3๊ฐœ์˜ ๊ฐ„๋žตํ•œ ์ •๋ณด๋งŒ ์ถ”์ถœํ•ด ๋‚˜์˜ค๋Š” ํ”„๋กฌํ”„ํŠธ๋กœ ์ˆ˜์ •\n",
180
- "file_path = \"dataset/kcmii_major_rag_summarized.csv\"\n",
181
- "df = pd.read_csv(file_path)\n",
182
- "\n",
183
- "import pandas as pd\n",
184
- "\n",
185
- "def make_major_prompt(df, majors: list) -> str:\n",
186
- " parts = []\n",
187
- " for i, major in enumerate(majors, 1):\n",
188
- " row = df[df['์ „๊ณต๋ช…'] == major]\n",
189
- " if row.empty:\n",
190
- " continue\n",
191
- " summary = row.iloc[0]['์š”์•ฝ']\n",
192
- " parts.append(f\"{i}. {major}: {summary}\")\n",
193
- "\n",
194
- " majors_str = \", \".join(majors)\n",
195
- " prompt = f\"\"\"OO ํ•™์ƒ์€ ์•„๋ž˜์˜ ์„ธ ์ „๊ณต ๋ถ„์•ผ({majors_str})์— ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.\n",
196
- "์ด ์ „๊ณต๋“ค์— ๋Œ€ํ•œ ์š”์•ฝ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ, ํ•™์ƒ์˜ ํ™œ๋™ ์†์—์„œ ๋“œ๋Ÿฌ๋‚œ ๊ด€์‹ฌ๊ณผ ์—ญ๋Ÿ‰ ๋˜๋Š” ์œตํ•ฉ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ณ ๋“ฑํ•™์ƒ ์ƒํ™œ๊ธฐ๋ก๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์„œ์ˆ ํ˜•์œผ๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”:\n",
197
- "\n",
198
- "{chr(10).join(parts)}\n",
199
- "\"\"\"\n",
200
- " return prompt"
201
- ]
202
- },
203
- {
204
- "cell_type": "code",
205
- "execution_count": 18,
206
- "id": "6c24ded3-2a88-47ad-89c3-40b5e7c0dc01",
207
- "metadata": {},
208
- "outputs": [
209
- {
210
- "name": "stdout",
211
- "output_type": "stream",
212
- "text": [
213
- "OO ํ•™์ƒ์€ ์•„๋ž˜์˜ ์„ธ ์ „๊ณต ๋ถ„์•ผ(์‹ฌ๋ฆฌ, ๊ต์œก, ์‚ฌํšŒ๋ณต์ง€)์— ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.\n",
214
- "์ด ์ „๊ณต๋“ค์— ๋Œ€ํ•œ ์š”์•ฝ ์ •๋ณด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ, ํ•™์ƒ์˜ ํ™œ๋™ ์†์—์„œ ๋“œ๋Ÿฌ๋‚œ ๊ด€์‹ฌ๊ณผ ์—ญ๋Ÿ‰ ๋˜๋Š” ์œตํ•ฉ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ณ ๋“ฑํ•™์ƒ ์ƒํ™œ๊ธฐ๋ก๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์„œ์ˆ ํ˜•์œผ๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”:\n",
215
- "\n",
216
- "1. ์‹ฌ๋ฆฌ: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๊ณต๊ฐ ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์ธ๊ฐ„ ํ–‰๋™)\n",
217
- "2. ๊ต์œก: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•๊ณผ ๊ต์œก ์ œ๋„๋ฅผ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ์†Œํ†ต ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ๊ต์œก๊ณผ์ •)\n",
218
- "3. ์‚ฌํšŒ๋ณต์ง€: ์‚ฌํšŒ๋ณต์ง€๋Š” ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ๋ณต์ง€์™€ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๊ณต๊ฐ ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›)\n",
219
- "\n"
220
- ]
221
- }
222
- ],
223
- "source": [
224
- "example_majors = [\"์‹ฌ๋ฆฌ\", \"๊ต์œก\", \"์‚ฌํšŒ๋ณต์ง€\"]\n",
225
- "prompt = make_major_prompt(df, example_majors)\n",
226
- "print(prompt)"
227
- ]
228
- },
229
- {
230
- "cell_type": "markdown",
231
- "id": "6467b751-3228-4948-9042-de65f1a3f118",
232
- "metadata": {},
233
- "source": [
234
- "### 50๊ฐœ ์ „๊ณต์€ ๋„ˆ๋ฌด ๋งŽ์œผ๋‹ˆ ๊ณตํ†ต์ ์œผ๋กœ ๋ฌถ์ด๋Š” ์ „๊ณต(์œ ์‚ฌ๋ถ„์•ผ) ์ผ€์ด์Šค 10๊ฐœ๋งŒ ๋ถ„๋ฆฌํ•ด ํ•™์Šต๋ฐ์ดํ„ฐ ์ƒ์„ฑ\n",
235
- "### LoRA ๊ฒฝ๋žต ํ•™์Šต์œผ๋กœ ๋จผ์ € ํ…Œ์ŠคํŠธ"
236
- ]
237
- },
238
- {
239
- "cell_type": "code",
240
- "execution_count": 24,
241
- "id": "bc8b0f50-c6e4-49fe-98a4-3ee8d8ef4b83",
242
- "metadata": {},
243
- "outputs": [
244
- {
245
- "name": "stdout",
246
- "output_type": "stream",
247
- "text": [
248
- "์‚ฌ์šฉ ์ค‘์ธ ๋””๋ฐ”์ด์Šค: mps\n"
249
- ]
250
- },
251
- {
252
- "name": "stdin",
253
- "output_type": "stream",
254
- "text": [
255
- "The repository for LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct contains custom code which must be executed to correctly load the model. You can inspect the repository content at https://hf.co/LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct.\n",
256
- "You can avoid this prompt in future by passing the argument `trust_remote_code=True`.\n",
257
- "\n",
258
- "Do you wish to run the custom code? [y/N] y\n"
259
- ]
260
- },
261
- {
262
- "name": "stderr",
263
- "output_type": "stream",
264
- "text": [
265
- "A new version of the following files was downloaded from https://huggingface.co/LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct:\n",
266
- "- configuration_exaone.py\n",
267
- ". Make sure to double-check they do not contain any added malicious code. To avoid downloading new versions of the code file, you can pin a revision.\n"
268
- ]
269
- },
270
- {
271
- "name": "stdin",
272
- "output_type": "stream",
273
- "text": [
274
- "The repository for LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct contains custom code which must be executed to correctly load the model. You can inspect the repository content at https://hf.co/LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct.\n",
275
- "You can avoid this prompt in future by passing the argument `trust_remote_code=True`.\n",
276
- "\n",
277
- "Do you wish to run the custom code? [y/N] y\n"
278
- ]
279
- },
280
- {
281
- "name": "stderr",
282
- "output_type": "stream",
283
- "text": [
284
- "A new version of the following files was downloaded from https://huggingface.co/LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct:\n",
285
- "- modeling_exaone.py\n",
286
- ". Make sure to double-check they do not contain any added malicious code. To avoid downloading new versions of the code file, you can pin a revision.\n",
287
- "Fetching 2 files: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2/2 [02:39<00:00, 79.72s/it] \n",
288
- "Loading checkpoint shards: 100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 2/2 [00:00<00:00, 37.62it/s]\n"
289
- ]
290
- },
291
- {
292
- "name": "stdout",
293
- "output_type": "stream",
294
- "text": [
295
- "\n",
296
- "๐Ÿ“„ ์ƒ์„ฑ๋œ ๋ฌธ์žฅ:\n",
297
- "\n",
298
- "### ๋ช…๋ น:\n",
299
- "๋‹ค์Œ ์ „๊ณต ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•™์ƒ์˜ ํฅ๋ฏธ์™€ ํ™œ๋™์„ ๋ฐ˜์˜ํ•œ ์ƒ๊ธฐ๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.\n",
300
- "\n",
301
- "### ์ž…๋ ฅ:\n",
302
- "1. ์‹ฌ๋ฆฌ: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๊ณต๊ฐ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ๊ฐ์ •)\n",
303
- "2. ๊ต์œก: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•์„ ํƒ์ƒ‰ํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ์†Œํ†ต๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์•„๋™ ๋ฐœ๋‹ฌ)\n",
304
- "3. ์‚ฌํšŒ๋ณต์ง€: ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๋Œ€์ธ๊ด€๊ณ„๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›)\n",
305
- "\n",
306
- "### ์ถœ๋ ฅ:\n",
307
- "\"์‹ฌ๋ฆฌํ•™์˜ ๋”ฐ๋œปํ•จ ์†์—์„œ ๊นŠ์ด ์žˆ๊ฒŒ ๊ฐ์ •์— ๊ท€ ๊ธฐ์šธ์ด๋ฉฐ, ๊ต์œก ํ˜„์žฅ์—์„œ๋Š” ์•„์ด๋“ค์˜ ์„ฑ์žฅ์„ ์ด๋„๋Š” ์ง€ํ˜œ๋กœ์šด ๋ฉ˜ํ† ๊ฐ€ ๋˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฌํšŒ์  ์•ฝ์ž๋“ค์—๊ฒŒ ํฌ๋ง์˜ ๋น›์„ ์ „ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๋Š” ๋”ฐ๋œปํ•œ ์‚ฌํšŒ๋ณต์ง€์‚ฌ๊ฐ€ ๋˜์–ด, ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์กด์ค‘๋ฐ›๊ณ  ํ–‰๋ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.\"\n"
308
- ]
309
- }
310
- ],
311
- "source": [
312
- "# ํ—ˆ๊น…ํŽ˜์ด์Šค์— ์žˆ๋Š” ๋ชจ๋ธ์„ ์ž„ํฌํŠธ ๋ฐ ํ† ํฌ๋‚˜์ด์ € ๋กœ๋”ฉ์šฉ ๋„๊ตฌ ๋ถˆ๋Ÿฌ์„œ ํ…Œ์ŠคํŠธ\n",
313
- "import torch\n",
314
- "from transformers import AutoTokenizer, AutoModelForCausalLM\n",
315
- "\n",
316
- "device = torch.device(\"mps\" if torch.backends.mps.is_available() else \"cpu\")\n",
317
- "print(\"์‚ฌ์šฉ ์ค‘์ธ ๋””๋ฐ”์ด์Šค:\", device)\n",
318
- "\n",
319
- "# ๋ชจ๋ธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ\n",
320
- "model_name = \"LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct\"\n",
321
- "tokenizer = AutoTokenizer.from_pretrained(model_name)\n",
322
- "model = AutoModelForCausalLM.from_pretrained(model_name).to(device)\n",
323
- "\n",
324
- "# ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ํ…์ŠคํŠธ ๋˜๋Š” ์ž…๋ ฅ๊ฐ’\n",
325
- "prompt = \"\"\"### ๋ช…๋ น:\n",
326
- "๋‹ค์Œ ์ „๊ณต ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•™์ƒ์˜ ํฅ๋ฏธ์™€ ํ™œ๋™์„ ๋ฐ˜์˜ํ•œ ์ƒ๊ธฐ๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.\n",
327
- "\n",
328
- "### ์ž…๋ ฅ:\n",
329
- "1. ์‹ฌ๋ฆฌ: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๊ณต๊ฐ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ๊ฐ์ •)\n",
330
- "2. ๊ต์œก: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•์„ ํƒ์ƒ‰ํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ์†Œํ†ต๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์•„๋™ ๋ฐœ๋‹ฌ)\n",
331
- "3. ์‚ฌํšŒ๋ณต๏ฟฝ๏ฟฝ: ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๋Œ€์ธ๊ด€๊ณ„๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›)\n",
332
- "\n",
333
- "### ์ถœ๋ ฅ:\n",
334
- "\"\"\"\n",
335
- "\n",
336
- "# ์ž…๋ ฅ๊ฐ’์„ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ํ†ตํ•ด ์ˆซ์ž ํ† ํฐ์œผ๋กœ ๋ณ€ํ™˜\n",
337
- "# return_tensors=\"pt\" ์ž…๋ ฅ๊ฐ’์„ ์ˆซ์ž ํ† ํฐํ™”ํ•˜์—ฌ ํŒŒ์ดํ† ์ง€ ํ…์„œ ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด\n",
338
- "inputs = tokenizer(prompt, return_tensors=\"pt\").to(device)\n",
339
- "\n",
340
- "# gpt๋Š” ์ž…๋ ฅ ์ž์ฒด๊ฐ€ ํ•ญ์ƒ ํ•˜๋‚˜์˜ ์—ฐ์†๋œ ๋ฌธ์žฅ ์Šคํ€€์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์žฅ ๊ตฌ๋ถ„์ด ํ•„์š”์—†์Œ\n",
341
- "if 'token_type_ids' in inputs:\n",
342
- " inputs.pop('token_type_ids')\n",
343
- "\n",
344
- "# torch.no_grad() ์ถ”๋ก  ์‹œ์—๋Š” ๊ธฐ์šธ๊ธฐ ๊ฒŒ์‚ฐํ•˜์ง€ ์•Š๊ฒŒํ•˜์—ฌ ์†๋„/๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ -> ์™œ ์ด๋ ‡๊ฒŒ ํ•ด์•ผํ•˜๋‚˜?\n",
345
- "with torch.no_grad():\n",
346
- " # model.generate() ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋Œ€ํ•ด ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•จ\n",
347
- " ## ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ์ดํ•ด๋Š” ๋…ธ์…˜ ์ฐธ๊ณ \n",
348
- " outputs = model.generate(\n",
349
- " **inputs,\n",
350
- " # ์ตœ๋Œ€ 80๊ฐœ์˜ ์ƒˆ๋กœ์šด ํ† ํฐ ์ƒ์„ฑ\n",
351
- " ## ๋ชจ๋ธ์ด ์ƒˆ๋กœ ์ƒ์„ฑํ•  ์ตœ๋Œ€ ํ† ํฐ์˜ ๊ฐœ์ˆ˜\n",
352
- " max_new_tokens=150,\n",
353
- " # ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ์ƒ˜ํ”Œ๋ง ํ™œ์„ฑํ™”\n",
354
- " ## ๋ชจ๋ธ์ด ๋‹ค์Œ ํ† ํฐ์„ ์„ ํƒํ•  ๋•Œ ๊ฐ€์žฅ ํ™•๋ฅ  ๋†’์€ ๋‹จ์–ด๋ฅผ ๋ฌด์กฐ๊ฑด ๊ณ ๋ฅด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ™•๋ฅ  ๋ถ„ํฌ์—์„œ ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜ ์ƒ˜ํ”Œ๋ง\n",
355
- " do_sample=True,\n",
356
- " # ํ™•๋ฅ  ๋†’์€ ์ƒ์œ„ 50๊ฐœ ์ค‘์—์„œ ์„ ํƒ\n",
357
- " ## ์ƒ˜ํ”Œ๋งํ•  ๋•Œ ์ƒ์œ„ k๊ฐœ์˜ ๋‹จ์–ด๋งŒ์œผ๋กœ ํ›„๋ณด๋ฅผ ์ œํ•œ\n",
358
- " top_k=50,\n",
359
- " # ๋ˆ„์  ํ™•๋ฅ  95%๊นŒ์ง€ ํฌํ•จํ•œ ํ›„๋ณด๊ตฐ์—์„œ ์„ ํƒ\n",
360
- " ## ์ƒ์œ„ ๋‹จ์œ„๋“ค์˜ ๋ˆ„์ ํ™”๋ฅ ์ด 95% ๋„˜์„ ๋•Œ๊นŒ์ง€ ํ›„๋ณด๊ตฐ์„ ๋ˆ„์ ์‹œํ‚ด, ๊ทธ ์•ˆ์—์„œ ์ƒ˜ํ”Œ๋ง\n",
361
- " top_p=0.95,\n",
362
- " # ์ฐฝ์˜์„ฑ ์กฐ์ ˆ ๊ฐ’\n",
363
- " temperature=0.8,\n",
364
- " repetition_penalty=1.1\n",
365
- " )\n",
366
- "\n",
367
- "# ํ† ํฐ์„ ํ…์ŠคํŠธ๋กœ ๋””์ฝ”๋”ฉ\n",
368
- "# ๋ชจ๋ธ์ด ์ƒ์„ฑํ•œ ํ† ํฐ ์‹œํ€€์Šค ์ค‘ ์ฒซ๋ฒˆ ์งธ ๊ฒฐ๊ณผ๋ฅผ\n",
369
- "# skip_special_tokens=True ํŠน์ˆ˜ํ† ํฐ ์ œ๊ฑฐ\n",
370
- "result = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
371
- "print(\"\\n๐Ÿ“„ ์ƒ์„ฑ๋œ ๋ฌธ์žฅ:\\n\")\n",
372
- "print(result)"
373
- ]
374
- },
375
- {
376
- "cell_type": "code",
377
- "execution_count": 25,
378
- "id": "382ea67d-298b-4d78-b16c-9f66f3052e21",
379
- "metadata": {},
380
- "outputs": [
381
- {
382
- "name": "stdout",
383
- "output_type": "stream",
384
- "text": [
385
- "\n",
386
- "๐Ÿ“„ ์ƒ์„ฑ๋œ ๋ฌธ์žฅ:\n",
387
- "\n",
388
- "### ๋ช…๋ น:\n",
389
- "๋‹ค์Œ ์ „๊ณต ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•™์ƒ์˜ ํฅ๋ฏธ์™€ ํ™œ๋™์„ ๋ฐ˜์˜ํ•œ ์ƒ๊ธฐ๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.\n",
390
- "\n",
391
- "### ์ž…๋ ฅ:\n",
392
- "1. ์‹ฌ๋ฆฌ: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๊ณต๊ฐ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ๊ฐ์ •)\n",
393
- "2. ๊ต์œก: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•์„ ํƒ์ƒ‰ํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ์†Œํ†ต๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์•„๋™ ๋ฐœ๋‹ฌ)\n",
394
- "3. ์‚ฌํšŒ๋ณต์ง€: ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๋Œ€์ธ๊ด€๊ณ„๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›)\n",
395
- "\n",
396
- "### ์ถœ๋ ฅ:\n",
397
- "\"์‹ฌ๋ฆฌํ•™์„ ํ†ตํ•ด ์„ฌ์„ธํ•œ ๊ฐ์ •์˜ ๊นŠ์ด๋ฅผ ๋А๋ผ๊ณ , ๊ต์œก์€ ์•„์ด๋“ค์˜ ์ž ์žฌ๋ ฅ์„ ๊นจ์šฐ๋ฉฐ ์„ฑ์žฅ์‹œํ‚ค๋Š” ๋ฐ ํฐ ๊ธฐ์จ์„ ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ์‚ฌํšŒ๋ณต์ง€์—์„œ๋Š” ๋ณต์žกํ•œ ์‚ฌํšŒ ๋ฌธ์ œ ์†์—์„œ๋„ ๋”ฐ๋œปํ•œ ์†๊ธธ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๋Š” ์ด๋“ค์„ ๋•๋Š” ๊ฒƒ์ด ํฐ ๋ณด๋žŒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.\"\n"
398
- ]
399
- }
400
- ],
401
- "source": [
402
- "# ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ํ…์ŠคํŠธ ๋˜๋Š” ์ž…๋ ฅ๊ฐ’\n",
403
- "prompt = \"\"\"### ๋ช…๋ น:\n",
404
- "๋‹ค์Œ ์ „๊ณต ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•™์ƒ์˜ ํฅ๋ฏธ์™€ ํ™œ๋™์„ ๋ฐ˜์˜ํ•œ ์ƒ๊ธฐ๋ถ€ ๋ฌธ๊ตฌ๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.\n",
405
- "\n",
406
- "### ์ž…๋ ฅ:\n",
407
- "1. ์‹ฌ๋ฆฌ: ์ธ๊ฐ„์˜ ํ–‰๋™๊ณผ ์ •์‹  ๊ณผ์ •์„ ๊ณผํ•™์ ์œผ๋กœ ํƒ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๊ณต๊ฐ๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ๊ฐ์ •)\n",
408
- "2. ๊ต์œก: ์ธ๊ฐ„์˜ ํ•™์Šต๊ณผ ๋ฐœ๋‹ฌ์„ ์—ฐ๊ตฌํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๊ต์ˆ˜๋ฒ•์„ ํƒ์ƒ‰ํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ์†Œํ†ต๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์•„๋™ ๋ฐœ๋‹ฌ)\n",
409
- "3. ์‚ฌํšŒ๋ณต์ง€: ๋‹ค์–‘ํ•œ ์‚ฌํšŒ ๊ตฌ์„ฑ์›์˜ ์‚ถ์˜ ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ œ๋„์™€ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•˜๋Š” ํ•™๋ฌธ์ด๋‹ค. (์ฃผ์š” ์—ญ๋Ÿ‰: ๋Œ€์ธ๊ด€๊ณ„๋Šฅ๋ ฅ, ๊ด€์‹ฌ ๋ถ„์•ผ: ์‚ฌํšŒ์  ์•ฝ์ž ์ง€์›)\n",
410
- "\n",
411
- "### ์ถœ๋ ฅ:\n",
412
- "\"\"\"\n",
413
- "\n",
414
- "# ์ž…๋ ฅ๊ฐ’์„ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ํ†ตํ•ด ์ˆซ์ž ํ† ํฐ์œผ๋กœ ๋ณ€ํ™˜\n",
415
- "# return_tensors=\"pt\" ์ž…๋ ฅ๊ฐ’์„ ์ˆซ์ž ํ† ํฐํ™”ํ•˜์—ฌ ํŒŒ์ดํ† ์ง€ ํ…์„œ ํ˜•ํƒœ๋กœ ๋ฆฌํ„ด\n",
416
- "inputs = tokenizer(prompt, return_tensors=\"pt\").to(device)\n",
417
- "\n",
418
- "# gpt๋Š” ์ž…๋ ฅ ์ž์ฒด๊ฐ€ ํ•ญ์ƒ ํ•˜๋‚˜์˜ ์—ฐ์†๋œ ๋ฌธ์žฅ ์Šคํ€€์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์žฅ ๊ตฌ๋ถ„์ด ํ•„์š”๏ฟฝ๏ฟฝ์Œ\n",
419
- "if 'token_type_ids' in inputs:\n",
420
- " inputs.pop('token_type_ids')\n",
421
- "\n",
422
- "# torch.no_grad() ์ถ”๋ก  ์‹œ์—๋Š” ๊ธฐ์šธ๊ธฐ ๊ฒŒ์‚ฐํ•˜์ง€ ์•Š๊ฒŒํ•˜์—ฌ ์†๋„/๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ -> ์™œ ์ด๋ ‡๊ฒŒ ํ•ด์•ผํ•˜๋‚˜?\n",
423
- "with torch.no_grad():\n",
424
- " # model.generate() ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋Œ€ํ•ด ํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•จ\n",
425
- " ## ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ์ดํ•ด๋Š” ๋…ธ์…˜ ์ฐธ๊ณ \n",
426
- " outputs = model.generate(\n",
427
- " **inputs,\n",
428
- " # ์ตœ๋Œ€ 80๊ฐœ์˜ ์ƒˆ๋กœ์šด ํ† ํฐ ์ƒ์„ฑ\n",
429
- " ## ๋ชจ๋ธ์ด ์ƒˆ๋กœ ์ƒ์„ฑํ•  ์ตœ๋Œ€ ํ† ํฐ์˜ ๊ฐœ์ˆ˜\n",
430
- " max_new_tokens=150,\n",
431
- " # ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ์ƒ˜ํ”Œ๋ง ํ™œ์„ฑํ™”\n",
432
- " ## ๋ชจ๋ธ์ด ๋‹ค์Œ ํ† ํฐ์„ ์„ ํƒํ•  ๋•Œ ๊ฐ€์žฅ ํ™•๋ฅ  ๋†’์€ ๋‹จ์–ด๋ฅผ ๋ฌด์กฐ๊ฑด ๊ณ ๋ฅด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ™•๋ฅ  ๋ถ„ํฌ์—์„œ ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜ ์ƒ˜ํ”Œ๋ง\n",
433
- " do_sample=True,\n",
434
- " # ํ™•๋ฅ  ๋†’์€ ์ƒ์œ„ 50๊ฐœ ์ค‘์—์„œ ์„ ํƒ\n",
435
- " ## ์ƒ˜ํ”Œ๋งํ•  ๋•Œ ์ƒ์œ„ k๊ฐœ์˜ ๋‹จ์–ด๋งŒ์œผ๋กœ ํ›„๋ณด๋ฅผ ์ œํ•œ\n",
436
- " top_k=50,\n",
437
- " # ๋ˆ„์  ํ™•๋ฅ  95%๊นŒ์ง€ ํฌํ•จํ•œ ํ›„๋ณด๊ตฐ์—์„œ ์„ ํƒ\n",
438
- " ## ์ƒ์œ„ ๋‹จ์œ„๋“ค์˜ ๋ˆ„์ ํ™”๋ฅ ์ด 95% ๋„˜์„ ๋•Œ๊นŒ์ง€ ํ›„๋ณด๊ตฐ์„ ๋ˆ„์ ์‹œํ‚ด, ๊ทธ ์•ˆ์—์„œ ์ƒ˜ํ”Œ๋ง\n",
439
- " top_p=0.95,\n",
440
- " # ์ฐฝ์˜์„ฑ ์กฐ์ ˆ ๊ฐ’\n",
441
- " temperature=0.8,\n",
442
- " repetition_penalty=1.1\n",
443
- " )\n",
444
- "\n",
445
- "# ํ† ํฐ์„ ํ…์ŠคํŠธ๋กœ ๋””์ฝ”๋”ฉ\n",
446
- "# ๋ชจ๋ธ์ด ์ƒ์„ฑํ•œ ํ† ํฐ ์‹œํ€€์Šค ์ค‘ ์ฒซ๋ฒˆ ์งธ ๊ฒฐ๊ณผ๋ฅผ\n",
447
- "# skip_special_tokens=True ํŠน์ˆ˜ํ† ํฐ ์ œ๊ฑฐ\n",
448
- "result = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
449
- "print(\"\\n๐Ÿ“„ ์ƒ์„ฑ๋œ ๋ฌธ์žฅ:\\n\")\n",
450
- "print(result)"
451
- ]
452
- },
453
- {
454
- "cell_type": "code",
455
- "execution_count": null,
456
- "id": "7f17e54f-824f-4c2c-9318-bfcf92c03315",
457
- "metadata": {},
458
- "outputs": [],
459
- "source": []
460
- }
461
- ],
462
- "metadata": {
463
- "kernelspec": {
464
- "display_name": "Python [conda env:base] *",
465
- "language": "python",
466
- "name": "conda-base-py"
467
- },
468
- "language_info": {
469
- "codemirror_mode": {
470
- "name": "ipython",
471
- "version": 3
472
- },
473
- "file_extension": ".py",
474
- "mimetype": "text/x-python",
475
- "name": "python",
476
- "nbconvert_exporter": "python",
477
- "pygments_lexer": "ipython3",
478
- "version": "3.12.7"
479
- }
480
- },
481
- "nbformat": 4,
482
- "nbformat_minor": 5
483
- }