Laya Original 19 KO - teamswyg/laya-tools GitHub Wiki

์›๋ณธ Laya ์ฝ”๋“œ ๋ชจ๋ธ์˜ ๊ฒ€์ฆ ํ‰๊ฐ€ 19

์›๋ณธ ๊ฐ€์ค‘์น˜๋ฅผ FP32๋กœ ์‹คํ–‰ํ•ด๋„ ํ˜„์žฌ ๊ด€๋ จ์„ฑ ๊ฒ€์ฆ ๊ธฐ์ค€์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ •์ƒ ์ˆœ์„œ AUC๋Š” 0.5008, ๊ฐ™์€ ์งˆ๋ฌธ์˜ INT8์€ 0.5040, BM25๋Š” 0.5378์ด๋‹ค. ํ˜„์žฌ ์ฒดํฌํฌ์ธํŠธยท์ž…๋ ฅ ํ˜•์‹ยท๊ณผ์ œ์—์„œ INT8 ๋ณ€ํ™˜๋งŒ ์ œ๊ฑฐํ•œ๋‹ค๊ณ  ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋œ๋‹ค๋Š” ๊ทผ๊ฑฐ๊ฐ€ ์—†๋‹ค. ํ˜„์žฌ ํ—ค๋“œ์˜ ์ถœ๋ ฅ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ฆ๋ฅ˜์šฉ ์ •๋‹ต์œผ๋กœ ์ฑ„ํƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋น„๊ต ์กฐ๊ฑด

๊ณ„ํš์„ ์ถ”๋ก  ์ „์— ์ปค๋ฐ‹ํ•˜๊ณ  ๊ณ ์ •ํ–ˆ๋‹ค. ์‹คํ—˜ 17b์™€ ๋™์ผํ•œ CoSQA ์›์ฒœยท๊ทธ๋ฃน ๋ถ„๋ฆฌยท๊ฒ€์ฆ 607๊ฐœ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ธฐ์กด 4,096๋ฐ”์ดํŠธ/64๋‹จ์–ด ๋ฒ”์œ„์— ๋งž๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์งˆ๋ฌธ 553๊ฐœ๋งŒ ์ถ”๋ก ํ–ˆ๊ณ  54๊ฐœ๋Š” ๋ฒ”์œ„ ๋ฐ–์ด์—ˆ๋‹ค. ์ถ”๊ฐ€ ํ† ํฌ๋‚˜์ด์ € ์ œ์™ธ๋Š” ์—†์—ˆ๋‹ค. ์งˆ๋ฌธ๋งˆ๋‹ค ๋‘ ์„ ํƒ์ง€ ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•œ 1,106ํšŒ๋Š” ์งˆ๋ฌธ 1,106๊ฐœ๋ฅผ ๋œปํ•˜์ง€ ์•Š๋Š”๋‹ค.

์›๋ณธ์€ tindang/laya-code@25f97e5a2ec5f8cf7218a4f67504367d8832e1fe์˜ F16 ์ €์žฅ ๊ฐ€์ค‘์น˜๋ฅผ FP32 CPU๋กœ ์‹คํ–‰ํ–ˆ๋‹ค. ๋ชจ๋ธยท์„ค์ •ยทํ† ํฌ๋‚˜์ด์ €ยท์„ค์น˜๋œ Laya ์†Œ์Šค์˜ ํ•ด์‹œ๋ฅผ ์‹คํ—˜ 18 ๋ช…์„ธ์™€ ๋Œ€์กฐํ–ˆ๋‹ค. ์›๊ฒฉ ๋ชจ๋ธ ์ €์žฅ์†Œ์˜ Python ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ž…๋ ฅ์€ File: [unavailable] + ์ฝ”๋“œ, ์งˆ๋ฌธ์€ Is this source code relevant to the software change: "{query}"?, ์ •์ƒ ์„ ํƒ์ง€ ์ˆœ์„œ๋Š” false/true๋‹ค. ์‹ค์ œ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ทธ ์‚ฌ์‹ค์„ ํ‘œ์‹œํ•œ๋‹ค. ์ •์ƒ ์ˆœ์„œ์˜ true ํ™•๋ฅ ์ด ์ฃผ ์ง€ํ‘œ์ด๋ฉฐ ์—ญ์ˆœยทํ‰๊ท ์€ ์ง„๋‹จ์šฉ์ด๋‹ค. ์ด ๋ชจ๋ธ์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ๊ณผ ์ฝ”๋“œ์˜ ๊ด€๋ จ์„ฑ์œผ๋กœ ํ•™์Šต๋์œผ๋ฏ€๋กœ ์ผ๋ฐ˜ ์ž์—ฐ์–ด ์ฝ”๋“œ ๊ฒ€์ƒ‰๊ณผ ๊ณผ์ œ๊ฐ€ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ๊ณผ

