TL;DR
일반적인 규칙 기반 코드로는 구현하기 어려운 퍼지한 함수들을 매 입력마다 대형 모델 API를 호출하지 않고 로컬에서 효율적으로 실행할 수 있게 해준다는 점에서 중요하다. 이 접근은 반복적 API 비용과 재현성 문제를 줄이며, 컴파일 시점에 무거운 계산을 한 번 수행하고 이후 호출을 저비용 로컬 실행으로 대체한다는 아키텍처적 전환을 제시한다. 결과적으로 소형 인터프리터와 PEFT 어댑터 조합으로 실무적 퍼지 작업을 오프라인·버전 관리 가능한 아티팩트로 배포할 수 있다.
왜 중요한가
일반적인 규칙 기반 코드로는 구현하기 어려운 퍼지한 함수들을 매 입력마다 대형 모델 API를 호출하지 않고 로컬에서 효율적으로 실행할 수 있게 해준다는 점에서 중요하다. 이 접근은 반복적 API 비용과 재현성 문제를 줄이며, 컴파일 시점에 무거운 계산을 한 번 수행하고 이후 호출을 저비용 로컬 실행으로 대체한다는 아키텍처적 전환을 제시한다. 결과적으로 소형 인터프리터와 PEFT 어댑터 조합으로 실무적 퍼지 작업을 오프라인·버전 관리 가능한 아티팩트로 배포할 수 있다.
관련 Figure

