Short Claim Plan 56 KO - teamswyg/laya-tools GitHub Wiki

์งง์€ ์ฃผ์žฅ๊ณผ ์ž‘์€ Go ๋ชจ๋ธ: ์‹คํ—˜ 56 ์ค€๋น„ ๊ณ„ํš

English ยท ๊ธฐ๊ณ„ ํŒ๋… ๊ณ„ํš ยท ๊ณจ๋“ ์…‹ ๊ทœ๋ชจ

ํ˜„์žฌ ์ƒํƒœ๋Š” prepare_contracts_only๋‹ค. ์ƒˆ ๋ฐ์ดํ„ฐ 0๊ฐœ, ํ•™์Šต 0ํšŒ, ๊ฐ€์ค‘์น˜ 0๊ฐœ์ด๋ฉฐ ์‹คํ–‰ ์„ฑ๋Šฅ๋„ ์•„์ง ์ธก์ •ํ•˜์ง€ ์•Š์•˜๋‹ค. ์ž๋ฃŒยท๋ถ„ํ• ยท์‹คํ–‰ ๊ณ„ํš์˜ ์ค€๋น„ gate๊ฐ€ ๋ฏธ์™„๋ฃŒ๋ผ๋Š” ๋œป์ด๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ง€์†์ ์ธ ๋กœ์ปฌ ํ•™์Šตยท๊ฒ€์ฆยท๊ณต๊ฐœ ๊ฒŒ์‹œ๋ฅผ ์ด๋ฏธ ์Šน์ธํ–ˆ๋‹ค. ์ค€๋น„ gate์™€ ๊ณ„ํšยทCI๊ฐ€ ๊ฐ–์ถฐ์ง€๋ฉด ๊ทธ ๋ฒ”์œ„์—์„œ ์ง„ํ–‰ํ•˜๋ฉฐ ์ถ”๊ฐ€ ์‚ฌ๋žŒ ์Šน์ธ ์ ˆ์ฐจ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค. ์ƒˆ ํ•™์Šตยท๋ชจ๋ธ ๊ฒŒ์‹œยทproduction ํ™œ์„ฑํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ธฐ๋ก์€ ์•„๋‹ˆ๋‹ค.

๋ชฉํ‘œ๋Š” ํฐ ์ธ์ฝ”๋” ์—†์ด ๋งŽ์€ ์ž‘์€ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ์—๋Š” **โ€œ์ด ํ›„๋ณด์— ์š”๊ตฌํ•œ ๋™์ž‘์„ ์ถฉ์กฑํ•˜๋Š” ๊ทผ๊ฑฐ๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹คโ€**๋Š” ์ฃผ์žฅ ํ•˜๋‚˜๋งŒ ๋‹ค๋ฃฌ๋‹ค. ๋ชจ๋ธ ๋‚œ์ด๋„, ์‹ค์ œ ์ž‘์—… ์„ฑ๊ณต, ์ž๋™ ์Šน์ธ์ด๋‚˜ ์š”๊ธˆ ์ ˆ๊ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์˜ˆ์ธกํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ์กด ์‹คํ—˜๊ณผ ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€

์‹คํ—˜ 55๋Š” ์™ธ๋ถ€ Go ์š”์ฒญ ๋‘ ๊ฐœ๋ฅผ ๋‘ ํ”„๋กœํ•„๋กœ ๊ฐ๊ฐ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•œ ๋„ค ์‹œ๋„๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค. ํ”„๋กœํ•„ยท์š”์ฒญ ์กฐํ•ฉ๋งˆ๋‹ค ํ•œ ๋ฒˆ์ธ ๊ฐœ๋ฐœ ๋น„๊ต์—ฌ์„œ ์ผ๋ฐ˜ ์„ฑ๋Šฅ์ด๋‚˜ ์•ˆ์ •์ ์ธ ์„ฑ๊ณต๋ฅ ์„ ํŒ๋‹จํ•˜๊ธฐ์—๋Š” ๋ถ€์กฑํ•˜๋‹ค. ์‚ฌ์ „ Laya ๊ด€์ธก์€ ์ „์ฒด ์›๋ฌธ์„ ์ „๋‹ฌํ–ˆ์ง€๋งŒ 512ํ† ํฐ์—์„œ ์ž˜๋ ค ๋ณด๋ฅ˜ํ–ˆ๋‹ค. ๊ทธ ๊ธฐ๋ก์€ cold CPU ์ „์ฒด ํ”„๋กœ์„ธ์Šค ๊ด€์ธก์ด๋ฉฐ ์ž‘์€ ์ฃผ์žฅ ๋ชจ๋ธ์˜ ์ž์› ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋‹ค.

56์˜ ์งง์€ ์ž…๋ ฅ์€ ์ƒˆ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ณ„๋„ ๊ณ„์•ฝ์ด๋‹ค. 55์˜ ์›๋ฌธยท์ •๋‹ตยทspecยทํ•ด์‹œยทํ† ํฐ ์˜ˆ์‚ฐ๊ณผ ๊ณผ๊ฑฐ ๋ด‰์ธ ๊ณ„ํš์€ ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค. ๊ธฐ์กด ์š”์ฒญ์„ ์ค„์—ฌ์„œ 55๋ฅผ ๋‹ค์‹œ ์ฑ„์ ํ•˜๊ฑฐ๋‚˜ ์„ฑ๊ณต๋ฅ ์„ ๋†’์ด์ง€ ์•Š๋Š”๋‹ค. ์ดˆ๊ธฐ์—๋Š” ์ƒ์„ฑ ๋ชจ๋ธยท์ž๋™ ์š”์•ฝยทLaya ์ธ์ฝ”๋”ยท๊ต์‚ฌ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ•œ์ •๋œ ์ฃผ์žฅ๊ณผ ์ž…๋ ฅ

