Skip to content

Native Record Field Assembly

kimjooyoon edited this page Oct 4, 2026 · 5 revisions

기록의 각 필드에 후보식을 심고 조립하기

Gooo 본문의 기록 생성자 안에 필드별 후보식을 적을 수 있습니다. 제목·상태·사유가 있는 작은 쟁반을 생각하면 됩니다. 각 자리에 들어갈 부품을 선언하고, 작은 모델은 조합을 시도할 순서를 제안합니다. 기대값과 비교해 어느 자리가 채워졌는지 기록한 뒤, 고른 본문을 Go로 생성하고 실제로 실행합니다.

현재 단계

개발 PR #1225는 필수 CI 6개와 해당 소스의 결과 확인 후 병합했습니다. 배포 PR #1226도 전체 CI를 통과해 main f6da667e로 병합하고 두 실행기를 Go1.27.1·SDK0.2.21로 설치했습니다. 컴파일러 작성법과 공개 실험 PR #11은 22개 CI 작업을 통과해 병합했고, 전체 예제와 원본 결과가 있습니다. 설치본의 새 30개 관측도 후보의 소스·생성 Go·선택·완전성 수치를 유지했습니다. 부분 결과의 남은 필드 요약과 양자화 모델 비교는 후속 연구 PR #12에서 확인합니다. 이 연구 PR도 22개 작업을 모두 통과해 연구 main ad007f6b로 병합했습니다. 설치한 컴파일러의 Linux 생성·저장 재실행 32개 기록을 따로 내려받아 실제 값과 필드 수를 검산했습니다. 그중 저장 재실행 16개는 추가 추론이 모두 0번입니다.

선택지를 적는 방법

choice "title" field_value at "0" alternative "input0.title" intent "원래 제목을 사용한다. Keep the original title."
choice "state" field_value at "1" alternative "\"ready\"" intent "상태를 ready로 만든다."
choice "reason" field_value at "2" alternative "input0.reason + \":accepted\"" intent "기존 사유에 표식을 붙인다."

이 세 줄은 활동의 assembling 블록 안에 둡니다. at는 기준 본문에서 기록 생성자의 필드 값이 등장하는 순서입니다. 기존 식과 alternative 중 하나를 고를 수 있고, 실제 필드 타입과 그 위치의 변수 범위를 확인합니다. 한글·영어 의도는 필드 ID, 두 후보식과 함께 모델 문맥으로 전달됩니다.

value_case는 위치순 입력 배열과 완전한 기대 기록을 JSON으로 받습니다. 기록·참거짓·정수·텍스트를 섞은 입력을 선언할 수 있습니다. 기록 필드는 현재 필수 문자열이며, 본문에는 조건식과 지역값 전체 교체를 함께 사용할 수 있습니다. 전체 예제에는 Select(Candidate, Boolean)의 결과를 Label(Candidate)에 전달하는 bind도 들어 있습니다.

부분 완전성을 읽기

제목·상태·사유를 포함한 선택 사례 5개가 기대 필드 15개를 제공합니다. 시도 예산을 늘리며 자체 모델과 결정론 경로를 각각 세 번씩 실행했습니다.

허용 시도 선택 필드 선택 사례 실제 실행의 기록 출력 필드 실제 실행의 이름 있는 출력
1 6/15, 40% 2/5 9/21 6/14
2 9/15, 60% 2/5 13/21 6/14
4 12/15, 80% 2/5 17/21 6/14
8 15/15, 100% 5/5 21/21 14/14

두 방식의 충족 수는 같았습니다. 4회 예산에서는 서로 다른 필드를 채웠고, 8회에서는 같은 완성된 본문을 생성했습니다. 전체 사례는 마지막 필드가 채워질 때까지 2/5지만, 필드 지표는 그 사이의 진전을 보여줍니다.