๋ฐฉ๋ฒ• ์ •์ƒ ์ˆœ์„œ AUC ์—ญ์ˆœ AUC ๋‘ ์ˆœ์„œ ํ‰๊ท  ์ ์ˆ˜ AUC ์ˆœ์„œ ๋ณ€๊ฒฝ ์‹œ ํŒ๋‹จ ๋ถˆ์ผ์น˜
์›๋ณธ FP32, ์ด๋ฒˆ ์‹คํ—˜ 0.5008 0.5212 0.5167 211/553
INT8, ๊ณ ์ •๋œ ์‹คํ—˜ 17b 0.5040 0.5277 0.5214 217/553
BM25, ๋™์ผ ๋Œ€์ƒ 0.5378 ํ•ด๋‹น ์—†์Œ ํ•ด๋‹น ์—†์Œ ํ•ด๋‹น ์—†์Œ

AUC๋Š” ๊ด€๋ จ/๋น„๊ด€๋ จ ํ•ญ๋ชฉ์˜ ์ˆœ์„œ๋ฅผ ์–ผ๋งˆ๋‚˜ ๊ตฌ๋ถ„ํ•˜๋Š”์ง€ ์ธก์ •ํ•˜๋ฉฐ 0.5 ๋ถ€๊ทผ์€ ์ด ๊ตฌ๋ถ„์ด ๊ฑฐ์˜ ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ๋‹ค. ๋‘ ๋ชจ๋ธ ๋ชจ๋‘ ์‚ฌ์ „ ๊ธฐ์ค€ AUCโ‰ฅ0.60 ๋ฐ BM25 ๋Œ€๋น„ +0.03์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค. FP32์™€ INT8 ๊ฐ„ ์ž‘์€ ์ฐจ์ด์— ํ†ต๊ณ„์  ์šฐ์—ด์„ ์ฃผ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์—ฌ๋Ÿฌ ์‹คํ—˜์— ์‚ฌ์šฉํ•œ ๊ฒ€์ฆ ์ž๋ฃŒ์ด๋ฉฐ ๋…๋ฆฝ์ ์ธ ์ตœ์ข… ์‹œํ—˜๋„ ์•„๋‹ˆ๋‹ค.

์ž…๋ ฅยท์ •๋‹ตยท์‹คํ–‰ ๋ถ„๋ฆฌ

  • Go๊ฐ€ ์ „์ฒด ์›์ฒœ ํ•ด์‹œ์™€ ๊ทธ๋ฃน ๋ถ„๋ฆฌ๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฒ€์ฆ ๋Œ€์ƒ๋งŒ ์ถ”์ถœํ•œ๋‹ค. Python์— ๋ณด๋‚ด๋Š” ํŒŒ์ผ์—๋Š” ์งˆ๋ฌธยท์ฝ”๋“œยทํ† ํฐยท์„ ํƒ์ง€ยท์ž˜๋ฆผ ์—ฌ๋ถ€๊ฐ€ ์žˆ๊ณ  ์ •๋‹ต ๋ผ๋ฒจ์€ ์—†๋‹ค.
  • Python์€ 1,106๊ฐœ ์ž…๋ ฅ ์ „์ฒด๋ฅผ upstream build_sequence๋กœ ๋‹ค์‹œ ๊ตฌ์„ฑํ•œ๋‹ค. Go ํ† ํฐยท์„ ํƒ์ง€ ์œ„์น˜์™€ ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผ ์ฒซ ์ถ”๋ก ์„ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋ฒˆ ์‹คํ–‰์€ 1,106/1,106 ์ผ์น˜ํ–ˆ๋‹ค.
  • Python์€ ์›๋ณธ ๋ชจ๋ธ์˜ ์ ์ˆ˜๋งŒ ๋กœ์ปฌ ํŒŒ์ผ์— ๊ธฐ๋กํ•œ๋‹ค. Go๋Š” ์›๋ž˜ ์›์ฒœ์—์„œ ์ž…๋ ฅ์„ ์žฌ์ƒ์„ฑํ•ด ํŒŒ์ผ ์ „์ฒด ๋ฐ”์ดํŠธ, ์ˆœ์„œ๋ณ„ ์š”์ฒญ ํ•ด์‹œ, ๋ชจ๋ธยท๊ณ„ํšยท๋ถ„๋ฆฌ ๋ช…์„ธ๋ฅผ ๋Œ€์กฐํ•˜๊ณ  ๊ธฐ์กด ํ‰๊ฐ€ ์ฝ”๋“œ๋กœ ์ง‘๊ณ„ํ•œ๋‹ค.
  • BM25 ํ†ต๊ณ„๋Š” ๊ฐœ๋ฐœ ๋ถ„ํ• ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. reserve๋Š” ์ „์ฒด ํ•ด์‹œยท๋ถ„๋ฆฌ ํ™•์ธ์„ ์œ„ํ•ด ์ฝ์ง€๋งŒ ๋ชจ๋ธ ์ถ”๋ก ยทํ•™์Šตยท์„ฑ๋Šฅ ์„ ํƒ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์›๋ฌธยท๊ฐœ๋ณ„ ์ ์ˆ˜ ํŒŒ์ผ์€ Git/HF์— ์˜ฌ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.