์˜ˆ๋ฅผ ๋“ค์–ด ์š”๊ตฌ๊ฐ€ โ€œํ™œ์„ฑ ํ•ญ๋ชฉ์€ ๋‚จ๊ธฐ๊ณ  ๋งŒ๋ฃŒ ํ•ญ๋ชฉ์€ ์ œ๊ฑฐํ•œ๋‹คโ€๋ผ๋ฉด, โ€œ๋งŒ๋ฃŒ ํ•ญ๋ชฉ์€ ๋‚จ๊ธฐ๊ณ  ํ™œ์„ฑ ํ•ญ๋ชฉ์€ ์ œ๊ฑฐํ•œ๋‹คโ€๋ผ๋Š” ํ›„๋ณด์™€ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค. ์ตœ์ดˆ ์˜์—ญ์€ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์œ ์ง€/์ œ๊ฑฐ, ํ—ˆ์šฉ/๊ฑฐ์ ˆ, ์ˆœ์„œ ๋ณด์กด๊ณผ ํฌํ•จ ๊ฒฝ๊ณ„๊ฐ’์ฒ˜๋Ÿผ ๋…๋ฆฝ ๊ฒ€์‚ฌ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์ด๋‹ค.

์ƒˆ ์ž…๋ ฅ์—๋Š” ์งง์€ request, ์งง์€ candidate, ํŠน์ง• ๊ณ„์•ฝ schema, ์›์ฒœ ์—ฐ๊ฒฐ์šฉ provenance๋ฅผ ๋‘”๋‹ค. ํ…์ŠคํŠธ๋งŒ ํŠน์ง• ์ž…๋ ฅ์— ์‚ฌ์šฉํ•˜๋ฉฐ ์ •๋‹ต IDยทํ›„๋ณด ์ •๋‹ต ์ˆœ์œ„ยท๊ฒ€์‚ฌ ๊ฒฐ๊ณผยท์ƒ์„ฑ ๋ชจ๋“œยทํ•™์Šต ์—ญํ• ์€ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค.

์ œํ•œ ์ œ์•ˆ ๊ณ„์•ฝ
ํ›„๋ณด ์š”์ฒญ๋‹น 1~8๊ฐœ
ํ…์ŠคํŠธ ์š”๊ตฌ์™€ ํ›„๋ณด ๊ฐ๊ฐ ์œ ํšจ UTF-8, ์ตœ๋Œ€ 512๋ฐ”์ดํŠธ
์ •๊ทœํ™” ์š”๊ตฌ์™€ ํ›„๋ณด ๊ฐ๊ฐ lexicalhint.NormalizeText ์ ์šฉ ํ›„ ์ตœ๋Œ€ 512๋ฐ”์ดํŠธยท32๋‹จ์–ด
์ดˆ๊ณผยท์‹คํŒจ ์›๋ฌธ์„ ์ž๋ฅด์ง€ ์•Š๋Š”๋‹ค. ๋ฒ”์œ„ ๋ฐ–ยท์•Œ ์ˆ˜ ์—†๋Š” schemaยท๋น„์œ ํ•œ ์ ์ˆ˜๋Š” ๋ช…์‹œ๋œ ์–ดํœ˜ ๊ธฐ์ค€ ์ˆœ์„œ๋กœ ๋ณต๊ท€ํ•œ๋‹ค.
๊ณต๊ฐœ ์ถœ๋ ฅ unverified ์ ์ˆ˜ยท๋ชจ๋ธ/ํŠน์ง• ๊ณ„์•ฝ ํ•ด์‹œยทfallback ์ด์œ . ์›๋ฌธ์„ ๊ฒฐ๊ณผ ๋กœ๊ทธ์— ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹จ์–ด ์ˆ˜๋งŒ์œผ๋กœ ํ•œ๊ตญ์–ดยท์˜์–ด์— ๋™์ผํ•œ ์ •๋ณด๋Ÿ‰์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ์–ธ์–ด์™€ ๋ฐ”์ดํŠธ/๋‹จ์–ด ๊ธธ์ด ๊ตฌ๊ฐ„์„ ๋”ฐ๋กœ ๊ธฐ๋กํ•œ๋‹ค. ์ž…๋ ฅ ์ˆœ์„œ์™€ ์„ ํƒ์ง€ ์ˆœ์„œ๋Š” ๋ณด์กดํ•˜๋ฉฐ ์ •๊ทœํ™” ํ•จ์ˆ˜๋ฅผ ํ•™์Šตยท์ถ”๋ก ์—์„œ ๋™์ผํ•˜๊ฒŒ ์“ด๋‹ค. ์ƒˆ schema์˜ ๊ตฌ์ฒด ์ด๋ฆ„๊ณผ ํ•ด์‹œ๋Š” ์‹ค์ œ ๊ตฌํ˜„ยท๊ฒ€์‚ฌ ํ›„ ๋ณ„๋„๋กœ ๋ด‰์ธํ•œ๋‹ค.

