Short Claim Results 56a KO - teamswyg/laya-tools GitHub Wiki

์ž‘์€ Go ์ฃผ์žฅ ๋„๊ตฌ: ๊ตฌํ˜„ยท๋ฌดํ•™์Šต ์ง„๋‹จ56a

English ยท ์‚ฌ์šฉ๋ฒ• ยท ์ˆซ์ž ๊ฒฐ๊ณผ ยท ์ž์› ๊ฒฐ๊ณผ ยท ํ”„๋กœํŒŒ์ผ ์ง‘๊ณ„

ํฐ ์ธ์ฝ”๋” ์—†๋Š” Go preview๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ธก์ •ํ–ˆ๋‹ค. 48๊ฐœ ์ž์ฒด ์ž‘์„ฑ ์š”์ฒญ์€11๊ฐœ ์—ฐ๊ฒฐ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์—ฌ ํ•™์Šต ์ค€๋น„ ํ•˜ํ•œ15๊ฐœ์— ๋ชป ๋ฏธ์นœ๋‹ค. ๋ถ„ํ• ยทํ•™์Šตยท๊ฐ€์ค‘์น˜ยท๋ชจ๋ธ ํ˜ธ์ถœ์€ ๋ชจ๋‘0์ด๋ฉฐ, ์‹ค์ œ LLM ์ ˆ๊ฐ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด์ „ ์ค€๋น„ ๊ณ„ํš56์€ ์ค€๋น„ ๋‹น์‹œ ์ž๋ฃŒ0ยท์‹ค์ธก0์˜ ์—ญ์‚ฌ์  snapshot์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค.

๋ฌด์—‡์„ ๊ตฌํ˜„ํ–ˆ๋‚˜

riido-shortclaim์€ ํ•œ์ •๋œ ์š”๊ตฌ์™€ ํ›„๋ณด ์„ค๋ช…์œผ๋กœ ๋…๋ฆฝ ๊ฒ€์‚ฌ ์ˆœ์„œ๋ฅผ ์ œ์•ˆํ•œ๋‹ค. ์ž…๋ ฅ๊ณผ ์ •๊ทœํ™”์˜ ๊ธธ์ด, Unicodeยท์ค‘๋ณต JSON ํ‚คยทํ›„๋ณด ์ˆ˜๋ฅผ ์—„๊ฒฉํžˆ ๊ฒ€์‚ฌํ•˜๋ฉฐ ๋ชจ๋“  ํ›„๋ณด๋ฅผ ๋‚จ๊ธด๋‹ค. ํ•œ ํ”„๋กœ์„ธ์Šค๋กœ ์—ฌ๋Ÿฌ JSONL ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” --stream, Go ํŒจํ‚ค์ง€ pkg/shortclaim, ๋„ค ๋ฌดํ•™์Šต ๊ธฐ์ค€์„ ์ œ๊ณตํ•œ๋‹ค. ๋ชจ๋ธ ๋‹ค์šด๋กœ๋“œยทPythonยท์™ธ๋ถ€ API ํ‚ค๊ฐ€ ํ•„์š” ์—†๋‹ค. ๊ธฐ์กด Laya ๋‚œ์ด๋„ ๋ผ์šฐํ„ฐ์™€ Codex ๊ธฐ๋ณธ ์„ค์ •์€ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ์ค€์€ fixed order, BM25, ๋‹จ์–ด/์—ฐ์† ๋‘ ๋‹จ์–ด ์ผ์น˜, ๋ช…์‹œ๋œ behavior-v1: ์ข์€ ๋ฌธ๋ฒ•์ด๋‹ค. ์ผ๋ฐ˜ ๋ฌธ์žฅ์—๋Š” ๊ทœ์น™์„ ์ถ”์ธกํ•ด์„œ ์ ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž์—ฐ์–ด ๊ฐœ๋ฐœ ์ž๋ฃŒ48๊ฐœ๋Š” ์ „๋ถ€ ๊ทœ์น™ ๋ฐ–์ด๋ฏ€๋กœ ์ข์€ ๊ทœ์น™ ๊ฒฐ๊ณผ๋Š” 48/48 BM25 fallback์ด๋‹ค. ์œ ํ•œ ๋ฌธ๋ฒ•์—์„œ ๋น ๋ฅด๊ฒŒ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ์ผ๋ฐ˜ ๋ฌธ์žฅ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•œ๋‹ค๋Š” ์ฃผ์žฅ์€ ๊ตฌ๋ถ„ํ•œ๋‹ค.