이 차트는 데이터셋이 core text processing, 검색·매칭, 커스텀 분류, 코드·명령 생성, 안전성·검증, 에이전틱 툴 사용, 포맷 복구 등 7개 고수준 가족으로 나뉘어 있음을 보여준다. FuzzyBench의 대규모(10M 예제)와 태스크 다양성이 PAW 컴파일러 학습의 폭을 뒷받침함을 시각적으로 확인시켜 주며 왜 소형 인터프리터 기반 접근이 다양한 퍼지 작업에 적용 가능한지 근거를 제공한다.
FuzzyBench-10M 데이터셋의 태스크 가족 분포를 도넛형 차트로 시각화한 그림이다.
핵심 기여
Program-as-Weights(PAW) 패러다임 제안
자연어 명세로부터 이산 의사-프로그램과 연속적 PEFT 어댑터(LoRA)를 생성해 고정된 인터프리터에서 로컬로 실행할 수 있는 단일 파일 형태의 프로그램을 만드는 패러다임을 제안했다. 컴파일러는 한 번만 호출되어 재사용 가능한 가중치 아티팩트를 생성하고, 인터프리터는 고정 상태로 여러 프로그램을 호스팅하는 구조를 취한다. 이 설계로 매 입력 API 호출을 제거하고 소형 모델로 실무적 퍼지 작업을 처리할 수 있다.
Text-to-LoRA 컴파일러와 LoRA 매퍼 설계
4B급 컴파일러에서 추출한 depth-aligned prefix-position 히든스테이트를 평균 풀링한 뒤 MLP와 선형 투영으로 각 계층·모듈별 혼합 계수 α를 계산해 공유 기반 A,B 행렬로 LoRA를 합성하는 LoRA 매퍼 설계를 제시했다. 매퍼는 rank r=64와 N=64 공유 기반을 기본으로 사용해 per-program 약 38.5M 파라미터의 LoRA를 생성했다. 이 단순한 공유-기반 설계가 더 복잡한 per-position·per-layer 대안보다 높은 성능을 보였다.
FuzzyBench-10M 데이터셋 공개
퍼지 함수 컴파일을 위한 10M 예제 규모의 FuzzyBench를 구축·공개했으며 29개 버전으로 확장해 800개 이상의 세부 카테고리를 포함했다. 데이터는 gpt-5.2로 생성되었고 검증용 테스트셋은 gpt-5.2와 gpt-5-mini의 합의로 불분명한 타깃을 제거해 구성했다. 이 데이터셋은 컴파일러 학습과 강건성 평가(타이포, 문법 오류 등 노이즈 축)에 사용되었다.
경량 인터프리터에서의 성능 및 배포 실증
Qwen3 0.6B 인터프리터에 대해 PAW 프로그램을 실행하면 FuzzyBench에서 73.78% 정확도를 기록해 Qwen3-32B의 68.70%보다 높은 성능을 보였다. 배포 측면에서는 Q4_0 양자화된 LoRA 어댑터가 약 23 MB이고 베이스를 Q4_K_M으로 양자화하면 전체 디스크 사용량이 약 507 MB 수준으로 줄어들며 MacBook M3에서 30 tokens/s 수준의 실행이 가능했다. 이러한 결과는 대형 모델을 매 입력 호출하는 대신 컴파일-한 번 실행 설계가 실무적 이점이 있음을 실증했다.
핵심 아이디어 이해하기
퍼지 함수는 사람이 직관적으로 처리할 수 있으나 규칙 기반 코드로는 완전하게 명세하기 어려운 문제군이다. 기존에는 이런 문제를 해결하기 위해 매 입력마다 대형 LLM API를 호출하는 방식이 널리 사용되었고, 이 방식은 비용·지연·재현성 측면에서 한계가 생겼다. PAW는 이 문제를 컴파일-런타임 분리 관점에서 다시 구성해, 명세를 한 번만 읽고 그 결과로 작은 가중치 아티팩트를 생성하는 방식으로 접근한다. PAW의 작동 원리는 컴파일러가 자연어 명세와 소수의 예제를 받아 이산 의사-프로그램과 연속적 PEFT 파라미터를 생성하는 것이다. 생성된 연속적 파라미터는 LoRA 형태로 표현되어 고정된 인터프리터의 적절한 모듈에 삽입되고, 의사-프로그램은 인터프리터 입력의 선두에 붙어 합성된 동작을 유도한다. 이 과정은 컴파일 단계에서 복잡한 언어 이해와 변환을 수행하고 런타임은 경량 추론만 수행하도록 역할을 나눈다. 이 접근은 실행 비용과 메모리 요구량을 근본적으로 줄인다. 논문 실험에서는 0.6B 인터프리터가 PAW 프로그램을 실행할 때 Qwen3-32B를 직접 프롬프트했을 때보다 높은 정확도를 보였고, 추론 메모리는 대략 1/50 수준으로 감소했다. 따라서 PAW는 학습과 컴파일을 클라우드에서 집중하고 그 결과물을 로컬에 배포해 반복적인 서빙 비용을 줄이는 형태로 기존 대형 모델 중심의 워크플로를 전환시킨다.
방법론
PAW 파이프라인은 세 가지 컴포넌트로 구성된다. 먼저 off-the-shelf pseudo compiler가 명세 s를 받아 의사-프로그램 p_discrete를 생성한다. 이어서 PEFT 컴파일러가 s와 p_discrete를 입력으로 받아 prefix-position 히든스테이트를 산출하고, 이 히든스테이트를 LoRA 매퍼에 전달해 p_continuous(LoRA)를 합성한다. Text-to-LoRA 구현에서 컴파일러는 [s ∣ p_discrete ∣ EOS ∣ τ_{1:T}]를 입력으로 단일 순전파를 수행해 L×T×d 차원의 히든스테이트 H를 얻는다. H는 레이어 깊이 정렬된 위치에서 평균 풀링되어 벡터 1h로 축소되고, 이 벡터는 얕은 MLP ϕ를 통과해 계수 α^{A,B}{l,m,n}를 생성한다. 각 계수는 모듈 유형 m과 계층 l, basis 인덱스 n에 대응하며, 최종 LoRA는 shared basis A^{(m)}{1:N}, B^{(m)}_{1:N}와 α의 선형 조합으로 합성된다. 훈련은 PEFT 컴파일러 파라미터 θ만을 업데이트하는 감독학습으로 수행된다. 각 (s,x,y) 삼중항에서 미리 생성된 p_discrete=C_p(s)를 조회해 C_L의 순전파로 p_LoRA를 얻고 이를 인터프리터에 주입한 뒤 대상 y에 대한 음의 평균 토큰 로그우도 −log P_ϕ(y | p_discrete, p_LoRA, x)를 최소화한다. 그래디언트는 고정된 인터프리터를 거쳐 LoRA 매퍼와 컴파일러로 전파된다.
관련 Figure

