Lexical Learning 03 KO - teamswyg/laya-tools GitHub Wiki

์ €๋น„์šฉ ํŠน์ง• ํ•™์Šต 03: 16๊ฐœ ๊ณ„์ˆ˜๋กœ ๊ฐœ์„  ์‹ ํ˜ธ, ์ตœ์ข… ์‹œํ—˜์€ ๋ณด๋ฅ˜

English ยท ์‹คํ–‰ ์ „ ๊ณ„ํš ยท ์ „์ฒด ๊ฒฐ๊ณผยท๋ชจ๋ธ ํ•ด์‹œ ยท ์ง์ „ ์‹ค์ œ ์ž๋ฃŒ ํ•™์Šต

8,192๊ฐœ ๊ต์ฐจ ํŠน์ง• ๊ณ„์ˆ˜ ๋Œ€์‹  16๊ฐœ ๊ณ„์ˆ˜๋กœ ํ•™์Šตํ•˜๋‹ˆ ๊ฒ€์ฆ ์ˆœ์œ„ ์ง€ํ‘œ๊ฐ€ ๊ฐœ์„ ๋๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฃผ ํ›„๋ณด์˜ AUC 0.5729๋Š” ์‚ฌ์ „ ๊ธฐ์ค€ 0.60์— ๋ฏธ๋‹ฌํ•œ๋‹ค. reserve1 2,403๊ฐœ์™€ reserve2 2,401๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์Šน๊ฒฉยท๊ธฐ๋ณธ ์ ์šฉ์„ ๋ณด๋ฅ˜ํ•œ๋‹ค. ์ด๊ฒƒ์€ ์˜๋ฏธ ์ดํ•ด ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ผ ์˜๋ฏธ ๋ชจ๋ธ์ด ๋„˜์–ด์•ผ ํ•  ์ €๋น„์šฉ ์–ดํœ˜ ๊ธฐ์ค€์„ ์ด๋‹ค.

๋‹ฌ๋ผ์ง„ ์ 

์ด์ „ ๋ชจ๋ธ์€ ์งˆ๋ฌธ ๋‹จ์–ด์™€ ์ฝ”๋“œ ๋‹จ์–ด์˜ ๋งŽ์€ ์กฐํ•ฉ์„ ์ž‘์€ ํ‘œ์— ๋„ฃ์—ˆ๋‹ค. ์ƒˆ ๊ธฐ์ค€์„ ์€ ๋‹จ์–ด ๊ฒน์นจ ๋น„์œจ, ๋‹จ์–ด ์ง‘ํ•ฉ ์œ ์‚ฌ๋„, ์—ฐ์† ๋‘ ๋‹จ์–ด ์ผ์น˜, ๋ฌธ์ž 3๊ฐœ ์กฐ๊ฐ์˜ ๊ฒน์นจ, ์„ ์–ธ ์ด๋ฆ„๊ณผ์˜ ์ผ์น˜ ๋“ฑ 12๊ฐœ ํŠน์ง•(์ ˆํŽธ ํฌํ•จ)์„ ์‚ฌ์šฉํ•œ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์‹๋ณ„์ž ํ‘œ๊ธฐ์ธ parseHTTPResponse์™€ parse_http_response๋ฅผ ๋‹จ์–ด๋กœ ๋‚˜๋ˆ  ๋น„๊ตํ•œ๋‹ค. ๊ธธ์ด 4๊ฐœ ํŠน์ง•์„ ์ถ”๊ฐ€ํ•œ 16์ฐจ์› ๋ณ€ํ˜•๋„ ๋น„๊ตํ•ด ๋‹จ์ˆœํžˆ ์งˆ๋ฌธ/์ฝ”๋“œ ๊ธธ์ด๋กœ ์ž๋ฃŒ์˜ ํŽธํ–ฅ์„ ๋ฐฐ์šด ๊ฒƒ์€ ์•„๋‹Œ์ง€ ์‚ดํ•€๋‹ค. ๊ธฐ๋ณธ matching ๋ณ€ํ˜•์—์„œ๋Š” ๊ธธ์ด ๋„ค ์นธ์ด 0์ด๋‹ค.