์‚ฌ์ „์— ๊ณ ์ •ํ•œ ๋ฒ”์œ„

๊ณต์‹ ์ ์ˆ˜ยท์„ฑ๋Šฅ ๊ด€์ธก ์ „์— commit45b2ad3์— ์ž…๋ ฅยท์‹คํ–‰๊ธฐยท์›์ฒœยท๋ฌดํ•™์Šต ์‹คํ–‰ ๊ณ„ํš์„ ๋ด‰์ธํ–ˆ๋‹ค.

๋Œ€์ƒ SHA-256
์‹คํ–‰ ๊ณ„ํš 9c8461b9fe0a80a0f0976c8f07a68f3a47f0c534800a0a303e1cbd8a613caaeb
48์š”์ฒญ ์›๋ณธ 0fe97dd65606f4239ef9187f1fc4d9c8dc2fcaebf342612b2071220896b92df0
Go ํ•จ์ˆ˜ยท๋…๋ฆฝ literal ํ‘œ ์›์ฒœ b377343a64c019c205f69865286a21ce5d91dda3051c31aa5c69b75a40300559
8ํ›„๋ณด ์„ฑ๋Šฅ ์ž…๋ ฅ ํŒŒ์ผ bc41dc423139be4adebc0687ffd30237f22458ea58fccf58771e2003276b5155
Mac ์ธก์ • ๋ฐ”์ด๋„ˆ๋ฆฌ 5f5463005f9dd482247a5f028af9c5c6e6d7cec2c04aa18e4605e8a45a278fb2

๊ณ„ํš์— runtime ์›์ฒœ8๊ฐœ ํ•ด์‹œ์™€ Go1.27.1์„ ํ•จ๊ป˜ ๊ณ ์ •ํ–ˆ๋‹ค. Go ๋นŒ๋“œ์—๋Š” CGO0ยทtrimpathยทbuildvcs=false๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์‹คํ–‰ ํŒŒ์ผ ๋ฐ”์ดํŠธยทGo ๋นŒ๋“œ ์ •๋ณดยทํŒจํ‚ค์ง€ ID๋ฅผ ํ™•์ธํ•œ ๋’ค ๊ฒ€์ฆํ•œ ๋ฐ”์ดํŠธ์˜ ๋ณ„๋„ private copy๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์›๋ณธ ์ž…๋ ฅ ํ•ด์‹œ๋ฅผ ํ™•์ธํ•œ ๊ทธ ๋ฐ”์ดํŠธ๋ฅผ ํ‰๊ฐ€ํ•˜๋ฉฐ, ๊ฒฐ๊ณผ ์›๋ฌธ์— ๊ฐœ์ธ ๊ฒฝ๋กœยทํ™˜๊ฒฝ ์ „์ฒดยท์›์‹œ trace๋ฅผ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค. ์ถœ๋ ฅ ํฌ๊ธฐ์™€ ์ „์ฒด60์ดˆยทchild15์ดˆ ์ œํ•œ๋„ ์ ์šฉํ•œ๋‹ค.

์ž๋ฃŒ์™€ ์ •๋‹ต