์ ์ˆ˜๋Š” ๋ณด์ •๋œ ์„ฑ๊ณต ํ™•๋ฅ ์ด๋‚˜ ํ–‰๋™ ๊ถŒํ•œ์ด ์•„๋‹ˆ๋‹ค. ํ›„๋ณด๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ž‘์—… ์™„๋ฃŒ๋ฅผ ํ™•์ •ํ•˜์ง€ ์•Š๊ณ  ๊ฒ€์‚ฌ ์ˆœ์„œ๋งŒ ์ œ์•ˆํ•œ๋‹ค. ๋ชจ๋“  ํ›„๋ณด๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ์•Œ ์ˆ˜ ์—†๋Š” ๋™์ž‘ยท๋ชจํ˜ธํ•œ ์š”๊ตฌยท์ •๋‹ต ์—†๋Š” ์š”์ฒญ์€ ๋ณ„๋„ ์ƒํƒœ๋กœ ๊ธฐ๋กํ•˜๋ฉฐ ์–ต์ง€๋กœ ์ฐธ/๊ฑฐ์ง“ ๋ผ๋ฒจ์„ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

๊ณต๊ฐœ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ์™€ ์ •๋‹ต

๋จผ์ € ์ž์ฒด ์ž‘์„ฑํ•œ Go microcontract, truth table, ์›๋ณธ ์งง์€ ์š”๊ตฌ์™€ ํ›„๋ณด๋ฅผ ์ค€๋น„ํ•œ๋‹ค. ํ›„๋ณด์˜ ๊ด€์ธก ๊ฐ€๋Šฅํ•œ ๋™์ž‘์ด ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๋Š”์ง€๋Š” ๋…๋ฆฝ ๊ฒ€์‚ฌ๋กœ ํ™•์ธํ•œ๋‹ค. ์›๋ณธ ์ž˜๋ชป๋œ ๊ตฌํ˜„ยท์˜ฌ๋ฐ”๋ฅธ ๊ตฌํ˜„ยท์กฐ๊ฑด ๋ฐ˜์ „ยท๋ถ€์ •ยท๊ฒฝ๊ณ„ <=/<ยท๋™์ž‘ ์ˆœ์„œ ๋ฐ˜๋ก€๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •๋‹ต ์ƒ์„ฑ๊ธฐ์˜ ์˜ค๋ฅ˜๋„ ์ฐพ๋Š”๋‹ค. ์ž์—ฐ์–ด๊ฐ€ truth table์„ ์ถฉ์‹คํžˆ ํ‘œํ˜„ํ•˜๋Š”์ง€๋Š” ๋”ฐ๋กœ ๊ฒ€ํ† ํ•œ๋‹ค. ์ฝ”๋“œ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋งŒ์œผ๋กœ ์ž์—ฐ์–ด ๋ผ๋ฒจ๊นŒ์ง€ ์ž๋™ ์ธ์ฆํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ •๋‹ต์€ ํ•œ ๊ฐœ ID๋กœ ์ œํ•œํ•˜์ง€ ์•Š๊ณ  ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ํ›„๋ณด ์ง‘ํ•ฉ์œผ๋กœ ๋‘”๋‹ค. ์ž…๋ ฅ์— ์ถฉ๋ถ„ํ•œ ๊ทผ๊ฑฐ๊ฐ€ ์—†๋Š” ์‚ฌ๋ก€์™€ ๊ฒ€์‚ฌ ์˜ค๋ฅ˜๋Š” unknown์œผ๋กœ ๋ณด๊ณ ํ•œ๋‹ค. ์ œ์™ธ ์ด์œ ๋Š” ๋ชจ๋ธ ์ ์ˆ˜๋ฅผ ๋ณด๊ธฐ ์ „์— ๊ธฐ๋กํ•˜๊ณ  ์›๋ž˜ ์š”์ฒญ ๋ถ„๋ชจ์™€ ์ œ์™ธ ์ˆ˜๋ฅผ ํ•จ๊ป˜ ๋‚จ๊ธด๋‹ค. no-answerยทunknown์„ ์‹คํŒจํ•œ ๋ชจ๋ธ์ด ๋งžํžŒ ์‚ฌ๋ก€๋กœ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

๊ฐœ๋ฐœ ์ค€๋น„ ๋ชฉํ‘œ๋Š” ๋ถ€๋ชจ ๊ณ„์•ฝ ํ›„๋ณด 48~120๊ฐœ๋‹ค. ์‹ค์ œ ํ™•๋ณด ์ˆ˜๋Š” 0๊ฐœ๋‹ค. ์ด๊ฒƒ์€ ๋…๋ฆฝ ๊ทธ๋ฃน 48~120๊ฐœ ๋ชฉํ‘œ๋‚˜ ๋ณด์ฆ์ด ์•„๋‹ˆ๋‹ค. ์›ํ˜•ยท์†Œ์Šคยทํ•ต์‹ฌ ํ…œํ”Œ๋ฆฟ์„ ๊ณต์œ ํ•œ ๋ณ€ํ˜•์€ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ๊ทธ๋ฃน์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋ฌด์ž‘์œ„ ์ด๋ฆ„ยท์ƒ์ˆ˜ยท๋ฒˆ์—ญ์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ƒˆ๋กœ์šด ๋…๋ฆฝ ์š”์ฒญ์„ ํ™•๋ณดํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ณต๊ฐœ ์›์ฒœ 120๊ฐœ์™€ ์™ธ๋ถ€ ๋‘ ๊ณ„์•ฝ์€ ์ถ”ํ›„ ๋ณ„๋„ ๊ฐœ๋ฐœ ์ „์ด probe์˜ ํ›„๋ณด๋กœ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฏธ ๋ณธ ์ž๋ฃŒ๋ฅผ ์ƒˆ๋กœ์šด final๋กœ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ์™ธ๋ถ€ ์ž๋ฃŒ๋ฅผ ์‹ค์ œ ์ฑ„ํƒํ•˜๊ธฐ ์ „์—๋Š” revisionยทLICENSE/NOTICEยท์ด์šฉ/๋ฐฐํฌ ๋ฒ”์œ„ยท๋…๋ฆฝ ์ •๋‹ต์„ ๋‹ค์‹œ ๊ณ ์ •ํ•œ๋‹ค. ๋น„๊ณต๊ฐœ ์ฝ”๋“œ, ์‹ค์ œ ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ, ์ธ์ฆ ์ •๋ณด์™€ ์›์‹œ ์‹คํ–‰ trace๋Š” ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š”๋‹ค.