์ด๋ฆ„ ์ถ”์ถœ์€ def, func, function ๋’ค ํ† ํฐ์„ ์ฝ๋Š” ํœด๋ฆฌ์Šคํ‹ฑ์ด๋ฉฐ ์–ธ์–ด ํŒŒ์„œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋”ฐ์˜ดํ‘œ ์•ˆ ํ‚ค์›Œ๋“œ๋‚˜ Go receiver ์„ ์–ธ์„ ์ž˜๋ชป ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ์›๋ž˜ ์ฝ”๋“œ ์ „์ฒด๋Š” ๋‚˜๋จธ์ง€ ํŠน์ง•์— ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ž˜๋ชป ์ฝ์€ ์ด๋ฆ„์œผ๋กœ ์ž…๋ ฅ์„ ์ž˜๋ผ ๋ฒ„๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. CoSQA์˜ Python ์Œ์œผ๋กœ ๊ฒ€์ฆํ–ˆ์œผ๋ฉฐ Go ์ €์žฅ์†Œ ์„ฑ๋Šฅ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

16๊ฐœ ๊ณ„์ˆ˜์˜ BCE ํ•™์Šตยท์ถ”๋ก ์€ Go๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ธฐ์กด ํ•™์Šต๊ธฐ์˜ ๊ธฐ๋ณธ 8,192์ฐจ์› ๋™์ž‘์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ฐจ์›์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๊ณ , ์ž˜๋ชป๋œ ํŠน์ง• index๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค. runtime ๋ชจ๋ธ ํ˜•์‹์€ ์ƒˆ ํŠน์ง• ๊ณ„์•ฝ riido-lexical-features-v1์ด๋‹ค. ๊ธฐ์กด .hbin๊ณผ ์„ž์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ์ด๋ฒˆ JSON ๊ฐ€์ค‘์น˜๋Š” ์‹คํ—˜์šฉ์ด๋ฉฐ riido-hints --model์— ๋ฐ”๋กœ ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค.

๊ฐ™์€ ์ž๋ฃŒ์—์„œ ๋น„๊ต

๋ถ„ํ• ๊ณผ ์ž…๋ ฅ ๋ฒ”์œ„๋Š” ์ด์ „ ์‹คํ—˜ ๊ทธ๋Œ€๋กœ๋‹ค. development 12,189๊ฐœ ์ค‘ 11,263๊ฐœ ํ•™์Šต, validation607๊ฐœ ์ค‘ 553๊ฐœ ์„ ํƒ/์ง„๋‹จ์ด๋‹ค. ํ•™์Šต926๊ฐœยท๊ฒ€์ฆ54๊ฐœ๊ฐ€ ๊ธธ์ด ํ•œ๋„๋กœ ์ œ์™ธ๋๋‹ค. ์•„๋ž˜ ์ˆ˜์น˜๋Š” 553๊ฐœ์— ๋งž์ถฐ ๋น„๊ตํ–ˆ๋‹ค. ์ด์ „ ์ฃผ๊ธฐ์˜ ์ตœ์ข… 2,400๊ฐœ ๊ฒฐ๊ณผ์™€ ์ง์ ‘ ๋น„๊ตํ•œ ํ‘œ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ๊ฒ€์ฆ AUC seed1729 seed2718
BM25 0.5378 ๋™์ผ ๊ธฐ์ค€์„ 
๋‹จ์–ด ๊ต์ง‘ํ•ฉ 0.5502 ๋™์ผ ๊ธฐ์ค€์„ 
matching FP32 0.5729 0.5730
matching INT8 0.5730 0.5732
matching 3์ง„ PTQ 0.5701 0.5701
matching 3์ง„ STE 0.5772 0.5762
matching+๊ธธ์ด FP32 0.5786 0.5781
matching+๊ธธ์ด INT8 0.5786 0.5781
matching+๊ธธ์ด 3์ง„ PTQ 0.5835 0.5835
matching+๊ธธ์ด 3์ง„ STE 0.5762 0.5762