์ž๋ฃŒ๋Š” ์ž์ฒด ์ž‘์„ฑํ•œ 48๋ถ€๋ชจยท144ํ›„๋ณด ์„ค๋ช…ยท12๋™์ž‘ ์›ํ˜•ยท11์—ฐ๊ฒฐ ๊ทธ๋ฃน์ด๋‹ค. ์˜์–ด๋งŒ ํฌํ•จํ•˜๊ณ  ๊ฐ™์€ ์ž‘์„ฑ์ž์˜ ํ•œ๊ณ„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์กฐ๊ฑด ์œ ์ง€, ๊ถŒํ•œ์˜ ๋ถ€์ •, ํฌํ•จ ๊ฒฝ๊ณ„, ํ•ฉ๊ณ„ ๋น„๊ต, ์•ˆ์ • ํ•„ํ„ฐ, ์ฒซ ํ•ญ๋ชฉ ์ œ๊ฑฐ, ์ธ์ ‘ ์ค‘๋ณต ์ถ•์•ฝ, ํšŒ์ „, ๋น„๊ฐ์†Œ ์ˆœ์„œ, clamp, prefix balance์™€ ์‚ฐ์ˆ  ๋™์ž‘ ์ˆœ์„œ๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ๋ณ€์ˆ˜ยท์ˆซ์žยท๋ฒˆ์—ญยท๋ชจ๋ธ ์„ค์ • ์ˆ˜๋ฅผ ๋…๋ฆฝ ์š”์ฒญ ์ˆ˜๋กœ ์„ธ์ง€ ์•Š๋Š”๋‹ค.

Go ์ •๋‹ต ํ•จ์ˆ˜12๊ฐœ์™€ ์˜ค๋‹ต ํ•จ์ˆ˜24๊ฐœ๋Š” ํ›„๋ณด๊ฐ€ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ literal ๋ฒกํ„ฐ68๊ฐœ๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค. ์›ํ˜•๋ณ„ ๋ฒกํ„ฐ๋ฅผ ์„ธ ํ•จ์ˆ˜์— ์ ์šฉํ•œ ๊ธฐ๋ณธ ๋Œ€์กฐ ๊ฒ€์‚ฌ204๊ฐœ์™€ ์‹ค์ œ ํ›„๋ณด์ง‘ํ•ฉ ๊ฒ€์‚ฌ๋ฅผ ๋ณ„๋„ ๊ธฐ๋กํ•œ๋‹ค. ์ฝ”๋“œ hashยท์ด๋ฆ„ ์ •๊ทœํ™” hashยทํ•ต์‹ฌ templateยท๋™์ผ ์š”์ฒญยท๊ณต์œ  ์Œ์„ฑ ํ›„๋ณด๋ฅผ ์ „์ด์ ์œผ๋กœ ํ•ฉ์นœ๋‹ค. closed-window์™€ clamp-window๋Š” ๊ฐ™์€ closed-boundary core์—ฌ์„œ ํ•จ๊ป˜ ๋ฌถ์˜€๊ณ , 12์›ํ˜•์ด11๊ทธ๋ฃน์ด ๋๋‹ค.

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

์ •๋‹ต ์žˆ๋Š” ์š”์ฒญ24๊ฐœ, ๊ฒ€์‚ฌ๋œ ์ •๋‹ต ์—†๋Š” ์š”์ฒญ12๊ฐœ, ์ •์ฑ…์ด ๋ชจํ˜ธํ•œ unknown12๊ฐœ๋‹ค. Unknown์€ ์›๋ž˜48๊ฐœ ๋ถ„๋ชจ์— ๋‚จ์ง€๋งŒ ๋น„์šฉยทTop1/3์—์„œ ์ œ์™ธํ•œ๋‹ค. No-answer๋Š” ๊ธฐ์ค€๊ณผ oracle ๋ชจ๋‘ ํ›„๋ณด๋ฅผ ์ „๋ถ€ ๊ฒ€์‚ฌํ•œ๋‹ค. ์ •๋‹ต ์ง‘ํ•ฉ์€ ์—ฌ๋Ÿฌ ํ›„๋ณด๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌดํ•™์Šต ๊ฒฐ๊ณผ

