−25%

Windows 연간 결제, 10월 31일까지. 요금제 보기

EQVPS
시작하기

LLM 평가용 샌드박스: 모델이 작성한 풀이 1,000개를 약 1센트에 실행

프로그래밍 과제로 모델을 채점하려면 아무도 손으로 쓰지 않은 프로그램 수천 개를 실행해야 합니다. 노트북 대신 microVM 기반 일회용 샌드박스에서 실행하세요. 초 단위 과금과 함께 처리량과 CPU 제한도 솔직하게 설명합니다.

코딩 벤치마크에는 잘 이야기하지 않는 비밀이 있습니다. 모델을 채점하려면 모델이 쓴 코드를 실행해야 한다는 것입니다. 문제 수백 개에 각각 풀이 10개로 pass@k를 돌리면 방금 생성된 프로그램이 수천 개가 됩니다. 낯선 사람이 보낸 것이라면 그중 단 하나도 curl | bash로 실행하지 않을 겁니다.

대부분은 노트북에서 subprocess.run과 타임아웃으로 시작합니다. 어떤 풀이가 40 GB 파일을 쓰거나, 머신이 멈출 때까지 프로세스를 fork하거나, 몰래 홈 디렉터리를 읽기 전까지는 잘 동작합니다. 해결책은 더 영리한 타임아웃이 아닙니다. 아무래도 상관없는 곳에서 풀이를 실행하는 것입니다.

잘 동작하는 구성

샌드박스는 Python 3.12, Node.js 22, bash를 갖춘 Firecracker microVM으로, 약 1초 만에 시작되고 작업이 끝나면 삭제됩니다. 외부로 나가는 인터넷은 되지만 들어오는 연결은 안 되며, 안에는 여러분의 것이 아무것도 없습니다.

함정은 샌드박스를 함수 호출처럼 다루는 것입니다. 샌드박스마다 최소 60초가 과금되고 시작에 1초가 걸리므로, 풀이마다 하나씩 쓰면 느리고 낭비가 큽니다. 대신 하네스를 안에 넣으세요.

from eqvps import Sandbox

with Sandbox.create(tariff="standard", ttl=4 * 3600) as sb:
    sb.upload("/root/harness.py", open("harness.py").read())
    sb.upload("/root/samples.jsonl", open("slice_03.jsonl").read())
    task = sb.exec("python3 /root/harness.py /root/samples.jsonl > /root/results.jsonl",
                   background=True)
    task.wait(poll_interval=10)
    results = sb.download_text("/root/results.jsonl")

안에서는 harness.py가 각 풀이를 짧은 개별 타임아웃이 걸린 하위 프로세스에서 실행하고 pass, fail, timeout을 기록합니다. 말썽을 부리는 풀이는 전체 실행이 아니라 자기 하위 프로세스만 종료시킵니다. 어떤 풀이가 샌드박스 자체를 망가뜨리면 조각 하나만 잃고, 샌드박스를 다시 만들어 계속하면 됩니다.

파일은 전송당 최대 5 MB이므로 큰 데이터셋은 조각으로 나누세요. 어차피 병렬 처리를 위해서도 그렇게 하는 편이 좋습니다.

처리량, 솔직하게

계정은 샌드박스를 최대 20개까지 가질 수 있지만, 동시에 실행되는 명령은 2개입니다. 백그라운드 작업은 실행되는 동안 계속 포함됩니다. 그래서 빠른 평가란 샌드박스 20개가 슬롯 2개를 두고 다투는 모습이 아니라, 샌드박스 2개가 각자 백그라운드에서 자기 조각을 처리해 나가는 모습입니다.

일반적인 코딩 벤치마크라면 이걸로 충분합니다. 대부분의 풀이는 1초 안에 끝나고, 샌드박스 하나가 1시간에 수천 개를 처리합니다. 거대한 스위트로 여러 모델을 동시에 평가해야 한다면 한계에 부딪힐 것입니다. 그때는 자체 격리를 돌리는 VPS가 더 나은 도구입니다.

알아 둬야 할 CPU 규칙

샌드박스는 간헐적인 부하에 맞춰 설계되었습니다. CPU 사용률 90% 초과가 15분 넘게 이어지는 샌드박스는 악용으로 간주되며, 임시 샌드박스는 중지됩니다. 빠른 실행과 결과 기록을 번갈아 하는 일반적인 평가는 이 기준에 근처도 가지 않습니다. 몇 시간씩 CPU를 최대로 태우는 벤치마크(풀이마다 큰 프로젝트를 컴파일하거나 수치 계산 스트레스 테스트를 하는 경우)는 해당됩니다. 그럴 때는 월 단위 VPS를 쓰세요. AI agent 요금제는 $10에 4 vCPU와 4 GB를 제공합니다.

