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

์กฐ๋ฆฝํ•œ ํ™œ๋™ ๋ณธ๋ฌธ์„ ์—ฐ๊ฒฐํ•ด์„œ ์‹คํ–‰ํ•˜๊ธฐ

Gooo์˜ bind๋Š” ํ•œ ํ™œ๋™์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฅธ ํ™œ๋™์˜ ์ž…๋ ฅ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. body-compose๋Š” ๊ทธ ์—ฐ๊ฒฐ์„ ๋”ฐ๋ผ ์‹ค์ œ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ์กฐ๋ฆฝํ•˜๊ณ , ํ•˜๋‚˜์˜ Go ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋นŒ๋“œํ•œ ๋’ค ๋ฐ”๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ์ž…๋ ฅ์€ ์ด๋ฆ„์œผ๋กœ ์ง€์ •ํ•˜๊ณ  ๊ฐ ๋‹จ๊ณ„์˜ ์‹ค์ œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์™„์„ฑํ•œ ๋ถ€ํ’ˆ์„ ์—ฐ๊ฒฐ์„ ์— ๊ฝ‚์•„ ์ „์ฒด ๋™์ž‘์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ณต๊ฐœ ์„ค์น˜๋ณธ์€ 0.6.22-dev ์†Œ์Šค d3b44fc6ยทGo1.27.2ยทSDK v0.2.26์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์†Œ์Šค 485ef8ed์˜ gooo-dev๋Š” ์ž…๋ ฅ๋งŒ ๋„ฃ๊ณ  ๊ด€์ธกํ•œ ๋’ค ์ €์žฅ ์ƒ์„ฑ๋ฌผ์„ ๊ธฐ๋Œ€๊ฐ’์œผ๋กœ ๊ฒ€์‚ฌํ•˜๋Š” body-compose --inputs๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๊ธฐ์—์„œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ž…๋ ฅ์˜ ํ•ฉ๋ฅ˜์™€ ์ผ๋ถ€ ์ž…๋ ฅ๋งŒ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ƒˆ ์ž…๋ ฅ ํ•ฉ๋ฅ˜ ๊ฐ€์ด๋“œ์—์„œ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ƒํƒœ ยท ๊ณ ์ • ์†Œ์Šค์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ.

์ด ํŽ˜์ด์ง€์˜ ์•„๋ž˜ ๊ด€์ธก์€ ์•ž์„  main 2d1ce2d07eaa29f00a412cbaa22c96008f0b7250์—์„œ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ #1219ยทmain #1220์˜ ์ „์ฒด CI์™€ ๋…๋ฆฝ ์ฆ๊ฑฐ ํ™•์ธ ํ›„ ๋ณ‘ํ•ฉํ•˜๊ณ  CLIยท์‹คํ–‰๊ธฐ๋ฅผ ํ•จ๊ป˜ ์„ค์น˜ํ•œ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค.

์ผ๊ณฑ ํ™œ๋™์˜ ์˜ˆ์ œ

์ •์ˆ˜ ์กฐ๋ฆฝ โ”€โ”€โ†’ ๋ฒ”์œ„ ์ œํ•œ โ”€โ”€โ†’ ์ฐธ๊ฑฐ์ง“ ํŒ๋‹จ โ”€โ”€โ†’ ๋ถ€์ •
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ†’ ๋‘ ๋ฐฐ๋กœ ๋งŒ๋“ค๊ธฐ

๋ณ„๋„ ํ…์ŠคํŠธ ์ž…๋ ฅ โ”€โ”€โ†’ ๋А๋‚Œํ‘œ ๋ถ™์ด๊ธฐ โ”€โ”€โ†’ ๊ฐ™์€ ๋ฌธ์ž์ธ์ง€ ํŒ๋‹จ