실제 실행은 사례 7개를 사용합니다. 그중 5개는 선택 사례와 겹치고, 2개는 텍스트의 줄바꿈·따옴표와 기록을 그대로 두는 경로를 추가합니다. 선택 해석기의 기대값과 실제 컴파일된 프로그램의 기대값을 따로 표시합니다. 이 분모는 제공한 예제의 범위이며, 다양한 본문 모양에 대한 학습은 다음 단계입니다.

모델과 연결 해제

body-codegen --path-model 또는 body-compose --model로 기존 자체 소형 모델을 연결합니다. 옵션을 빼면 조합 번호 순서로 결정론적으로 진행합니다. body-context는 추가 추론이나 후보 실행 없이 정확한 문맥을 보여줍니다. 선택한 Gooo에는 기준 본문과 picked를 남기고, body-realize와 저장한 조립 재실행은 추가 추론 없이 같은 값을 확인합니다.

현재 모델은 정수 선택에 학습한 기존 가중치를 사용합니다. 필드 선택을 위한 별도 이름의 순서 문맥을 구성했고, 선택 사례와 기대 출력은 모델 입력에서 제외했습니다. 새 생성은 초기 순위를 한 번 받으며, 필드 프로필의 실패 사례 재선택은 후속 작업입니다. 기존 정수 조립에는 별도의 실패 문맥 재선택이 있습니다.

완전한 문맥이 모델 크기 제한을 넘거나 선택지 수가 맞지 않으면 그 이유를 기록하고 추가 추론 0회의 결정론 경로로 진행합니다. 요청별 작업 공간을 써서 불변 가중치는 여러 요청이 공유할 수 있습니다. 작업자는 기록 본문을 병렬로 생성하고, 기록 그래프의 실제 실행은 body-compose를 사용합니다.

실제 비용과 다음 학습

설치본의 새 전체 예산 측정에서 추론 중앙값은31.625µs였습니다. 그래프 생성은 모델9.890ms·결정론9.337ms, 명령 전체는323.462ms·324.194ms, 최대 프로세스 메모리는82.94MiB·82.42MiB, 사용자·시스템 CPU 시간 합은 각각0.24초였습니다. 한 본문의 각 조건을 세 번씩 반복한 값입니다. 원래 후보와 설치본 관측의 소스·Go 지문 및 유한 충족 수는 30개 모두 같았습니다.

Go 요약 도구는 4회 예산의 결과를 선택 필드12/15, 실제 출력6/14, 실제 기록 필드17/21로 구분하고, 남은 state의 실제 값과 기대값을 보여줍니다. 앞선 단일 묶음의 저장 재실행은 추가 추론을 생략하고 Go를 다시 빌드했습니다. 후속 그래프 재사용을 개발해 첫 실행에서 빌드한 프로그램을 반복 입력에 사용합니다. 입력과 기대값은 매번 새로 실행해 관측합니다.

깨끗한 개발 후보의 전체 예산 측정에서 모델 추론 중앙값은 29µs였습니다. 그래프 생성은 모델 9.57ms·결정론 9.60ms, 명령 전체는 349ms·342ms였습니다. 최대 프로세스 메모리는 약 82MiB, 사용자·시스템 CPU 시간 합은 약 0.26초였습니다. Go 빌드와 자식 실행을 포함한 값이며, 호스트 전체 CPU 사용률 증가는 측정하지 않았습니다. 이번 본문에서 모델은 후보 수를 줄이지 못했습니다.

다음 학습은 다양한 필드 표현과 작은 한영 의도, 실제 필드 개선량을 연결하는 것을 목표로 합니다. 같은 예산에서 얼마나 더 채우는지와 후보 검사 수, 추론 시간, 가중치 메모리를 함께 비교합니다.

공개 모델의 후보·설치 관측 · 앞선 기록 값 전달 · 최근 연구와 다음 작업

Gooo

배우기

직접 다뤄 보기

원리와 개발

공개 코드와 모델

Clone this wiki locally