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๊ณ์๋ก ๋์ฒดํ๋ค๋ ์๋ฏธ๊ฐ ์๋๋ค.