Skip to content

Shared Field Judgment

kimjooyoon edited this page Oct 4, 2026 · 2 revisions

한 판단기를 여러 필드에 사용하는 조립

2026-10-05 KST. 공개 모델 · 원본과 지표 · 컴파일러 연결 PR1231.

Gooo에 필드 이름, 두 후보식과 의도를 적습니다. 작은 판단기가 각 필드의 두 후보를 비교하고 점수를 합쳐 전체 코드 경로를 정렬합니다. 같은 도구를 제목·상태·사유의 세 조립 자리에 가져다 쓰는 모습입니다. 컴파일러가 조건문·변수·필드의 타입과 연결을 검사하고 실제로 만들어 실행합니다.

flowchart LR
    S["Gooo: 후보식과 한영 의도"] --> F["필드별 특징 배열"]
    F --> J["공유하는 작은 판단기"]
    J --> P["여덟 조합의 순서와 필드 확률"]
    P --> T["유한 예시로 조립·확인"]
    T --> R["만든 코드, 맞은 항목, 남은 항목"]
Loading

모델을 생략하면 결정론적으로 조합을 시도합니다. 필드 수/문맥 크기가 모델의 범위를 벗어나면 그 이유를 기록하고 이 순서로 진행합니다. 생성한 코드의 런타임과 저장한 선택의 재구성은 추가 추론 없이 현재 입력으로 실행합니다.

작은 변경으로 무엇이 달라졌나

앞선 혼합 의도 모델의 같은7,168개 소스/특징 관측을 재사용했습니다. 세 필드의 여덟 요구 조합은 모두 학습에 들어갔고, 새 본문과 표현의 평가 축은 따로 읽습니다. 새로운 Go 초기값에서 같은3,840회GPU 갱신을 했습니다.18,656개 매개변수 대신2,072개를 공유합니다.

지표 앞선 v2 FP32 공유 FP32 공유 QAT 삼진 학습
다른 본문·기본 표현, 첫 완전 조합 424/1,536 (27.60%) 1,152/1,536 (75.00%) 1,344/1,536 (87.50%)
위 평가의 맞은 필드 2,942/4,608 4,224/4,608 4,416/4,608
다른 본문·새 표현, 첫 완전 조합 81/512 (15.82%) 120/512 (23.44%) 102/512 (19.92%)
가중치 파일 74,624 B 8,288 B 446 B
실제 실행 텐서 74,624 B 8,288 B 2,096 B + scale8 B
문맥 해석을 포함한 따뜻한 판단 중앙값 15.96µs 9.50µs 9.29µs

준비된 특징 배열 한 행의 FP32 계산은3.04µs, QAT는3.13µs였습니다. 이 배열 경로의 힙 할당은 호출당0회였습니다. 텍스트 해석과 전체 코드 생성은 별도 비용입니다. 각 요청은3,200 B workspace와 자신의 출력/선택 상태를 소유합니다.

직접 삼진화한 PTQ의 본문 첫 조합은168/1,536으로 낮았습니다. 작은 저장 형식과 학습 방식의 영향을 함께 봐야 합니다. 모든 변형과 실패를 공개합니다.

실제 동작의 완전성

24개 소스를 다섯 방식과 예산1/2/8로 만들어360개 그래프·720회 실제 실행을 관측했습니다. 처음 보는 런타임 입력을 두 활동의 bind에 전달합니다. 생성 직후 실행했고 원시 출력에서 필드/출력/프로세스 지표를 다시 계산했습니다.

첫 후보에서 변환이 활성인 입력의 요구 필드는 결정론72/144개, 앞선 모델 108/144개, 공유 FP32/QAT 각각126/144개였습니다. 입력과 다른 값이 필요한 항목만 세면60/120,92/120,108/120,106/120개입니다. 유지 분기144/144개는 별도 분모입니다. 예산8의120개 그래프는 모두 새 입력12/12필드·8/8출력, 선택 예시15/15필드를 충족했습니다.

평가 축을 나누면 기본 표현의 활성 필드는 앞선 모델76/96개에서 공유 모델 96/96개로 올랐습니다. 새 표현8개 소스에서는 앞선 모델32/48개, 공유 모델30/48개였습니다. 작은 새 표현 묶음의 퇴행도 그대로 남깁니다.

전체 명령 중앙값은 결정론395.80ms, 공유 FP32 394.65ms였습니다. 생성·빌드· 시작 비용을 포함한 고정 순서 비교이며, 이 정도 차이로 전체 속도 향상을 판단하기 어렵습니다. 판단의 크기와 정확도, 조립의 전체 비용을 나눠 봅니다.