์—ฐ๊ฒฐ ๊ทธ๋ฃน ๊ฐ์‚ฌ์™€ ๋ถ„ํ• 

์ž๋ฃŒ์˜ ์ถœ์ฒ˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋จผ์ € ๋งŒ๋“ ๋‹ค. ๊ฐ™์€ ์š”๊ตฌยทํ›„๋ณด ์†Œ์Šคยท์›ํ˜•/ํ•ต์‹ฌ ํ…œํ”Œ๋ฆฟยท๋ฒˆ์—ญ/๋ฐ”๊ฟ” ์“ฐ๊ธฐยท๋ฐ˜๋ก€ยท๋ถ€๋ชจ/์ž์‹/ํ˜•์ œยทfork/๋ณต์ œ ์†Œ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ „์ด์ ์œผ๋กœ ํ•ฉ์นœ๋‹ค. ์Œ์„ฑ ํ›„๋ณด๋„ ๊ณต์œ  ์†Œ์Šค๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค. ํ•™์Šต ์Œ์„ฑ์— validation/calibration์˜ ํ›„๋ณด๋ฅผ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค. ๊ฐ™์€ ์ž‘์„ฑ์žยท์ƒ์„ฑ๊ธฐ์˜ ํ•œ๊ณ„๋„ ๋ณ„๋„ ๊ธฐ๋กํ•œ๋‹ค.

์‹ค์ œ ์—ฐ๊ฒฐ ์š”์†Œ ๊ฐ์‚ฌ ์ „์—๋Š” ๋ถ„ํ• ํ•˜๊ฑฐ๋‚˜ ํ•™์Šตํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ฃน์„ ์•ฝ 60/20/20%์˜ train/validation/calibration์œผ๋กœ ๋ฐฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค. ์ œ์•ˆ ์ค€๋น„ ํ•˜ํ•œ์€ ์‹ค์ œ ์—ฐ๊ฒฐ ๊ทธ๋ฃน 15๊ฐœ ์ด์ƒ, train 9๊ฐœ ์ด์ƒ, validation๊ณผ calibration ๊ฐ๊ฐ 3๊ฐœ ์ด์ƒ์ด๋‹ค. ์ด ์ˆ˜๋Š” ์ค€๋น„ ๋‹จ๊ณ„์˜ ์šด์˜ ํ•˜ํ•œ์ด๋ฉฐ ํ†ต๊ณ„์  ๋ณด์žฅ์ด๋‚˜ ์‹ค์‚ฌ์šฉ ์ ๊ฒฉ ์กฐ๊ฑด์ด ์•„๋‹ˆ๋‹ค. ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ํŽธ์ค‘๋˜์–ด ๋ถ„ํ• ์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ฃน์„ ์ชผ๊ฐœ๊ฑฐ๋‚˜ ํ•˜ํ•œ์„ ๋‚ฎ์ถ”์ง€ ์•Š๊ณ  ์ค‘๋‹จํ•œ๋‹ค. ์ •ํ™•ํ•œ ์—ญํ•  ์†Œ์†ยท์ˆ˜ยท๊ทธ๋ฃน ๊ทธ๋ž˜ํ”„ยท์ž๋ฃŒ ํ•ด์‹œ๋Š” ํ•™์Šต ๊ฒ€ํ†  ์ „์— ๋ด‰์ธํ•œ๋‹ค.

๋ถ€๋ชจ ์š”์ฒญยท์Œยท๋ณ€ํ˜•ยท๊ณ„์•ฝ ๊ฐ€์กฑยท์—ฐ๊ฒฐ ๊ทธ๋ฃนยท์–ธ์–ด๋ณ„ ์‹ค์ œ ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋ณด๊ณ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 120๋ถ€๋ชจ์˜ 20๋ณ€ํ˜•์œผ๋กœ 2,400ํ–‰์„ ๋งŒ๋“ค๋”๋ผ๋„ 2,400๊ฐœ์˜ ๋…๋ฆฝ ์ตœ์ข… ์š”์ฒญ์ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค. ์ƒˆ ์˜๋ฏธ ๊ฒ€์ƒ‰ ํšจ์šฉ์„ ์ฃผ์žฅํ•  final ์ตœ์†Œ 2,400์š”์ฒญ์€ ์•„์ง ๋ฏธํ™•๋ณดยท๋ฏธ์ฑ„์ ์ด๋‹ค. ๊ธฐ์กด CoSQA reserve์™€ ํŒŒ์ผ ๊ฒ€์ƒ‰ protected final์€ ์ฝ๊ฑฐ๋‚˜ ์žฌ๋ฐฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. 56์˜ validation์€ ๊ฐœ๋ฐœ ํšจ์šฉ์„ ํ™•์ธํ•˜๋Š” ์ž๋ฃŒ์ผ ๋ฟ์ด๋ฉฐ ์Šน๊ฒฉยทproduction ์ ์šฉ์€ ๊ธˆ์ง€ํ•œ๋‹ค.

