Retained Body Composition - kimjooyoon/meta-ontology-go GitHub Wiki

ํ•œ ๋ฒˆ ์กฐ๋ฆฝํ•œ ๊ทธ๋ž˜ํ”„๋กœ ๋‹ค์Œ ์ž…๋ ฅ ์‹คํ–‰ํ•˜๊ธฐ

์กฐํšŒ ๊ธฐ์ค€: 2026-10-05 KST. ๊ฐœ๋ฐœ PR #1227์— ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ์ž…๋ ฅ์— ์ด์–ด ์“ฐ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์˜ ์ „์ฒด 12๊ฐœ CI ์ž‘์—…๊ณผ ์›๋ณธ ๊ฒฐ๊ณผ ํ™•์ธ ํ›„ 84a911a4๋กœ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธก์ • ์†Œ์Šค๋Š” ๊นจ๋—ํ•œ ํ›„๋ณด 38962397์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ PR #1228๋„ ์ „์ฒด12๊ฐœ ์ž‘์—…์„ ํ†ต๊ณผํ•ด ๋ณ‘ํ•ฉ๋์œผ๋ฉฐ ๋‘ ์‹คํ–‰๊ธฐ๋ฅผ ๊นจ๋—ํ•œ main 7acccf56์—์„œ ๋นŒ๋“œํ•ด ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜๋ณธ์˜ ์ƒˆ ๊ด€์ธก์€ ๊ฐœ๋ฐœ ํ›„๋ณด์˜ ํ”„๋กœ๊ทธ๋žจ ์ง€๋ฌธยท์‹ค์ œ ๊ฐ’ยท๋ถ€๋ถ„ ์ถฉ์กฑ ์ˆ˜๋ฅผ20๊ฐœ ์ž‘์—… ๋ชจ๋‘ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. FP32์—์„œ ๋งŒ๋“  ์ €์žฅ ์กฐ๋ฆฝ์˜ ์—ฌ์„ฏ ๋ฌถ์Œ ์ค‘์•™๊ฐ’์€2,327.40msโ†’497.14ms, CPU ์‹œ๊ฐ„1.45์ดˆโ†’0.36์ดˆ, ์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ82.88MiBยท82.14MiB์˜€์Šต๋‹ˆ๋‹ค. ์—ฌ์„ฏ ๋ช…๋ นยทํ•œ ๋ช…๋ น์˜ ๋น„๊ต์ด๋ฉฐ ์ƒˆ ์ถ”๋ก  ์ค‘์•™๊ฐ’์€18.792ยตs์ž…๋‹ˆ๋‹ค. ํ›„๋ณด์™€ ์„ค์น˜๋ณธ์˜ ์›๋ณธ ๊ด€์ธก์€ ๋ณ„๋„๋กœ ๋ณด์กดํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ตฌ๋ฅผ ์กฐ๋ฆฝํ•ด ์ž‘์—…๋Œ€์— ๋‘” ๋’ค ์žฌ๋ฃŒ๋งŒ ๋ฐ”๊พธ๋Š” ํ๋ฆ„์ž…๋‹ˆ๋‹ค. Gooo๊ฐ€ ๋ณธ๋ฌธ๊ณผ ์—ฐ๊ฒฐ์„ ์„ ์–ธํ•˜๊ณ , ์„ ํƒํ•œ ์ž‘์€ ๋ชจ๋ธ์ด ์กฐ๋ฆฝ ์ˆœ์„œ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ์ž…๋ ฅ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๊ณ  ๋‹ค์Œ ์ž…๋ ฅ๋ถ€ํ„ฐ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ ์‹ค์ œ ๊ฐ’์€ ์ƒˆ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ ํ•  ๋ช…๋ น

ํ˜„์žฌ main ์ปดํŒŒ์ผ๋Ÿฌ ์ €์žฅ์†Œ์—์„œ ์‹ค์ œ Go1.27.1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

go run ./cmd/gooo body-compose \
  --source examples/body-codegen/record-field-assembly.gooo.fixture \
  --case-series examples/body-codegen/record-field-case-series.json \
  --repeat 2 --out /tmp/gooo-series-example

๋ชจ๋ธ์„ ์“ฐ๋ ค๋ฉด --model /path/to/model.json์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๊ฒฐ๊ณผ ํด๋”์— ์„ ํƒ๋œ Goooยท์ƒ์„ฑ Goยทcomposition.jsonยท runtime-history.jsonยทcase-series.json์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

--composition์— ์ €์žฅํ•œ ์กฐ๋ฆฝ์„ ์ฃผ๋ฉด ์ƒˆ ๋ชจ๋ธ ํŒ๋‹จ์€ 0๋ฒˆ์ž…๋‹ˆ๋‹ค. ์ƒˆ ๋ช…๋ น์˜ ์ฒซ ์‹คํ–‰์—์„œ ํ•œ ๋ฒˆ ๋นŒ๋“œํ•œ ๋‹ค์Œ ๊ทธ ์š”์ฒญ ์•ˆ์—์„œ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์€ ์ตœ๋Œ€16ํšŒ์ด๋ฉฐ, ๋‹ซํž ๋•Œ ์ž„์‹œ ์ž‘์—…๊ณต๊ฐ„์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์–ด๋А ์ •๋„ ๋งž์•˜๋Š”์ง€ ์ฝ๊ธฐ