๋‘ ํ™œ๋™์˜ ์ •์ˆ˜ ๋ณธ๋ฌธ์€ assembling ์„ ํƒยทํ•œ์˜ ์˜๋„ยท์œ ํ•œ ์˜ˆ์‹œ๋กœ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” Gooo์— ์ž‘์„ฑํ•œ ์ผ๋ฐ˜ ๋ณธ๋ฌธ์ด๋ฉฐ IntegerยทBooleanยทText ํƒ€์ž…์„ ์„ ์–ธํ•œ ์—ฐ๊ฒฐ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์€ ํ•œ ์š”์ฒญ์—์„œ ํ•œ ๋ฒˆ ๋กœ๋“œํ•˜๊ณ  ๊ฐ ์กฐ๋ฆฝ์— ํ•œ ๋ฒˆ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ์ƒ๋žตํ•˜๋ฉด ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ด€์ธก์˜ ์ž์ฒด ๋ชจ๋ธ์„ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๊ณต๊ฐœ ๋ชจ๋ธ ์ €์žฅ์†Œ์—์„œ ๋‘ ํŒŒ์ผ๋งŒ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ 1,215๋ฐ”์ดํŠธ์™€ FP32 ๊ฐ€์ค‘์น˜ 74,624๋ฐ”์ดํŠธ์ด๋ฉฐ, ์•„๋ž˜ ๊ณ ์ • ๋ฆฌ๋น„์ „์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐยท๊ณต๊ฐœ ๊ฐ€์ค‘์น˜ ์ง€๋ฌธ์ด ์‹ค์ œ ์‚ฌ์šฉํ•œ ํŒŒ์ผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

hf download asketeddy/gooo-three-choice-feedback-tiny-v1 \
  models/set-feedback/fp32/model.json \
  models/set-feedback/fp32/weights.bin \
  --revision 24238ca67048b36bc305731799985271bb752dd1 \
  --local-dir gooo-models
gooo body-compose \
  --source examples/body-codegen/native-composition.gooo.fixture \
  --cases examples/body-codegen/native-composition-cases.json \
  --model gooo-models/models/set-feedback/fp32/model.json \
  --out /tmp/gooo-model-composition

์ด๋ฒˆ์— ์“ด ๊ณต๊ฐœ ๋ชจ๋ธ. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์™€ ์ธ์ ‘ํ•œ weights.bin์„ ํ•จ๊ป˜ ๋‘ก๋‹ˆ๋‹ค.

gooo body-compose \
  --source examples/body-codegen/native-composition.gooo.fixture \
  --cases examples/body-codegen/native-composition-cases.json \
  --out /tmp/gooo-composition

์ƒˆ ์ถœ๋ ฅ ํด๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. original.gooo, cases.json, composition.json, runtime.json, realized.gooo, generated.go, main.go, go.mod๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์„ธ ํŒŒ์ผ์ด ์‹ค์ œ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. main.go์—์„œ ์—ฐ๊ฒฐ๋ณ„ ๊ฐ’์˜ ์ „๋‹ฌ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , realized.gooo๋Š” ๋‹ค์Œ ์กฐ๋ฆฝ์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ๋œ ์กฐ๋ฆฝ ๊ธฐ๋ก์„ ๋‹ค๋ฅธ ์˜ˆ์‹œ๋กœ ํ™•์ธํ•˜๋ ค๋ฉด:

gooo body-compose \
  --source /tmp/gooo-composition/original.gooo \
  --composition /tmp/gooo-composition/composition.json \
  --cases /tmp/gooo-composition/cases.json

์ด ๊ณผ์ •์€ ์ถ”๊ฐ€ ๋ชจ๋ธ ํ˜ธ์ถœ ์—†์ด ๋ชจ๋“  ์„ ํƒ ๋ณธ๋ฌธ๊ณผ ์—ฐ๊ฒฐ ์ฝ”๋“œ๋ฅผ ์žฌ๊ตฌ์„ฑํ•œ ๋’ค ์ƒˆ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ๋‘ ๋ฒˆ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ชจ๋ธ ํŒ๋‹จ ๊ธฐ๋ก๊ณผ ์ด๋ฒˆ ์‹คํ–‰์„ ๋‚˜๋ˆ„์–ด ๋‚จ๊น๋‹ˆ๋‹ค.

