다음 단계가 단 한 단계가 아닐 때: 동시성 Go 프로그램을 위한 분포 인식 실행 모델링 (Distribution-Aware Execution
요약
Go 언어의 비결정론적 스케줄링 특성을 고려하여, 다음 실행 이벤트를 확률 분포로 예측하는 모델링 기법을 제안합니다. KL 목적 함수를 통해 7B 모델을 미세 조정하여 기존 모델보다 높은 정확도와 개선된 교정 오차를 달성했습니다.
핵심 포인트
- 비결정론적 스케줄러를 훈련 신호로 활용하는 분포 인식 모델링
- KL 목적 함수를 사용한 7B 모델의 미세 조정 기법
- Gemini 1.5 Flash 대비 높은 예측 정확도 및 낮은 교정 오차 달성
- Go 고루틴 누수(goroutine-leak)를 감지하는 공식적 시그니처 도출
- 데이터셋, 훈련된 어댑터 및 툴링 공개
동시성 프로그램 (concurrent program)에서 다음 단계를 예측하는 모델을 훈련시키는 것은 보기보다 어렵습니다. 스케줄러 (scheduler)가 비결정론적 (nondeterministic)이기 때문에, 동일한 트레이스 접두사 (trace prefix)로부터 동일한 프로그램을 두 번 실행하더라도 둘 다 유효한 서로 다른 다음 이벤트 (next events)가 발생할 수 있습니다. 단일 레이블 (single label)을 대상으로 훈련된 모델은 무작위 프로세스 (random process)의 하나의 결과만을 추측하는 법을 배우게 됩니다. 우리는 이 상황을 반전시켜 비결정론성을 훈련 신호 (training signal)로 사용합니다. 우리는 각 프로그램을 여러 번 실행하고, 관찰된 다음 이벤트들을 경험적 분포 (empirical distribution)로 집계하며, KL 목적 함수 (KL objective)를 사용하여 해당 분포와 일치하도록 7B 모델을 미세 조정 (fine-tune)합니다. 실제 운영 환경의 Go 버그 (CockroachDB, Kubernetes, gRPC, etcd)에서 추출한 798개의 홀드아웃 예측 (held-out predictions)에 대해, 1,000개 미만의 트레이스 (traces)로 미세 조정을 수행했을 때 36.2%의 정확도에 도달했습니다. 이는 제로샷 (zero-shot)으로 사용된 Gemini 3.5 Flash (34.8%)와 미세 조정을 하지 않은 동일 모델 (28.6%)보다 앞선 수치입니다. 분포 훈련 (Distribution training)은 정확도 측면에서 교차 엔트로피 (cross-entropy)와 유사한 수준(35.8% 대 36.2%)을 보이면서도, 기대 교정 오차 (Expected Calibration Error)를 0.205에서 0.169로 감소시켰습니다. 또한 우리는 학습에 의한 것이 아니라 스케줄러 의미론 (scheduler semantics)에 의해 P(GoUnblock)=0이 성립하는 select-blocked 고루틴 (goroutine) 클래스에 대한 공식적인 고루틴 누수 (goroutine-leak) 시그니처를 도출했습니다. 우리는 데이터셋, 훈련된 어댑터 (adapters), 그리고 모든 툴링 (tooling)을 공개합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기