Repository navigation
Source Graph Model Input
2026-10-08. 컴파일러 PR #1375의
개발 소스 dea641f7에서 확인한 내용입니다. Go 추론 SDK는
v0.2.26-experimental로
공개했습니다. 컴파일러의 필수 CI 여섯 개와 원본 검증은 통과했고, 별도 호환 검사가
진행 중입니다. 검증 기록.
이후 Gooo 0.6.9 개발판에
포함해 공개했습니다. 아래 내용은 입력 경로를 처음 구현했을 때의 관측입니다.
파일 이름에서 확장자를 떼는 함수를 만들면서 문제가 드러났습니다. 실행할 때는
a && b와 a || b가 다르게 동작하는데, 작은 모델에 전달하던 배열에서는 같았습니다.
모델 입장에서는 서로 다른 문제 두 개를 같은 설명으로 받은 셈입니다.
이번에는 연산자와 값이 흘러온 순서를 입력에 남겼습니다. 보조 함수를 불렀다면 어떤 인자를 보냈고, 어느 조건에서 어떤 값을 반환했는지도 따라갑니다. 이름표뿐 아니라 계산 과정을 같이 전달하는 방식입니다.
파일 이름 분류 프로그램 하나에서 세 쌍의 후보를 뒤집어 여덟 배치를 만들었습니다. 각 배치를 모델용 숫자 배열로 바꾼 뒤 768개 값의 비트를 전부 비교했습니다.
| 입력 형식 | 서로 다른 배열 | 제공한 정답을 구분할 수 있는 상한 |
|---|---|---|
| v1: 후보식 표현 | 2개 | 2/8 |
| v2: 함수 출처의 집계 | 4개 | 4/8 |
| v3: 연산자와 순서를 담은 값 그래프 | 8개 | 8/8 |
이 표는 학습한 모델의 정답률을 나타내지 않습니다. 이번 v3에서는 이 여덟 배치를 서로 다르게 전달할 수 있게 됐다는 뜻입니다. 한 프로그램에서 만든 여덟 배치이며, 새로운 프로그램 여덟 개를 해결한 결과로 세지 않습니다.
입력 추출은 모델 호출과 후보 실행 없이 진행했습니다. 그 뒤 별도로 고정 순서 조립을 실행해 제공한 정답 배치를 확인했습니다. 여덟 배치 모두 조립 사례 5/5·필드 15/15였고, 시도 수는 배치에 따라 8회부터 1회까지 달랐습니다. 총 36회, 모델 호출은 0회였습니다.
Gooo가 타입을 확인한 소스에서 그래프를 만들고, 명시적으로 연결한 모델이 후보 순서를 한 번 정합니다. 이후에는 선언한 사례로 후보를 확인합니다. 저장한 결과를 다시 실행할 때는 원래 소스와 선택 기록을 재구성하며 새 모델 호출은 하지 않습니다.
모델 입력에는 입력 위치와 타입, 필드의 안정 ID, 연산 순서, 상수, 조건과 반환 경로를 담습니다. 함수 표시 이름을 바꿔도 배열은 유지되고, 후보 안에서만 부르는 함수의 상수를 바꾸면 배열에 반영됩니다. 조립용 입력 사례·기대값·시도 한도는 모델 특징에 넣지 않습니다.
그래프 한도는 512개 노드·64KiB, 개별 문자열은 UTF-8 1,024바이트입니다. 이번 예제는 115개 노드·6,299바이트였습니다. 지원하지 않는 optional 값이나 한도 초과는 이유를 남기고 고정 순서 조립으로 이어집니다. 입력 준비 비용과 모델의 추론 작업 공간은 별도로 봅니다.
연결 검사는 학습하지 않은 시험용 가중치로 진행했습니다. 모든 가중치가 0인 모델로 처음 후보가 실패해도 다음 후보를 확인하는지 봤고, 선택한 코드가 일곱 입력에서 14개 활동 출력을 맞혔습니다. 저장 재실행 두 번도 같은 결과였고 새 추론은 0회였습니다. FP32·PTQ·QAT 형식의 연결 검사와 세 패키지의 race·정적 검사도 통과했습니다.
작업장 PR #23은
새 그래프 입력을 기존 feature-audit 명령에 연결합니다. Go가 실제 배열을 비교하고,
Gooo 평가 함수가 input-consistent와 evaluate-chooser를 반환했습니다. 제공한 자료에서
구분 충돌을 찾지 못했으므로 실제 후보 판단을 측정하라는 뜻입니다.
작업장 전체 race 검사와 정적 검사, 새 그래프 경로 검사도 로컬에서 통과했습니다.
평가 함수는 공개 Gooo 0.6.8로 실행했고 저장 재실행을 확인했습니다. 이 평가의 모델
호출은 0회입니다. 공개 원본·소스와 체크섬을
남겼습니다. PR CI와
브랜치 CI도 통과했습니다. Linux 원본의 입력·배열·Gooo 판단이 로컬과 같음을 확인한 뒤
main bc3f50f3에 병합했습니다.
병합·Linux 실행 기록.
같은 코드에 다른 요구를 주는 후속 실험은 576행의 요구 문장을 지웠을 때 서로 다른 배열이 24개로 줄고, 자료 내 최대 충족 수가 72/576이 되는지 확인합니다. 24개 프로그램·요구 조합의 별도 네이티브 실행도 128/128로 확인했습니다. 이어 첫 v3 모델 학습을 수행했습니다. 프로그램 하나를 학습에서 뺀 QAT 모델의 첫 선택은 10~28/192였고, 8회 한도의 조립은 세 프로그램·여덟 요구에서 선언 사례를 모두 충족했습니다. 가중치와 낮은 전이 성능, 후보 수, 부분 충족을 함께 공개했습니다. 기존 모델의 가중치는 기존 입력 형식에 그대로 연결됩니다.
작은 배열에 담기 위해 일부 관계와 문구는 해시를 씁니다. 다른 프로그램에서 서로 다른 내용이 같은 배열로 합쳐질 가능성은 남습니다. 의도 채널도 v2보다 작아졌기 때문에, 이번 구분 개선이 문구 판단에 주는 영향은 따로 측정해야 합니다. 필드 사이의 의존성은 계속 Gooo의 타입 검사와 사례 실행으로 확인합니다.
원본 출력·재현 도구·해시 · 구현과 한도 · 앞선 함수 출처 작업 · 현재 배포 상태.
- 문서 홈
- 현재 상태와 지원 범위
- 업무 규칙 예제와 실제 도입 기준
- 요구를 바꾼 뒤 결과 비교하기
- 저장 결과를 비교하는 0.6.27 배포
- 작은 모델과 조립하는 0.6.26 배포
- 중간 조건을 확인하는 0.6.25 배포
- 분기 구성·재실행의 0.6.24 개발 후보
- 작은 도구로 발전시키는 Gooo
- 흐름도로 보는 Gooo
- 시작하기
- 언어 둘러보기
- 사용 흐름
- 작은 모델과 메타프로그래밍
- 우리 PC의 자체 경로 decision 모델
- 조건을 읽는 자체 모델과 실제 탐색
- SDK 0.2.39 자체 모델 받기
- 모델 선택 점수와 실제 실패
- 설명·변수 이름 변화의 27회 관측
- 작은 모델의 학습 범위를 넓힌 결과
- 같은 계산을 같은 모델 입력으로 읽기
- 사례를 통과해도 의도가 다를 때
- 소스에 적는 중간 조건과 선택
- 지표와 증거
- 참고하고 감사하는 연구
- 최근 연구와 다음 작은 기능