Code llama: Open foundation models for code

์ €์ž: Baptiste Roziรจre, Jonas Gehring, Fabian Gloeckle, Sten Sootla, Itai Gat, Xiaoqing Tan, Yossi Adi, Jingyu Liu, Tal Remez, J. Rapin, Artyom Kozhevnikov, I. Evtimov, Joanna Bitton, Manish P Bhatt, Cristian Canton Ferrer, Aaron Grattafiori, Wenhan Xiong, Alexandre D'efossez, Jade Copet, Faisal Azhar | ๋‚ ์งœ: 2023 | DOI: - 📄 PDF


Essence

Figure 2: Code Llama ํŠนํ™” ํŒŒ์ดํ”„๋ผ์ธ. ๋‹ค์–‘ํ•œ ๋ฏธ์„ธ์กฐ์ •(fine-tuning) ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์—์„œ Instruct ๋ชจ๋ธ๋กœ ๋ฐœ์ „

Code Llama๋Š” Llama 2 ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ ์ƒ์„ฑ ๋Œ€๊ทœ๋ชจ์–ธ์–ด๋ชจ๋ธ(Large Language Model, LLM) ๊ณ„์—ด๋กœ, ์ฝ”๋“œ ์ธํ•„๋ง(infilling), ์žฅ๋ฌธ๋งฅ ์ฒ˜๋ฆฌ, ๋ช…๋ น์–ด ์ถ”์ข… ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ˜ ์ฐจ์„ธ๋Œ€ ์ฝ”๋“œ ์ƒ์„ฑ ๋ชจ๋ธ์ด๋‹ค. 7B๋ถ€ํ„ฐ 70B ํŒŒ๋ผ๋ฏธํ„ฐ๊นŒ์ง€ 4๊ฐ€์ง€ ํฌ๊ธฐ์˜ ๋ชจ๋ธ๊ณผ 3๊ฐ€์ง€ ๋ณ€ํ˜•(๊ธฐ๋ณธ, Python ํŠนํ™”, Instruct)์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ณต๊ฐœ ๋ชจ๋ธ ์ค‘ ์ตœ๊ณ  ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•œ๋‹ค.

Motivation

Achievement

  1. ๋ฒค์น˜๋งˆํฌ ์„ฑ๋Šฅ: HumanEval์—์„œ ์ตœ๊ณ  67%, MBPP์—์„œ 65% ๋‹ฌ์„ฑ(๊ณต๊ฐœ ๋ชจ๋ธ ๊ธฐ์ค€ ์ตœ์šฐ์ˆ˜). Code Llama-Python 7B๊ฐ€ Llama 2 70B๋ฅผ HumanEval๊ณผ MBPP์—์„œ ์ดˆ๊ณผ. MultiPL-E(๋‹ค์–ธ์–ด) ๋ฒค์น˜๋งˆํฌ์—์„œ ๋ชจ๋“  ๊ณต๊ฐœ ๋ชจ๋ธ ์ดˆ๊ณผ.
  2. ๋ชจ๋ธ ๋‹ค์–‘์„ฑ: ๊ธฐ๋ณธ ๋ชจ๋ธ(Code Llama), Python ํŠนํ™” ๋ชจ๋ธ(Code Llama-Python), ๋ช…๋ น์–ด ์ถ”์ข… ๋ชจ๋ธ(Code Llama-Instruct)๋กœ ์ƒ์ดํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ปค๋ฒ„. 7B, 13B, 34B, 70B ํฌ๊ธฐ๋กœ ๋ฐฐํฌ ํ™•์žฅ์„ฑ ์ œ๊ณต.
  3. ํ•ต์‹ฌ ๊ธฐ๋Šฅ: ์ธํ•„๋ง ๊ฐ€๋Šฅ ๋ชจ๋ธ(7B, 13B, 70B)์€ ๋ฌธ์„œ ์ค‘๊ฐ„์˜ ์ฝ”๋“œ ์™„์„ฑ ์ง€์›. ์ตœ๋Œ€ 100K ํ† ํฐ๊นŒ์ง€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ(16K ํ•™์Šต ํ›„ fine-tuning). ์ž๋™์ƒ์„ฑ ์ง€๋„ ๋ฐ์ดํ„ฐ๋กœ ์•ˆ์ „์„ฑ๊ณผ ์ง„์‹ค์„ฑ ๊ฐœ์„ .

