Candidate Continuation - kimjooyoon/meta-ontology-go GitHub Wiki

μ‘°ν•© ν•˜λ‚˜κ°€ μ‹€νŒ¨ν•΄λ„ λ‹€μŒ μ½”λ“œλ‘œ 이어가기

μ—…λ°μ΄νŠΈ: 2026-10-05 KST.

개발 PR1237κ³Ό main PR1238을 λ³‘ν•©Β·μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ μ‹€ν–‰ μ†ŒμŠ€λŠ” main f144dddb8261b9b525181dee510afc65f1603153Β·Go1.27.1Β·SDKv0.2.24μž…λ‹ˆλ‹€. μ‹œμž‘ν•˜κΈ°μ— 같은 μ†ŒμŠ€λ₯Ό κ³ μ •ν–ˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ μ›λž˜ 개발 κ΄€μΈ‘κ³Ό μ„€μΉ˜λ³Έ 관츑은 각각의 μ‹œμ μ„ μœ μ§€ν•©λ‹ˆλ‹€.

두 후보식을 ν•˜λ‚˜μ”© 바꿨을 λ•ŒλŠ” μœ νš¨ν•΄λ„, ν•¨κ»˜ λ°”κΎΈλ©΄ μ €μž₯ λ³€μˆ˜λ₯Ό μ½λŠ” 곳이 λͺ¨λ‘ μ‚¬λΌμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. Go의 λ―Έμ‚¬μš© λ³€μˆ˜ 였λ₯˜κ°€ 이 μ‘°ν•©μ—μ„œ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. μ΄μ „μ—λŠ” 전체 탐색이 λ©ˆμΆ”μ–΄, μ•žμ—μ„œ 찾은 λΆ€λΆ„ 결과와 λ’€μ˜ μœ νš¨ν•œ 후보도 μ‚¬μš©ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

개발 PR1237은 μ‹€νŒ¨ν•œ 쑰합을 κΈ°λ‘ν•˜κ³  같은 μ˜ˆμ‚° μ•ˆμ—μ„œ λ‹€μŒ 후보λ₯Ό μ‹œλ„ν•©λ‹ˆλ‹€. μ‹€μ œ 컴파일러의 λ°°ν¬Β·μ„€μΉ˜ μƒνƒœλŠ” ν˜„μž¬ μƒνƒœμ— μ—°κ²°ν•©λ‹ˆλ‹€.

gooo body-codegen --json --activity Select \
  examples/body-codegen/record-candidate-continuation.gooo.fixture
gooo body-compose \
  --source examples/body-codegen/record-candidate-continuation.gooo.fixture \
  --cases examples/body-codegen/record-field-updates-cases.json \
  --out /tmp/gooo-record-continuation

μ‹€νŒ¨ν•œ ν›„λ³΄μ—λŠ” TYPECHECK_FAILED, μ‘°ν•© λ²ˆν˜Έμ™€ 컴파일러의 μ΄μœ κ°€ λ‚¨μŠ΅λ‹ˆλ‹€. 이 ν›„λ³΄μ—μ„œλŠ” μ˜ˆμ‹œλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ ν…ŒμŠ€νŠΈ λΆ„λͺ¨λŠ” 0μž…λ‹ˆλ‹€. μ˜ˆμ‚°μ„ ν•˜λ‚˜ μ‚¬μš©ν•œ λ’€ λ‹€μŒ ν›„λ³΄λ‘œ μ΄μ–΄κ°‘λ‹ˆλ‹€. μ„ νƒλœ κ΅¬ν˜„μ˜ κΈ°λŠ₯ μΆ©μ‘± μˆ˜λŠ” κ·Έ κ΅¬ν˜„μ„ μ‹€μ œλ‘œ μ‹€ν–‰ν•œ 결과둜 κ³„μ‚°ν•©λ‹ˆλ‹€.

같은 μž‘μ€ μ˜ˆμ œμ—μ„œ ν™•μΈν•œ κ²°κ³Ό

μ§„ν–‰ 방식 μ‹œλ„ μ˜ˆμ‚° 후보 μ‹œλ„ νƒ€μž… νƒˆλ½ 선택 ν•„λ“œ μ‹€μ œ 이름 μžˆλŠ” 좜λ ₯
κ²°μ •λ‘  μˆœμ„œ 4 4 1 12/15 6/14
κ²°μ •λ‘  μˆœμ„œ 8 7 1 15/15 14/14
곡개 자체 QAT λͺ¨λΈ 4 4 1 15/15 14/14
곡개 자체 QAT λͺ¨λΈ 8 4 1 15/15 14/14