2๋ณ€ํ˜• ร— 2seed ร— 2ํ•™์Šต๋ฅ  ร— 2ํ•™์Šต๋ฐฉ์‹์œผ๋กœ 16๊ฐ€์ง€ ์„ค์ •์„ ๊ฐ๊ฐ100 epoch ์‹คํ–‰ํ–ˆ๋‹ค. batch128/L2=0.0001. ๋ณ€ํ˜•ยทseedยทํ•™์Šต ๋ฐฉ์‹๋ณ„ ๊ฒ€์ฆ BCE ์ตœ์†Œ๊ฐ’์œผ๋กœ epoch/ํ•™์Šต๋ฅ ์„ ์„ ํƒํ•˜๊ณ , FP32์—์„œ INT8/PTQ๋ฅผ ํŒŒ์ƒํ•ด ์ด16๊ฐœ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ๊ธฐ๋กํ–ˆ๋‹ค. AUC๋Š” ์„ ํƒ ํ›„ ์ง„๋‹จ์ด๋ฉฐ ์ ์ˆ˜ ํฌ๊ธฐ๊ฐ€ ์ถ•์†Œ๋ผ๋„ ์ˆœ์„œ๊ฐ€ ๊ฐ™์œผ๋ฉด ์œ ์ง€๋  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ PTQ์˜ ์ž‘์€ ์†์‹ค ์ฐจ์ด๋งŒ์œผ๋กœ ์ •ํ™•๋„ ํ–ฅ์ƒ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‚ฌ์ „์— ์ฃผ ํ›„๋ณด๋ฅผ matching FP32 seed1729๋กœ ์ •ํ•˜๊ณ  ๊ฒ€์ฆ AUCโ‰ฅ0.60 ๋ฐ ๊ฐ™์€ ์ž๋ฃŒ BM25๋ณด๋‹คโ‰ฅ0.03 ๋†’์Œ์„ ์ตœ์ข… ์‹œํ—˜ ๊ฒ€ํ†  ์กฐ๊ฑด์œผ๋กœ ๊ณ ์ •ํ–ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด๋งŒ ์ถฉ์กฑํ–ˆ๋‹ค. ๊ฐ€์žฅ ์ž˜ ๋‚˜์˜จ ํƒ์ƒ‰ ๋ณ€ํ˜•์œผ๋กœ ์ฃผ ํ›„๋ณด๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋ฌธํ„ฑ์„ ๋‚ฎ์ถ”์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ๊ฐ’์€ ๋ฐ˜๋ณต ์‚ฌ์šฉํ•œ ๊ฒ€์ฆ ์ž๋ฃŒ์˜ ์  ์ถ”์ •์ด๊ณ  ํ†ต๊ณ„์  ๊ฐœ์„  ํ™•์ •ยท์‹ค์ œ ๊ฒ€์ƒ‰ ๊ฐœ์„ ยทLLM ๋น„์šฉ ์ ˆ๊ฐ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋น„์šฉ๊ณผ ์žฌํ˜„

  • Apple M4 Pro/24GiB/Go1.27.1 CPU, ์ „์ฒด ์‹คํ–‰ wall1.61์ดˆ/userCPU1.27์ดˆ/์ตœ๋Œ€RSS58,638,336B(55.92MiB)/swap0. ์›์ฒœ ์ฝ๊ธฐยท๋ถ„ํ• ยทํŠน์ง•ยท16์„ค์ • ํ•™์Šตยท๋‚ด๋ณด๋‚ด๊ธฐ ํฌํ•จ. ์ง์ „ 225.84MiB๋ณด๋‹ค ์ž‘์ง€๋งŒ ํŠน์ง•ยท์„ค์ • ์ˆ˜ยทepoch๊ฐ€ ๋‹ฌ๋ผ ๋™์ผ ์ž‘์—…์˜ ์†๋„ ๋น„๊ต๋Š” ์•„๋‹ˆ๋‹ค.
  • ์ฝ๊ธฐ ์‰ฌ์šด JSON ๋ชจ๋ธ ํŒŒ์ผ์€ ์ถœ์ฒ˜/์ข…๋ฅ˜/๊ฐ€์ค‘์น˜๋ฅผ ํฌํ•จํ•ด509~712B. ๊ณ„์ˆ˜16๊ฐœ์˜ float64 ๋ฉ”๋ชจ๋ฆฌ๋Š”128B์ง€๋งŒ ํŒŒ์„œยทํ† ํฐยท์ „์ฒด ํ”„๋กœ์„ธ์Šค ๋น„์šฉ์€ ์ถ”๊ฐ€๋œ๋‹ค. ์ด JSON์€ packed 1.58-bit ํŒŒ์ผ์ด ์•„๋‹ˆ๋‹ค. 3์ง„์€ ๊ฐ€์ค‘์น˜ ๊ฐ’/ํ•™์Šต ๋ฐฉ์‹์ด๋ฉฐ ์‹คํ–‰์€ ๋ถ€๋™์†Œ์ˆ˜์ ์ด๋‹ค.
  • ๊ณต๊ฐœ๋œ ์งง์€ Go ์˜ˆ๋ฌธ์˜ ํŠน์ง• ์ถ”์ถœ microbenchmark: 3ํšŒ ํ‰๊ท  ์ธก์ •๊ฐ’ ๊ฐ๊ฐ5,469/5,407/5,410ns/op, 6,360B/op,134allocs/op. ๋‹จ์ผ ์งง์€ ์ž…๋ ฅ์˜ ํ‰๊ท ์ด๋ฉฐ p95ยท64ํ›„๋ณด ๊ฒ€์ƒ‰ยท์ „์ฒด ์—์ด์ „ํŠธ ๋น„์šฉ์ด ์•„๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ• ๋‹น ๊ฐ์†Œ ์—ฌ์ง€๋Š” ์žˆ์ง€๋งŒ ํ’ˆ์งˆ๊ณผ ์‹ค์ œ ํ›„๋ณด ๊ฒ€์ƒ‰ ๊ฒ€์ฆ์ด ์šฐ์„ ์ด๋‹ค.
  • ๋ชจ๋“ 16๊ฐœ ๋ชจ๋ธ SHA256์€ ์žฌ์‹คํ–‰๊ณผ ๋™์ผํ–ˆ๋‹ค. ๋‹จ์œ„ ์‹œํ—˜์€ camel/snake/Unicode, ๊ธธ์ด ์ œ๊ฑฐ ๋Œ€์กฐ๊ตฐ, ๋นˆ ์ž…๋ ฅ ์œ ํ•œ์„ฑ, reserve ๋ณ€ํ™”์˜ ํ•™์Šต ๊ฒฉ๋ฆฌ, ์ฐจ์› ๋ฒ”์œ„, ๊ธฐ์กด ๊ธฐ๋ณธ ์ฐจ์›๊ณผ์˜ ๊ณ„์ˆ˜ ๋™์ผ์„ฑ์„ ํ™•์ธํ•œ๋‹ค. ์›๋ฌธยท๋ชจ๋ธยทํ”„๋กœํŒŒ์ผ์€ Git์— ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.