์™„์ „์„ฑ ์ฝ๊ธฐ

{
  "schema": "gooo/body-composition-cases/v1",
  "cases": [{
    "inputs": {"Assemble": -8, "Decorate": "gooo"},
    "expected": {"Clamp": 10, "Invert": false, "Same": true}
  }]
}

์ž…๋ ฅ์€ ์—ฐ๊ฒฐ์„ ๋ฐ›์ง€ ์•Š๋Š” ๋ชจ๋“  ์‹œ์ž‘ ํ™œ๋™์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ ์ž…๋ ฅ์€ ์•ž ํ™œ๋™์˜ ์‹ค์ œ ๊ฒฐ๊ณผ๋กœ๋งŒ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Œ€๊ฐ’์€ ์‹œ์ž‘ยท์ค‘๊ฐ„ยท๋งˆ์ง€๋ง‰ ํ™œ๋™ ์–ด๋””์—๋“  ์ ์„ ์ˆ˜ ์žˆ๊ณ , finite_passed / finite_total์€ ์ œ๊ณตํ•œ ๊ธฐ๋Œ€๊ฐ’์„ ์…‰๋‹ˆ๋‹ค. ๊ธฐ๋Œ€๊ฐ’์„ ์ ์ง€ ์•Š์€ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๋„ ๊ด€์ธกํ•˜์ง€๋งŒ ์ •ํ™•๋„ ์ ์ˆ˜๋ฅผ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

stage๋Š” ๊ฒ€์‚ฌยท๋นŒ๋“œยท์‹คํ–‰์˜ ์ง„ํ–‰ ์ƒํƒœ๋ฅผ, finite_passed์™€ finite_total์€ ์ œ๊ณตํ•œ ๊ธฐ๋Šฅ ์˜ˆ์‹œ์˜ ์ถฉ์กฑ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. runtime_replayed๋Š” ๋‘ ๋ฒˆ์˜ ์‹ค์ œ ์‹คํ–‰์ด ๊ฐ™์€ ๊ฐ’์„ ๋ƒˆ๋‹ค๋Š” ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ๊ฐ€ ์‹คํŒจํ•ด๋„ ๊ทธ ๊ฐ’์„ ๊ด€์ธกํ•˜๊ณ  ์ •์ƒ ์žฌํ˜„ํ–ˆ๋‹ค๋ฉด ์‹คํ–‰ ๋‹จ๊ณ„๊ฐ€ ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๋„๋ฅผ ๊ณ ๋ฅผ ๋•Œ๋Š” ์ด ํ•ญ๋ชฉ๋“ค์„ ํ•จ๊ป˜ ์ฝ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ์—์„œ๋Š” ์ผ๊ณฑ ์ž…๋ ฅ ์กฐํ•ฉ์— ์ผ๊ณฑ ํ™œ๋™์˜ ๊ธฐ๋Œ€๊ฐ’์„ ๊ฐ๊ฐ ์ฃผ์–ด 49/49๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Œ€๊ฐ’ ํ•˜๋‚˜๋ฅผ ์ผ๋ถ€๋Ÿฌ ๋ฐ”๊พธ๋ฉด ์‹ค์ œ ์‹คํ–‰์€ ์ •์ƒ ์žฌํ˜„๋˜๋ฉฐ 48/49๊ฐ€ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. 16๊ฐœ ํ™œ๋™์„ ์—ฐ๊ฒฐํ•œ ๊ฒ€์‚ฌ์—์„œ ๋งˆ์ง€๋ง‰ ๊ฐ’ ํ•˜๋‚˜๋งŒ ์ฃผ๋ฉด ๋ถ„๋ชจ๋Š” 1์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ์„ ์ž‘์„ฑํ•  ๋•Œ

  • ๋ชจ๋“  ์‹œ์ž‘ ํ™œ๋™์˜ ์ž…๋ ฅ์„ ์ด๋ฆ„์œผ๋กœ ์ ์Šต๋‹ˆ๋‹ค. 0, false, ๋นˆ ๋ฌธ์ž์—ด๋„ ์ง์ ‘ ์ ์Šต๋‹ˆ๋‹ค.
  • ์—ฐ๊ฒฐ์„ ๋ฐ›์€ ํ™œ๋™์€ ์•ž ๋‹จ๊ณ„์˜ ์‹ค์ œ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. inputs์—์„œ ๊ทธ ๊ฐ’์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Integer๋Š” ์ด ์‹คํ–‰ ํ”„๋กœํ•„์—์„œ ์ •ํ™•ํ•œ int64๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ์†Œ์ˆ˜์™€ null์€ ์ž…๋ ฅ ์˜ค๋ฅ˜๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.
  • Text๋Š” ํ•œ๊ตญ์–ดยท์ด๋ชจ์ง€ยท์ค„๋ฐ”๊ฟˆ์„ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. JSON์˜ ์ค„๋ฐ”๊ฟˆ์€ \n์œผ๋กœ ์ ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋Œ€๊ฐ’์—๋Š” ํ™•์ธํ•  ํ™œ๋™๋งŒ ์ ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ˆ˜๋ฅผ ๋ฐ›์„ ์ตœ์†Œ ํ•œ ํ™œ๋™์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