Go ์ง‘๊ณ„๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ์‹œ๊ฐ„ ์™ธ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•จ์„ ํ™•์ธํ–ˆ๋‹ค. ์›๋ณธ ๋ชจ๋ธ ์ถ”๋ก  ์ „์ฒด๋ฅผ ๋‘ ๋ฒˆ ์‹คํ–‰ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋‹จ์œ„ ๊ฒ€์‚ฌ๋Š” ๊ฒ€์ฆ ๋ถ„ํ• ยท๋ฒ”์œ„ ๋ฐ– ์ œ์™ธ, ์„ ํƒ์ง€ ์ˆœ์„œ, ๋ณ€๊ฒฝ๋œ ์š”์ฒญ๊ณผ ์ž˜๋ฆผ ์ •๋ณด ๊ฑฐ๋ถ€, ์ ์ˆ˜ ์žฌ์‚ฌ์šฉ ๊ฑฐ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

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

Apple M4 Pro, macOS ARM64, CPU 4์Šค๋ ˆ๋“œ, ์ตœ๋Œ€ 512ํ† ํฐ. Python ์ฐธ์กฐ์˜ ์™ธ๋ถ€ wall 85.46์ดˆ, user CPU 163.06์ดˆ, ์ตœ๋Œ€ RSS 3,009,675,264๋ฐ”์ดํŠธ(์•ฝ 2.80GiB). ๋‚ด๋ถ€ ์ธก์ • 83.974์ดˆ์—๋Š” ๋ชจ๋ธ ์ค€๋น„์™€ 1,106ํšŒ ์ถ”๋ก  ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค. 15๋ถ„ยท8GiB RSS ์ œํ•œ์€ ํ˜ธ์ถœ ์‚ฌ์ด์— ํ™•์ธํ•˜๋ฉฐ ๊ฐ•์ œ์ ์ธ ํ˜ธ์ถœ ๋‚ด๋ถ€ ์ œํ•œ์€ ์•„๋‹ˆ๋‹ค.

ํ˜ธ์ถœ ์ค‘์•™๊ฐ’ 70.444ms, p95 96.377ms๋Š” Python์˜ ํ…์„œ ์ค€๋น„ยทFP32 ์‹คํ–‰ยทํ™•๋ฅ  ๊ณ„์‚ฐ ๊ตฌ๊ฐ„์ด๋‹ค. INT8 ์‹คํ—˜์˜ Go ํ† ํฐํ™” ํฌํ•จ ํ˜ธ์ถœ ์‹œ๊ฐ„๊ณผ ๊ฒฝ๊ณ„๊ฐ€ ๋‹ฌ๋ผ ์ •๋ฐ€ํ•œ ์†๋„ ๋น„๊ต์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒฐ๊ณผ์˜ Report.ProbeSeconds๋Š” ์ €์žฅ๋œ ์ ์ˆ˜๋ฅผ Go๋กœ ์žฌ์ƒยท์ง‘๊ณ„ํ•œ ์‹œ๊ฐ„์ด๋ฉฐ ๋ชจ๋ธ ์ถ”๋ก  ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋‹ค. CPU ์‹œํ—˜์ด๋ฉฐ GPUยทMPS ์„ฑ๋Šฅ์„ ์ฃผ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

go run ./cmd/riido-sourceprobe --stage prepare
python scripts/training/laya_original_validation.py --requests .cache/source19-requests.json --source-dir .cache/laya-code-source-18 --out .cache/source19-scores.json
go run ./cmd/riido-sourceprobe --stage evaluate

์›๋ณธ ํŒŒ์ผ ์ค€๋น„์™€ maintainer ํ™˜๊ฒฝ์€ ์‹คํ—˜ 18์„ ๋”ฐ๋ฅธ๋‹ค. Python์€ ์›๋ณธ ๋ชจ๋ธ ๋น„๊ต์šฉ ์œ ์ง€๊ด€๋ฆฌ ๋„๊ตฌ์ด๋ฉฐ ์‚ฌ์šฉ์ž ๋Ÿฐํƒ€์ž„์—๋Š” ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์žฌ์ค€๋น„ยท์žฌ์ถ”๋ก ์€ ์ƒˆ ์ถœ๋ ฅ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. sourceprobe์˜ --requestsยท--scores์™€ Python์˜ --requestsยท--out์„ ๋งž์ถ˜๋‹ค. ์ง‘๊ณ„ ๊ฒฐ๊ณผ์— ํ•ด์‹œยท๋ฒ„์ „ยท์ธก์ •๊ฐ’์„ ๊ธฐ๋กํ–ˆ๋‹ค.

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

Source: PR #42. Native evidence is local; Exact-head CI passed macOS, Linux, secrets and quality. Merged as f73fd7f78e54a33febbe7a0861154e6aff327f5b; software CI does not make the model-quality gate pass.