go run ./cmd/riido-lextrain --out .cache/lexical-training-new
go test ./internal/lexicalhint -run '^$' -bench BenchmarkFeatures -benchmem

๊ณ ์ • CoSQA ๋กœ์ปฌ ํŒŒ์ผ์ด ํ•„์š”ํ•˜๊ณ  ์ถœ๋ ฅ ํด๋”๋Š” ์ƒˆ ๊ฒƒ์ด์–ด์•ผ ํ•œ๋‹ค. ๊ณ„ํš ํŒŒ์ผ ํ•ด์‹œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์‹คํ–‰์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค. ์ข…๋ฃŒ0์€ ์‹คํ—˜ ์‹คํ–‰ ์„ฑ๊ณต์ด๋ฉฐ PrimaryReadyForFinal=false, Promotion=false๋‹ค.

๋‹ค์Œ PDCA

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

CoSQA ์ฝ”๋“œ MIT/๋ฐ์ดํ„ฐ C-UDA ๊ตฌ๋ถ„๊ณผ ๋กœ์ปฌ ๊ณ„์‚ฐยท์ง‘๊ณ„ ๊ณต๊ฐœ ์›์น™์„ ์œ ์ง€ํ•œ๋‹ค. ๋ชจ๋ธ ๋ณธ์ฒด๋Š” Git์— ์—†๊ณ , ์ƒˆ ํ˜•์‹์˜ ๊ฒ€์ฆยท๋ผ์ด์„ ์Šค/๊ณต๊ฐœ ๋‚ด์šฉ ๊ฒ€ํ†  ์ „ HF์— ๊ฒŒ์‹œํ•˜์ง€ ์•Š์•˜๋‹ค. ์›๋ž˜ Laya ๋ผ์šฐํ„ฐ์™€ ๋ณ„๋„์˜ ์—ฐ๊ตฌ์ด๋ฉฐ ์ธ์ฝ”๋”๋ฅผ 16๊ณ„์ˆ˜๋กœ ๋Œ€์ฒดํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋‹ค.