이 ν‘œλŠ” ν•˜λ‚˜μ˜ μž‘μ„± 예제 κ΄€μΈ‘μž…λ‹ˆλ‹€. λΆ€λΆ„ 결과의 μ‹€μ œ 기둝 ν•„λ“œλŠ”17/21개, μ™„μ „ν•œ κ²°κ³ΌλŠ”21/21κ°œμ˜€μŠ΅λ‹ˆλ‹€. ν•œ 좜λ ₯의 일뢀 ν•„λ“œκ°€ λ§žλŠ” κ²½μš°μ™€ κ·Έ 좜λ ₯ 전체가 λ§žλŠ” 경우λ₯Ό λ”°λ‘œ μ…‰λ‹ˆλ‹€. κΈ°μ‘΄ λͺ¨λΈ κ°€μ€‘μΉ˜μ™€ ν•™μŠ΅λŸ‰μ„ μœ μ§€ν–ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈμ€ 처음 μˆœμ„œλ₯Ό μ •ν•  λ•Œ ν•œ 번 ν˜ΈμΆœν•©λ‹ˆλ‹€. μ‹€νŒ¨ 후보λ₯Ό λ§Œλ‚  λ•Œ μΆ”κ°€ 좔둠은 μ—†μœΌλ©°, μ €μž₯ν•œ μ„ νƒμ˜ λ„€ μž¬μ‹€ν–‰μ—μ„œλ„ μƒˆ 좔둠은 0νšŒμ˜€μŠ΅λ‹ˆλ‹€. μƒˆ 좜처 μž…λ ₯용 κ°€μ€‘μΉ˜ ν•™μŠ΅μ€ 별도 후속 κ³Όμ œμž…λ‹ˆλ‹€.

이번 λͺ¨λΈ νŒλ‹¨μ€20.084Β΅sΒ·36.708Β΅s, μƒμ„±Β·λΉŒλ“œΒ·μ‹€ν–‰μ€319.90msΒ·328.11msμ˜€μŠ΅λ‹ˆλ‹€. λͺ…λ Ή CPUλŠ” ν•œ μ½”μ–΄ κΈ°μ€€78.9%Β·81.5%, μ΅œλŒ€ 단일 ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬λŠ”μ•½81~83MiB둜 κ΄€μΈ‘ν–ˆμŠ΅λ‹ˆλ‹€. μ‹€ν–‰ μˆœμ„œμ™€ 첫 호좜 λΉ„μš©κΉŒμ§€ 원본에 λ³΄μ‘΄ν•©λ‹ˆλ‹€. 호슀트 전체 CPU μ¦κ°€λŸ‰κ³Ό GPU 이용λ₯ μ€ μΈ‘μ • ν•­λͺ©μœΌλ‘œ 남아 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μΉ˜λ³Έμ—μ„œ λ‹€μ‹œ ν™•μΈν•œ κ²°κ³Ό

μ„€μΉ˜ν•œ 두 μ‹€ν–‰κΈ°λŠ” λ³€κ²½ μ—†λŠ” main μ†ŒμŠ€λ‘œ λΉŒλ“œν–ˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘œ μ‹€ν–‰ν•œ λ„€ 생성과 λ„€ μ €μž₯ μž¬μ‹€ν–‰μ—μ„œ μœ„ ν‘œμ™€ 같은 μΆ©μ‘± μˆ˜μ™€ νƒ€μž… νƒˆλ½ 수λ₯Ό μ–»μ—ˆμŠ΅λ‹ˆλ‹€. Go μš”μ•½ 도ꡬ가 μ‹€μ œ κ°’κ³Ό κΈ°λŒ€κ°’μ„ λ‹€μ‹œ λΉ„κ΅ν–ˆκ³ , λΆ€λΆ„ κ²°κ³ΌλŠ”17/21ν•„λ“œ, μ™„μ „ν•œ κ²°κ³ΌλŠ”21/21ν•„λ“œμ˜€μŠ΅λ‹ˆλ‹€. μƒˆ 좜처 λ‚΄λ³΄λ‚΄κΈ°μ˜ μ—¬μ„― 검사도 ν†΅κ³Όν–ˆμŠ΅λ‹ˆλ‹€.