이 그림은 명세→컴파일러→의사-프로그램+LoRA(연속 파트) 생성→고정 인터프리터에 의한 로컬 실행이라는 전체 흐름을 시각적으로 요약한다. 특히 의사-프로그램(이산)과 LoRA(연속)의 하이브리드 프로그램 구성을 한눈에 보여주며 컴파일 시점과 런타임의 역할 분리를 명확히 한다. 따라서 방법론 이해와 설계 동기를 직관적으로 보강한다.
PAW의 전체 워크플로를 보여주는 다이어그램으로, 클라우드에서의 컴파일 단계와 로컬에서의 인터프리터 실행 단계를 병렬로 배치하고 있다.
주요 결과
주요 실험은 FuzzyBench 검증된 테스트셋에서 수행되었고, PAW(Qwen3 0.6B 인터프리터)는 73.78%의 exact match를 기록해 Qwen3-32B 직접 프롬프트의 68.70%를 상회했다. 이 성능 우위는 추론 메모리 측면에서 약 50배 절감(베이스 bf16 대비 1.2GB vs 약 60GB 수준)과 결합되어 실무적 효율을 입증했다. 추가로 Qwen3.5 0.8B와 GPT-2 124M 인터프리터에서도 PAW가 동작해 컴파일러가 생성한 LoRA가 소형 베이스에서도 유의미한 적응을 제공함이 확인되었다. 구조적 비교 및 ablation에서 prefix-tuning 대비 Text-to-LoRA가 우수했다. 동일 훈련 자원에서 prefix-tuning은 50.4%를, Text-to-LoRA는 r=18에서 56.5%, r=64에서 65.7%를 보였고 전체 스케일에서 r=64 설정으로 73.78%에 도달했다. 또한 LoRA 매퍼의 설계상 단순한 mean-pool+MLP+shared-basis가 per-position 또는 per-layer 기반과 같은 더 복잡한 설계보다 오히려 높은 정확도를 보였다. 강건성 실험에서는 노이즈가 가해진 명세(타이포·문법·모호성 등)에 대해 성능 저하폭이 작게 관찰되었고, 이는 pseudo compiler가 noisy spec을 정제해 의사-프로그램으로 전달함으로써 인터프리터가 정제된 입력을 받기 때문임이 추가 실험으로 확인되었다. 양자화 실험에서는 Q6_K base + Q4_0 LoRA 조합이 bf16과 통계적으로 구분 불가능한 성능을 유지했고 Q4_K_M base + Q4_0 LoRA는 약 1.3 포인트 손실로 전체 디스크 사용량을 크게 줄이는 트레이드오프를 보였다.
기술 상세
전체 아키텍처는 pseudo compiler, PEFT compiler(Text-to-LoRA), 그리고 고정된 인터프리터의 세 부분으로 구성된다. pseudo compiler는 off-the-shelf Qwen3-4B-Instruct를 프롬프트로 사용해 명세를 재진술하고 대표 입출력 예시를 생성해 p_discrete를 만든다. PEFT compiler(C_L)는 같은 계열의 4B 모델로 초기화하여 학습을 통해 prefix-position 히든스테이트 H를 생성하고 LoRA 매퍼에 전달한다. LoRA 매퍼는 H를 L×T 축에서 평균 풀링해 1h를 얻고 이를 얕은 MLP ϕ로 처리해 각 레이어 l과 모듈 타입 m, basis 인덱스 n에 대한 혼합 계수 α^{A,B}{l,m,n}를 출력한다. 합성 공식은 A^{ex}{l,m} = Σ_n α^{A}{l,m,n} A^{(m)}n, B^{ex}{l,m} = Σ_n α^{B}{l,m,n} B^{(m)}_n이며 rank r=64, N=64의 공유 기반을 사용해 최종 LoRA를 구성한다. 논문에서 이 설계는 per-position·per-layer 확장보다 실제 성능이 높게 관찰되었다. 훈련은 PEFT compiler 파라미터 θ만 업데이트하는 감독학습으로 정의되며 손실 함수는 고정된 인터프리터의 조건부 토큰 로그우도의 음수 평균이다. 구체적으로 각 (s,x,y)에서 p_discrete=C_p(s)를 조회하고 C_L의 순전파로 p_LoRA를 얻어 인터프리터에 주입한 뒤 −log P_ϕ(y | p_discrete, p_LoRA, x)를 최소화한다. 그래디언트는 인터프리터를 통해 LoRA 매퍼와 C_L로 역전파되어 컴파일러가 텍스트 명세를 가중치로 매핑하도록 학습된다. 배포와 실행 측면에서는 LoRA 어댑터의 평상시 크기가 약 23 MB(Q4_0 양자화 기준)이고 베이스는 다양한 GGUF 양자화 구성으로 디스크·메모리 절감을 달성했다. 실험에서는 Q6_K base + Q4_0 LoRA 조합이 bf16과 유사한 성능을 유지했고 Q4_K_M base + Q4_0 LoRA는 약 1.3 포인트 손실로 디스크를 약 507 MB로 줄였다. MacBook M3에서 Q5_K_M base + Q4_0 어댑터는 약 31.6 tokens/s의 처리율과 0.48 s의 콜드 로드 시간을 기록했다.
관련 Figure