Integer ์—ฐ์‚ฐ์€ ์ƒ์„ฑ๋œ Go์˜ int64 ์‹คํ–‰์— ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์œ„ ์˜ˆ์ œ์˜ ์ตœ๋Œ€ ์ •์ˆ˜ ์ž…๋ ฅ์€ ๋บ„์…ˆ๊ณผ ๊ณฑ์…ˆ์˜ ๊ฒฝ๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ธฐ๋Œ€๊ฐ’์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ ์ˆ˜ํ•™์‹์˜ ๋ฌดํ•œ ์ •์ˆ˜๋กœ ํ•ด์„ํ•˜๊ธฐ๋ณด๋‹ค ์‹ค์ œ ์„ ํƒํ•œ ์‹คํ–‰ ํƒ€์ž…๊ณผ ์˜ˆ์‹œ๋ฅผ ํ•จ๊ป˜ ์ฝ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ์ž์ฒด ๋ชจ๋ธ ๊ด€์ธก

ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋ธ/๊ฒฐ์ •๋ก  ๊ฒฝ๋กœ๋ฅผ ๊ฐ๊ฐ ์„ธ ๋ฒˆ ์ด์–ด ์ƒ์„ฑํ•˜๊ณ , ๊ฐ ์ €์žฅ ๊ธฐ๋ก์„ ๋ณ„๋„๋กœ ์žฌ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์ƒ์„ฑ ์—ฌ์„ฏ ๊ฑดยท์ €์žฅ ์žฌ์‹คํ–‰ ์—ฌ์„ฏ ๊ฑด, ์œ ํ•œ ๊ธฐ๋Œ€๊ฐ’ 588/588ยท์ค‘๊ฐ„ ๊ฒฐ๊ณผ 588๊ฐœยท์—ฐ๊ฒฐ ์ „๋‹ฌ 420๊ฐœยท์‹ค์ œ ์‹คํ–‰ 24ํšŒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ๋ชจ๋ธ ํŒ๋‹จ์€ ์ด ์—ฌ์„ฏ ๋ฒˆ, ์ €์žฅ ์žฌ์‹คํ–‰์€ 0๋ฒˆ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ๋กœ์˜ ์ฝ”๋“œ์™€ Gooo๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉฐ ๊ฐ ๊ฒฝ๋กœ ์•ˆ์—์„œ๋Š” ์„ธ ์ƒ์„ฑ ์ดํ›„์—๋„ ์œ ์ง€๋์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ชจ๋ธ ํ›„๋ณด๋Š” ์ •์ˆ˜ ์กฐ๋ฆฝ 0/6ยท๋ฒ”์œ„ ์ œํ•œ 1/3์œผ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ์˜ ๋‹ค์Œ ์ˆœ์œ„์™€ ์œ ํ•œ ํ…Œ์ŠคํŠธ ํƒ์ƒ‰์ด ์ฃผ์–ด์ง„ ์˜ˆ์‹œ๋ฅผ ์ถฉ์กฑํ–ˆ๊ณ , ์ƒˆ ํ•™์Šต์€ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ก์€ ํ•œ ์ž‘์„ฑ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ˜๋ณตํ•œ ๊ด€์ธก์ž…๋‹ˆ๋‹ค.