์ค€๋น„ ์ˆœ์„œ์™€ ์ค‘๋‹จ ์กฐ๊ฑด

  1. ์ž…๋ ฅยท์ •๋‹ต ๊ฒ€์‚ฌ ๊ณ„์•ฝ๊ณผ ์ž˜๋ชป๋œ ๊ตฌํ˜„ ๋Œ€์กฐ๊ตฐ์„ ์ค€๋น„ํ•œ๋‹ค.
  2. ๊ทธ๋ฃน์„ ๊ฐ์‚ฌํ•˜๊ณ  ์ ๊ฒฉ ๊ฐœ๋ฐœ ์ž๋ฃŒยท์—ญํ• ยทbaselineยท์˜ˆ์‚ฐ์„ ๋ด‰์ธํ•œ๋‹ค.
  3. ํ•™์Šต ์—†์ด ๊ณ ์ • ์ˆœ์„œ, BM25, ๋‹จ์–ด/์—ฐ์† ๋‹จ์–ด ์ผ์น˜, ๊ณต๊ฐœ๋œ ์ข์€ ์กฐ๊ฑดยท๋ถ€์ • ๋ฌธ๋ฒ• ๊ทœ์น™์„ ๊ฐ™์€ ํ›„๋ณดยท์ •๋‹ตยทfallback ๋ฒ”์œ„์—์„œ ํ‰๊ฐ€ํ•œ๋‹ค.
  4. ๋…๋ฆฝ ๊ฒ€์‚ฌ๋ฅผ ๋จผ์ € ์•Œ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ ์ˆœ์„œ oracle๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒ€์‚ฌ ์ˆ˜ ์ ˆ๊ฐ ์ƒํ•œ์„ ๊ณ„์‚ฐํ•œ๋‹ค. baseline์ด ์ด๋ฏธ ์ตœ์ ์ด๊ฑฐ๋‚˜ ์ตœ๋Œ€ ์ƒ๋Œ€ ์ด๋“์ด 5% ๋ฏธ๋งŒ์ด๋ฉด ํ•™์Šตํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒํ•œ๋‹ค. oracle์€ ์ƒํ•œ ๊ณ„์‚ฐ์šฉ์ด๋ฉฐ ๋ฐฐํฌ ์ •์ฑ…์ด๋‚˜ ๋ชจ๋ธ ํŠน์ง•์ด ์•„๋‹ˆ๋‹ค.
  5. ์ƒํ•œยท๋ถ„ํ• ยท์ž๋ฃŒ ์ ๊ฒฉ์„ฑ๊ณผ ์ž์› ์ค€๋น„๊ฐ€ ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ณ„๋„ ํ•™์Šต ์‹คํ–‰ ๊ณ„ํš์„ ๋ด‰์ธํ•œ๋‹ค. ์•„๋ž˜ ํ•™์Šต ์ˆ˜๋Š” ๊ทธ๋•Œ ๊ฒ€ํ† ํ•  ์ œ์•ˆ์ด๋ฉฐ ํ˜„์žฌ ์‹คํ–‰ ์ค€๋น„ ๋ฏธ์™„๋ฃŒยทํ•™์Šต 0ํšŒ๋‹ค. ์ž๋ฃŒยท๊ณ„ํšยทCI๊ฐ€ ์ค€๋น„๋˜๋ฉด ๊ธฐ์กด ์‚ฌ์šฉ์ž ์Šน์ธ ๋ฒ”์œ„์—์„œ ์ง„ํ–‰ํ•œ๋‹ค. ์‹คํŒจ ์‹œ ์ค‘๋‹จํ•˜๋Š” ๊ทผ๊ฑฐ gate๋Š” ์ถ”๊ฐ€ ์‚ฌ์šฉ์ž ์Šน์ธ์„ ์š”๊ตฌํ•˜๋Š” ์ ˆ์ฐจ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฒ€์‚ฌ ์ˆ˜๋Š” ๊ณ ์ • ํ›„๋ณด์—์„œ ์ฒซ ํ—ˆ์šฉ ํ›„๋ณด๋ฅผ ์ฐพ๊ธฐ๊นŒ์ง€์˜ ๋…๋ฆฝ ๊ฒ€์‚ฌ ํšŸ์ˆ˜๋‹ค. ์ •๋‹ต ์—†์Œ/unknown ์ฒ˜๋ฆฌ๋„ ๋ฏธ๋ฆฌ ๊ณ ์ •ํ•œ๋‹ค. ํ›„๋ณด ์‚ญ์ œ๋กœ ์–ป๋Š” ๊ฐ€์งœ ์ ˆ๊ฐ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ€๋Šฅํ•œ ์ƒ๋Œ€ ์ด๋“์€ (์ตœ์„ ์˜ ๋น„ํ•™์Šต baseline ๊ฒ€์‚ฌ ์ˆ˜ - oracle ๊ฒ€์‚ฌ ์ˆ˜) / baseline ๊ฒ€์‚ฌ ์ˆ˜๋กœ ์ •์˜ํ•˜๊ณ  ์œ ํšจ ๋ถ„๋ชจ๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ์‹ค์ œ LLM ํ† ํฐยท์š”๊ธˆยท์™„๋ฃŒ ์‹œ๊ฐ„์˜ ์ ˆ๊ฐ์œผ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์•„์ฃผ ์ž‘์€ ๋น„๊ต ๋ชจ๋ธ ์ œ์•ˆ

