-
Notifications
You must be signed in to change notification settings - Fork 0
Retained Body Composition
조회 기준: 2026-10-05 KST. 개발 PR #1227에
같은 프로그램을 여러 입력에 이어 쓰는 기능을 추가했습니다. 개발의 전체
12개 CI 작업과 원본 결과 확인 후 84a911a4로 병합했습니다. 측정 소스는 깨끗한
후보 38962397입니다. 배포 PR #1228도
전체12개 작업을
통과해 병합됐으며 두 실행기를 깨끗한 main 7acccf56에서 빌드해 설치했습니다.
설치본의 새 관측은 개발 후보의 프로그램 지문·실제 값·부분 충족 수를20개 작업 모두 유지했습니다. FP32에서 만든 저장 조립의 여섯 묶음 중앙값은2,327.40ms→497.14ms, CPU 시간1.45초→0.36초, 최대 프로세스 메모리82.88MiB·82.14MiB였습니다. 여섯 명령·한 명령의 비교이며 새 추론 중앙값은18.792µs입니다. 후보와 설치본의 원본 관측은 별도로 보존했습니다.
공구를 조립해 작업대에 둔 뒤 재료만 바꾸는 흐름입니다. Gooo가 본문과 연결을 선언하고, 선택한 작은 모델이 조립 순서를 제안합니다. 첫 입력에서 프로그램을 빌드하고 다음 입력부터 같은 프로그램을 사용합니다. 매번 실제 값은 새로 계산합니다.
현재 main 컴파일러 저장소에서 실제 Go1.27.1을 사용합니다.
go run ./cmd/gooo body-compose \
--source examples/body-codegen/record-field-assembly.gooo.fixture \
--case-series examples/body-codegen/record-field-case-series.json \
--repeat 2 --out /tmp/gooo-series-example모델을 쓰려면 --model /path/to/model.json을 추가합니다. 생략하면 결정론적으로
조립합니다. 새 결과 폴더에 선택된 Gooo·생성 Go·composition.json·
runtime-history.json·case-series.json을 저장합니다.
--composition에 저장한 조립을 주면 새 모델 판단은 0번입니다. 새 명령의 첫
실행에서 한 번 빌드한 다음 그 요청 안에서 재사용합니다. 요청은 최대16회이며,
닫힐 때 임시 작업공간을 정리합니다.
예제는 Candidate의 제목·상태·사유를 만들고 다음 Label이 읽습니다. 한글·영문
입력을 바꾼 세 묶음을 두 번 실행합니다. 순서대로 기대 출력4/4·2/2·1/2가 두 번
나옵니다. 마지막 묶음은 기대 라벨을 일부러 다르게 적었습니다. 실제 기록값과
라벨은 남아 있으므로 어떤 값이 달랐는지 읽을 수 있습니다.
stdout의 runtime은 마지막 실행이며, runtime_history는 전체 순서입니다.
각 항목의 traces에서 현재 입력·기대값·실제 값과 전달된 기록 필드를 읽습니다.
artifact.reused와 현재 build로 최초 빌드 비용을 다음 실행 비용과 구분합니다.
모델 판단은 조립 기록에 한 번 남고 실제 실행의 모델 호출은0번입니다.
한 작성 그래프의 FP32·결정론 방식마다 저장 조립의 반복 흐름을 세 번씩 비교했습니다. 양쪽은 같은 프로그램과 입력·실제 값·부분 기대값을 유지합니다. 매번 빌드하는 방식은 여섯 명령, 보관하는 방식은 한 명령이므로 시작 비용 차이도 포함합니다.
| 자체 FP32에서 만든 저장 조립, 중앙값 | 매번 빌드 | 한 번 빌드 |
|---|---|---|
| 여섯 묶음 전체 | 2,324.88ms | 509.65ms |
| 프로세스 CPU 시간 | 1.46초 | 0.38초 |
| 최대 프로세스 메모리 | 82.75MiB | 82.73MiB |
새 자체 모델 판단 중앙값은18.834µs였습니다. 첫 실행 중앙값371.323ms 뒤의 15개 재사용 실행 중앙값은22.001ms였습니다. 초기의 느린 관측도 원본에 남겼습니다. CPU·메모리는 Go 빌드와 자식 실행을 포함하며, 전체 컴퓨터 CPU 사용률 변화는 측정하지 않았습니다.
기존 PTQ·QAT 모델도 각각 한 번 실제로 연결했습니다. 같은 프로그램과 결과를 유지했고, 각 모델의 상주 텐서는18,752바이트였습니다. FP32는74,624바이트입니다. 가중치와 학습은 이번에 바꾸지 않았습니다. 실제 행렬 저장은 바이트당 삼진값5개로 가중치당 약1.6비트입니다. FP32 편향을 포함한 각 가중치 파일은3,854바이트이며, 디코딩한 상주 텐서18,752바이트와 구분합니다. 앞선2비트 표기를 실제 파일과 메타데이터에 맞게 수정했습니다. 1.58은 삼진수 정보량입니다.
GitHub 원본·Go 검산 도구 · 후속 연구 PR #13 · Hugging Face 공개 관측.
최신 모델 부록은
설치 관측·Go 요약 도구·Linux 검산과 양자화 표기의 정정을 포함합니다. 게시한
151개 파일을 해당 개정에서 다시 내려받아 원본 바이트와 일치함을 확인했습니다.
Go 도구의 --text는 실행별 출력·필드 충족률, 실제 미충족 값, 현재 빌드·두 번의
실행 시간을 보여줍니다. 후속 연구 PR #14도
23개 작업을
모두 통과해 연구 main d799e9cd로 병합했습니다. 설치한 main을 고정한 새
Linux 여덟 응답도 따로 내려받아 검산했고, 실제 원본을 모델 부록에 포함했습니다.
연구 PR #13은 CI37214051407의
23개 작업을 모두 통과해 연구 main 71cca65a로 병합됐습니다. Linux에서도
네 프로필의 새 생성과 저장 재실행을 확인했습니다. 내려받은 여덟 원본을
따로 검산해 각 요청의 현재 입력·4/4·2/2·1/2 반복과 추가 추론 수를 확인했습니다.
다음에는 다른 본문 모양을 위한 소형 학습을 진행합니다. 본문 생성자의 후보식과 선언된 연결을 기민하게 조립하는 사용 흐름을 발전시키고 있습니다.