์กฐ๊ฑด ์กฐ๋ฆฝ ์ค‘์•™๊ฐ’ ์ „์ฒด ๋ช…๋ น ์ค‘์•™๊ฐ’
๋ชจ๋ธ ์ƒˆ ์ƒ์„ฑ 13.527ms 374.219ms
๊ฒฐ์ •๋ก  ์ƒˆ ์ƒ์„ฑ 13.011ms 346.143ms
๋ชจ๋ธ ์ €์žฅ ๊ธฐ๋ก ์žฌ์‹คํ–‰ ์ถ”๊ฐ€ ์ƒ์„ฑ 0ํšŒ 469.090ms
๊ฒฐ์ •๋ก  ์ €์žฅ ๊ธฐ๋ก ์žฌ์‹คํ–‰ ์ถ”๊ฐ€ ์ƒ์„ฑ 0ํšŒ 337.886ms

๊ฐ๊ฐ ์„ธ ๊ด€์ธก์ด๋ฉฐ ๊ณ ์ • ์ˆœ์„œยท๊ธฐ์กด Go ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น ์ตœ๋Œ€ RSS๋Š” 81.03โ€“83.30MiB์ด๋ฉฐ Go ๋นŒ๋“œ ์ž์‹๋„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํ…์„œ๋Š” 74,624๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค. ๋ช…๋ น CPU ์‹œ๊ฐ„์œผ๋กœ ํ™˜์‚ฐํ•œ ํ•œ ์ฝ”์–ด ์‚ฌ์šฉ๋ฅ  ์ค‘์•™๊ฐ’์€ ์กฐ๊ฑด๋ณ„ 69.32โ€“75.11%์ด๋ฉฐ ์ „์ฒด ์ปดํ“จํ„ฐ์˜ CPU ์ฆ๊ฐ€๋Ÿ‰์€ ๊ด€์ธกํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ €์žฅ ์žฌ์‹คํ–‰์ด ๋” ๋А๋ฆฐ ์กฐ๊ฑด๋„ ๊ทธ๋Œ€๋กœ ๊ณต๊ฐœํ•˜๊ณ  ์†๋„ ๊ฐœ์„  ํŒ๋‹จ์€ ์ถ”๊ฐ€ ๋น„๊ต์— ๋‚จ๊น๋‹ˆ๋‹ค.

main ์„ค์น˜ ํ›„ ๋‹ค์‹œ ํ™•์ธํ•œ ๊ฒฐ๊ณผ

