-
Notifications
You must be signed in to change notification settings - Fork 0
Native Body Composition
Gooo의 bind는 한 활동의 결과를 다른 활동의 입력에 연결합니다. body-compose는
그 연결을 따라 실제 함수 본문을 조립하고, 하나의 Go 프로그램으로 빌드한 뒤
바로 실행합니다. 시작 입력은 이름으로 지정하고 각 단계의 실제 입력과 출력을
기록합니다. 완성한 부품을 연결선에 꽂아 전체 동작을 확인하는 과정입니다.
현재 설치 소스는 main 1bef47fc1e7a4aca8ffb1cbd5a5aa7ded2353ce5·Go1.27.1·
SDK v0.2.21입니다. 여러 입력의 합류와 일부 입력만 연결하는 방법은
새 입력 합류 가이드에서 따라 할 수 있습니다.
현재 상태 · 고정 소스에서 시작하기.
이 페이지의 아래 관측은 앞선 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 증가량은 관측하지 않았습니다. 저장 재실행이 더 느린 조건도 그대로 공개하고 속도 개선 판단은 추가 비교에 남깁니다.
새 설치본에서 같은 열두 제어를 다시 실행해 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의 남은 범위도 함께 기록합니다.