๋น„๊ต ์—ญํ• 
๊ณ ์ • ์ˆœ์„œยทBM25ยท์–ดํœ˜/์—ฐ์† ๋‹จ์–ดยท์ข์€ ๋ฌธ๋ฒ• ๊ทœ์น™ ๋ฌดํ•™์Šต ๊ธฐ์ค€. ๊ทœ์น™์ด ์ตœ์ ์ด๋ฉด ํ•™์Šต์„ ๊ฐ•ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
16๊ณ„์ˆ˜ lexical FP32 ํ•™์Šต ๊ฐ€๋Šฅํ•œ ์ €๋น„์šฉ ์–ดํœ˜ ๊ธฐ์ค€. ์˜๋ฏธ ์ดํ•ด์˜ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.
๊ธฐ์กด 8,192๊ณ„์ˆ˜ ๋ถ€ํ˜ธ ํ•ด์‹œ ๊ต์ฐจ ํŠน์ง• FP32 ํฐ ์ธ์ฝ”๋” ์—†์ด ์š”๊ตฌ-ํ›„๋ณด ์—ฐ๊ด€์„ ํ•™์Šตํ•˜๋Š” ์ฃผ์žฅ ํ›„๋ณด
FP32์˜ INT8/PTQ ์ž์‹ ๊ฐ™์€ ํ•™์Šต ๊ฒฐ๊ณผ์˜ ์–‘์žํ™” ์†์‹ค ๋น„๊ต
๋ณ„๋„ ternary STE ํ˜•์ œ ์‚ผ์ง„ forward๋กœ ํ•™์Šตํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๋”ฐ๋กœ ๋น„๊ต

์ œ์•ˆ์€ ๋‘ ํŠน์ง• ๊ฐ€์กฑ ร— seed 1729/2718 ร— FP32/STE๋กœ ์ตœ๋Œ€ 8ํšŒ fit๋‹ค. ํ•™์Šต๋ฅ  0.1, L2 0.0001, ์ตœ๋Œ€ 50 epoch, batch128, ์ „์—ญ ํ‰๊ท  ์ ˆ๋Œ€ scaleยท0.7๋ฐฐ ์ž„๊ณ„๊ฐ’์˜ ๊ธฐ์กด ์‚ผ์ง„ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. FP32์˜ INT8/PTQ ํŒŒ์ƒ๊นŒ์ง€ ์‚ฐ์ถœ๋ฌผ์€ ์ตœ๋Œ€ 16๊ฐœ๋‹ค. seedยทํŒŒ์ผยทepoch ์ˆ˜๋Š” ๊ณ ์œ  ์š”์ฒญ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ํ•™์Šต ํ›„ ๊ฐ€์žฅ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ์ฃผ ํ›„๋ณด๋‚˜ gate๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉฐ, ์ฃผ ํ›„๋ณด ์ œ์•ˆ์€ 8,192๊ณ„์ˆ˜ FP32/seed1729๋‹ค. validation NLL๋กœ epoch๋ฅผ ์„ ํƒํ•œ๋‹ค. calibration์€ ์ถ”ํ›„ ๊ณ ์ •ํ•œ ๋ณด๋ฅ˜ ์ •์ฑ…์„ ๊ฒ€ํ† ํ•˜๋Š” ๋ณ„๋„ ์—ญํ• ์ด๋ฉฐ ํ™•๋ฅ ์˜ ์ •ํ™•์„ฑ์„ ์ž๋™ ๋ณด์ฆํ•˜์ง€ ์•Š๋Š”๋‹ค.

์—ฌ๊ธฐ์„œ FP32๋Š” ์ ์ˆ˜ ๊ณ„์‚ฐ์šฉ ๊ณ„์ˆ˜๋ฅผ float32๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ธฐ์กด pairlearn์˜ shadow ๊ณ„์ˆ˜ยทgradientยทloss ๋ˆ„์ ๊ณผ reference ์ ์ˆ˜ ๊ณ„์‚ฐ์€ float64๋‹ค. ๋ชจ๋“  ๋ฐฐ์—ด/์—ฐ์‚ฐ/ํ”„๋กœ์„ธ์Šค๊ฐ€ FP32๋ผ๋Š” ๋œป์ด ์•„๋‹ˆ๋‹ค. .hbin์€ 8,192์ฐจ์› ์ „์šฉ ํ˜•์‹์ด๋ฉฐ 16๊ณ„์ˆ˜ ๋ชจ๋ธ์— ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ธฐ์กด .hbin์€ ๋กœ๋”ฉ ํ›„ float64 8,192๊ฐœ(๊ณ„์ˆ˜๋งŒ 64KiB)๋กœ ํ’€์–ด ๊ณ„์‚ฐํ•œ๋‹ค. bitmap/sign ์••์ถ• ํŒŒ์ผ์€ ์‹ค์ œ runtime RAMยท์‚ผ์ง„ ์ „์šฉ ์—ฐ์‚ฐยท1.58-bit ์‹คํ–‰ ์„ฑ๋Šฅ์˜ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ธฐ์กด ํ•ฉ์„ฑ 24์š”์ฒญ์€ FP32/INT8์—์„œ๋งŒ ์˜ˆ๋น„ gate๋ฅผ ํ†ต๊ณผํ•˜๊ณ  ์‚ผ์ง„์€ ์‹คํŒจํ–ˆ๋‹ค. 16๊ณ„์ˆ˜ CoSQA ๊ฐœ๋ฐœ ๊ฒฐ๊ณผ๋„ ์‚ฌ์ „ AUC gate๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด ์‹คํŒจ๋ฅผ ๋ณด์กดํ•˜๋ฉฐ ์ž‘์€ ํŒŒ์ผ ์ž์ฒด๋ฅผ ์ƒˆ๋กœ์šด ์„ฑ๊ณต ์กฐ๊ฑด์œผ๋กœ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