์ƒˆ ์„ค์น˜๋ณธ์—์„œ ๊ฐ™์€ ์—ด๋‘ ์ œ์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด 588/588ยท์‹ค์ œ ํŒ๋‹จ ์—ฌ์„ฏ ๋ฒˆยท ์‹คํ–‰ 24ํšŒ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. GoooยทGoยท์—ฐ๊ฒฐ ์ฝ”๋“œ ์ง€๋ฌธ๊ณผ ๊ฐ ์œ ํ•œ ๊ฒฐ๊ณผยทํ˜ธ์ถœ ์ˆ˜๋Š” ๊ฐœ๋ฐœ ํ›„๋ณด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™์‹œ ๋‘ ์š”์ฒญ์€ 98/98๋กœ ์ •์ƒ ์ข…๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์„ธ ์ž…๋ ฅ์€ int64 ์ตœ์†Ÿ๊ฐ’ยท์ƒˆ ๊ฒฝ๊ณ„๊ฐ’ยท์ค„๋ฐ”๊ฟˆ ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋ฉฐ ๋‘ ๊ฒฝ๋กœ์—์„œ 42/42์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Œ€๊ฐ’ ํ•˜๋‚˜๋ฅผ ํ‹€๋ฆฌ๊ฒŒ ์ค€ ๋ณ„๋„ ์‹คํ–‰์€ 48/49ยท์ •์ƒ ์žฌํ˜„์„ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ํ›„ ์กฐ๋ฆฝ ์ค‘์•™๊ฐ’์€ ๋ชจ๋ธ 36.933msยท๊ฒฐ์ •๋ก  32.216ms, ์ „์ฒด ๋ช…๋ น ์ค‘์•™๊ฐ’์€ ์กฐ๊ฑด๋ณ„ 721.523โ€“778.166ms, ์ตœ๋Œ€ RSS๋Š” 81.05โ€“82.78MiB์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ ์„ธ ๋ฒˆ์ด๋ฉฐ ๊ฐœ๋ฐœ ํ›„๋ณด ๊ด€์ธก๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋Š˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ์ธก์ •์€ ์‹œ์ ์ด ๋‹ค๋ฅด๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋„ ์‹คํ–‰ ์ค‘์ธ ํ™˜๊ฒฝ์ด๋ฏ€๋กœ ์†๋„ ๋ณ€ํ™”์˜ ์›์ธ์„ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ํ›„ ๋ณ„๋„ ๋‘ CPU ์Šค๋ƒ…์ƒท์€ ์ „์ฒด ์‚ฌ์šฉ๋Ÿ‰ 26.47%ยท17.70%์˜€์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ์— ๋”ฐ๋ฅธ CPU ์ฆ๊ฐ€๋Ÿ‰์„ ๊ณ„์‚ฐํ•  ์‹คํ–‰ ์ „ยท์ค‘ ๋Œ€์กฐ๊ตฐ์€ ์—†์Šต๋‹ˆ๋‹ค. ์›๋ณธ์€ Hugging Face์˜ ์„ค์น˜ ๋ถ€๋ก์— ๋‚จ๊น๋‹ˆ๋‹ค.

๋ฒ”์œ„์™€ ๋‹ค์Œ ์ž‘์—…

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

์ •์ˆ˜ ์กฐ๋ฆฝ์€ ํ˜„์žฌ์˜ ์†Œํ˜• ๋ชจ๋ธ ๊ณ„์•ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. BooleanยทText๋Š” ์ผ๋ฐ˜ ๋ณธ๋ฌธ์˜ ๊ฒ€์‚ฌ์™€ ์—ฐ๊ฒฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ž…๋ ฅ์˜ ํ•ฉ๋ฅ˜๋Š” ํ›„์† ๊ฐœ๋ฐœ๊ณผ ์ž‘์„ฑ ๊ฐ€์ด๋“œ๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ก๊ฐ’ ํƒ€์ž…, ํ˜ธ์ถœยท๋ฐ˜๋ณต, ํ˜ธ์ถœ์„ ๋„˜๋Š” ํ”ผ๋“œ๋ฐฑ์€ ๋‹ค์Œ ์–ธ์–ด ๊ธฐ๋Šฅ์œผ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ™•์žฅ์€ ์‹ค์ œ ๋ณธ๋ฌธ ์—ฐ๊ฒฐ์„ ์ „์ง„์‹œํ‚ค๋ฉฐ ์ „์ฒด ๋„๋ฉ”์ธ ์ „๋‹ฌ ์ด์Šˆ874์˜ ๋‚จ์€ ๋ฒ”์œ„๋„ ํ•จ๊ป˜ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์›๋ณธ๊ณผ ์žฌํ˜„ ยท ์ปดํŒŒ์ผ๋Ÿฌ ์‚ฌ์šฉ๋ฒ•๊ณผ ๊ฒฝ๊ณ„ ยท ์„ ์–ธ ์•ˆ์˜ ๋ณธ๋ฌธ ์กฐ๋ฆฝ.