Ver5.0 ๐ DeepSeek-Coder์ ์ฝ๋ ํด์ ๋ฅ๋ ฅ, ์น๊ตฌ์ฒ๋ผ ์ฝ๊ฒ ํํค์ณ ๋ณด๊ธฐ

๐ DeepSeek-Coder์ ์ฝ๋ ํด์ ๋ฅ๋ ฅ, ์น๊ตฌ์ฒ๋ผ ์ฝ๊ฒ ํํค์ณ ๋ณด๊ธฐ
"์ด ์ฝ๋ ๋๊ฐ ์งฐ์ดโฆ?" ํ๊ณ ํ์จ ์ฌ์ด ๋ณธ ์ ์์ง? ๋จ์ด ์ง ์ฝ๋, ์ฌ์ง์ด 3๊ฐ์ ์ ์ ๋ด๊ฐ ์ง ์ฝ๋๋ฅผ ์ฝ๋ ๊ฑด ๊ฐ๋ฐ์ ์ธ์์ ์์ํ ์์ ์ผ.
๊ทธ๋ฐ๋ฐ ์์ฆ์ ์ด ์์ ๋ฅผ ๊ฝค ์ ๋์์ฃผ๋ ์น๊ตฌ๊ฐ ์๊ฒผ์ด. ๋ฐ๋ก DeepSeek-Coder๋ผ๋ ์คํ์์ค ์ฝ๋ ํนํ ์ธ์ด ๋ชจ๋ธ์ด์ผ.
์ค๋์ ์ด ์น๊ตฌ๊ฐ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ, ์ผ๋ง๋, ์ด๋๊น์ง ์ดํดํ๋์ง ํฉํธ ์์ฃผ๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ์๋ค ๋จ๋ฏ ํ์ด๋ณผ๊ฒ!
๐ค 1. DeepSeek-Coder, ๋ ๋๊ตฌ๋?
DeepSeek-Coder๋ ์ค๊ตญ์ AI ๊ธฐ์
DeepSeek(๋ฅ์ํฌ)๊ฐ 2023๋
11์์ ๊ณต๊ฐํ ์ฝ๋ ํนํ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(Code LLM) ์๋ฆฌ์ฆ์ผ. 2024๋
1์์๋ ๊ธฐ์ ๋ณด๊ณ ์ ใDeepSeek-Coder: When the Large Language Model Meets Programmingใ๋ arXiv์ ์ฌ๋ผ์์ง.
ํต์ฌ ํฌ์ธํธ๋ ์ฒ์๋ถํฐ ์ฝ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ๋ฐ๋ฅ๋ถํฐ ํ์ต(from scratch)ํ๋ค๋ ๊ฑฐ์ผ. ์ผ๋ฐ ์ฑ๋ด์ ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ ๋จน์ธ ๊ฒ ์๋๋ผ, ํ์๋ถํฐ "์ฝ๋ ์์ด๋ฏผ"์ผ๋ก ํค์ด ์
์ด์ง.
1.3B, 5.7B, 6.7B, 33B ํ๋ผ๋ฏธํฐ ๋ฒ์ ์ด ์์ด. ๋ ธํธ๋ถ์์ ๋๋ฆด ์์ ๊ฒ๋ถํฐ ์๋ฒ์ฉ ํฐ ๊ฒ๊น์ง ๊ณจ๋ผ ์ธ ์ ์์ง.
์ฝ 2์กฐ(2T) ํ ํฐ์ผ๋ก ํ์ตํ๊ณ , ๊ตฌ์ฑ์ ์ฝ๋ 87%, ์ฝ๋ ๊ด๋ จ ์์ด ์์ฐ์ด 10%, ์ค๊ตญ์ด ์์ฐ์ด 3%์ผ.
16K ํ ํฐ ์ปจํ ์คํธ ์๋์ฐ. ํจ์ ํ๋๊ฐ ์๋๋ผ ์ฌ๋ฌ ํ์ผ ๋จ์์ ์ฝ๋๋ฅผ ํ ๋ฒ์ ๋ณผ ์ ์์ด.
๊ทธ๋ฆฌ๊ณ 2024๋ 6์์๋ ํ์์ DeepSeek-Coder-V2๊ฐ ๋์์ด. ์ด ์น๊ตฌ๋ MoE(Mixture-of-Experts, ์ ๋ฌธ๊ฐ ํผํฉ) ๊ตฌ์กฐ๋ฅผ ์ฐ๊ณ , ์ง์ ์ธ์ด๊ฐ 86๊ฐ์์ 338๊ฐ๋ก ํ ๋์๊ณ , ์ปจํ ์คํธ๋ 128K ํ ํฐ๊น์ง ๋์ด๋ฌ์ง. ์ด ํ๋ผ๋ฏธํฐ 236B ๋ชจ๋ธ(ํ์ฑ ํ๋ผ๋ฏธํฐ 21B)๊ณผ 16B Lite ๋ฒ์ (ํ์ฑ 2.4B)์ด ์์ด.
| ๊ตฌ๋ถ | DeepSeek-Coder (V1) | DeepSeek-Coder-V2 |
|---|---|---|
| ๊ณต๊ฐ ์๊ธฐ | 2023๋ 11์ | 2024๋ 6์ |
| ๊ตฌ์กฐ | Dense ํธ๋์คํฌ๋จธ | MoE (DeepSeek-V2 ๊ธฐ๋ฐ) |
| ํฌ๊ธฐ | 1.3B / 5.7B / 6.7B / 33B | 16B Lite / 236B |
| ์ปจํ ์คํธ | 16K | 128K |
| ์ง์ ์ธ์ด | 86๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด | 338๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด |
| ์ถ๊ฐ ํ์ต | 2T ํ ํฐ ์ฌ์ ํ์ต | DeepSeek-V2 ์ค๊ฐ ์ฒดํฌํฌ์ธํธ์์ 6T ํ ํฐ ์ถ๊ฐ ํ์ต |
๐ง 2. ์ฝ๋๋ฅผ "ํด์"ํ๋ค๋ ๊ฑด ๋ญ๊น?
์ฝ๋ ํด์ ๋ฅ๋ ฅ์ด๋ผ๊ณ ํ๋ฉด ๋ง์ฐํ๊ฒ ๋ค๋ฆฌ์ง? ์ฌ์ค ์ฌ๋ฌ ๋ฅ๋ ฅ์ด ๋ญ์น ๊ฑฐ์ผ. ์ฌ๋์ผ๋ก ์น๋ฉด "์ธ๊ตญ์ด๋ฅผ ์ฝ๊ณ , ์ดํดํ๊ณ , ์์ฝํ๊ณ , ํ๋ฆฐ ๋ฌธ๋ฒ๋ ์ฐพ์์ฃผ๋" ๋ฅ๋ ฅ์ด๋ ๋น์ทํด.
DeepSeek-Coder๋ ์ด ๋ค์ฏ ๊ฐ์ง๋ฅผ ์ํด ํ์ต ๋จ๊ณ์์๋ถํฐ ๊ฝค ์๋ฆฌํ ์ฅ์น๋ค์ ๋ฃ์์ด. ํ๋์ฉ ๋ณผ๊ฒ!
๐ง 3. ์ฝ๋๋ฅผ ์ ์ฝ๊ฒ ๋ง๋ ๋น๋ฐ ๋ ์ํผ
โ ์ ์ฅ์(Repository) ๋จ์ ํ์ต
๋ณดํต ๋ชจ๋ธ์ ํ์ผ ํ๋ํ๋๋ฅผ ๋ฐ๋ก๋ฐ๋ก ๋ฐฐ์. ๊ทผ๋ฐ ์ค์ ํ๋ก์ ํธ๋ utils.py์์ ๋ง๋ ํจ์๋ฅผ main.py๊ฐ ๋ถ๋ฌ ์ฐ์์?
DeepSeek-Coder๋ ํ์ผ ๊ฐ ์์กด์ฑ(import ๊ด๊ณ ๋ฑ)์ ๋ถ์ํด์, ์์กด๋๋ ํ์ผ์ด ๋จผ์ ์ค๋๋ก ์์๋ฅผ ์ ๋ ฌ(์์ ์ ๋ ฌ)ํ ๋ค ํ์ต์์ผฐ์ด. ๊ทธ๋์ "์ด ํจ์ ์ด๋์ ์จ ๊ฑฐ์ง?"๋ฅผ ์ดํดํ๋ ๋ฐ ์ ๋ฆฌํด.
โก FIM(Fill-In-the-Middle) ํ์ต
FIM์ ์ฝ๋ ์ค๊ฐ์ ๋ปฅ ๋ซ์ด ๋๊ณ "์๋ค ๋งฅ๋ฝ ๋ณด๊ณ ๋น์นธ ์ฑ์๋ด!" ํ๋ ํ๋ จ์ด์ผ. ๋ง์น ๋น์นธ ์ฑ์ฐ๊ธฐ ์ํ ๊ฐ์ง?
์ด๊ฒ ์ ํด์๋ ฅ์ด๋ ๊ด๋ จ์ด ์๋๋ฉด, ๋น์นธ์ ์ฑ์ฐ๋ ค๋ฉด ์ ์ฝ๋์ ๋ค ์ฝ๋๋ฅผ ๋ ๋ค ์ดํดํด์ผ ํ๊ฑฐ๋ . DeepSeek-Coder๋ ํ์ต ๋ฐ์ดํฐ์ ์๋น ๋น์จ(๋ณด๊ณ ์ ๊ธฐ์ค FIM ๋น์จ 0.5, PSM ๋ชจ๋)์ ์ด ๋ฐฉ์์ ์ ์ฉํ์ด. ๋๋ถ์ ์๋ํฐ์์ ์ปค์ ์ค๊ฐ์ ์ฝ๋๋ฅผ ์ด์ด ์ฐ๋ ์๋์์ฑ์ ํนํ ๊ฐํด.
<๏ฝfimโbegin๏ฝ>def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
<๏ฝfimโhole๏ฝ>
return quick_sort(left) + [pivot] + quick_sort(right)<๏ฝfimโend๏ฝ>
์์ฒ๋ผ ๋ฃ์ผ๋ฉด ๋ชจ๋ธ์ด left, right๋ฅผ ๋๋๋ ์ค๊ฐ ๋ถ๋ถ์ ์ฑ์์ค. ๋ค์ ๋์ค๋ quick_sort(left)๋ฅผ "์ฝ๊ณ " ์ดํดํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฑฐ์ผ. ๐งฉ
โข ๊ธด ๋ฌธ๋งฅ ์ฒ๋ฆฌ
V1์ RoPE(ํ์ ์์น ์๋ฒ ๋ฉ) ์ค์ผ์ผ๋ง ์ค์ ์ ์กฐ์ ํด 16K ๋ฌธ๋งฅ์ ๋ค๋ฃจ๋๋ก ํ๊ณ , V2๋ YaRN ๊ธฐ๋ฒ์ ํ์ฉํด 128K๊น์ง ๋๋ ธ์ด. 128K ํ ํฐ์ด๋ฉด ์ค์ ๊ท๋ชจ ํ๋ก์ ํธ์ ํต์ฌ ํ์ผ ์ฌ๋ฌ ๊ฐ๋ฅผ ํต์งธ๋ก ๋ฃ์ด๋ ๋๋ ์์ค์ด์ผ.
โฃ ์ง์ ํ๋(Instruct)
"์ด ์ฝ๋ ์ค๋ช ํด์ค", "๋ฒ๊ทธ ์ฐพ์์ค" ๊ฐ์ ์ฌ๋ ๋ง์ ์์๋ฃ๋๋ก ์ง์ ๋ฐ์ดํฐ๋ก ์ถ๊ฐ ํ์ตํ ๋ฒ์ ์ด ๋ฐ๋ก DeepSeek-Coder-Instruct์ผ. ํด์ยท์ค๋ช ์์ ์ Base๋ณด๋ค Instruct ๋ฒ์ ์ ์ฐ๋ ๊ฒ ์ ์์ด์ผ.
๐ก ๊ฟํ
์๋์์ฑ(FIM)์ฒ๋ผ "์ด์ด ์ฐ๊ธฐ"๋ Base ๋ชจ๋ธ, ์ค๋ช
ยท๋ฆฌ๋ทฐยท๋ํ์ฒ๋ผ "๋ง๋ก ํ๊ธฐ"๋ Instruct ๋ชจ๋ธ์ด ์ ๋ง์. ์ฉ๋๋ฅผ ๋ฐ๊ฟ ์ฐ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ด์ํด์ง ์ ์์ด!
๐ 4. ์ซ์๋ก ๋ณด๋ ์ค๋ ฅ (๋ฒค์น๋งํฌ)
๋ง๋ก๋ง "์ํด์~" ํ๋ฉด ์ ๋ขฐ๊ฐ ์ ๊ฐ์ง? ๊ณต์ ๊ธฐ์ ๋ณด๊ณ ์์ ๋์จ ๋ํ ์์น๋ฅผ ๋ณผ๊ฒ. (๋ชจ๋ pass@1 ๊ธฐ์ค, ๋ณด๊ณ ์ ๋ฐํ ๋น์ ์์น์ผ.)
| ๋ฒค์น๋งํฌ | ๋ฌด์์ ๋ณด๋ | ๋ํ ๊ฒฐ๊ณผ |
|---|---|---|
| HumanEval | ํจ์ ์ค๋ช ๋ณด๊ณ Python ์ฝ๋ ์์ฑ | V1 33B Instruct 79.3%, V2 Instruct 90.2% |
| MBPP | ๊ธฐ์ด Python ๋ฌธ์ ํด๊ฒฐ | V1 33B Instruct 70.0% |
| DS-1000 | NumPyยทPandas ๋ฑ ๋ฐ์ดํฐ ๊ณผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ | V1 33B Base ํ๊ท 40.2% |
| CRUXEval | ์ฝ๋ ์คํ ๊ฒฐ๊ณผ ์ถ๋ก (์ ๋ ฅโ์ถ๋ ฅ, ์ถ๋ ฅโ์ ๋ ฅ) | ์ฝ๋ "์ฝ๊ณ ๋จธ๋ฆฟ์ ์คํ"ํ๋ ๋ฅ๋ ฅ ์ธก์ |
| LiveCodeBench | ์ต์ ์ฝ๋ฉ ๋ํ ๋ฌธ์ (๋ฐ์ดํฐ ์ค์ผ ์ต์ํ) | V2 Instruct 43.4% |
์ฌ๊ธฐ์ ํนํ ์ฌ๋ฐ๋ ๊ฑด CRUXEval์ด์ผ. ์ฝ๋๋ฅผ ์ง๋ ๊ฒ ์๋๋ผ "์ด ์ฝ๋ ๋๋ฆฌ๋ฉด ๋ญ๊ฐ ๋์ฌ๊น?"๋ฅผ ๋งํ๋ ์ํ์ด๋ผ, ์์ํ ์ฝ๋ ํด์ ๋ฅ๋ ฅ์ ๋ณด๊ธฐ ๋ฑ ์ข๊ฑฐ๋ . DeepSeek-Coder ๋ณด๊ณ ์๋ ์ด ๋ฒค์น๋งํฌ๋ก ์คํ ์ถ๋ก ๋ฅ๋ ฅ์ ํ๊ฐํ์ด.
๋ V1 33B Instruct๋ ๊ณต๊ฐ ๋น์ HumanEval์์ GPT-3.5-Turbo๋ฅผ ์์ ๋ค๊ณ ๋ณด๊ณ ๋๊ณ , V2๋ ์ฝ๋ฉ ๋ฒค์น๋งํฌ ์ฌ๋ฌ ๊ฐ์์ ๋น๋ ์ต์์ ๋น๊ณต๊ฐ ๋ชจ๋ธ๋ค๊ณผ ๋น์ทํ ์์ค์ด๋ผ๊ณ ๋ฐํ๋์ง.
โ ๏ธ ์ ๊น! ๋ฒค์น๋งํฌ ๋งน์ ๊ธ์ง
๋ฒค์น๋งํฌ๋ ์ ํด์ง ๋ฌธ์ ์์์ ์ฑ์ ์ผ ๋ฟ์ด์ผ. ์ค๋ฌด ์ฝ๋๋ ์ฌ๋ด ๊ท์น, ๋ ๊ฑฐ์, ์ด์ํ ๋ณ์๋ช
(tmp2_final_real ๊ฐ์โฆ)์ด ๊ฐ๋ํ์์. ์ซ์๋ ์ฐธ๊ณ ์ฉ์ผ๋ก, ๋ด ์ฝ๋๋ก ์ง์ ํ
์คํธํด ๋ณด๋ ๊ฒ ์ต๊ณ ์ผ!
๐ฎ 5. ์ค์ ! ์ฝ๋ ํด์ ์์ผ๋ณด๊ธฐ
๊ทธ๋ผ ์ค์ ๋ก ์ด๋ฐ ์ง๋ฌธ์ ๋์ง๋ค๊ณ ํด๋ณด์.
def mystery(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
print(mystery(10))
๐ ๋: ์ด ์ฝ๋๊ฐ ๋ญ ํ๋์ง, ์ถ๋ ฅ๊ฐ์ด ๋ญ์ง ์ค๋ช
ํด์ค.
๐ DeepSeek-Coder(์๋ต ์์): ์ด ํจ์๋ n๋ฒ์งธ ํผ๋ณด๋์น ์๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ณ์ฐํด์. a, b๋ฅผ ๋์์ ๊ฐฑ์ ํด ์ด์ ๋ ๊ฐ์ ์ ์งํ๊ณ , 10๋ฒ ๋ฐ๋ณตํ๋ฉด a๋ 55๊ฐ ๋ฉ๋๋ค. ์ฌ๊ท๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฉด์์ ํจ์จ์ ์ธ O(n) ๋ฐฉ์์ด์์.
์ด๋ฐ ์์ผ๋ก ๋ชฉ์ ํ์ โ ๋์ ์๋ฆฌ โ ์คํ ๊ฒฐ๊ณผ โ ๋ณต์ก๋ ํ๊ฐ๊น์ง ํ ๋ฒ์ ํ์ด์ฃผ๋ ๊ฒ ์ฝ๋ ํด์ ๋ชจ๋ธ์ ๊ธฐ๋ณธ๊ธฐ์ผ. ์ค์ ๋ต๋ณ ๋ฌธ์ฅ์ ๋งค๋ฒ ์กฐ๊ธ์ฉ ๋ค๋ฅผ ์ ์๋ค๋ ๊ฒ๋ ๊ธฐ์ตํด ๋ฌ!
์ด๋ ๊ฒ ์จ๋จน์ผ๋ฉด ์ข์
์ฃผ์ ํ๋ ์๋ ์ค๋๋ ์ฝ๋๋ฅผ ๋ฃ๊ณ "๋ชจ๋๋ณ ์ญํ ์์ฝํด์ค"๋ผ๊ณ ํ๋ฉด ์ ์ฒด ์ง๋๋ฅผ ๋น ๋ฅด๊ฒ ๊ทธ๋ฆด ์ ์์ด.
์๋ฌ ๋ก๊ทธ์ ์ฝ๋๋ฅผ ๊ฐ์ด ์ฃผ๋ฉด ์์ธ ํ๋ณด๋ฅผ ์ง์ด์ค. ๋จ, ์์ ์์ ๊ผญ ํ ์คํธ๋ก ๊ฒ์ฆ!
ํจ์๋ณ docstring, README ์ด์ ์์ฑ์ ์๊ฐ์ ํ ์ค์ฌ์ค.
Python โ Go, Java โ Kotlin์ฒ๋ผ ์๋ฏธ๋ฅผ ์ ์งํ ๋ฒ์ญ์๋ ํ์ฉ๋ผ.
๐ป 6. ์ง์ ๋๋ ค๋ณด๋ ๋ฐฉ๋ฒ
์คํ์์ค๋ผ ์ข์ ์ ! ๊ฐ์ค์น๊ฐ Hugging Face์ ๊ณต๊ฐ๋์ด ์์ด์ ๋ด ์ปดํจํฐ๋ ์๋ฒ์์ ์ง์ ๋๋ฆด ์ ์์ด. ์ฝ๋์ ๋ชจ๋ธ ๋ผ์ด์ ์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์๊ณ , ๋ชจ๋ธ ๋ผ์ด์ ์ค ์กฐ๊ฑด ์์์ ์์ ์ ์ด์ฉ๋ ํ์ฉ๋ผ. ์ฌ์ฉ ์ ์ ๋ผ์ด์ ์ค ์๋ฌธ์ ๊ผญ ํ์ธํ์.
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
name = "deepseek-ai/deepseek-coder-6.7b-instruct"
tok = AutoTokenizer.from_pretrained(name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
name, trust_remote_code=True, torch_dtype=torch.bfloat16
).cuda()
messages = [{"role": "user", "content": "์ด ์ฝ๋ ์ค๋ช
ํด์ค:\nprint(sum(range(5)))"}]
inputs = tok.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt"
).to(model.device)
out = model.generate(inputs, max_new_tokens=300, do_sample=False,
eos_token_id=tok.eos_token_id)
print(tok.decode(out[0][len(inputs[0]):], skip_special_tokens=True))
GPU๊ฐ ๋ถ๋ด์ค๋ฌ์ฐ๋ฉด Ollama๋ LM Studio ๊ฐ์ ๋ก์ปฌ ์คํ ๋๊ตฌ์์ ์์ํ ๋ฒ์ ์ ๋ฐ์ ์ฐ๋ ๋ฐฉ๋ฒ๋ ์๊ณ , 1.3B ๊ฐ์ ์์ ๋ชจ๋ธ์ ๋น๊ต์ ๊ฐ๋ฒผ์ด ํ๊ฒฝ์์๋ ์๋ํด ๋ณผ ์ ์์ด. VS Code์ Continue ๊ฐ์ ํ์ฅ๊ณผ ์ฐ๊ฒฐํ๋ฉด ์๋ํฐ ์ ์ฝ๋ฉ ๋น์๋ก ์ธ ์ ์์ง. ๐
๐ง 7. ํ๊ณ๋ ์์งํ๊ฒ ์์๋์
์กด์ฌํ์ง ์๋ API๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์๋ฅผ ๊ทธ๋ด๋ฏํ๊ฒ ์ง์ด๋ผ ์ ์์ด.
ํ์ต ์ดํ์ ๋์จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด๋ ๋ฌธ๋ฒ ๋ณ๊ฒฝ์ ๋ชจ๋ฅผ ์ ์์ด.
์ธ๋ถ API๋ก ์ธ ๋ ์ฌ๋ด ์ฝ๋ยท๋น๋ฐํค๊ฐ ์ ์ก๋์ง ์๊ฒ ์กฐ์ฌ! ๋ฏผ๊ฐํ ์ฝ๋๋ ๋ก์ปฌ ์คํ์ด ์์ ํด.
ํ์ต ๋ฐ์ดํฐ์ ์์ฐ์ด๋ ์์ดยท์ค๊ตญ์ด ์ค์ฌ์ด๋ผ, ํ๊ตญ์ด ์ค๋ช ํ์ง์ ์์ด๋ณด๋ค ๋ค์ ๋ค์ญ๋ ์ญํ ์ ์์ด.
๐ฑ 8. ๊ฐ๋ฐ์์๊ฒ ์ฃผ๋ ์๋ฏธ
DeepSeek-Coder๊ฐ ์
๊ณ์ ์ค ๊ฐ์ฅ ํฐ ๋ฉ์์ง๋ "์คํ์์ค ๋ชจ๋ธ๋ ์ฝ๋ ์ดํด๋ ฅ์์ ์์ฉ ๋ชจ๋ธ๊ณผ ๊ฒจ๋ฃฐ ์ ์๋ค"๋ ๊ฑฐ์ผ. ๋๋ถ์ ๊ฐ์ธ ๊ฐ๋ฐ์๋ ์คํํธ์
๋ ๋น์ฉ ๋ถ๋ด์ ์ค์ด๋ฉฐ ์์ฒด ์ฝ๋ ๋น์๋ฅผ ๊พธ๋ฆด ์ ์๊ฒ ๋์ง.
์ฌ๋ฅ๋ท ๊ฐ์ ์ฌ๋ฅ ๊ณต์ ํ๋ซํผ์์ ํ๋ํ๋ ํ๋ฆฌ๋์ ๊ฐ๋ฐ์๋ผ๋ฉด, ๊ณ ๊ฐ์ด ๋๊ฒจ์ค ๋ฏ์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋น ๋ฅด๊ฒ ํ์
ํ๋ ๋ฐ ํนํ ์ธ๋ชจ๊ฐ ๋ง์ ๊ฑฐ์ผ. ๋ค๋ง ์ต์ข
ํ์ง ์ฑ
์์ ๋ ์ฌ๋์๊ฒ ์๋ค๋ ๊ฑฐ, ์์ง ๋ง์!
๐ฏ ํ ์ค ์์ฝ
DeepSeek-Coder๋ ์ ์ฅ์ ๋จ์ ํ์ต + FIM + ๊ธด ๋ฌธ๋งฅ + ์ง์ ํ๋์ผ๋ก ์ฝ๋๋ฅผ "์ฝ๊ณ ์ดํดํ๋" ๋ฅ๋ ฅ์ ๋์ด์ฌ๋ฆฐ ์คํ์์ค ์ฝ๋ ๋ชจ๋ธ์ด์ผ. ๋๋ํ ๋๋ฃ์ฒ๋ผ ์ฐ๋, ๊ฒ์ฆ์ ๋ด๊ฐ ํ๋ ๊ฒ! ๊ทธ๊ฒ AI ์๋ ๊ฐ๋ฐ์์ ์์กด ๊ณต์์ด์ผ. ๐
AIยท๋จธ์ ๋ฌ๋ ๊ฐ๋ฐ์ด ๊ถ๊ธํ๋ค๋ฉด ์ฌ๋ฅ๋ท์ ์ง์์ธ์ ์ฒ์์ ๋ค๋ฅธ ๊ธ๋ค๋ ํจ๊ป ์ดํด๋ด!
๐ ์ฐธ๊ณ ์๋ฃ
ยท DeepSeek-Coder: When the Large Language Model Meets Programming (arXiv:2401.14196) โ https://arxiv.org/abs/2401.14196
ยท DeepSeek-Coder-V2: Breaking the Barrier of Closed-Source Models in Code Intelligence (arXiv:2406.11931) โ https://arxiv.org/abs/2406.11931
ยท deepseek-ai/DeepSeek-Coder GitHub โ https://github.com/deepseek-ai/DeepSeek-Coder
ยท deepseek-ai/DeepSeek-Coder-V2 GitHub โ https://github.com/deepseek-ai/DeepSeek-Coder-V2
ยท CRUXEval: A Benchmark for Code Reasoning, Understanding and Execution โ https://arxiv.org/abs/2401.03065
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.