๐ค 2โ1๋จ๊ณ : ํค์๋ ์ถ์ถ ๋ชจ๋ธ ์ถ๋ก ์ฑ๋ฅ ์ต์ ํ - 100-hours-a-week/7-team-ddb-wiki GitHub Wiki
ํค์๋ ์ถ์ถ ๊ธฐ๋ฅ์ ์ํด 6๊ฐ์ ์คํ์์ค LLM๊ณผ Gemini API๋ฅผ ๋น๊ต ํ
์คํธํจ
ํค์๋ ์ถ์ถ์ ์ฅ์ ์ ๋ณด ํค์๋ ์ถ์ถ, ์ฌ์ฉ์ ์
๋ ฅ ํค์๋ ์ถ์ถ ๋ ๊ฐ์ง ์ฉ๋๋ก ์ฌ์ฉํจ
ํ
์คํธ ํ๊ฒฝ์ ๋์ผํ GPU ํ๊ฒฝ(Colab Pro + T4 ๊ธฐ์ค)์์ ์ฉ๋ ๋ณ ํ
์คํธ ์
๋ ฅ์ผ๋ก ๋ชจ๋ธ๋ณ ์ง์ฐ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ์๋ต ํ์ง์ ์ธก์ ํจ
input_info = {
"placeName": "์๋๊ฐ๊ตฌํญ",
"category": "'์์์ > ํ์ > ํด๋ฌผ,์์ > ํ",
"originKey": "์์ฝ๊ฐ๋ฅ, ๋ฐฐ๋ฌ๊ฐ๋ฅ, ํฌ์ฅ๊ฐ๋ฅ, ์์ดํ์ด, ์ฃผ์ฐจ๊ฐ๋ฅ, ํ์์ฅ์",
"menus": [
{"name": "์ฐธ๊ฐ์๋ฏธ", "price": "75,000์"},
{"name": "ํต๋ฌธ์ด", "price": "70,000์"},
...
],
"reviews": [
"ํด์ฐ๋ฌผ ์ ์ ํจ์ ์ ๋ง ๋ฏธ์ณค์ด์~ ๋ฐ๋ฐ์ฐฌ๋ ๋ง์ง๋ ์์ง๋ง...",
"๊ฐ์ฑ๋น ์ข์ต๋๋ค ์์ฃผ ๊ฐ ์์ ์
๋๋ค",
...
]
}
keyword_list = ['์์ฝ ๊ฐ๋ฅ', '์ฃผ์ฐจ ๊ฐ๋ฅ', 'ํ์ ์ฅ์', '๋ฐ์ดํธ ์ฅ์', '๊ฐ์กฑ ๋ชจ์', '์๊ณ ๊ธฐ', 'ํด์ฐ๋ฌผ', '์ผ์', 'ํ์', '์์', '๋ถ์๊ธฐ ์ข์', '์กฐ์ฉํจ']
๋น์ ์ ์ฅ์ ๊ฒ์ ํค์๋ ์ถ์ถ AI์
๋๋ค.
์ฅ์ ๊ฒ์์ ์ํ ์ฅ์ ์ ๋ณด์์ ํด๋น ์ฅ์์ ํน์ง์ ๋ํ๋ด๋ ํค์๋๋ฅผ ์ถ์ถํ์ธ์.
**์
๋ ฅ ๋ฐ์ดํฐ ์ค๋ช
**
input_info : ์ฅ์์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ json
keyword_list : AI๊ฐ ๋ฐํํ ์ ์๋ ํค์๋ ๋ฆฌ์คํธ
**์ถ๋ ฅ ๋ฐ์ดํฐ ์ค๋ช
**
place_keyword : AI๊ฐ input_info ๊ธฐ๋ฐ์ผ๋ก keyword_list์์ ์ถ์ถํ ํค์๋ ๋ชฉ๋ก
place_introduce : AI๊ฐ input_info๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ ํด๋น ์ฅ์๋ฅผ ์ถ์ฒํ๋ ํ ์ค ์๊ฐ๊ธ
**์ ์์ฌํญ**
place_keyword ์ฅ์์ ์ ๋ณด๋ค์ ์ ๋ํ๋ด์ผ ํฉ๋๋ค.
keyword_list์ ์กด์ฌํ์ง ์๋ ํค์๋๋ ๋ฐํํ๋ฉด ์๋ฉ๋๋ค.
์ถ๋ ฅ ํ์์ ๋ฐ๋์ ์ง์ผ์ ์๋ตํด์ผ ํฉ๋๋ค.
**์
๋ ฅ ๋ฐ์ดํฐ**
input_info : {input_info}
keyword_list : {keyword_list}
**์ถ๋ ฅ ํ์**
{{
user_keyword: ['ํค์๋1', 'ํค์๋2', 'ํค์๋3', ...],
place_introduce: 'ํ ์ค ์๊ฐ๊ธ'
}}
์ฅ์ ์ ๋ณด ํค์๋ ์ถ์ถ์ DB ๊ตฌ์ถ ๊ณผ์ ์์ ์ฌ์ฉ๋๊ธฐ์ GPU ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํจ
๋ชจ๋ธ๋ช | ์๋ต ์๊ฐ (์ด) | GPU ๋ฉ๋ชจ๋ฆฌ (MB) | CPU ๋ฉ๋ชจ๋ฆฌ (MB) |
---|---|---|---|
tinyllama-1.1b | 13.185 | 2212.7 | 1.05 |
polyglot-ko-1.3b | 10.314 | 2950.21 | 0.03 |
stablelm-2-1_6b-chat | 6.774 | 3560.68 | 0.1 |
gemma-2b-it | 2.541 | 5788.27 | 0.34 |
phi-2 | 1.467 | 6128.13 | 0.26 |
gpt-neo-2.7B | 2.086 | 6524.11 | 2.44 |
gemini-2.0-flash-lite | 1.394 | - | - |
๋ชจ๋ธ๋ช | ์๋ต ๋ด์ฉ | ์๋ต ํ์ง | ์๋ต ํ์ ์ ์ง ์ฌ๋ถ |
---|---|---|---|
tinyllama-1.1b | - | ์ ์ ์๋ต X, ์์ฐ์ด ์๋ต X | โ |
polyglot-ko-1.3b | keyword_list : ['์์ฝ ๊ฐ๋ฅ', '์ฃผ์ฐจ ๊ฐ๋ฅ', 'ํ์ ์ฅ์', '๋ฐ์ดํธ ์ฅ์', '๊ฐ์กฑ ๋ชจ์', '์๊ณ ๊ธฐ', 'ํด์ฐ๋ฌผ', '์ผ์', 'ํ์', '์์', '๋ถ์๊ธฐ ์ข์', '์กฐ์ฉํจ']}}}.. | ํค์๋ ๋ฆฌ์คํธ ๊ทธ๋๋ก ์ถ๋ ฅ, ํ ์ค ์๊ฐ๊ธ X, ๋ซ๋ ์ค๊ดํธ๊ฐ max_token๊น์ง ์ถ๋ ฅ๋จ | โ |
stablelm-2-1_6b-chat | place_keyword : ['์๋๊ฐ๊ตฌํญ', '์์ฝ๊ฐ๋ฅ', '์ฃผ์ฐจ๊ฐ๋ฅ', '๊ฐ์กฑ ๋ชจ์', '์๊ณ ๊ธฐ', 'ํด์ฐ๋ฌผ', '์ผ์', 'ํ์', '์์', '๋ค ๋๋ฌด ๋ง์์ด์', '์ข์๋ฐ...ใ ใ '], place_introduce : '์๋๊ฐ๊ตฌํญ์ ํ๊ตญ์ ์ฒ ํ์ ๊ณต์์ ์ํ ๊ฐ์ฑ๋น ์ข์ ๋์์ ๋๋ค. ์ฃผ๋ฌด๋ถ์ ์๋์ ๊ฐ์ด ์ฌ๋ฌ ๋ธ๋๋๋ฅผ ์ ๋ณํ์ฌ ์ฌ๋ฌ ๊ฐ์ง ๊ณ ๊ฐ๋ค๊ณผ ๋ค์ํ ์์์ ๋ง๋ค์ด ์ ๋ณํ๋ ๊ธฐํ๊ฐ ๋์ด ์์ต๋๋ค. ์ด ์ฅ์๋ 2015๋ ์ถ์๋ ์ธ๊ธฐ๊ฐ ๋์ ๊ณ ๊ฐ๋ค์ด ๋ง์ด ์ฐพ์๋ค์ด ์์ผ๋ฉฐ, ์ถ์ฒํด๋๋ฆด๊ฒ ์์ด ๋ ๋ค์ํ ๋ง์ ์๊ฐ์ ๋ง์ ๋ค๋ฉด ๋ค์ํ ๋ง์ ๋๋ฆฌ์ ์ํ์ ๋๋ค.' | ํค์๋ ๋ฆฌ์คํธ ๋ฐ์ X | |
gemma-2b-it | user_keyword: ['์์ฝ ๊ฐ๋ฅ', '์ฃผ์ฐจ ๊ฐ๋ฅ', 'ํ์ ์ฅ์'], place_introduce: '์๋๊ฐ๊ตฌํญ์ ์์์ ๊ณผ ํ์์ ์ด ํผ์ฌํด ์๋ ๊ณณ์ผ๋ก, ์์ฝ ๊ฐ๋ฅํ ์๋ฆฌ์ ์ฃผ์ฐจ๊ฐ ๊ฐ๋ฅํ ์๋ฆฌ๋ ์์ต๋๋ค.' | ํค์๋ ๋ฆฌ์คํธ ๋ฐ์, ํ ์ค ์๊ฐ๊ธ ๋ฌธ๋งฅ ์ฐ์ | โ |
phi-2 | **์ ๋ ฅ ๋ฐ์ดํฐ ์ค๋ช | ์ ์ ์๋ต X | โ |
gpt-neo-2.7B | ์ ์์ฌํญ`(keyword_ | ์ ์ ์๋ต X | โ |
gemini-2.0-flash-lite (API) | "user_keyword": ["์์ฝ ๊ฐ๋ฅ", "์ฃผ์ฐจ ๊ฐ๋ฅ", "ํ์ ์ฅ์", "ํด์ฐ๋ฌผ", "ํ์"], "place_introduce": "์ฑ์ฑํ ํด์ฐ๋ฌผ์ ๋ง๋ณผ ์ ์๋ ์๋ ๊ฐ๊ตฌํญ! ํ์ ์ฅ์๋ก๋ ์ข๊ณ , ์์ฝ๋ ๊ฐ๋ฅํฉ๋๋ค." | ์๋ต ํ์ง ๊ฐ์ฅ ์ฐ์ | โ |
gemini-2.0-flash-lite (API)์ ์๋ต ํ์ง์ด ๊ฐ์ฅ ์ข์์ผ๋ฉฐ, ๊ทธ ๋ค์์ผ๋ก gemma-2b-it ๋ชจ๋ธ์ ์๋ต ํ์ง์ด ์ข์์
์ฅ์ ์ ๋ณด ํค์๋ ์ถ์ถ ๊ธฐ๋ฅ์ ์ค์๊ฐ์ฑ์ ๊ฐ์ง ์๊ธฐ ๋๋ฌธ์, ํ๋ฆฌํฐ์ด์ ๋ถ๋น ์์ฒญ ์ ์ ํ ๋ด์์ Gemini API ์ฌ์ฉ ์์
input_query = "๋ด์ผ ์ ๋
์ ์์ฝ ๋๋ ํ์ ์ฅ์ ์์๋ด์ค, ํด์ฐ๋ฌผ ๋ฉ๋ด๋ก."
keyword_list = ['์์ฝ ๊ฐ๋ฅ', '์ฃผ์ฐจ ๊ฐ๋ฅ', 'ํ์ ์ฅ์', '๋ฐ์ดํธ ์ฅ์', '๊ฐ์กฑ ๋ชจ์', '์๊ณ ๊ธฐ', 'ํด์ฐ๋ฌผ', '์ผ์', 'ํ์', '์์', '๋ถ์๊ธฐ ์ข์', '์กฐ์ฉํจ']
๋น์ ์ ์ฅ์ ๊ฒ์ ํค์๋ ์ถ์ถ AI์
๋๋ค.
์ฅ์ ๊ฒ์์ ์ํ ์ฌ์ฉ์ ์ฟผ๋ฆฌ์์ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ๋ํ๋ด๋ ํค์๋๋ฅผ ์ถ์ถํ์ธ์.
**์
๋ ฅ ๋ฐ์ดํฐ ์ค๋ช
**
input_query : ์ฌ์ฉ์๊ฐ ์ฅ์๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด ๊ฒ์ํ ์
๋ ฅ์ด
keyword_list : AI๊ฐ ๋ฐํํ ์ ์๋ ํค์๋ ๋ฆฌ์คํธ
**์ถ๋ ฅ ๋ฐ์ดํฐ ์ค๋ช
**
user_keyword : AI๊ฐ input_query๋ฅผ ๊ธฐ๋ฐ์ผ๋ก keyword_list์์ ์ถ์ถํ ํค์๋ ๋ชฉ๋ก
**์ ์์ฌํญ**
user_keyword๋ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์ ํํํด์ผ ํฉ๋๋ค.
keyword_list์ ์กด์ฌํ์ง ์๋ ํค์๋๋ ๋ฐํํ๋ฉด ์๋ฉ๋๋ค.
์ถ๋ ฅ ํ์์ ๋ฐ๋์ ์ง์ผ์ ์๋ตํด์ผ ํฉ๋๋ค.
**์
๋ ฅ ๋ฐ์ดํฐ**
input_query : {input_query}
keyword_list : {keyword_list}
**์ถ๋ ฅ ํ์**
{{
user_keyword: ['ํค์๋1', 'ํค์๋2', 'ํค์๋3', ...],
}}
์ฌ์ฉ์ ์ ๋ ฅ ํค์๋ ์ถ์ถ์ ์ค์ ์๋น์ค์์ ์ฌ์ฉ๋๊ธฐ์ ์๋ต ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํจ
๋ชจ๋ธ๋ช | ์๋ต ์๊ฐ (์ด) | GPU ๋ฉ๋ชจ๋ฆฌ (MB) | CPU ๋ฉ๋ชจ๋ฆฌ (MB) |
---|---|---|---|
gemini-2.0-flash-lite | 1.168 | - | - |
gemma-2b-it | 2.125 | 5788.27 | 0.01 |
tinyllama-1.1b | 2.489 | 2160.26 | 0.03 |
stablelm-2-1_6b-chat | 9.599 | 3560.68 | 0.46 |
polyglot-ko-1.3b | 10.201 | 2724.23 | 0.59 |
phi-2 | 17.956 | 5798.37 | 0 |
gpt-neo-2.7B | 23.293 | 5724.17 | 0.05 |
๋ชจ๋ธ๋ช | ์๋ต ๋ด์ฉ | ์๋ต ํ์ง | ์๋ต ํ์ ์ ์ง ์ฌ๋ถ |
---|---|---|---|
gemini-2.0-flash-lite | "user_keyword": ["์์ฝ ๊ฐ๋ฅ", "ํ์ ์ฅ์", "ํด์ฐ๋ฌผ"] | ์๋ต ํ์ง ์ฐ์ | โ |
gemma-2b-it | AI ์ถ์ถ ํค์๋- ์์ฝ ๊ฐ๋ฅ- ์ฃผ์ฐจ ๊ฐ๋ฅ- ํ์ ์ฅ์- ๋ฐ์ดํฐ ์ฅ์- ๊ฐ์กฑ ๋ชจ์- ์๊ณ ๊ธฐ- ํด์ฐ๋ฌผ- ์ผ์- ํ์- ์์- ๋ถ์๊ธฐ ์ข์- ์กฐ์ฉํจ | ํค์๋ ๋ฆฌ์คํธ ๊ทธ๋๋ก ์ถ๋ ฅ, ๋ฆฌ์คํธ ํ์ X | โ |
tinyllama-1.1b | ์ถ๋ ฅ ํ์์ ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ง๊ฒ ์ถ์ถ๋ ํค์๋ ๋ฆฌ์คํธ์ ์๊ฐ ์ ๋ณด๋ฅผ ๋ด์ ๋ฌธ์์ด์ ๋๋ค. | ์ ์ ์๋ต X | โ |
stablelm-2-1_6b-chat | - | ์ ์ ์๋ต X | โ |
polyglot-ko-1.3b | - | ์ ์ ์๋ต X | โ |
phi-2 | - | ์ ์ ์๋ต X | โ |
gpt-neo-2.7B | - | ์ ์ ์๋ต X | โ |
gemini-2.0-flash-lite (API)์ ์๋ต ํ์ง์ ์๋นํ ์ข์ผ๋ฉฐ, ์คํ์์ค LLM๋ค์ ์๋ต ํ์ง์ด ์ข์ง ์์
ํ์ง๋ง ์ฌ์ฉ์ ์
๋ ฅ ํค์๋ ์ถ์ถ ๊ธฐ๋ฅ์ ์ค์๊ฐ์ฑ์ ๊ฐ๊ธฐ์ API ๋น์ฉ ์ ๊ฐ์ ์ํด ์คํ์์ค LLM์ ํ์ต์ด ํ์ํจ
ํ
์คํธ ๋ชจ๋ธ ๊ธฐ์ค์ผ๋ก๋ gemma-2b-it์ ์ต์ข
๋ชจ๋ธ๋ก ์ ์ ํ๋, ์์ข์ ์๋ต ํ์ง์ ๋ณด์ด๊ธฐ์ ํ ๋ชจ๋ธ๋ก์ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ ์์
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ํ ๊ณ ๋ คํ ์ ํ์ด๊ธฐ์ ๋ ํฐ ๋ชจ๋ธ๋ก์ ๋ณ๊ฒฝ์ ์ด๋ ค์๋ณด์
์ค์ ๋ชจ๋ธ ํ
์คํธ ๋ฐ ๋ฐฐํฌ๋ฅผ ๊ณ ๋ คํ ์๋ฎฌ๋ ์ด์
๊ณผ์ ์์, ๋ค์๊ณผ ๊ฐ์ด ์ ํ๋ณ ๋ณ๋ชฉ ์์๊ฐ ์๋ณ๋จ
์ด๋ ์
๋ ฅ ์ฒ๋ฆฌ, ์๋ต ํ์, ์์คํ
์ด์ ๊ด์ ์ผ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ๊ฐ๊ฐ์ ์ํฉ์ ๋ฐ๋ฅธ ์์ธ ๋ฐ ๊ฐ์ ๋ฐฉํฅ์ ๊ธฐ๋ฐ์ผ๋ก ์ถํ ์ต์ ํ์ ํ์ฉ๋ ์ ์์
๋ชจ๋ LLM์ ์
๋ ฅ ํ ํฐ ์์ ๋ํ ์ํ(์: 2048, 4096, 8192 ๋ฑ)์ด ์กด์ฌํ๋ฉฐ, ์ด๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ ์ถ๋ก ์ด ์คํจํ๊ฑฐ๋ GPU ์ปค๋ ์ค๋ฅ(CUDA error)๊ฐ ๋ฐ์ํ ์ ์์
์๋น์ค ํน์ฑ์ ์ฅ์ ์ ๋ณด ์ธ์๋ ๋ค์ํ ๋ฆฌ๋ทฐ, ๋ฉ๋ด ๋ฐ์ดํฐ๊ฐ ํจ๊ป ์
๋ ฅ๋๊ธฐ ๋๋ฌธ์ ํ ํฐ ์๊ฐ ์ฝ๊ฒ ์ฆ๊ฐํ๋ ๊ตฌ์กฐ์ด๋ฉฐ, ์ค์ ํ
์คํธ์์๋ ์
๋ ฅ ์ด๊ณผ๋ก ์ธํ ์ถ๋ก ์คํจ๊ฐ ํ์ธ๋์์
๐ก ๊ฐ์ ๋ฐฉํฅ
- ํ๋กฌํํธ ์ ๋ ฅ ์ ์ฌ์ ํ ํฐ ๊ธธ์ด ์ธก์
- ๋ชจ๋ธ๋ณ ์ ํ์ ๋ง์ถฐ ํ ์คํธ ์ฌ๋ผ์ด์ฑ ๋๋ ์์ฝ ์ฒ๋ฆฌ
- ๋ชจ๋ธ๋ณ
max_length
์๋ ์กฐ์ ๊ธฐ๋ฅ ๊ตฌํ- ์ฌ์ฉ์ ๋ฆฌ๋ทฐ๋ ๋ณ์ ์์ ๊ธฐ์ค์ผ๋ก ์ฐ์ ์์ ์ ๋ ฌ ํ ์์ 10๊ฐ๋ง ์ฌ์ฉ
- ๋ฉ๋ด ํญ๋ชฉ์ ๋ํ๋ฉ๋ด ์์ฃผ๋ก ์์ถํ๊ฑฐ๋, ๊ฐ๊ฒฉ ์ ๋ณด ์ ์ธ ๋ฑ ๊ฐ์ํ ์ฒ๋ฆฌ
Gemini API ๋ฑ ์ธ๋ถ LLM ์๋น์ค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํ๋ฆฌํฐ์ด ํ๊ฒฝ์์๋ ๋ถ๋น ์์ฒญ ์(์: 30ํ), **์ผ์ผ ์ด ํธ์ถ ์(์: 1500ํ)**์ ๋ํ ์ ํ์ด ์กด์ฌํ๋ฉฐ,
์ด๋ฅผ ์ด๊ณผํ๋ฉด ์์ฒญ์ด ๊ฑฐ์ ๋๊ฑฐ๋ ์๋ต ์ง์ฐ์ด ๋ฐ์ํ ์ ์์. ํนํ ํธ๋ํฝ์ด ์ง์ค๋๋ ํผํฌ ํ์(์: ์ ์ฌ, ์ ๋
์๊ฐ๋)์๋ ๋ณ๋ชฉ ํ์์ด ์๋น์ค ์ ์ฒด๋ก ํ์ฐ๋ ์ํ์ด ์์
๐ก ๊ฐ์ ๋ฐฉํฅ
- ํ๋ฆฌํฐ์ด์ Rate Limit์ ๊ณ ๋ คํ ์์ฒญ ๋ถ์ฐ ์ค๊ณ
- ์๋ ์ฌ์๋(backoff) ๋ฐ ์๋ฌ ์๋ต ์ฒ๋ฆฌ ๋ฃจํด ๊ตฌ์ถ
- ์ ๋ฃ ํ๋ ์ ํ ์ ํธ์ถ ์ ํ ์ํ ๊ณ ๋ ค
- ๋์ผ ์ฅ์์ ๋ํ ํค์๋ ์์ฒญ์ ์ผ์ ์๊ฐ ๋ด ์ค๋ณต ์์ฒญ ์ ์บ์๋ ์๋ต ๋ฐํ
- ํค์๋ ์ถ์ถ์ ๊ฒ์ ์์ ์ด ์๋ ์์ธ ํ์ด์ง ์ง์ ์ ๋น๋๊ธฐ ํธ์ถ๋ก ๋ถ๋ฆฌํ์ฌ UX ์ต์ ํ
์คํ์์ค LLM ๋ฐ Gemini API ๋ชจ๋์์ ์๋ต์ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ํ์์ด ๊ด์ฐฐ๋์์
์คํ์์ค LLM์ ํ๋กฌํํธ์ ๋ช
์ํ ๋ฆฌ์คํธ ํํ๋ก ์๋ตํ์ง ๋ชปํ๊ฑฐ๋, ํค์๋ ๋์ ํด์คํ ๋ฌธ์ฅ์ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์
๋ฐ๋ฉด, Gemini API๋ ํ๋กฌํํธ์ ๋ถํฉํ๋ ๋ฆฌ์คํธ ํ์์ผ๋ก ์๋ต์ ๋ฐํํ์ง๋ง, ์ ์ฌ ์๋ฏธ ํค์๋ ๋ฐํ ๋๋ ์ค๋ณต ์์ฒญ์ ๋ํด ์ผ๊ด์ฑ์ด ๋ฎ์ ๊ฒฐ๊ณผ๊ฐ ์์ฃผ ์ถ๋ ฅ๋์์
์ด๋ฌํ ์๋ต ์ผ๊ด์ฑ์ ๋ฌธ์ ๋ ์ถ์ฒ ๋ก์ง์ ์ ๋ขฐ์ฑ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํฅ์ ์ค ์ ์์
๐ก ๊ฐ์ ๋ฐฉํฅ
- ํ๋กฌํํธ ํ ํ๋ฆฟ ์ ์ ๋ฐ ์ฌ์ ํ ์คํธ ๊ธฐ๋ฐ ์์ ํ
- ํ๋กฌํํธ ๊ธฐ๋ฐ ์ถ์ถ์ด ์๋, ๋ฌธ์ ๊ธฐ๋ฐ ์ถ๋ก ์ ์ํ RAG ๊ตฌ์กฐ ๋์
- ํค์๋ ํ๋ณด๊ตฐ์ ์ฌ์ ์ ์ ์ํ๊ณ , ๋ชจ๋ธ์ด ์ด ์์์ ์ถ์ถํ๋๋ก ์ ์ฝํ๋ ๋ฐฉ์ ์ฌ์ฉ
- ์ผ๊ด๋์ง ์์ ์๋ต์ ๋ํด์๋ ํ์ฒ๋ฆฌ ํํฐ๋ง ๋ก์ง ์ ์ฉ ๋ฐ ๋์ฒด ํค์๋๋ก ๋ณด์
๋ค์์ ์คํ์์ค LLM์ ํ๊ตญ์ด ํค์๋ ์ถ์ถ ๋ฐ ํํ๋ ฅ์์ ๋ฎ์ ์ฑ๋ฅ์ ๋ณด์์ผ๋ฉฐ, ์ค์ ์ด์ ์์ค์์์ ํ์ฉ์ด ์ด๋ ค์ด ์์ค์ด์์
์ด๋ ์๋น์ค ํ์ง์ ์ ๋ขฐ๋ ์ ํ๋ก ์ด์ด์ง ์ ์๋ค.
๐ก ๊ฐ์ ๋ฐฉํฅ
- ์คํ์์ค LLM์ fine-tuning์ ํตํด ์ถ๋ก ํ์ง ๋ณด์ ํ์
- ์ด๊ธฐ ์ด์์ Gemini ๋ฑ ์ธ๋ถ API ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์ธ ์ฑ๋ฅ ํ๋ณด
- API ํ์ฉํ ์ค ์๋น์ค ๋ก๊ทธ ๊ธฐ๋ฐ ์๋ต ๋ฐ์ดํฐ ์์ง โ ์คํ์์ค LLM์ ๋ํ ํ์ fine-tuning ๋ฐ์ดํฐ์ ๊ตฌ์ถ
- ์ฅ๊ธฐ์ ์ผ๋ก๋ ๋ก์ปฌ ๊ฒฝ๋ํ ๋ชจ๋ธ๋ก ์ ํํด ์ด์๋น ์ต์ ํ ์ถ์ง
LLM ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ ์์ ๋น๋กํ์ฌ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ ์๊ฐ์ ๋ง์ด ์๋ชจํ๋ฏ๋ก,
์ด์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋จ์ผ ๋ชจ๋ธ๋ง ์คํ ๊ฐ๋ฅํ ๊ตฌ์กฐ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์
ํนํ Jetson Orin, Colab๊ณผ ๊ฐ์ ์ ์ฌ์ ํ๊ฒฝ์์๋ ํ ๋ฒ์ ํ๋์ ๋ชจ๋ธ๋ง ์คํํ๊ฑฐ๋,
๋ชจ๋ธ ๋ก๋ฉ/์ญ์ ์ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด ํ
์คํธ ๋ฐ ์ด์์ ํจ์จ์ฑ์ด ๋จ์ด์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์
๐ก ๊ฐ์ ๋ฐฉํฅ
- ์ด๊ธฐ ํ ์คํธ ๋ฐ ๋จ์ผ ๋ชฉ์ ์ถ๋ก ์ ๋ชจ๋ธ๋ณ ๋ ๋ฆฝ ์คํ ๊ตฌ์กฐ ์ ์ง
- ๊ฒฝ๋ํ ๋ชจ๋ธ(
2B
์ดํ)์ ์ฐ์ ์ฌ์ฉํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ถ๋ก ์ญํ ๋ถ๋ฆฌ (์: ์ฟผ๋ฆฌ vs ์ฅ์ ์ ๋ณด)- ์์ฃผ ํธ์ถ๋๋ ์ถ๋ก ๊ฒฝ๋ก(API)๋ ์์ ๋ก๋ฉ,
๋น๋๊ธฐ ๋๋ ๋ฎ์ ๋น๋์ ์์ ์ On-Demand ๋ก๋ฉ ๊ตฌ์กฐ ๊ณ ๋ ค
์ผ๋ถ ๊ธฐ๋ฅ(์: ์ฌ์ฉ์ ์ฟผ๋ฆฌ ๊ธฐ๋ฐ ์ค์๊ฐ ํค์๋ ์ถ์ถ)์ ๋น ๋ฅธ ์๋ต์ด ํ์์ ์ด๋,
๋ชจ๋ธ ๋ก๋ฉ ๋๋ ์ถ๋ก ์ง์ฐ์ผ๋ก ์ธํด ์ค์๊ฐ ์ฒ๋ฆฌ์ ๋ณ๋ชฉ์ด ๋ฐ์ํ ์ ์์
๋ํ ๋ค์ ์ฌ์ฉ์๊ฐ ๋์์ ์ ๊ทผํ ๊ฒฝ์ฐ, ๋จ์ผ ๋ชจ๋ธ ๊ตฌ์กฐ์์๋ ์์ฒญ์ด ์ง๋ ฌ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก, ๋๊ธฐ ์๊ฐ์ด ๊ธ์ฆํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํจ
๐ก ๊ฐ์ ๋ฐฉํฅ
- ์ค์๊ฐ ์๋ต์ด ํ์ํ ๊ธฐ๋ฅ์ ์ธ๋ถ API ๊ธฐ๋ฐ LLM์ผ๋ก ์ฒ๋ฆฌํ๊ณ ,
๋น์ค์๊ฐ ๊ธฐ๋ฅ(์: ์ฅ์ ์ ๋ณด ์์ฝ)์ ์๋ฒ ๋ด ์ ์ฒ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ถ๋ฆฌ- ์์ฃผ ๋ฑ์ฅํ๋ ์ฟผ๋ฆฌ๋ ํค์๋ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ์ฌ ์ฌ์ฌ์ฉํ๊ณ ,
์๋ต ์ง์ฐ ์ ๊ธฐ๋ณธ ์ถ์ฒ fallback์ ์ ๊ณตํ์ฌ UX ์์ ํ- ๋์ ์์ฒญ ๋์์ด ํ์ํ ๊ฒฝ์ฐ, ์ถ๋ก ์๋ฒ๋ฅผ ๊ธฐ๋ฅ ๋จ์๋ก ๋๋๊ฑฐ๋,
๋ชจ๋ธ ํ๋ก์ธ์ค๋ฅผ ๋ถ์ฐ ๋ฐฐ์นํ๋ ๊ตฌ์กฐ ๊ณ ๋ ค
- ์ง์ฐ ์๊ฐ ๊ฐ์: ํ๊ท ์๋ต ์๊ฐ์ 1์ด ์ดํ๋ก ๋จ์ถ
- ์๋ต ์์ ์ฑ ํ๋ณด: ๋น์ผ๊ด๋ ์๋ต ํฌ๋งท ์ ๊ฑฐ ๋ฐ ํค์๋ ์ถ์ถ ์ ํ๋ ํฅ์
- ์ด์ ๋น์ฉ ์ ๊ฐ: API ํธ์ถ ๋น๋ ์ต์ํ ๋ฐ GPU ์์ ํจ์จ์ ์ฌ์ฉ
๐น 1๋จ๊ณ: Gemini API ๊ธฐ๋ฐ MVP ๊ฐ๋ฐ
- ์์ ์ ์ธ ํค์๋ ํฌ๋งท ์์ฑ๊ณผ ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก MVP ์์คํ ๊ตฌ์ถ
- ํ๋กฌํํธ ๊ธฐ๋ฐ ํค์๋ ์ถ์ถ ๊ธฐ๋ฅ์ ์ฐ์ ์ ์ผ๋ก API์ ์ฐ๊ฒฐํ์ฌ ์๋น์ค ์ด์
- ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ ์ถ์ฒ ๋ก๊ทธ๋ฅผ ์์งํ์ฌ ์๋ต ์ด๋ ฅ ๊ธฐ๋ฐ ๋ฐ์ดํฐ์ ์๋ ์ถ์
๐น 2๋จ๊ณ: ์ฉ๋๋ณ API โ ์์ฒด ๋ชจ๋ธ ์ ํ ์ ๋ต
- LLM ํ์ฉ ๋ชฉ์ ์ ์ฅ์ ํค์๋ ์ถ์ถ๊ณผ ์ฌ์ฉ์ ์ ๋ ฅ ํค์๋ ์ถ์ถ๋ก ๋ถ๋ฆฌ
- ์ฅ์ ํค์๋ ์ถ์ถ์ ๋น์ค์๊ฐ์ฑ ๊ธฐ๋ฅ์ผ๋ก ํ๋ฆฌํฐ์ด ๋ด์์ Gemini API ์ง์ ํ์ฉ ์์
- ์ฌ์ฉ์ ์
๋ ฅ ํค์๋ ์ถ์ถ์ ์ค์๊ฐ ์๋ต์ด ํ์ํ ๊ธฐ๋ฅ์ผ๋ก,
Gemini API์ ๋ถ๋น ํธ์ถ ์ ์ ํ์ผ๋ก ์ธํด ์๋น์ค ๋ณ๋ชฉ ๋ฐ์ ๊ฐ๋ฅ - ํด๋น ๊ธฐ๋ฅ์ ์ค์๊ฐ ์ฒ๋ฆฌ์ ์ ํฉํ ์์ฒด ๋ชจ๋ธ๋ก ์ ํํ๊ณ ,
์์ง๋ ์ฌ์ฉ์ ์ ๋ ฅ/์๋ต ๋ก๊ทธ ๊ธฐ๋ฐ์ผ๋กgemma-2b-it
,polyglot-ko
๋ฑ ๊ฒฝ๋ ๋ชจ๋ธ์ fine-tuning ์ํ
๐น 3๋จ๊ณ: ์๋น์ค ๋จ์ ์ต์ ํ ๋ฐ ํจ์จ์ ๋ฆฌ์์ค ์ด์ ๊ตฌ์กฐ ๊ตฌ์ถ
- LLM ์๋ต ํ์ง ํธ์ฐจ๋ฅผ ์ค์ด๊ธฐ ์ํด, MVP ๊ฐ๋ฐ ๋จ๊ณ๋ถํฐ
์ฌ์ ์ ์๋ ํค์๋ ํ๋ณด๊ตฐ ๊ธฐ๋ฐ์ ์๋ต ์ ์ ๋ก์ง์ ๋์
โ soft-matching ๋ฐ post-filtering์ ํตํด ์๋ต ์ผ๊ด์ฑ ํ๋ณด - ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์์ฒญ์ ์บ์ ํ์ฉ + fallback ๋์ ์๋๋ฆฌ์ค ๋์ ์ผ๋ก UX ์์ ํ
- ๊ธฐ๋ฅ๋ณ ์๋ต ๋๊ธฐ ํ์ฉ์๊ฐ์ ๋ฐ๋ผ ์ถ๋ก ๋ชจ๋ธ์ ์ญํ ๋จ์๋ก ๋ถ๋ฆฌ ๋ฐฐ์น
์:-
์ฅ์ ์ ๋ณด ์์ฝ
โ ๋น๋๊ธฐ ์ฒ๋ฆฌ + ๊ณ ์ฑ๋ฅ ๋ชจ๋ธ -
์ฌ์ฉ์ ์ฟผ๋ฆฌ ๋ถ์
โ ์ค์๊ฐ ์ฒ๋ฆฌ + ์ ์ง์ฐ ๋ชจ๋ธ
-
- ์ค ์๋น์ค ๊ธฐ์ค์์ ๋ชจ๋ธ ์ค์ผ์ผ ์กฐ์ ์ ๊ณ ๋ คํ์ฌ,
On-Demand ์ถ๋ก ๊ตฌ์กฐ ๋๋ ๋ค์ค ์๋ํฌ์ธํธ ๋ถ์ฐ ๋ก๋ฉ ์ ๋ต ์ค๊ณ ์์
ํญ๋ชฉ | ๊ธฐ์กด ์ฑ๋ฅ | ์ต์ ํ ์ ์ฉ ๊ธฐ๋ ์ฑ๋ฅ |
---|---|---|
ํ๊ท ์๋ต ์๊ฐ | 3.0 ~ 5.0์ด (LLM ๊ธฐ์ค) | < 1.0์ด (Gemini API) / ~2์ด ์ด๋ด (fine-tuned ๋ชจ๋ธ) |
์๋ต ํฌ๋งท ์ค๋ฅ์จ | 10~30% | 0% (ํ๋กฌํํธ ์ ์ + ํ์ฒ๋ฆฌ ์ ์ฉ) |
์ถ๋ก ์คํจ์จ | 15% ์ด์ | 0% (๊ธธ์ด ์ ํ + ์ค๋ฅ ํํผ ๋ฃจํด) |
์๋ต ์ผ๊ด์ฑ | ํค์๋ ๋๋ฝ, ์๋ฏธ ์ค๋ณต ๋ค์ | ํ๋ณด๊ตฐ ๊ธฐ๋ฐ ์ ์ ๋ก ์ผ๊ด์ฑ ํฅ์ |
์ด์ ๋น์ฉ | Colab GPU ํ๊ฒฝ / Gemini API ํ๋ฆฌํฐ์ด | ์ ์ฝ 0์ โ ์์ฒด ๋ชจ๋ธ ์ ํ ์ ์ 20~30๋ฌ๋ฌ ์์ |
โน๏ธ ์์ฒด ๋ชจ๋ธ ์ ํ์ Gemini API์ ๋ถ๋น ํธ์ถ ์ ํ ๋ฐ ์ผ์ผ ํธ์ถ๋ ์ ํ์ผ๋ก ์ธํด
์ค์๊ฐ ์ฌ์ฉ์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์ ๋ณ๋ชฉ์ด ๋ฐ์ํ๋ ๊ตฌ์กฐ์ ํ๊ณ๋ฅผ ํด์ํ๊ธฐ ์ํ ์ ๋ต์ ์ ํ์