How

Figure 2: Code Llama ํŠนํ™” ํŒŒ์ดํ”„๋ผ์ธ. ๊ธฐ์ดˆ ๋ชจ๋ธ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ์ฝ”๋“œ ํ•™์Šต(500B ํ† ํฐ), ์ธํ•„๋ง, Python ํŠนํ™”(100B), ์žฅ๋ฌธ๋งฅ ๋ฏธ์„ธ์กฐ์ •, ๋ช…๋ น์–ด ๋ฏธ์„ธ์กฐ์ •(~5B) ๋‹จ๊ณ„ ๊ฑฐ์นจ

Originality

Limitation & Further Study

Evaluation

์ดํ‰: Code Llama๋Š” ์ฒด๊ณ„์ ์ธ ๋‹ค๋‹จ๊ณ„ ํŠนํ™” ์ „๋žต์œผ๋กœ ๊ณต๊ฐœ ์ฝ”๋“œ ์ƒ์„ฑ LLM์˜ ์‹ค์šฉ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋™์‹œ์— ๋‹ฌ์„ฑํ•œ ๊ฒฌ๊ณ ํ•œ ์—ฐ๊ตฌ์ด๋‹ค. ํŠนํžˆ ์ธํ•„๋ง๊ณผ ์žฅ๋ฌธ๋งฅ ์ง€์›, ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ๊ฐ€์กฑ์œผ๋กœ ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋ถ€์‘ํ•˜๋Š” ์ ์ด ํ•ต์‹ฌ ๊ฐ•์ ์ด๋ฉฐ, ์ƒ์—…์šฉ ๋ผ์ด์„ ์Šค ๊ณต๊ฐœ๋ฅผ ํ†ตํ•ด ์‚ฐ์—… ํ™œ์šฉ๋„ ๋†’๋‹ค.

๊ฐ™์ด ๋ณด๋ฉด ์ข‹์€ ๋…ผ๋ฌธ

๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
Evaluating large language models trained on code (Codex)๋Š” ์ฝ”๋“œ ์ƒ์„ฑ ํŠนํ™” LLM ๋ฐœ์ „์˜ ์ดˆ์„์„ ์ œ๊ณตํ•˜๋ฉฐ, Code Llama ๋ฐ ํ›„์† ์˜คํ”ˆ์†Œ์Šค ํ‰๊ฐ€์˜ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
Code llama ๋…ผ๋ฌธ์€ ์ฝ”๋“œ ์ƒ์„ฑยทAPI ํ™œ์šฉ ์˜คํ”ˆ์†Œ์Šค LLM์˜ ํ•ต์‹ฌ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•˜์—ฌ ToolLLM์˜ ๊ธฐ๋ณธ ํ† ๋Œ€๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
Code Llama ๋…ผ๋ฌธ์€ StarCoder2์™€ ๋น„์Šทํ•œ ๋ชฉ์ ์˜ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ ์ƒ์„ฑ LLM ๊ฐœ๋ฐœ์˜ ์„ ๊ตฌ์  ์‚ฌ๋ก€๋กœ, ์ฃผ์š” ๋น„๊ต ๋Œ€์ƒ์ด ๋œ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
Code llama(230)๋Š” LLM์˜ ์ฝ”๋”ฉ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋ฉฐ, ์ž๋™ ์ฆ๋ช… ๋ฐ์ดํ„ฐ ํ•ฉ์„ฑ ๋ฐ ํ™œ์šฉ๊ณผ ์—ฐ๊ณ„ ์—ฐ๊ตฌ์— ๋ฐ”ํƒ•์ด ๋œ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
Code Llama๋Š” ๋Œ€๊ทœ๋ชจ ์ฝ”๋“œ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ๋กœ, LLM์„ ํ†ตํ•œ ์—ฐ๊ตฌ์ฝ”๋“œ ์ž๋™ ์ƒ์„ฑ ๋ฒค์น˜๋งˆํฌ์˜ ์ด๋ก ์  ๊ธฐ๋ฐ˜์ด ๋ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
Code Llama(230)์„ ๋Œ€ํ‘œํ•˜๋Š” ์ฝ”๋“œ ์–ธ์–ด๋ชจ๋ธ์ด seed-coder์˜ ํ›ˆ๋ จ ๋ฐ ํ‰๊ฐ€์— ์‹ค์งˆ์  ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
230์˜ Code llama ํ”„๋กœ์ ํŠธ๋Š” LLM ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์ƒ์„ฑยท์‹คํ–‰์˜ ๋Œ€ํ‘œ์  ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ, 3160์˜ ์ฝ”๋“œํผ์ŠคํŠธ LLM ์—์ด์ „ํŠธ๊ฐ€ ์ง€ํ–ฅํ•˜๋Š” ๊ธฐ์ˆ ์  ๋ฐฐ๊ฒฝ์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ฐ˜ ์—ฐ๊ตฌ
230์€ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ ๋ผ๋งˆ(LLM ๊ธฐ์ดˆ ๋ชจ๋ธ)๋ฅผ ์†Œ๊ฐœํ•ด, 3288์˜ LLM+ํŠธ๋ฆฌ์„œ์น˜ ๊ธฐ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด ์ƒ์„ฑ AI์˜ ๊ธฐ์ˆ ์ ยท๋ฐ์ดํ„ฐ์  ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•œ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
์ฝ”๋“œ ํŠนํ™” ์–ธ์–ด ๋ชจ๋ธ ๊ฐœ๋ฐœ์—์„œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์—ฐ๊ตฌ์ด๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
StarCoder์™€ ์œ ์‚ฌํ•œ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ LLM(Code Llama) ๋ชจ๋ธ๋กœ, ์ฝ”๋“œ ์ƒ์„ฑ ๋ฐ ์ฑ…์ž„์„ฑ ์žˆ๋Š” ์˜คํ”ˆ LLM ์ „๋žต์„ ๋‹ค๋ฅธ ํ”Œ๋žซํผ ๊ด€์ ์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
Code llama ๋…ผ๋ฌธ์€ ์ฝ”๋“œ ์ƒ์„ฑ์„ ์œ„ํ•œ ์˜คํ”ˆ LLM ์—ฐ๊ตฌ๋กœ, Codegen์˜ ๋ฉ€ํ‹ฐํ„ด ํ”„๋กœ๊ทธ๋žจ ํ•ฉ์„ฑ๊ณผ ์ฐจ๋ณ„์  ์ ‘๊ทผ๋ฒ•์„ ์ œ์‹œํ•œ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
Deepseek-coder ์—ญ์‹œ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ LLM์œผ๋กœ, ๋‹ค์–‘ํ•œ ๊ทœ๋ชจ์™€ ๋„๋ฉ”์ธ์—์„œ์˜ ์ฝ”๋“œ ์ƒ์„ฑ ๋Šฅ๋ ฅ์„ ๋น„๊ต ์—ฐ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
Code Llama ๋…ผ๋ฌธ์€ Llama ๊ณ„์—ด์˜ ์ฝ”๋“œ ํŠนํ™” ๋ชจ๋ธ๋กœ, Llama 3์˜ ๋ฒ”์šฉ์  ํŠน์ง•๊ณผ ๋น„๊ตํ•˜๋ฉฐ ์ฝ์œผ๋ฉด LLM ํ™•์žฅ์˜ ๋‹ค์–‘ํ•œ ๋ฐฉํ–ฅ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
230๋ฒˆ ๋…ผ๋ฌธ์€ ์ฝ”๋“œ์ง€ํ–ฅ LLM์˜ ์˜คํ”ˆ๋ชจ๋ธ ๊ตฌ์ถ•์— ๊ด€ํ•œ ์ตœ์‹  ์‚ฌ๋ก€๋กœ, 544๋ฒˆ์˜ ์‹ค์งˆ์  ๋””๋ฒ„๊น… ๋Šฅ๋ ฅ ํ‰๊ฐ€์™€ ์—ฐ๊ณ„ํ•ด ์ฝ๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
์ฐจํŠธ-์ฝ”๋“œ ๋ณ€ํ™˜์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ LLM ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ•์„ ๋‹ค๋ฃจ๋Š” ์œ ์‚ฌํ•œ ์—ฐ๊ตฌ์ด๋‹ค.
๋‹ค๋ฅธ ์ ‘๊ทผ
Code Llama ๋“ฑ ์ฝ”๋“œ ์ƒ์„ฑ/์ดํ•ด์— ํŠนํ™”๋œ LLM์˜ ๊ณผํ•™์  ๋ถ„์„๋Šฅ๋ ฅ ํ‰๊ฐ€์™€ DrugPlayGround์˜ ๋ฒค์น˜๋งˆํฌ(์•ฝ๋ฌผ ๋ฐœ๊ฒฌ ์ž‘์—… LLM ์„ฑ๋Šฅ)๊ฐ„ ๋น„๊ต๋Š” task ํŠน์ด์„ฑ๊ณผ LLM ๋ฒ”์šฉ์„ฑ์˜ ์ฐจ์ด๋ฅผ ๋“œ๋Ÿฌ๋ƒ…๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
Code Llama ๋“ฑ ๊ณต๊ฐœ ์†Œ์Šค ์ฝ”๋“œ ๊ธฐ๋ฐ˜ LLM๋“ค๊ณผ Codex๋ฅผ ์‹œ์Šคํ…œ ๋ฐ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
StarCoder 2๋Š” ์ฝ”๋“œ ์ƒ์„ฑ์— ํŠนํ™”๋œ ์ตœ์‹  ์˜คํ”ˆ์†Œ์Šค LLM์˜ ๋ฐœ์ „์ƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
ํ›„์† ์—ฐ๊ตฌ
Code Llama ๋…ผ๋ฌธ์€ SWE-bench ํ‰๊ฐ€์— ์ฐธ์—ฌํ•œ ์ตœ์‹  ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ ์–ธ์–ด๋ชจ๋ธ๋กœ, ์‹คํ—˜ ํ•œ๊ณ„์™€ ์„ฑ๋Šฅ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
์‘์šฉ ์‚ฌ๋ก€
SWE-bench๋Š” Code Llama ๊ฐ™์€ ์˜คํ”ˆ์†Œ์Šค ์ฝ”๋“œ ์ƒ์„ฑ LLM์˜ ์‹ค์ œ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง ์ด์Šˆ ํ•ด๊ฒฐ๋Šฅ๋ ฅ ํ•œ๊ณ„๋ฅผ ์‹คํ—˜์ ์œผ๋กœ ํ‰๊ฐ€ํ•œ๋‹ค.
← ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

๐ŸŽง Audio Overview

์ด ๋…ผ๋ฌธ ๋ฆฌ๋ทฐ๋ฅผ ํŒŸ์บ์ŠคํŠธํ˜• ์˜ค๋””์˜ค๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (Gemini ยท ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์—๋งŒ ์ €์žฅ ยท ์™„์„ฑ๋ณธ์€ ์ด๋ฉ”์ผ๋กœ๋„ ์ „์†ก)
โ–ธ ๊ณ ๊ธ‰: ๊ตฌ์„ฑ ๋ฐฉํ–ฅ(๋Œ€๋ณธ ์ž‘์„ฑ ์ง€์นจ) ์ง์ ‘ ์ˆ˜์ •