๊ฐœ๋ฐœ ํšจ์šฉยท์ž์› gate ์ œ์•ˆ

์‹ค์ œ๋กœ ์ธก์ •ํ•  ์กฐ๊ฑด์„ ๋‹ค์Œ ํ•™์Šต ์‹คํ–‰ ๊ณ„ํš์—์„œ ํ™•์ •ํ•œ๋‹ค. ํ˜„์žฌ ์•„๋ž˜ ๊ฐ’์€ ๋ชจ๋‘ ๋ฏธ์ธก์ • ๋ชฉํ‘œ์ด๋ฉฐ ์„ฑ๋Šฅ ๋ณด๊ณ ๊ฐ€ ์•„๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ ๋ชฉํ‘œ/์ฒ˜๋ฆฌ
๊ฐœ๋ฐœ ํšจ์šฉ ๊ฐ™์€ validation์—์„œ ์ตœ์„ ์˜ ๋ฌดํ•™์Šต ๊ธฐ์ค€ ๋Œ€๋น„ ํ‰๊ท  ๋…๋ฆฝ ๊ฒ€์‚ฌ ์ˆ˜ 5% ์ด์ƒ ๊ฐ์†Œ
ํ’ˆ์งˆ Top1/Top3 ๋น„ํ•˜๋ฝ. ์กฐ๊ฑด ๋ฐ˜์ „ยท๋ถ€์ •ยท๊ฒฝ๊ณ„๊ฐ’ยท์–ธ์–ด ๊ตฌ๊ฐ„์˜ ๋ถ„๋ชจ์™€ ํ‡ดํ–‰์„ ๋ณ„๋„ ๋ณด๊ณ 
์ •์ฑ… ๊ฒ€์ฆ ์›๋ž˜ ์ฒซ ํ›„๋ณด๋ฅผ ๋ณด์กดํ•˜๋ฉด Top1 ๋ถˆ๋ณ€์€ ๊ตฌ์กฐ์  ๋ณด์žฅ์œผ๋กœ ๋ณด๊ณ , ๋ชจ๋ธ์˜ ๊ฐœ์„  ์„ฑ๊ณผ๋กœ ์„ธ์ง€ ์•Š์Œ
์‚ผ์ง„ ์œ ์šฉํ•œ FP32 ์ดํ›„ ๊ฐ™์€ ํšจ์šฉยทํ’ˆ์งˆ gate์™€ ์‹ค์ œ ์ง€์—ฐ/RSS๋ฅผ ๋น„๊ต. ํŒŒ์ผ ํฌ๊ธฐ๋งŒ์œผ๋กœ ์ฑ„ํƒํ•˜์ง€ ์•Š์Œ
์‹คํ–‰ CPU ํ•œ ์Šค๋ ˆ๋“œ, GPU/ORT/Laya ์ธ์ฝ”๋” ๋ฏธ์‚ฌ์šฉ
ํ•™์Šต ์˜ˆ์‚ฐ ์ „์ฒด wall ์ตœ๋Œ€ 5๋ถ„, ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค RSS256MiB, ์ค€๋น„ sparse payload ์ตœ๋Œ€ 64MiB
์ถ”๋ก  ๋ชฉํ‘œ ํ”„๋กœ์„ธ์Šค RSS32MiB ์ดํ•˜, ์ตœ๋Œ€ 8ํ›„๋ณด ์š”์ฒญ์˜ warm p95 1ms ์ดํ•˜
์ €์žฅ ์˜ˆ์‚ฐ ์ƒˆ ์ž๋ฃŒยท๋ชจ๋ธยท์ˆซ์ž ๊ธฐ๋ก ํ•ฉ๊ณ„ 64MiB ์ดํ•˜. ํ•œ๋„๋ฅผ ์กฐ์šฉํžˆ ๋Š˜๋ฆฌ์ง€ ์•Š์Œ
์ค‘๋‹จ ๊ทธ๋ฃน/์ถœ์ฒ˜/์ •๋‹ต ์‹คํŒจ, ์ •๋‹ต ํŠน์ง• ์œ ์ž…, ๋น„์œ ํ•œ ๊ฐ’, ์˜ˆ์‚ฐ ์ดˆ๊ณผ, ๊ทœ์น™ ์ตœ์ , ํšจ์šฉ ๋ฏธ๋‹ฌ

