JetBrains, 메이븐 로직을 신경망 가중치로 구현
최근 30일 조회수 — 좋아요 —핵심 요약
학습 없이 메이븐의 결정 로직을 가중치로 컴파일해 ZXing 빌드와 테스트를 정확히 재현했다.

JetBrains가 메이븐(Maven)식 빌드 도구의 의사결정 로직을 신경망의 고정 가중치로 컴파일하고, 실제 자바 라이브러리를 빌드하는 데 성공했다. 바코드 라이브러리 ZXing 3.5.3을 대상으로 clean package와 테스트를 실행한 결과, 생성된 JAR 파일은 아파치 메이븐(Apache Maven)의 결과와 바이트 단위까지 일치했다.1
이번 실험은 메이븐의 동작을 학습시켜 다음 단계를 확률적으로 예측한 것이 아니다. JetBrains는 제한된 파이썬으로 메이븐 호환 빌드 제어기를 작성한 뒤, 프로그램 자체를 가중치 표로 변환했다. 초기 버전은 숫자 7개로 구성된 행 2만9,625개와 상수 셀 7,382개를 썼고, 후속 모델 nmvn-exact-v2에서는 행을 2만6,626개로 줄였다. 훈련이나 경사하강법은 사용하지 않았으며 최적화 단계도 0회였다.
신경망은 실행 단계마다 두 차례 행렬 곱셈으로 가중치 표의 한 행을 찾고, 그 행에 담긴 연산을 작은 레지스터에 적용한다. 파일을 열거나 javac을 실행해야 할 때는 정해진 메모리 위치에 요청을 기록한다. 얇은 연결 계층이 요청을 외부로 전달하고 원시 결과만 돌려주며, 어떤 작업을 할지에 관한 판단은 가중치가 맡는다. 즉 신경망이 “대체로 맞는” 선택을 하는 대신, 컴파일된 규칙에 따라 정확히 답하거나 답을 거부하도록 설계했다.
검증에는 ZXing의 부모 프로젝트와 core, javase 모듈이 쓰였다. 메이븐 실행을 막고 기존 메이븐 산출물과 파이썬판 로직을 읽을 수 없게 한 샌드박스에서 ZXing의 기존(upstream) 테스트 549개가 모두 통과했고, 새 JAR로 QR 코드를 인코딩·디코딩한 검사도 27건 모두 성공했다. CPU판과 GPU판은 전체 빌드에서 같은 순서로 정확히 1,731개의 요청을 냈다. 가중치 파일을 삭제하거나 훼손하면 빌드가 아예 진행되지 않았다는 점도 의사결정이 가중치에 들어 있음을 뒷받침한다.
대가는 성능이다. 한 번의 ZXing 빌드에는 신경망 명령 479만6,191회가 필요했다. 자바 작업을 제외한 의사결정만 비교하면 파이썬은 146.54밀리초, 신경망 CPU판은 4.15초로 28.3배 느렸고 GPU(Metal)판은 27.97초가 걸렸다. 다만 테스트를 포함한 전체 클린 빌드에서는 파이썬 구현보다 1.49배 느렸다. 30차례 짝지은 측정의 95% 구간은 1.4~1.54배였다. 이 결과는 신경망이 기존 빌드 도구보다 효율적이라는 뜻이 아니라, 결정적 프로그램을 학습 없이 가중치로 옮겨 실제 빌드를 끝낼 수 있음을 보여주는 실험이다.
Footnotes
-
JetBrains Blog, 「Can you bake Maven into a neural network?」 ↩
읽기 목록은 이 브라우저에 저장됩니다.
출처
- Can you bake Maven into a neural network? - The JetBrains Blog — JetBrains Blog
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.