์ค๋๋ ๊ธฐ์
์์๋ LLM(๋ํ ์ธ์ด ๋ชจ๋ธ)์ ํ์ฉํ์ฌ ์์ฐ์ฑ์ ๋์ด๊ณ ์ง๋ฅํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ์ ๋ ๋ชจ์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ LLM ์ต์
์ค ๋ค์๋ ๋ฐ์ดํฐ ๋ถ์, ์ฝ๋ฉ ๋ฐ ์์
์๋ํ์ ๊ฐ์ ์ ๋ฌธ์ ์ธ ๊ธฐ์
์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ง์ถคํ๋์ง ์์ ์ผ๋ฐ ๋ชจ๋ธ์
๋๋ค. ์
๋ ฅํ๋ค ๋์ก์ด ๋ถ๊ทน โ ํต์ฌ ๊ธฐ์
์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์๋์ ์ผ๋ก ์ค๊ณ๋๊ณ ์ต์ ํ๋ ์ต์ฒจ๋จ LLM์
๋๋ค.
Snowflake์ AI ์ฐ๊ตฌํ์ด ๊ฐ๋ฐํ Arctic์ ํจ์จ์ ์ธ ํ์ต, ๋น์ฉ ํจ์จ์ฑ, ๊ทธ๋ฆฌ๊ณ ๋
๋ณด์ ์ธ ์์ค์ ๊ฐ๋ฐฉ์ฑ์ ํตํด ๊ฐ๋ฅ์ฑ์ ํ๊ณ๋ฅผ ๋ํ์ค๋๋ค. ์ด ํ์ ์ ์ธ ๋ชจ๋ธ์ ๊ธฐ์กด LLM๋ณด๋ค ํจ์ฌ ๋ฎ์ ์ปดํจํ
์ฑ๋ฅ์ ์๊ตฌํ๋ฉด์๋ ์ฃผ์ ์ํฐํ๋ผ์ด์ฆ ๋ฒค์น๋งํฌ์์ ํ์ํ ์ฑ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค. Arctic์ด ์ํฐํ๋ผ์ด์ฆ AI์ ํ๋๋ฅผ ๋ฐ๊พธ๋ ์์ธ์ด ๋ฌด์์ธ์ง ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ์
์ธํ
๋ฆฌ์ ์ค ์ฌ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก Arctic์ ์ฝ๋ฉ, SQL ์ฟผ๋ฆฌ, ๋ณต์กํ ์ง์นจ ๋ฐ๋ฅด๊ธฐ, ๊ทผ๊ฑฐ ์๋ ์ฌ์ค ๊ธฐ๋ฐ ์ถ๋ ฅ ์์ฑ ๋ฑ ๊ธฐ์
์ ์ ๋ง๋ก ์ค์ํ ์ธก์ ๊ธฐ์ค์ ๋ํ ํ์ํ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. Snowflake๋ ์ด๋ฌํ ์ค์ํ ๊ธฐ๋ฅ์ ์๋ก์ด "์ํฐํ๋ผ์ด์ฆ ์ธํ
๋ฆฌ์ ์ค" ๋ฉํธ๋ฆญ.
๊ฒฐ๊ณผ๊ฐ ๋งํด์ค๋๋ค. Arctic์ ๊ต์ก์ ์ปดํจํ
์์ฐ์ ์ ๋ฐ ๋ฏธ๋ง์ผ๋ก ์ฌ์ฉํ๋ฉด์ ์ํฐํ๋ผ์ด์ฆ ์ธํ
๋ฆฌ์ ์ค ๋ฒค์น๋งํฌ์์ LLAMA 7B ๋ฐ LLAMA 70B์ ๊ฐ์ ๋ชจ๋ธ์ ์ถฉ์กฑํ๊ฑฐ๋ ๋ฅ๊ฐํฉ๋๋ค. ๋๋๊ฒ๋, ํ์ฉ์๋ ๋ถ๊ตฌํ๊ณ LLAMA 17B๋ณด๋ค 70๋ฐฐ ์ ์ ์ปดํจํ
๋ฆฌ์์ค, Arctic์ ์ฝ๋ฉ(HumanEval+, MBPP+), SQL ์์ฑ(Spider) ๋ฐ ๋ช
๋ น ๋ฐ๋ฅด๊ธฐ(IFEval)์ ๊ฐ์ ํน์ ํ
์คํธ์์ ํจ๋ฆฌํฐ๋ฅผ ๋ฌ์ฑํฉ๋๋ค.
ํ์ง๋ง Arctic์ ์ญ๋์ ๋จ์ํ ์ํฐํ๋ผ์ด์ฆ ๋ฒค์น๋งํฌ์์ ๋์ ์ฑ๊ณผ๋ฅผ ๊ฑฐ๋๋ ๋ฐ ๊ทธ์น์ง ์์ต๋๋ค. DBRX์ฒ๋ผ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ ์ปดํจํ
์์ฐ์ผ๋ก ํ์ต๋ ๋ชจ๋ธ๊ณผ ๋น๊ตํ์ ๋, Arctic์ ์ผ๋ฐ์ ์ธ ์ธ์ด ์ดํด, ์ถ๋ก , ๊ทธ๋ฆฌ๊ณ ์ํ์ ์ ์ฑ ์ ๋ฐ์ ๊ฑธ์ณ ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ์งํฉ๋๋ค. ์ด๋ฌํ ์ข
ํฉ์ ์ธ ์ญ๋ ๋๋ถ์ Arctic์ ๊ธฐ์
์ ๋ค์ํ AI ์๊ตฌ ์ฌํญ์ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ์ ํ์
๋๋ค.
ํ์
Dense-MoE ํ์ด๋ธ๋ฆฌ๋ ํธ๋์คํฌ๋จธ Snowflake ํ์ ์ด๋ป๊ฒ ์ด์ฒ๋ผ ๋๋๋๋ก ๊ฐ๋ ฅํ๋ฉด์๋ ํจ์จ์ ์ธ LLM์ ๊ตฌ์ถํ์๊น์? ์ ๋ต์ Arctic์ ์ต์ฒจ๋จ Dense Mixture-of-Experts(MoE) ํ์ด๋ธ๋ฆฌ๋ ํธ๋์คํฌ๋จธ ์ํคํ
์ฒ์ ์์ต๋๋ค.
๊ธฐ์กด์ ๋ฐ๋๊ฐ ๋์ ๋ณ์๊ธฐ ๋ชจ๋ธ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ํ๋ จ ๋น์ฉ์ด ์ ์ ๋ ๋ง์ด ๋ค๊ณ ๊ณ์ฐ ์๊ตฌ ์ฌํญ๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. MoE ์ค๊ณ๋ ์ฌ๋ฌ ๋ณ๋ ฌ ํผ๋ํฌ์๋ ๋คํธ์ํฌ(์ ๋ฌธ๊ฐ)๋ฅผ ํ์ฉํ๊ณ ๊ฐ ์
๋ ฅ ํ ํฐ์ ๋ํ ํ์ ์งํฉ๋ง ํ์ฑํํ์ฌ ์ด๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํ์ง๋ง ๋จ์ํ MoE ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. Arctic์ Dense์ MoE ๊ตฌ์ฑ ์์์ ์ฅ์ ์ ๋
์ฐฝ์ ์ผ๋ก ๊ฒฐํฉํฉ๋๋ค. 10์ต ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง Dense Transformer ์ธ์ฝ๋์ 128๊ฐ์ Expert Residual MoE ๋ค์ธต ํผ์
ํธ๋ก (MLP) ๊ณ์ธต์ ๊ฒฐํฉํฉ๋๋ค. ์ด Dense-MoE ํ์ด๋ธ๋ฆฌ๋ ๋ชจ๋ธ์ ์ด 480์ต ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, Top-17 ๊ฒ์ดํ
์ ์ฌ์ฉํ๋ฉด ํญ์ ํ์ฑํ๋๋ ๋งค๊ฐ๋ณ์๋ 2์ต ๊ฐ๋ฟ์
๋๋ค.
๊ทธ ์๋ฏธ๋ ์ฌ์คํฉ๋๋ค. Arctic์ ์ ๋ก ์๋ ๋ชจ๋ธ ํ์ง๊ณผ ์ฉ๋์ ๋ฌ์ฑํ๋ ๋์์ ํ๋ จ ๋ฐ ์ถ๋ก ์ค์ ๋๋ผ์ด ์ปดํจํ
ํจ์จ์ฑ์ ์ ์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด Arctic์ ์ถ๋ก ์ค์ DBRX์ ๊ฐ์ ๋ชจ๋ธ๋ณด๋ค ํ์ฑ ๋งค๊ฐ๋ณ์๊ฐ 50% ์ ์ต๋๋ค.
ํ์ง๋ง ๋ชจ๋ธ ์ํคํ
์ฒ๋ ์ด์ผ๊ธฐ์ ์ผ๋ถ์ผ ๋ฟ์
๋๋ค. Arctic์ ํ์ํ ์ฑ๊ณผ๋ Snowflake ์ฐ๊ตฌํ์ด ๊ฐ๋ฐํ ์ฌ๋ฌ ์ ๊ตฌ์ ์ธ ๊ธฐ์ ๊ณผ ํต์ฐฐ๋ ฅ์ ์ ์ ์ ์์ต๋๋ค.
- ๊ธฐ์
์ค์ฌ ๊ต์ก ๋ฐ์ดํฐ ์ปค๋ฆฌํ๋ผ: ๊ด๋ฒ์ํ ์คํ์ ํตํด ํ์ ์์์ ์ถ๋ก ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ธฐ์ ์ ์กฐ๊ธฐ์ ํ์ตํ๋ ๊ฒ์ด ์ข์ง๋ง, ์ฝ๋ฉ์ด๋ SQL๊ณผ ๊ฐ์ ๋ ๋ณต์กํ ์ ๋ฌธ ๋ถ์ผ๋ ๊ต์ก ๊ณผ์ ํ๋ฐ์ ์ต๋ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ด๋ผ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. Arctic์ ๋ฐ์ดํฐ ์ปค๋ฆฌํ๋ผ์ ์ธ๊ฐ์ ํ์ต ๊ณผ์ ์ ๋ชจ๋ฐฉํ 3๋จ๊ณ ์ ๊ทผ ๋ฐฉ์์ ๋ฐ๋ฆ
๋๋ค.
์ฒซ ๋ฒ์งธ ํ
๋ผํ ํฐ์ ๊ด๋ฒ์ํ ์ผ๋ฐ ๊ธฐ๋ฐ ๊ตฌ์ถ์ ์ค์ ์ ๋ก๋๋ค. ๋ค์ 1.5๊ฐ์ ํ
๋ผํ ํฐ์ SQL, ์ฝ๋ฉ ์์
๋ฑ์ ๋ง์ถฐ ์กฐ์ ๋ ๋ฐ์ดํฐ๋ฅผ ํตํด ๊ธฐ์
์ญ๋์ ๊ฐ๋ฐํ๋ ๋ฐ ์ง์คํฉ๋๋ค. ๋ง์ง๋ง ํ
๋ผํ ํฐ์ ์ ์ ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ Arctic์ ์ ๋ฌธ ๋ถ์ผ๋ฅผ ๋์ฑ ๊ตฌ์ฒดํํฉ๋๋ค.
- ์ต์ ์ ์ํคํ
์ฒ ์ ํ MoE๋ ์ปดํจํ
๋น ๋ ๋์ ํ์ง์ ์ฝ์ํ์ง๋ง ์ฌ๋ฐ๋ฅธ ๊ตฌ์ฑ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํ์ง๋ง ์ด์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํฉ๋๋ค. ์์ธํ ์ฐ๊ตฌ๋ฅผ ํตํด Snowflake๋ ํ์ง ํจ์จ์ฑ ๊ท ํ์ ํ๊ฐํ ํ ๋ชจ๋ ๊ณ์ธต์์ ์์ 128๊ฐ์ ๊ฒ์ดํ
์ ๊ฐ์ถ 2๋ช
์ ์ ๋ฌธ๊ฐ๋ฅผ ๊ณ ์ฉํ๋ ์ํคํ
์ฒ๋ฅผ ์ ํํ์ต๋๋ค.
์ ๋ฌธ๊ฐ ์๋ฅผ ๋๋ฆฌ๋ฉด ๋ ๋ง์ ์กฐํฉ์ด ์ ๊ณต๋์ด ๋ชจ๋ธ ์ฉ๋์ด ํฅ์๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ก ์ธํด ํต์ ๋น์ฉ๋ ์ฆ๊ฐํ๋ฏ๋ก Snowflake๋ ์ต์ ์ ๊ท ํ์ผ๋ก Top-128 ๊ฒ์ดํ
์ ํตํด ํ์ฑํ๋ ์ ์คํ๊ฒ ์ค๊ณ๋ 2๋ช
์ "์ถ์ ๋" ์ ๋ฌธ๊ฐ๋ฅผ ์ ํํ์ต๋๋ค.
- ์์คํ
๊ณต๋ ์ค๊ณ ๊ทธ๋ฌ๋ ์ต์ ์ ๋ชจ๋ธ ์ํคํ
์ฒ๋ผ๋ ์์คํ
๋ณ๋ชฉ ํ์์ผ๋ก ์ธํด ์ฝํ๋ ์ ์์ต๋๋ค. ๊ทธ๋์ Snowflake ํ์ ์ฌ๊ธฐ์๋ ํ์ ์ ์ด๋ฃจ์์ต๋๋ค. ์ฆ, ๊ธฐ๋ณธ ๊ต์ก ๋ฐ ์ถ๋ก ์์คํ
๊ณผ ํจ๊ป ๋ชจ๋ธ ์ํคํ
์ฒ๋ฅผ ๊ณต๋ ์ค๊ณํ์ต๋๋ค.
ํจ์จ์ ์ธ ํ์ต์ ์ํด, dense ๋ฐ MoE ๊ตฌ์ฑ ์์๋ ํต์ ๋ฐ ์ฐ์ฐ์ด ์ค๋ณต๋๋๋ก ๊ตฌ์กฐํ๋์ด ์๋นํ ํต์ ์ค๋ฒํค๋๋ฅผ ์จ๊ฒผ์ต๋๋ค. ์ถ๋ก ์ธก๋ฉด์์, ํ์ NVIDIA์ ํ์ ๊ธฐ์ ์ ํ์ฉํ์ฌ Arctic์ ๊ท๋ชจ์๋ ๋ถ๊ตฌํ๊ณ ๋งค์ฐ ํจ์จ์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ตฌํํ์ต๋๋ค.
FP8 ์์ํ์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ๋จ์ผ GPU ๋
ธ๋์์ ์ ์ฒด ๋ชจ๋ธ์ ํผํ
ํ์ฌ ๋ํํ ์ถ๋ก ์ ์ํํ ์ ์์ต๋๋ค. ๋ ํฐ ๋ฐฐ์น๋ Arctic์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ๋
ธ๋์ ๊ฑธ์ณ ํ์ฉํ๋ฉด์๋ 17B์ ์ปดํฉํธํ ํ์ฑ ๋งค๊ฐ๋ณ์ ๋๋ถ์ ๋ฐ์ด๋ ์ปดํจํ
ํจ์จ์ฑ์ ์ ์งํฉ๋๋ค.
Apache 2.0 ๋ผ์ด์ ์ค๋ฅผ ํตํด Arctic์ ๊ฐ์ค์น์ ์ฝ๋๋ ๊ฐ์ธ, ์ฐ๊ตฌ ๋๋ ์์
์ ์ฉ๋๋ก ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง Snowflake๋ ํ ๊ฑธ์ ๋ ๋์๊ฐ Arctic์ ๊ธฐ๋ฐ์ด ๋๋ ์ ์ฒด ๋ฐ์ดํฐ ๋ ์ํผ, ๋ชจ๋ธ ๊ตฌํ, ํ, ๊ทธ๋ฆฌ๊ณ ์ฌ์ธต์ ์ธ ์ฐ๊ตฌ ํต์ฐฐ๋ ฅ์ ์คํ์์ค๋ก ๊ณต๊ฐํ์ต๋๋ค.
"๋ถ๊ทน ์๋ฆฌ์ฑ
"๋ Arctic๊ณผ ๊ฐ์ ๋๊ท๋ชจ MoE ๋ชจ๋ธ ๊ตฌ์ถ ๋ฐ ์ต์ ํ์ ๋ชจ๋ ์ธก๋ฉด์ ๋ค๋ฃจ๋ ํฌ๊ด์ ์ธ ์ง์ ๊ธฐ๋ฐ์
๋๋ค. ๋ฐ์ดํฐ ์์ฑ, ๋ชจ๋ธ ์ํคํ
์ฒ ์ค๊ณ, ์์คํ
๊ณต๋ ์ค๊ณ, ์ต์ ํ๋ ํ๋ จ/์ถ๋ก ์ฒด๊ณ ๋ฑ์ ๋ํ ์ฃผ์ ํ์ต ๋ด์ฉ์ ์ ๋ฆฌํฉ๋๋ค.
์ต์ ์ ๋ฐ์ดํฐ ์ปค๋ฆฌํ๋ผ ์๋ณ๋ถํฐ ์ปดํ์ผ๋ฌ, ์ค์ผ์ค๋ฌ ๋ฐ ํ๋์จ์ด๋ฅผ ๊ณต๋ ์ต์ ํํ๋ ๋์์ MoE ์ค๊ณ์ ์ด๋ฅด๊ธฐ๊น์ง ์ด ๊ด๋ฒ์ํ ์ง์ ์ฒด๊ณ๋ ์ด์ ์ ์๋ฆฌํธ AI ์ฐ๊ตฌ์์ ๊ตญํ๋์๋ ๊ธฐ์ ์ ๋ฏผ์ฃผํํฉ๋๋ค. Arctic Cookbook์ ํ์ต ๊ณก์ ์ ๊ฐ์ํํ๊ณ ์ ์ธ๊ณ ๊ธฐ์
, ์ฐ๊ตฌ์ ๋ฐ ๊ฐ๋ฐ์๊ฐ ๊ฑฐ์ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๋ ๋น์ฉ ํจ์จ์ ์ธ ๋ง์ถคํ LLM์ ๋ง๋ค ์ ์๋๋ก ์ง์ํฉ๋๋ค.
๋ถ๊ทน ์์ํ๊ธฐ
Arctic ํ์ฉ์ ๊ด์ฌ์ด ์๋ ๊ธฐ์
์ ์ํด Snowflake๋ ๋น ๋ฅด๊ฒ ์์ํ ์ ์๋ ๋ค์ํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฒ๋ฆฌ์ค ์ถ๋ก : Snowflake ๊ณ ๊ฐ์ Snowflake์ ์์ ๊ด๋ฆฌํ AI ํ๋ซํผ์ธ Snowflake Cortex์์ Arctic ๋ชจ๋ธ์ ๋ฌด๋ฃ๋ก ์ด์ฉํ ์ ์์ต๋๋ค. Arctic์ AWS, Microsoft Azure, NVIDIA ๋ฑ ๋ชจ๋ ์ฃผ์ ๋ชจ๋ธ ์นดํ๋ก๊ทธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒ์๋ถํฐ ์์: ์คํ ์์ค ๋ชจ๋ธ ๊ฐ์ค์น ๋ฐ ๊ตฌํ์ ํตํด ๊ฐ๋ฐ์๋ Arctic์ ์ฑ ๋ฐ ์๋น์ค์ ์ง์ ํตํฉํ ์ ์์ต๋๋ค. Arctic ์ ์ฅ์๋ ์ฝ๋ ์ํ, ๋ฐฐํฌ ํํ ๋ฆฌ์ผ, ๋ฏธ์ธ ์กฐ์ ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ณตํฉ๋๋ค.
์ฌ์ฉ์ ์ ์ ๋ชจ๋ธ ๊ตฌ์ถ: Arctic Cookbook์ ํฌ๊ด์ ์ธ ๊ฐ์ด๋ ๋๋ถ์ ๊ฐ๋ฐ์๋ Arctic ๊ฐ๋ฐ์์ ์ป์ ์ง์์ ํ์ฉํ์ฌ ๋ชจ๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ์ต์ ํ๋ ์ฌ์ฉ์ ์ ์ MoE ๋ชจ๋ธ์ ์ฒ์๋ถํฐ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ฐ๋ฐฉํ ์ํฐํ๋ผ์ด์ฆ AI Arctic์ ์๋ก์ด ์๋๋ ๋จ์ํ ๊ฐ๋ ฅํ ์ธ์ด ๋ชจ๋ธ ๊ทธ ์ด์์
๋๋ค. ์ด๋ ๊ธฐ์
์ ์ํด ํน๋ณํ ๊ตฌ์ถ๋ ๊ฐ๋ฐฉ์ ์ด๊ณ ๋น์ฉ ํจ์จ์ ์ด๋ฉฐ ์ ๋ฌธํ๋ AI ๊ธฐ๋ฅ์ ์๋ก์ด ์๋๋ฅผ ์๊ณ ํฉ๋๋ค.
๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์ฝ๋ฉ ์์ฐ์ฑ ํ์ ๋ถํฐ ์์
์๋ํ ๋ฐ ๋์ฑ ์ค๋งํธํ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์ถ๊น์ง, Arctic์ ๊ธฐ์
์ค์ฌ DNA๋ ์ผ๋ฐ LLM๋ณด๋ค ํ์ํ ์ ํ์
๋๋ค. ๋ํ, ๋ชจ๋ธ๋ฟ๋ง ์๋๋ผ ๊ทธ ๊ธฐ๋ฐ์ด ๋๋ ์ ์ฒด R&D ํ๋ก์ธ์ค๋ฅผ ์คํ์์ค๋ก ๊ณต๊ฐํจ์ผ๋ก์จ Snowflake๋ AI ์ํ๊ณ ์ ๋ฐ์ ๋ฐ์ ์ํฌ ํ์
๋ฌธํ๋ฅผ ์กฐ์ฑํ๊ณ ์์ต๋๋ค.
๊ธฐ์
๋ค์ด ์์ฑ์ AI๋ฅผ ์ ์ ๋ ์ ๊ทน์ ์ผ๋ก ๋์
ํจ์ ๋ฐ๋ผ, Arctic์ ํ๋ก๋์
์ํฌ๋ก๋์ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์ ๊ฐ๊ด์ ์ผ๋ก ๋ ์ฐ์ํ ๋ชจ๋ธ์ ๊ฐ๋ฐํ ์ ์๋ ๊ณผ๊ฐํ ์ฒญ์ฌ์ง์ ์ ์ํฉ๋๋ค. ์ต์ฒจ๋จ ์ฐ๊ตฌ, ํ์ํ ํจ์จ์ฑ, ๊ทธ๋ฆฌ๊ณ ํ๊ณ ํ ๊ฐ๋ฐฉ์ ์ ์ ์ด ์ด์ฐ๋ฌ์ง Arctic์ AI์ ํ์ ์ ์ธ ์ ์ฌ๋ ฅ์ ๋์คํํ๋ ๋ฐ ์๋ก์ด ๊ธฐ์ค์ ์ ์ํฉ๋๋ค.
Snowflake Arctic ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ฝ๋ ์์ ๊ฐ ์๋ ์น์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ถ๊ทน ์ฒดํ
์ด์ Arctic์ด ์ง์ ์ผ๋ก ํ๊ธฐ์ ์ด๋ผ๊ณ ํ ์ ์๋ ์์๊ฐ ๋ฌด์์ธ์ง ์ดํด๋ณด์์ผ๋, ๊ฐ๋ฐ์์ ๋ฐ์ดํฐ ๊ณผํ์๊ฐ ์ด ๊ฐ๋ ฅํ ๋ชจ๋ธ์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
Arctic์ ์ฌ์ ํ๋ จ๋์ด Hugging Face ๋ฐ ํํธ๋ AI ํ๋ซํผ๊ณผ ๊ฐ์ ์ฃผ์ ๋ชจ๋ธ ํ๋ธ๋ฅผ ํตํด ๋ฐฐํฌํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์ฌ์ฉ์ ์ ์ํ๊ณ ๋ฏธ์ธ ์กฐ์ ํ ๋ ์ง์ ํ ํ์ด ๋๋ฌ๋ฉ๋๋ค.
Arctic์ Apache 2.0 ๋ผ์ด์ ์ค๋ ์ฑ, ์๋น์ค ๋๋ ๋ง์ถคํ AI ์ํฌํ๋ก์ ์์ ๋กญ๊ฒ ํตํฉํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ์์์ ์ํด transforms ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์ฝ๋ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ถ๊ทน์ ์ด์ฉํ ๊ธฐ๋ณธ ์ถ๋ก
๋น ๋ฅธ ํ
์คํธ ์์ฑ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํด Arctic์ ๋ก๋ํ๊ณ ๊ธฐ๋ณธ ์ถ๋ก ์ ๋งค์ฐ ์ฝ๊ฒ ์คํํ ์ ์์ต๋๋ค.
from transformers import AutoTokenizer, AutoModelForCausalLM
# Load the tokenizer and model
tokenizer = AutoTokenizer.from_pretrained("Snowflake/snowflake-arctic-instruct")
model = AutoModelForCausalLM.from_pretrained("Snowflake/snowflake-arctic-instruct")
# Create a simple input and generate text
input_text = "Here is a basic question: What is the capital of France?"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
# Generate response with Arctic
output = model.generate(input_ids, max_length=150, do_sample=True, top_k=50, top_p=0.95, num_return_sequences=1)
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋์ด์ผ ํฉ๋๋ค.
ํ๋์ค์ ์๋๋ ํ๋ฆฌ์
๋๋ค. ํ๋ฆฌ๋ ํ๋์ค ์ต๋ ๋์์ด์ ๊ฒฝ์ , ์ ์น, ๋ฌธํ์ ์ค์ฌ์ง์
๋๋ค. ์ํ ํ, ๋ฃจ๋ธ๋ฅด ๋ฐ๋ฌผ๊ด, ๋
ธํธ๋ฅด๋ด ๋์ฑ๋น ๋ฑ ์ ๋ช
๋๋๋งํฌ๊ฐ ์๋ ๊ณณ์
๋๋ค.
๋ณด์๋ค์ํผ Arctic์ ์ฟผ๋ฆฌ๋ฅผ ์๋ฒฝํ๊ฒ ์ดํดํ๊ณ ๊ฐ๋ ฅํ ์ธ์ด ์ดํด ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์์ธํ๊ณ ๊ธฐ์ด์ ์ธ ์๋ต์ ์ ๊ณตํฉ๋๋ค.
์ ๋ฌธ์ ์ธ ์์
์ ์ํ ๋ฏธ์ธ ์กฐ์
Arctic์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์์ ์ด์ง๋ง ํน์ํ ์์
์ ์ํด ๋
์ ๋ฐ์ดํฐ๋ฅผ ๋ง์ถคํํ๊ณ ๋ฏธ์ธ ์กฐ์ ํ ๋ ์ง์ ์ผ๋ก ๋น์ ๋ฐํฉ๋๋ค. Snowflake๋ ๋ค์์ ํฌํจํ๋ ๊ด๋ฒ์ํ ๋ ์ํผ๋ฅผ ์ ๊ณตํ์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก์ ๋ง๋ ๊ณ ํ์ง ๊ต์ก ๋ฐ์ดํฐ ์ ๋ณ
- ๋ง์ถคํ ๋ค๋จ๊ณ ๊ต์ก ์ปค๋ฆฌํ๋ผ ์ค์
- ํจ์จ์ ์ธ LoRA, P-Tuning ๋๋ FactorizedFusion ๋ฏธ์ธ ์กฐ์ ์ ๊ทผ ๋ฐฉ์ ํ์ฉ
- ์๋ชฉ ์๋ SQL, ์ฝ๋ฉ ๋๋ ๊ธฐํ ํต์ฌ ๊ธฐ์
๊ธฐ์ ์ ์ํ ์ต์ ํ
๋ค์์ LoRA์ Snowflake์ ๋ ์ํผ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ์ฝ๋ฉ ๋ฐ์ดํฐ ์ธํธ์์ Arctic์ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์์
๋๋ค.
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model, prepare_model_for_int8_training
# Load base Arctic model
tokenizer = AutoTokenizer.from_pretrained("Snowflake/snowflake-arctic-instruct")
model = AutoModelForCausalLM.from_pretrained("Snowflake/snowflake-arctic-instruct", load_in_8bit=True)
# Initialize LoRA configs
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["query_key_value"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
# Prepare model for LoRA finetuning
model = prepare_model_for_int8_training(model)
model = get_peft_model(model, lora_config)
# Your coding datasets
data = load_coding_datasets()
# Fine-tune with Snowflake's recipes
train(model, data, ...)
์ด ์ฝ๋๋ Arctic์ ์์ฝ๊ฒ ๋ก๋ํ๊ณ , ์ฝ๋ ์์ฑ์ ๋ง์ถฐ LoRA ๊ตฌ์ฑ์ ์ด๊ธฐํํ ๋ค์, Snowflake์ ๊ฐ์ด๋๋ฅผ ํ์ฉํ์ฌ ๋
์ ์ ์ธ ์ฝ๋ฉ ๋ฐ์ดํฐ ์ธํธ์์ ๋ชจ๋ธ์ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ง์ถคํ๋๊ณ ์ ๋ฐํ๊ฒ ์กฐ์ ๋ Arctic์ ํต์ฌ ๊ธฐ์
์ํฌํ๋ก์ฐ์ ์ดํด๊ด๊ณ์ ์๊ตฌ ์ฌํญ์ ๋ํด ํ์ํ ์ฑ๋ฅ์ ์ ๊ณตํ๋๋ก ์กฐ์ ๋ ํ๋ผ์ด๋น ๊ฐ๊ตญ์ด ๋ฉ๋๋ค.