์„œ๋กœ ๋‹ค๋ฅธ seed๋ฅผ ๋…๋ฆฝ ์‚ฌ์šฉ์ž ํ‘œ๋ณธ์œผ๋กœ ์„ธ์ง€ ์•Š๋Š”๋‹ค. ์ž‘์€ ๊ทธ๋ฃน์˜ ์  ์ถ”์ •๊ณผ ๋ถˆํ™•์‹ค์„ฑ์„ ๊ฐ™์ด ๋ณด๊ณ ํ•œ๋‹ค. ๋ฏธํ™•์ธ ์ธก์ •์€ 0์œผ๋กœ ์ฑ„์šฐ์ง€ ์•Š๋Š”๋‹ค. ๊ฐœ๋ฐœ gate ํ†ต๊ณผ๋„ ์ƒˆ๋กœ์šด final์ด๋‚˜ ์ผ๋ฐ˜์  ์˜๋ฏธ ์ดํ•ดยท์‹ค์ œ ๋น„์šฉ ์ ˆ๊ฐ์„ ๋Œ€์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํŠน์ง• ์ถ”์ถœยท์ ์ˆ˜ยท์ •๋ ฌยท์ง๋ ฌํ™”ยทcold ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘๊ณผ warm ์š”์ฒญ์„ ๋”ฐ๋กœ ์ธก์ •ํ•œ๋‹ค. Go heapยทํ• ๋‹นยทpprof์™€ OS ์ „์ฒด ํ”„๋กœ์„ธ์Šค RSSยทuser CPUยทwall์„ ๊ตฌ๋ถ„ํ•œ๋‹ค. CPU-only ์‹คํ—˜์˜ GPU ์‚ฌ์šฉ ์—ฌ๋ถ€๋„ ๋ช…์‹œํ•œ๋‹ค. ๋ชจ๋ธ์„ ํ•œ ๋ฒˆ ๋กœ๋“œํ•œ ๋ถˆ๋ณ€ ๋ฐฐ์—ด๊ณผ ํ˜ธ์ถœ์ž ์†Œ์œ  scratch๋ฅผ ์šฐ์„ ํ•˜๋ฉฐ, cache hit์™€ ์‹ค์ œ ์ ์ˆ˜ ๊ณ„์‚ฐ์€ ๋”ฐ๋กœ ์„ผ๋‹ค. ์ž…๋ ฅ ์›๋ฌธยท์›์‹œ pprof/ORT traceยท๊ฐœ์ธ ๊ฒฝ๋กœ๋Š” ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ณ  ์ง‘๊ณ„์™€ ํ•ด์‹œ๋งŒ ๋‚จ๊ธด๋‹ค.

Go ๋„๊ตฌ ์žฌ์‚ฌ์šฉ๊ณผ ๊ณต๊ฐœ

์ƒˆ 56 ์ „์šฉ loader/driver๊ฐ€ ๊ธฐ์กด internal/lexicalhint, internal/hintlearn, internal/pairlearn๊ณผ FitWithTrace๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ œ์•ˆํ•œ๋‹ค. ํ˜„์žฌ ๊ณผ๊ฑฐ CLI๋Š” ๋ฐ์ดํ„ฐยท๊ณ„ํš์„ ๊ณ ์ •ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋กœ ์šฐํšŒํ•˜์ง€ ์•Š๋Š”๋‹ค. Laya feature๋ฅผ ์š”๊ตฌํ•˜๋Š” internal/ternarytrain์€ encoder-free ์‹คํ—˜์˜ ์ฃผ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ƒˆ ์ž…๋ ฅ/๋ชจ๋ธ ๊ณ„์•ฝ๊ณผ ์žฌํ˜„ ๊ฒ€์‚ฌ๋Š” ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๋‹ค.

GitHub์—๋Š” ๊ณ„ํšยท์ฝ”๋“œยท์ž์ฒด ์ž‘์„ฑ ๊ณต๊ฐœ fixtureยท์ˆซ์ž ์ง‘๊ณ„ยท๋ผ์ด์„ ์Šค/์ถœ์ฒ˜ยท๋ชจ๋ธ SHA/ref๋ฅผ ๊ธฐ๋กํ•œ๋‹ค. ๊ฐ€์ค‘์น˜/๋ชจ๋ธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” Git์— ๋„ฃ์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋ธ ์‚ฐ์ถœ๋ฌผ์€ ๊ฐœ๋ฐœ ์œ ์šฉ์„ฑ gate์™€ ์žฌํ˜„ยทํ˜•์‹ยท๋ผ์ด์„ ์Šค/๊ณต๊ฐœ ๋‚ด์šฉ ๊ฒ€ํ†  ํ›„์—๋งŒ Hugging Face์˜ ๋ณ„๋„ ๋ถˆ๋ณ€ revision์œผ๋กœ ๊ฒŒ์‹œ๋ฅผ ๊ฒ€ํ† ํ•œ๋‹ค. ๊ณต๊ฐœ์—๋Š” ํ•ด๋‹น ํŒŒ์ผ์˜ ์ •ํ™•ํ•œ ref์™€ ๋ฒ”์œ„ยท์‹คํŒจ๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉฐ, ๊ฒŒ์‹œ๋‚˜ CI ํ†ต๊ณผ๋ฅผ production ์Šน๊ฒฉ์œผ๋กœ ํ‘œํ˜„ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ˜„์žฌ HF ๊ฒŒ์‹œยท๋ชจ๋ธ ref๋Š” ์—†๋‹ค.

์ฐธ๊ณ  ๊ทผ๊ฑฐ์™€ ํ•œ๊ณ„