Skip to content

Candidate Continuation

kimjooyoon edited this page Oct 4, 2026 · 2 revisions

조합 하나가 실패해도 다음 코드로 이어가기

업데이트: 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

소스나 개별 후보식에 오류가 있으면 생성 전에 진단합니다. 요청 취소나 다른 생성 오류는 호출을 멈춥니다. 예산 안에 유효한 구현이 하나도 없으면 그 이유를 설명합니다. 이러한 결과를 다음 조립이나 예시 보완의 입력으로 사용하며 작은 범위의 완전성을 계속 높입니다.

소스 가이드 · 순차 대입 · 완전성 지표.

Gooo

배우기

직접 다뤄 보기

원리와 개발

공개 코드와 모델

Clone this wiki locally