์˜ˆ์ œ๋Š” Candidate์˜ ์ œ๋ชฉยท์ƒํƒœยท์‚ฌ์œ ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ Label์ด ์ฝ์Šต๋‹ˆ๋‹ค. ํ•œ๊ธ€ยท์˜๋ฌธ ์ž…๋ ฅ์„ ๋ฐ”๊พผ ์„ธ ๋ฌถ์Œ์„ ๋‘ ๋ฒˆ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์„œ๋Œ€๋กœ ๊ธฐ๋Œ€ ์ถœ๋ ฅ4/4ยท2/2ยท1/2๊ฐ€ ๋‘ ๋ฒˆ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋ฌถ์Œ์€ ๊ธฐ๋Œ€ ๋ผ๋ฒจ์„ ์ผ๋ถ€๋Ÿฌ ๋‹ค๋ฅด๊ฒŒ ์ ์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ธฐ๋ก๊ฐ’๊ณผ ๋ผ๋ฒจ์€ ๋‚จ์•„ ์žˆ์œผ๋ฏ€๋กœ ์–ด๋–ค ๊ฐ’์ด ๋‹ฌ๋ž๋Š”์ง€ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

stdout์˜ runtime์€ ๋งˆ์ง€๋ง‰ ์‹คํ–‰์ด๋ฉฐ, runtime_history๋Š” ์ „์ฒด ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์˜ traces์—์„œ ํ˜„์žฌ ์ž…๋ ฅยท๊ธฐ๋Œ€๊ฐ’ยท์‹ค์ œ ๊ฐ’๊ณผ ์ „๋‹ฌ๋œ ๊ธฐ๋ก ํ•„๋“œ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. artifact.reused์™€ ํ˜„์žฌ build๋กœ ์ตœ์ดˆ ๋นŒ๋“œ ๋น„์šฉ์„ ๋‹ค์Œ ์‹คํ–‰ ๋น„์šฉ๊ณผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํŒ๋‹จ์€ ์กฐ๋ฆฝ ๊ธฐ๋ก์— ํ•œ ๋ฒˆ ๋‚จ๊ณ  ์‹ค์ œ ์‹คํ–‰์˜ ๋ชจ๋ธ ํ˜ธ์ถœ์€0๋ฒˆ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ ์ธก์ •

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

์ž์ฒด FP32์—์„œ ๋งŒ๋“  ์ €์žฅ ์กฐ๋ฆฝ, ์ค‘์•™๊ฐ’ ๋งค๋ฒˆ ๋นŒ๋“œ ํ•œ ๋ฒˆ ๋นŒ๋“œ
์—ฌ์„ฏ ๋ฌถ์Œ ์ „์ฒด 2,324.88ms 509.65ms
ํ”„๋กœ์„ธ์Šค CPU ์‹œ๊ฐ„ 1.46์ดˆ 0.38์ดˆ
์ตœ๋Œ€ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ 82.75MiB 82.73MiB

์ƒˆ ์ž์ฒด ๋ชจ๋ธ ํŒ๋‹จ ์ค‘์•™๊ฐ’์€18.834ยตs์˜€์Šต๋‹ˆ๋‹ค. ์ฒซ ์‹คํ–‰ ์ค‘์•™๊ฐ’371.323ms ๋’ค์˜ 15๊ฐœ ์žฌ์‚ฌ์šฉ ์‹คํ–‰ ์ค‘์•™๊ฐ’์€22.001ms์˜€์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ์˜ ๋А๋ฆฐ ๊ด€์ธก๋„ ์›๋ณธ์— ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. CPUยท๋ฉ”๋ชจ๋ฆฌ๋Š” Go ๋นŒ๋“œ์™€ ์ž์‹ ์‹คํ–‰์„ ํฌํ•จํ•˜๋ฉฐ, ์ „์ฒด ์ปดํ“จํ„ฐ CPU ์‚ฌ์šฉ๋ฅ  ๋ณ€ํ™”๋Š” ์ธก์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด PTQยทQAT ๋ชจ๋ธ๋„ ๊ฐ๊ฐ ํ•œ ๋ฒˆ ์‹ค์ œ๋กœ ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์œ ์ง€ํ–ˆ๊ณ , ๊ฐ ๋ชจ๋ธ์˜ ์ƒ์ฃผ ํ…์„œ๋Š”18,752๋ฐ”์ดํŠธ์˜€์Šต๋‹ˆ๋‹ค. FP32๋Š”74,624๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์ค‘์น˜์™€ ํ•™์Šต์€ ์ด๋ฒˆ์— ๋ฐ”๊พธ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ํ–‰๋ ฌ ์ €์žฅ์€ ๋ฐ”์ดํŠธ๋‹น ์‚ผ์ง„๊ฐ’5๊ฐœ๋กœ ๊ฐ€์ค‘์น˜๋‹น ์•ฝ1.6๋น„ํŠธ์ž…๋‹ˆ๋‹ค. FP32 ํŽธํ–ฅ์„ ํฌํ•จํ•œ ๊ฐ ๊ฐ€์ค‘์น˜ ํŒŒ์ผ์€3,854๋ฐ”์ดํŠธ์ด๋ฉฐ, ๋””์ฝ”๋”ฉํ•œ ์ƒ์ฃผ ํ…์„œ18,752๋ฐ”์ดํŠธ์™€ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์•ž์„ 2๋น„ํŠธ ํ‘œ๊ธฐ๋ฅผ ์‹ค์ œ ํŒŒ์ผ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. 1.58์€ ์‚ผ์ง„์ˆ˜ ์ •๋ณด๋Ÿ‰์ž…๋‹ˆ๋‹ค.