실행 한 번의 비용

요금제의 vCPU와 RAM에 대해 초 단위, 최소 60초로 선불 잔액에서 지불합니다.

작업량요금제시간대략적인 비용
짧은 Python 풀이 1,000개small (0.5 vCPU, 1 GB)약 20분$0.011
풀이 5,000개, numpy 허용standard (1 vCPU, 2 GB)약 2시간$0.13
풀이마다 빌드 + 테스트plus (2 vCPU, 4 GB)약 3시간$0.40

이 풀이를 생성하는 모델 호출이 실행보다 더 비쌉니다. 보통 한 자릿수 정도 차이가 납니다.

키와 재현성

하네스가 샌드박스 안에서 모델 API를 호출한다면(예를 들어 LLM-as-judge 방식 채점), 키를 샌드박스 환경 변수로 전달하세요. 값은 암호화되어 저장되고 로그에 남지 않으며, API는 변수 이름만 반환합니다.

재현성을 위해 하네스에서 패키지 버전을 고정하고, 결과와 함께 샌드박스 요금제를 기록하세요. 모든 샌드박스는 같은 깨끗한 이미지에서 시작하므로, 수치에서 "내 노트북에서는 됐는데"라는 변수가 사라집니다. 솔직히 이것만으로도 바꿀 가치가 있습니다.

샌드박스 페이지와 샌드박스 문서부터 시작하세요. 새 계정에는 샌드박스 사용 시간 $1이 제공되며, small 요금제로 풀이 수천 개의 첫 평가를 돌리기에 충분합니다. 백그라운드 작업과 파일 전송은 SDK 레퍼런스에, 전체 할당량 표는 샌드박스 제한과 과금에 있습니다.

관련 글: AI 에이전트용 샌드박스, 샌드박스에서 첫 에이전트 작업하기.

배포할 준비가 되셨나요? 암호화폐로 결제, KYC 없음 — 약 1분 만에 온라인.

지금 배포 →

FAQ

평가에 굳이 샌드박스가 필요한 이유는 무엇인가요?

모델이 작성한 프로그램 수천 개를 실행하기 때문입니다. 대부분은 무해하지만 일부는 무한 루프에 빠지고, 몇몇은 파일을 지우거나 네트워크 연결을 엽니다. 작업용 컴퓨터에서는 데이터에 대한 위험이지만, 샌드박스에서는 그저 실패한 풀이일 뿐입니다.

풀이마다 샌드박스를 하나씩 만들어야 하나요?

보통은 아닙니다. 샌드박스 생성에는 약 1초가 걸리고 최소 60초가 과금되므로, 풀이마다 하나씩 만들면 시간과 비용을 모두 낭비합니다. 샌드박스 하나 안에서 여러 풀이를 각자의 타임아웃으로 실행하는 하네스를 돌리고, 모델을 바꿀 때나 무언가가 샌드박스를 망가뜨렸을 때 다시 만드세요.

얼마나 빠르게 돌릴 수 있나요?

계정 하나는 최대 20개의 샌드박스 전체에서 동시에 최대 2개의 명령을 실행합니다. 실용적인 방식은 샌드박스 몇 개를 두고, 각각에서 하네스를 백그라운드 작업으로 돌려 데이터셋의 일부를 처리하게 하는 것입니다.

긴 벤치마크를 몇 시간 동안 돌릴 수 있나요?

백그라운드 작업으로는 샌드박스 수명(임시 샌드박스는 24시간)까지 가능합니다. 다만 CPU를 15분 넘게 최대로 쓰는 샌드박스는 악용으로 간주됩니다. 간헐적인 평가는 괜찮지만, 몇 시간씩 꾸준히 이어지는 계산은 VPS에 맞습니다.

샌드박스에서 제 모델의 API를 호출할 수 있나요?

외부로 나가는 인터넷이 열려 있으므로 가능합니다. API 키를 생성된 코드에 붙여 넣지 말고 샌드박스 환경 변수로 전달하세요. 암호화되어 저장되며 API가 절대 반환하지 않습니다.

댓글

아직 댓글이 없습니다. 첫 번째가 되세요.

댓글 남기기

댓글은 표시되기 전에 검토됩니다.