์—ญํ•  ๋ถ„ํ• ์ด ์—†๋Š” ๊ฐœ๋ฐœ ์ง„๋‹จ์ด๋‹ค. ์ˆ˜์น˜๋Š” ์ด ์ž์ฒด ์ž‘์„ฑ ์ง‘ํ•ฉ์˜ ๊ด€์ธก์ด๋ฉฐ holdout์ด๋‚˜ ์‹ค์ œ Codex ์ž‘์—… ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ธฐ์ค€ known36๊ฐœ ์ „์ฒด ๊ฒ€์‚ฌ ์ˆ˜ answerable24๊ฐœ ๊ฒ€์‚ฌ ์ˆ˜ Top1 /24 Top3 /24
์›๋ž˜ ์ˆœ์„œ 72 48 4 24
BM25 59 35 15 24
๋‹จ์–ดยท์—ฐ์† ๋‹จ์–ด 60 36 14 24
์ข์€ ๋ฌธ๋ฒ•โ†’BM25 fallback 59 35 15 24
์ •๋‹ต์„ ๋ฏธ๋ฆฌ ์•„๋Š” oracle 48 24 โ€” โ€”

์ตœ์„  ๋ฌดํ•™์Šต ๊ธฐ์ค€์€ BM25์ด๋ฉฐ no-answer ํฌํ•จ ํ‰๊ท  ๊ฒ€์‚ฌ ์ˆ˜๋Š”59/36โ‰ˆ1.639๋‹ค. Oracle์€48/36โ‰ˆ1.333์ด๋‹ค. ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ์ƒ๋Œ€ ์ด๋“์€ (59โˆ’48)/59โ‰ˆ18.64%์ด๊ณ  answerable๋งŒ ๋ณด๋ฉด (35โˆ’24)/35โ‰ˆ31.43%๋‹ค. Oracle์€ ๋‹ฌ์„ฑํ•œ ๋ชจ๋ธ ์„ฑ๋Šฅยท์‹คํ–‰ ์ •์ฑ…ยทํ•™์Šต ํŠน์ง•์ด ์•„๋‹ˆ๋‹ค. 5% ํ•„์š” ์ƒํ•œ์€ ๋„˜์ง€๋งŒ ํ•™์Šต ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž‘์„ฑํ•œ ํ›„๋ณด ์ˆœ์„œ์™€ ์งง์€ ๋Œ€์กฐ๊ตฐ ๊ตฌ์„ฑ์ด ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ค€๋‹ค. Top3 ์ „๋ถ€ ํ†ต๊ณผ๋„ ์ž‘์€3~4ํ›„๋ณด ์ง‘ํ•ฉ๊ณผ ์ค‘๋ณต๋œ ํ—ˆ์šฉ ํ›„๋ณด์˜ ํŠน์„ฑ์„ ํฌํ•จํ•˜๋ฏ€๋กœ ๋ณ„๋„ ์˜๋ฏธ ์ดํ•ด ์„ฑ๊ณผ๋กœ ํ™•๋Œ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‹ค์ œ ๊ทธ๋ฃน11<15์ด๋ฏ€๋กœ ์—ญํ• ์„ ๋ฐฐ์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃน์„ ์ชผ๊ฐœ์ง€ ์•Š์•˜๋‹ค. insufficient_connected_groups์™€ no_partition_or_training_execution_plan์œผ๋กœ ์ค‘๋‹จํ•œ๋‹ค. FP32ยทINT8ยทSTE/PTQ fit, HF ๊ฐ€์ค‘์น˜ ๊ฒŒ์‹œ, final ์ฑ„์ , production ํ™œ์„ฑํ™”๋Š”0์ด๋‹ค. ๊ธฐ์กด protected final๊ณผ CoSQA reserve๋„ ์ฝ์ง€ ์•Š์•˜๋‹ค.

Mac ์ž์› ์ธก์ •