학습 프로세스는9.45초/CPU5.06초, 최대RAM477.9MiB였습니다. 한 코어를100%로 계산한 평균CPU는53.5%이며 호스트 전체CPU 증가량은 미측정입니다. MPS의 할당량은tensor13.56MiB/driver50.72MiB를 표본 관측했고GPU utilization은 측정하지 않았습니다. 새 실험 원본37.91MiB로, 기존 뱅크를 다시 복사하지 않습니다.

따라 하기

SDK는v0.2.23-experimental이며 컴파일러 main2c807d461afc68a7ebfbd277d1dd6e97f5168e92에 연결했습니다. 두 실행기의 깨끗한 빌드·설치와 공개 모델의 실행을 확인했습니다. 설치와 결과 읽기 · 현재 상태.

hf download asketeddy/gooo-record-shared-field-tiny-v1 \
  models/qat_ternary/model.json models/qat_ternary/weights.bin \
  demo.gooo.fixture demo-cases.json \
  --revision 87f8c482d23dc0eaa41f5575f652e7ca61f44280 \
  --local-dir ./gooo-field-model

gooo body-compose --source ./gooo-field-model/demo.gooo.fixture \
  --model ./gooo-field-model/models/qat_ternary/model.json \
  --cases ./gooo-field-model/demo-cases.json

예제는 여덟 후보 예산을 제공합니다. --model을 생략하면 결정론적으로 진행합니다. 보고서에서 model_calls, 실제 후보 시도, 맞은 필드와 기대값을 읽습니다. 저장한 조립으로 다음 입력을 실행할 수 있습니다.

특징 계약은 triple_record_field_context_v1_shared_v1입니다. Go SDK의 PredictRecordSharedInto는 전체 문맥을 받고, PredictRecordSharedFeaturesInto는 미리 준비한 [768]float32 배열을 받습니다. RecordChoiceMarginals는 필드별 첫/둘째 후보 확률을 보여줍니다. 확률은 시도 순서를 정하며 완전성은 제공한 예시와 새 입력의 실행 관측으로 계산합니다.

다음에 개선할 부분

필드별 후보를 같은 방식으로 읽는 구조가 이 작은 과제의 학습을 도왔습니다. 새로운 자연어 표현은 여전히 약합니다. 지금은 특징 배열이 선언 밖의 지역값 바인딩이나 필드 사이의 의존 관계를 표현하지 않습니다. 이 부분은 Gooo의 타입과 IR에 더 구체적인 판단 자료를 넣고, 작은 범위의 반대·혼합 요구로 확인할 과제입니다.

표현을 짧게 강제해 점수를 높이기보다, 전체 요구를 유지하고 어떤 필드/표현에서 선택이 흔들리는지 관측하려 합니다. 이번 관측은 한 구조 실험입니다.100가지 서로 다른 접근과 도메인 실행 확장은 계속 진행 중입니다.

공개 파일과 실행 확인

연구의 전체26개 검사를 통과한 뒤 Linux360개 그래프 원본을 별도로 재계산했습니다. 새 표현 퇴행, PTQ 실패, 부분 결과도 유지합니다. 최초로컬 원본37.91MiB와 후속Linux 원본38.32MiB를 합친 논리적76.22MiB는 최초 64MiB목표를 넘습니다. 로컬의Linux 관측은8MB압축으로 보관해 메모리에서 검산했습니다. 두 단계의 용량을 숨기지 않고 기록합니다.

공개 가중치로 두 작업자의32개 요청을4회 관측했습니다. 매회 필드480/480개가 맞았고, 첫 응답은 입력 종료를 기다리지 않았습니다. 첫 실행497ms, 반복3회 8.812.3ms·RAM22.622.9MiB를 기록합니다. 제한된 요청의 완료 관측입니다.

읽기 도구의--text는 필드·한영 의도·실제 후보식과 확률을 보여줍니다. 예제의 제목은50:50동률, 상태는약99.9%로 관측했습니다. 확률은 시도 순서이며 실제 완전성은 별도의 실행으로 계산합니다. 짧은 사용법.

설치본에서도 별도4회 관측했습니다. 설치본의 첫 응답은483.816ms, 세 반복은12.16436.625ms, 작업자RAM은22.5323.27MiB였습니다. 모든4회에서32요청·선택 필드480/480개가 맞고 입력 종료 전에 첫 응답이 도착했습니다. 개발 후보의 수치와 이 설치 관측을 따로 보존하며 가장 빠른 값으로 대체하지 않습니다.

Gooo

배우기

직접 다뤄 보기

원리와 개발

공개 코드와 모델

Clone this wiki locally