그림은 H ∈ ℝ^{L×T×d} 히든스테이트의 평균 풀링, MLP 트렁크, 그리고 각 레이어·모듈에 대한 α 계수 투영을 통해 A^{ex},B^{ex}를 합성하는 수학적 흐름을 시각적으로 연결한다. shared-basis 설계과정과 rank·basis 수치가 어떻게 매핑되는지를 보여주어 기술적 재현과 설계 선택의 근거를 제공한다. 논문에서 이 매퍼의 단순화가 더 복잡한 대안보다 우수하다는 실험 결과와 직접적으로 연결된다.
Text-to-LoRA의 내부 구조를 보여주는 아키텍처 다이어그램으로, 컴파일러 히든스테이트에서 LoRA 매퍼를 통해 공유 기반으로 LoRA를 합성하는 과정을 묘사한다.
한계점
논문은 장문 구조적 생성 작업에서의 한계를 명시했다; 긴 의사-프로그램과 예시들이 소형 인터프리터의 컨텍스트 버짓을 차지하여 Im2LaTeX와 같은 장문 생성에서는 prefix-tuning이 LoRA보다 우수하게 나타났다. 데이터 측면에서는 FuzzyBench가 gpt-5.2로 합성된 데이터이며, 데이터 생성 모델의 성능(예: gpt-5.2 상한 96.09%)이 실험적 상한을 설정한다는 점이 언급되었다. 양자화와 소형 베이스 사용은 대부분의 작업에서 큰 성능 저하 없이 작동했지만 일부 양자화 구성은 약간의 정확도 손실(예: Q4_K_M에서 약 1.3 포인트)을 보였다.
실무 활용
PAW는 개발자가 자연어로 퍼지 함수 명세를 작성해 클라우드에서 한 번 컴파일하고, 생성된 소형 LoRA 어댑터와 의사-프로그램을 로컬 인터프리터에 배포해 반복 호출을 저비용으로 수행하는 실무 흐름을 제공한다. 이 방식은 로그 알림, 커스텀 분류, 퍼지 검색 재정렬, 툴 호출 파이프라인과 같은 반복적 퍼지 작업에 비용·지연·의존성 측면에서 이점을 만든다. 또한 양자화 및 경량 런타임 호환으로 데스크탑·모바일·브라우저 배포가 현실적이다.
- 이벤트 기반 로그 모니터링에서 중요한 라인만 필터링해 로컬 알림을 발생시키는 분류기로 사용될 수 있다.
- 웹사이트 내 자연어 기반 의도 탐색(quick-find) 기능을 별도 API 호출 없이 로컬에서 제공하는 데 적용될 수 있다.
- 검색 우선순위 재정렬(semantic reranking) 단계에 PAW를 넣어 기존 인덱스에 의도 기반 랭킹을 저비용으로 추가할 수 있다.
코드 공개 여부: 공개
코드 저장소 보기키워드
용어 해설
- Program-as-Weights
- — 자연어 명세로부터 컴파일되어 파라미터 형태의 이진 아티팩트로 생성되는 프로그램 패러다임이다. 컴파일러가 텍스트 명세를 읽어 PEFT 모듈과 의사-프로그램을 생성하고, 고정된 인터프리터가 해당 파라미터를 로드해 입력을 처리한다. 반복적 API 호출 대신 한 번의 컴파일로 재사용 가능한 로컬 실행 단위를 제공하는 점이 핵심이다.
- PEFT
- — 기본 모델의 전체 가중치를 갱신하지 않고 소규모 추가 파라미터로 동작을 수정하는 기법의 총칭이다. 대표적으로 prefix-tuning과 LoRA가 있으며, PAW에서는 이들 중 LoRA를 PEFT 프로그램 형태로 생성해 인터프리터에 주입한다. PEFT는 로컬 배포와 모델 용량 절감에 기여한다.
- Pseudo-Program
- — 명세를 정제해 생성한 이산 토큰 시퀀스로, 인터프리터 입력 앞에 전처리 형태로 붙는 텍스트 구성 요소이다. 노이즈가 있는 명세를 4B급 pseudo compiler가 재진술하고 대표 입출력 예시를 포함해 인터프리터가 안정적으로 동작하도록 돕는다. 이 구성은 연속적 LoRA와 결합되어 미세 행동 제어를 가능하게 한다.
- LoRA Mapper
- — 컴파일러의 숨은 상태를 받아 여러 공유 기반(basis)와 혼합 계수를 계산해 각 계층·모듈용 LoRA 행렬을 합성하는 모듈이다. 입력으로 받은 깊이 정렬된 prefix-position 히든스테이트를 평균 풀링하고 MLP로 투영해 α 계수를 얻어 A,B 행렬을 합성한다. 공유 기반 설계와 r=64, N=64 설정이 본 논문에서 채택되었다.
- GGUF
- — llama.cpp 호환 형식으로 모델과 어댑터를 소형화해 디스크에 저장하는 양자화 포맷의 하나이다. 논문에서는 Q4_K_M, Q5_K_M, Q6_K 등 다양한 GGUF 구성으로 베이스와 LoRA를 양자화해 성능 손실을 평가했다. 모바일 및 데스크탑에서 로컬 실행 용량을 크게 줄이는 데 사용되었다.
코드 예제
import programasweights as paw
# (1) Describe the fuzzy function
spec = """Classify if this email requires immediate attention.""".strip()
# (2) Compile to a neural program
program = paw.compile(spec, slug="email-triage")컴파일 단계의 간단한 Python 예시로, 명세를 컴파일러 서비스에 보내 프로그램 객체를 반환받는 흐름을 보여준다.
import programasweights as paw
# (3) Load the compiled program
fn = paw.function("email-triage")
# (4) Call it like a function
print(fn("Thesis defense moved to 3pm; need your signature today.")) # -> "immediate"로컬 실행 단계의 예시로, 저장된 PAW 프로그램을 불러와 일반 함수처럼 호출해 결과를 얻는 사용 예이다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