Apple M4 Proยท24GiBยทdarwin/arm64ยทGo1.27.1์ด๋‹ค. GOMAXPROCS=1๋กœ Go์˜ ๋™์‹œ ์‹คํ–‰ P๋ฅผ ์ œํ•œํ–ˆ์œผ๋ฉฐ OS ์Šค๋ ˆ๋“œ ์ˆ˜๋‚˜ affinity๋ฅผ ์ธก์ •ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. GPUยทORTยทLaya ์ธ์ฝ”๋”ยท๊ฒฐ๊ณผ ์บ์‹œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐ™์€ ์›๋ณธ8ํ›„๋ณด ์˜ˆ์ œ๋ฅผ ๊ธฐ์ค€๋งˆ๋‹ค ์ƒˆ ํ”„๋กœ์„ธ์Šค cold3ํšŒ์™€ warm1ํšŒ๋กœ ์‹คํ–‰ํ–ˆ๋‹ค. Warm์˜ ๋‹ค์„ฏ ๋‹จ๊ณ„๋Š” ๊ฐ๊ฐ20๋ฒˆ ์ค€๋น„, AllocsPerRun์˜101๋ฒˆ allocation probe, ์‹ค์ œ2,000๋ฒˆ ํƒ€์ด๋ฐ ํ‘œ๋ณธ์ด๋‹ค. ๋ฐ˜๋ณต ํšŸ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ ํ‘œ๋ณธ ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค. ์˜ˆ์ œ์˜ ์š”์ฒญ์€ ์ •๊ทœํ™”32๋‹จ์–ด์ด๊ณ  ํ›„๋ณด๋Š” ์ตœ๋Œ€32๋‹จ์–ด์ด๋ฉฐ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ512๋ฐ”์ดํŠธยท์–ธ์–ดยท์ž…๋ ฅ ๋ชจ์–‘์˜ ์ตœ์•…๊ฐ’์€ ์•„๋‹ˆ๋‹ค.

๊ธฐ์ค€ ์ „์ฒด Go ํ˜ธ์ถœ warm p95 ๋ฐ˜๋ณต ์ธก์ • child peak RSS ์ „์ฒด ํ˜ธ์ถœ Go ํ• ๋‹น/op
์›๋ž˜ ์ˆœ์„œ 0.063417ms 10.5625MiB 291
BM25 0.069667ms 10.2500MiB 291
๋‹จ์–ดยท์—ฐ์† ๋‹จ์–ด 0.077042ms 10.421875MiB 291
์ข์€ ๋ฌธ๋ฒ• 0.079250ms 10.468750MiB 291

์ „์ฒด ํ˜ธ์ถœ์€ JSON ์ค€๋น„ยท์ž…๋ ฅ ๊ฒ€์ฆยท์ˆœ์œ„ยทdigestยท์ถœ๋ ฅ ์ง๋ ฌํ™”๋ฅผ ํฌํ•จํ•˜๊ณ  ์ถœ๋ ฅ์€ io.Discard์— ๋ณด๋‚ธ๋‹ค. ์ˆœ์œ„ ๋‹จ๊ณ„์—๋Š” ์žฌ๊ฒ€์ฆยทํŠน์ง•ยท์ ์ˆ˜ยท์ •๋ ฌ์ด ํ•ฉ์ณ์ ธ ์žˆ๋‹ค. HeapAlloc์€ ๋ฏธ์ˆ˜๊ฑฐ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•œ Go heap snapshot์ด๋ฉฐ RSS์™€ ๋‹ค๋ฅด๋‹ค. Peak RSS๋Š” ๋ฐ˜๋ณต ์ธก์ • ํ”„๋กœ์„ธ์Šค ์ „์ฒด๋กœ ๋‹จ์ผ ์ˆœ๊ฐ„ ์ถ”๋ก  RAM์ด ์•„๋‹ˆ๋‹ค. 32MiBยท1ms ๋ชฉํ‘œ๋Š” ์ด ์˜ˆ์ œ์—์„œ ์ถฉ์กฑํ–ˆ์œผ๋ฉฐ ์˜๋ฏธ ํ’ˆ์งˆ gate๋ฅผ ๋Œ€์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

12๊ฐœ cold process ์ค‘ ์ฒซ ์‹œ์ž‘์€370.932333ms, ๋‚˜๋จธ์ง€๋Š”2.5649585.232667ms์˜€๋‹ค. ์ฒซ ๊ฐ’์„ ๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ์›์ธ์„ ํ™•์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. OSยทํŒŒ์ผ cacheยท์ตœ์ดˆ ์‹คํ–‰ ํšจ๊ณผ๋Š” ๋ณ„๋„ ๋ฏธํ™•์ธ์ด๋‹ค. Cold RSS๋Š” ์•ฝ4.534.69MiB์˜€๋‹ค. ์„ฑ๋Šฅ replay wall์€1.269162916์ดˆ๋‹ค. ๋„ค warm child์˜ user CPU๋Š”0.184671/0.200684/0.214853/0.232318์ดˆ, system CPU๋Š”0.003933/0.003496/0.003057/0.003607์ดˆ์˜€๋‹ค. ์‹ค์ œ JSON์—๋Š” ๋ชจ๋“  cold/warm ๊ด€์ธก์„ ๋ณด์กดํ•œ๋‹ค. Open-loop ๋„์ฐฉ๋ฅ  ๋ถ€ํ•˜ยท๋™์‹œ ๋‹ค์ค‘ ์š”์ฒญยทstream ์ง€์—ฐ์€ ์•„์ง ์ธก์ •ํ•˜์ง€ ์•Š์•˜๋‹ค.