GitHub ์›๋ณธยทGo ๊ฒ€์‚ฐ ๋„๊ตฌ ยท ํ›„์† ์—ฐ๊ตฌ PR #13 ยท Hugging Face ๊ณต๊ฐœ ๊ด€์ธก.

์ตœ์‹  ๋ชจ๋ธ ๋ถ€๋ก์€ ์„ค์น˜ ๊ด€์ธกยทGo ์š”์•ฝ ๋„๊ตฌยทLinux ๊ฒ€์‚ฐ๊ณผ ์–‘์žํ™” ํ‘œ๊ธฐ์˜ ์ •์ •์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์‹œํ•œ 151๊ฐœ ํŒŒ์ผ์„ ํ•ด๋‹น ๊ฐœ์ •์—์„œ ๋‹ค์‹œ ๋‚ด๋ ค๋ฐ›์•„ ์›๋ณธ ๋ฐ”์ดํŠธ์™€ ์ผ์น˜ํ•จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Go ๋„๊ตฌ์˜ --text๋Š” ์‹คํ–‰๋ณ„ ์ถœ๋ ฅยทํ•„๋“œ ์ถฉ์กฑ๋ฅ , ์‹ค์ œ ๋ฏธ์ถฉ์กฑ ๊ฐ’, ํ˜„์žฌ ๋นŒ๋“œยท๋‘ ๋ฒˆ์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ›„์† ์—ฐ๊ตฌ PR #14๋„ 23๊ฐœ ์ž‘์—…์„ ๋ชจ๋‘ ํ†ต๊ณผํ•ด ์—ฐ๊ตฌ main d799e9cd๋กœ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜ํ•œ main์„ ๊ณ ์ •ํ•œ ์ƒˆ Linux ์—ฌ๋Ÿ ์‘๋‹ต๋„ ๋”ฐ๋กœ ๋‚ด๋ ค๋ฐ›์•„ ๊ฒ€์‚ฐํ–ˆ๊ณ , ์‹ค์ œ ์›๋ณธ์„ ๋ชจ๋ธ ๋ถ€๋ก์— ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ตฌ PR #13์€ CI37214051407์˜ 23๊ฐœ ์ž‘์—…์„ ๋ชจ๋‘ ํ†ต๊ณผํ•ด ์—ฐ๊ตฌ main 71cca65a๋กœ ๋ณ‘ํ•ฉ๋์Šต๋‹ˆ๋‹ค. Linux์—์„œ๋„ ๋„ค ํ”„๋กœํ•„์˜ ์ƒˆ ์ƒ์„ฑ๊ณผ ์ €์žฅ ์žฌ์‹คํ–‰์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ ค๋ฐ›์€ ์—ฌ๋Ÿ ์›๋ณธ์„ ๋”ฐ๋กœ ๊ฒ€์‚ฐํ•ด ๊ฐ ์š”์ฒญ์˜ ํ˜„์žฌ ์ž…๋ ฅยท4/4ยท2/2ยท1/2 ๋ฐ˜๋ณต๊ณผ ์ถ”๊ฐ€ ์ถ”๋ก  ์ˆ˜๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์—๋Š” ๋‹ค๋ฅธ ๋ณธ๋ฌธ ๋ชจ์–‘์„ ์œ„ํ•œ ์†Œํ˜• ํ•™์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ๋ฌธ ์ƒ์„ฑ์ž์˜ ํ›„๋ณด์‹๊ณผ ์„ ์–ธ๋œ ์—ฐ๊ฒฐ์„ ๊ธฐ๋ฏผํ•˜๊ฒŒ ์กฐ๋ฆฝํ•˜๋Š” ์‚ฌ์šฉ ํ๋ฆ„์„ ๋ฐœ์ „์‹œํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.