Performance and Troubleshooting KO - teamswyg/laya-tools GitHub Wiki

์„ฑ๋Šฅ๊ณผ ๋ฌธ์ œ ํ•ด๊ฒฐ

English ยท ํ™ˆ

Laya๋ฅผ ์ผค์ง€ ํŒ๋‹จํ•˜๊ธฐ

M4 Pro/24GiB ์ดˆ๊ธฐ ์ธก์ •์ด๋ฉฐ ๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ์˜ ๋ณด์žฅ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฝ๋กœ ๊ด€์ฐฐ ๊ฒฐ๊ณผ
์ €์žฅ์†Œ 6๊ฐœ ์˜ˆ์ œ์˜ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰๋งŒ ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค RSS ์•ฝ 11.5MiB
Laya๋ฅผ ์ถ”๊ฐ€ํ•œ ์ €์žฅ์†Œ preview RSS ์•ฝ 1.40GiB, ๋ชจ๋ธ ์‹œ์ž‘ ์•ฝ 942ms
Laya ์˜ต์…˜์„ ์ผ  ํ˜ผํ•ฉ 24์š”์ฒญ ๋กœ๋”ฉ ์ œ์™ธ ์ค‘์•™๊ฐ’ 39.669ms, p95 54.040ms. ์ถ”๋ก  ์ƒ๋žต ์š”์ฒญ ํฌํ•จ
๊ฐ€์ƒ ์ €์žฅ์†Œ 1,000๊ฐœ์˜ ์ˆœ์ˆ˜ Go ํ›„๋ณด ๊ฒ€์ƒ‰ ์š”์ฒญ๋‹น ์•ฝ 0.17ms. ์ธ๋ฑ์Šค ์ƒ์„ฑยท์ถ”๋ก  ์ œ์™ธ
๊ฐœ๋ฐœ ๊ฒ€์ƒ‰ ํ‰๊ฐ€์˜ ํ›„๋ณด 8๊ฐœ ์žฌ์ •๋ ฌ ์•ฝ 1.6โ€“1.8์ดˆ ์ถ”๊ฐ€

์‰ฌ์šด ๊ฐ€์ƒ ์ €์žฅ์†Œ ํ‰๊ฐ€์—์„œ ํ‚ค์›Œ๋“œ Top-1์€ ์ •๋‹ต ์žˆ๋Š” ์งˆ๋ฌธ 18/18, Laya ์›์‹œ ์„ ํƒ์€ ํŒ๋‹จํ•œ 15๊ฑด ์ค‘ 8๊ฑด ์ •๋‹ต, ๊ธฐ์ค€ ํ†ต๊ณผ ์ถ”์ฒœ์€ 0๊ฑด์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”์ฒœ coverage๊ฐ€ 0์ด๋ฉด ์ •๋ฐ€๋„๊ฐ€ ๋†’๋‹ค๋Š” ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ Codex ์ ˆ๊ฐ๋„ ์•„์ง ์ž…์ฆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ‚ค์›Œ๋“œ๋ถ€ํ„ฐ ์‚ฌ์šฉํ•˜๊ณ  ์‹ค์ œ ์—…๋ฌด๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ์ •๋‹ต ์žˆ๋Š” ์งˆ๋ฌธ์œผ๋กœ ๋น„๊ตํ•˜์„ธ์š”.

์ž์ฃผ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ

์ฆ์ƒ ํ™•์ธํ•  ๊ฒƒ
riidolaya: command not found ./riidolaya ๋˜๋Š” ./bin/riidolaya๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์„ค์น˜ ํด๋”๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ์ œ ์นดํƒˆ๋กœ๊ทธยท์„ค์ • ํŒŒ์ผ ์—†์Œ laya-tools clone ํด๋”์—์„œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ์••์ถ•์—๋Š” ์˜ˆ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ชจ๋ธยท๋Ÿฐํƒ€์ž„ ์—†์Œ riidolaya doctor ํ™•์ธ ํ›„ riidolaya setup. ๋‹ค์šด๋กœ๋“œ ๋ฌด๊ฒฐ์„ฑ๋„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์šด๋กœ๋“œยท์ฒดํฌ์„ฌ ์‹คํŒจ ๋„คํŠธ์›Œํฌยทํ”„๋ก์‹œ ์„ค์ •์„ ํ™•์ธํ•˜๊ณ  setup์„ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌ์„ฌยทTLS ๊ฒ€์ฆ์„ ์šฐํšŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ ์ •ํ™•ํ•œ ์‹๋ณ„์ž, root, ๋ฌด์‹œ ๊ทœ์น™์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—†๋Š” ํ›„๋ณด๋ฅผ ์žฌ์ •๋ ฌ๋กœ ๋˜์‚ด๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
ํ•˜์œ„ ํด๋” ๊ฒ€์ƒ‰ ์‹คํŒจ rg๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. Git ๋ฃจํŠธ์™€ ์ผ๋ฐ˜ ํด๋”์˜ ํŒŒ์ผ ํƒ์ƒ‰ ๋ฐฉ์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๋ชจ๋ธ ๋ผ์šฐํ„ฐ๊ฐ€ ๊ณ„์† strong ์„ ํƒ abstainedยทreason์„ ๋ด…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ™•์‹ ๋„๋Š” 0.9์ด๊ณ  ํ•œ๊ตญ์–ด ๋ถ„๋ฅ˜๋Š” ๋ฏธ๊ฒ€์ฆ์ž…๋‹ˆ๋‹ค. ๊ธฐ์ค€์„ ๋‚ฎ์ถ”๋ฉด ์ข‹์•„์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
--laya์ธ๋ฐ repo ๊ฒฐ๊ณผ๊ฐ€ candidate ๋ฏธ์ง€์› ๋ฌธ์žยท์„ค๋ช… ๋˜๋Š” ์ถ”๋ก  ์‹คํŒจ ์‚ฌ์œ ๋กœ ํ‚ค์›Œ๋“œ ํ›„๋ณด๋งŒ ๋‚จ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
repo ๊ฒฐ๊ณผ๊ฐ€ abstain ๋ชจํ˜ธํ•จยท์—ฌ๋Ÿฌ ์ €์žฅ์†Œยท๋‚ฎ์€ ํ™•์‹ ๋„ยทnoneยท์ž˜๋ฆผ ๋“ฑ์ด ์›์ธ์ž…๋‹ˆ๋‹ค. ์„ค๋ช…์„ ์ค„์ด๊ณ  ์ž‘์—… ์˜๋„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์ƒ์ฃผ ์„œ๋น„์Šค์˜ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ชจ๋ธ์„ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋ฉด ์žฌ์‚ฌ์šฉํ•˜๊ณ  ๋๋‚˜๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
Core ML ์ดˆ๊ธฐํ™” ์‹คํŒจ ์‹œํ—˜ํ•œ ๋™์  ๋ชจ๋ธ์€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ CPU๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. GPUยทANE ํšจ๊ณผ๋Š” ๋ฏธ๊ฒ€์ฆ์ž…๋‹ˆ๋‹ค.
์—์ด์ „ํŠธ ์ถœ๋ ฅ ํ•ด์„ ์‹คํŒจ --jsonยทJSONL์„ ์‚ฌ์šฉํ•˜๊ณ  stderr๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ข…๋ฃŒ ์„ฑ๊ณต์„ ์ถ”์ฒœ ์„ฑ๊ณต์œผ๋กœ ํ•ด์„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ธก์ •ํ•˜๊ธฐ

riidolaya bench --iterations 30 --threads 4
riidolaya bench --cpu-profile cpu.pprof --heap-profile heap.pprof --ort-profile ort-trace
go tool pprof -top cpu.pprof
go tool pprof -top heap.pprof
/usr/bin/time -l riidolaya bench --iterations 30

๋งˆ์ง€๋ง‰ ๋ช…๋ น์€ macOS์šฉ์ž…๋‹ˆ๋‹ค. Go pprof๋Š” ๋„ค์ดํ‹ฐ๋ธŒยทGPU ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๋ฏ€๋กœ Go heap์„ ์ „์ฒด RAM์œผ๋กœ ๋ณด๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ํ˜ธ์ถœ์€ ์ด๋ฆ„์ด ๋ถˆ๋ถ„๋ช…ํ•  ์ˆ˜ ์žˆ๊ณ  ORT ํ”„๋กœํŒŒ์ผ๋ง ์ž์ฒด๋„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํŒŒ์ผยท๋น„๊ณต๊ฐœ ์นดํƒˆ๋กœ๊ทธ๋ฅผ ๊ณต๊ฐœ ์ด์Šˆ์— ์˜ฌ๋ฆฌ์ง€ ๋ง๊ณ  ๋ฒ„์ „ยทํ”Œ๋žซํผยท๋ช…๋ นยท๋ฏผ๊ฐ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•œ ์žฌํ˜„ ์˜ˆ์ œ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ์ธก์ • ยท ์ €์žฅ์†Œ ํ‰๊ฐ€ ยท ๋ฌธ์ œ ์ œ๋ณด

Actions ์„ฑ๋Šฅ ๊ฒ€์‚ฌ ์•ˆ๋‚ด: ๊ณ ์ • ์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„ ์‹คํ–‰ ์‹œ๊ฐ„ยทCPUยท์ตœ๋Œ€ RSS์™€ ํŒ๋‹จ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ SoA ์ตœ์ ํ™”์™€ ๋‚œ์ด๋„ ๊ณจ๋“ ์…‹