ํ”„๋กœํŒŒ์ผ๊ณผ ์ตœ์ ํ™” ํŒ๋‹จ

๊ณ ์ • ๊ณ„ํš์— ๋”ฐ๋ผ ์ข์€ ๊ทœ์น™๋งŒ ๋ณ„๋„1ํšŒ, ๋‹จ๊ณ„๋‹น10,000ํšŒ๋กœ CPU ํ”„๋กœํŒŒ์ผ์„ ์ˆ˜์ง‘ํ–ˆ๋‹ค. Headline ์ง€์—ฐ/RSS์—๋Š” ์„ž์ง€ ์•Š์•˜๋‹ค. ํ”„๋กœํŒŒ์ผ1.34์ดˆยทsamples1.06์ดˆ์—์„œ runtime.kevent flat0.88์ดˆ(83.02%), runtime.madvise0.07์ดˆ, BM250.02์ดˆ, lexical tokenํ™” cumulative0.05์ดˆ๋ฅผ ๊ด€์ธกํ–ˆ๋‹ค. kevent ๋น„์ค‘์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ CPU ๋ณ‘๋ชฉ์ด๋‚˜ lock ๊ฒฝํ•ฉ์œผ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š๋Š”๋‹ค. Darwin syscall stack ๊ท€์†์˜ Go ์›์ฒœ ์ด์Šˆ80921๋Š” go1.28-devel์˜ ๋ณ„๋„ ๋ณด๊ณ ์ด๋ฉฐ ํ˜„์žฌ go1.27.1 ๊ด€์ธก์˜ ์›์ธ์œผ๋กœ ์žฌํ˜„ํ•˜๊ฑฐ๋‚˜ ํ™•์ •ํ•˜์ง€ ์•Š์•˜๋‹ค.

์ž…๋ ฅ์€ ๊ณ ์ • ๋ฐฐ์—ด8๊ฐœ, ๋‹จ์–ด๋Š” ๋ฐฐ์—ด32๊ฐœ, ๋นˆ๋„๋Š” ์ž‘์€ ์—ฐ์† ๋ฐฐ์—ด์„ ์“ด๋‹ค. Runtime mapยท๊ณต์œ  ๊ฐ€๋ณ€ ์ƒํƒœยท๊ณต์œ  lock์ด ์—†๋‹ค. Rank๋งŒ ์„ ํƒํ•˜๋ฉด ๋‹ค๋ฅธ ๊ธฐ์ค€์˜ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ •๊ทœํ™”ยท์žฌ๊ฒ€์ฆยทJSON์€ ํ• ๋‹น์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ zero-allocation ๋„๊ตฌ๋ผ๊ณ  ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค. ํ˜„์žฌ ์ž๋ฃŒ๋กœ SIMDยทSoA ์žฌ๋ฐฐ์—ด์˜ ์ด๋“์ด๋‚˜ application hotspot์€ ์ž…์ฆํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ด๋ฅผ ๊ฐ•ํ–‰ํ•˜๊ธฐ ์ „์— ํ”„๋กœํŒŒ์ผ ๊ท€์†๊ณผ stage๋ณ„ ์ž์› ๋น„์šฉ์„ ๊ฒ€์ฆํ•œ๋‹ค.

์žฌํ˜„๊ณผ ๋‹ค์Œ ์ž‘์—…