μ„€μΉ˜λ³Έμ˜ 두 QAT νŒλ‹¨μ€12.875Β΅sΒ·24.875Β΅s, 전체 μƒμ„±Β·λΉŒλ“œΒ·μ‹€ν–‰μ€311.87msΒ·339.17msμž…λ‹ˆλ‹€. λͺ…λ Ή CPUλŠ” ν•œ μ½”μ–΄ κΈ°μ€€74.8%Β·81.0%이며, μ΅œλŒ€ 단일 ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬λŠ”μ•½82~84MiBμ˜€μŠ΅λ‹ˆλ‹€. 첫 κ²°μ •λ‘  λͺ…λ Ή567.34ms도 λ³΄μ‘΄ν–ˆμŠ΅λ‹ˆλ‹€. μ‹€ν–‰ μˆœμ„œλ₯Ό λ°”κΏ” λΉ„κ΅ν•œ 속도 μ‹€ν—˜μ€ 후속 κ³Όμ œμž…λ‹ˆλ‹€.

두 μž‘μ—…μžμ—32개 μš”μ²­μ„ λ³΄λ‚΄λŠ” 관츑을 λ„€ 번 λ°˜λ³΅ν–ˆμŠ΅λ‹ˆλ‹€. 맀번 선택480/480ν•„λ“œμ™€ νƒ€μž… νƒˆλ½32개λ₯Ό ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. 첫 응닡은 μž…λ ₯ μ’…λ£Œ 전에 λ„μ°©ν–ˆκ³ , μš”μ²­λ§ˆλ‹€ λͺ¨λΈ νŒλ‹¨μ€1νšŒμ˜€μŠ΅λ‹ˆλ‹€. 첫 κ΄€μΈ‘μ˜ 첫 응닡은516.704ms, λ‹€μŒ μ„Έ 관츑은12.178Β·7.790Β·8.267msμ˜€μŠ΅λ‹ˆλ‹€. μž‘μ—…μž λ©”λͺ¨λ¦¬λŠ”κ°κ°22.97Β·22.19Β·22.61Β·23.53MiBμž…λ‹ˆλ‹€. 이 μš”μ²­ 규λͺ¨μ—μ„œ 멈좀 없이 μ™„λ£Œν–ˆμŠ΅λ‹ˆλ‹€. μž‘μ—…μž 관츑은 λ³Έλ¬Έ 선택이며, μ‹€μ œ ν”„λ‘œκ·Έλž¨ 싀행은 μœ„ λ„€μ΄ν‹°λΈŒ κ΄€μΈ‘μ—μ„œ ν™•μΈν•©λ‹ˆλ‹€.

μ‹€μ œ μ„€μΉ˜Β·λͺ¨λ“  κ²°κ³ΌΒ·μž¬ν˜„ 도ꡬ Β· 생성뢀터 μΆ©μ‘± μˆ˜μ™€ μž¬μ‹€ν–‰κΉŒμ§€.

결과 읽기

연ꡬ μ €μž₯μ†Œμ˜ Go μš”μ•½ 도ꡬ가 선택 ν•„λ“œμ˜ μ‹€μ œ κ°’κ³Ό κΈ°λŒ€κ°’μ„ λ‹€μ‹œ λΉ„κ΅ν•©λ‹ˆλ‹€. 후보λ₯Ό μ‹œλ„ν•œ 수, ν…ŒμŠ€νŠΈν•œ μˆ˜μ™€ νƒ€μž… κ²€μ‚¬μ—μ„œ νƒˆλ½ν•œ 수λ₯Ό λ‚˜λˆ„κ³ , νƒˆλ½ν•œ μ‘°ν•©κ³Ό μ΄μœ λ„ ν‘œμ‹œν•©λ‹ˆλ‹€.

go run ./cmd/record-completeness --input /path/to/body-compose-result.json

μ†ŒμŠ€λ‚˜ κ°œλ³„ 후보식에 였λ₯˜κ°€ 있으면 생성 전에 μ§„λ‹¨ν•©λ‹ˆλ‹€. μš”μ²­ μ·¨μ†Œλ‚˜ λ‹€λ₯Έ 생성 였λ₯˜λŠ” ν˜ΈμΆœμ„ 멈μΆ₯λ‹ˆλ‹€. μ˜ˆμ‚° μ•ˆμ— μœ νš¨ν•œ κ΅¬ν˜„μ΄ ν•˜λ‚˜λ„ μ—†μœΌλ©΄ κ·Έ 이유λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ κ²°κ³Όλ₯Ό λ‹€μŒ μ‘°λ¦½μ΄λ‚˜ μ˜ˆμ‹œ λ³΄μ™„μ˜ μž…λ ₯으둜 μ‚¬μš©ν•˜λ©° μž‘μ€ λ²”μœ„μ˜ 완전성을 계속 λ†’μž…λ‹ˆλ‹€.

μ†ŒμŠ€ κ°€μ΄λ“œ Β· 순차 λŒ€μž… Β· μ™„μ „μ„± μ§€ν‘œ.