์•„๋ž˜ ์„ฑ๋Šฅ ๊ณ„ํš์€ ๊ณ ์ •๋œ Mac arm64 ๋ฐ”์ด๋„ˆ๋ฆฌ์šฉ์ด๋‹ค. ๋‹ค๋ฅธ ํ”Œ๋žซํผ์šฉ ์‹คํ–‰ ํŒŒ์ผ์˜ SHA๋ฅผ ๊ฐ™์€ ๊ณ„ํš์— ๋„ฃ์–ด ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค. ๋ฌดํ•™์Šต ๊ฒฐ๊ณผ ์žฌ์ƒ์€ Linux/macOS CI์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ •์ˆ˜ยท๊ทธ๋ฃนยท์ˆœ์„œ๋Š” ์ •ํ™•ํ•˜๊ฒŒ, ๋ถ€๋™ ์†Œ์ˆ˜์  ์ ์ˆ˜๋งŒ1e-12 ์ƒ๋Œ€ ํ—ˆ์šฉ์˜ค์ฐจ๋กœ ๋น„๊ตํ•œ๋‹ค. ํ’ˆ์งˆ ๊ฒ€์‚ฌ๊ฐ€ ํ†ต๊ณผํ•ด์•ผ ์ž๋™ ๋ณ‘ํ•ฉ๋˜๋ฉฐ ๋ณ„๋„ ์‚ฌ๋žŒ ์Šน์ธ์„ ์š”๊ตฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

CGO_ENABLED=0 go build -trimpath -buildvcs=false -o .cache/riido-shortclaim-56 ./cmd/riido-shortclaim
go run ./cmd/riido-behavioraudit --plan-sha256 9c8461b9fe0a80a0f0976c8f07a68f3a47f0c534800a0a303e1cbd8a613caaeb --out .cache/my-short-audit
go run ./cmd/riido-shortperf --plan-sha256 9c8461b9fe0a80a0f0976c8f07a68f3a47f0c534800a0a303e1cbd8a613caaeb --out .cache/my-short-performance.json

์ƒˆ ์ถœ๋ ฅ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค. ์›์‹œ pprofยท๊ฐœ์ธ ๊ฒฝ๋กœยท์‹ค์ œ ์—…๋ฌด ์ž…๋ ฅ์€ ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ณ  ์›๋ณธ fixtureยท์ˆซ์žยทhashยทํ•จ์ˆ˜ ์ง‘๊ณ„๋งŒ ๊ฒŒ์‹œํ•œ๋‹ค. ์ด์ „ ์ค€๋น„ snapshot์„ ์ œ์™ธํ•œ ์ƒˆ Git JSON ์ž๋ฃŒยท์ˆซ์ž ํ•ฉ๊ณ„๋Š” ์•ฝ260.6KiB์ด๋ฉฐ ์›์ฒœ/๋ฌธ์„œ๊นŒ์ง€๋„64MiB ์˜ˆ์‚ฐ๋ณด๋‹ค ์ž‘๋‹ค. ๋ชจ๋ธ ๋ณธ์ฒด๋Š” Git์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๋‹ค์Œ ํ™•๋ณด ๊ณ„ํš56b๋Š” ์›์ž์  ๋ฐ˜์˜ยท์˜ค๋ฅ˜ ์›์ธยทsnapshotยท์ˆ˜๋ช…ยทescapeยท๊ทธ๋ž˜ํ”„์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ์‹คํŒจ ์–‘์ƒ์„ ๋‹ค๋ฃจ๋˜, ์ƒˆ๋กœ์šด typed truth ๊ณ„์•ฝ๊ณผ ์ „์ด ๊ทธ๋ฃน ๊ฒ€์‚ฌ๋ฅผ ๋จผ์ € ์š”๊ตฌํ•œ๋‹ค. ๋„๋ฉ”์ธ๋ณ„ ์„œ๋กœ ๋‹ค๋ฅธ ์ตœ์ข…2,400์š”์ฒญ ๋ชฉํ‘œ๋Š” ๊ทธ๋Œ€๋กœ์ด๋ฉฐ ์ด๋ฒˆ final ์ ๊ฒฉ์€0์ด๋‹ค.