Benchmarki kodu mają wstydliwy sekret: żeby ocenić model, trzeba uruchomić to, co napisał. Przebieg pass@k na kilkuset zadaniach z dziesięcioma rozwiązaniami każde to tysiące świeżo wygenerowanych programów — a żadnego z nich nie puściłbyś przez curl | bash od nieznajomego.
Większość zaczyna na laptopie od subprocess.run z timeoutem. Działa to, dopóki jakieś rozwiązanie nie zapisze pliku 40 GB, nie zacznie forkować procesów aż do zawieszenia maszyny albo po cichu nie przeczyta twojego katalogu domowego. Rozwiązaniem nie jest sprytniejszy timeout. Jest nim uruchamianie rozwiązań tam, gdzie nic cię to nie obchodzi.
Konfiguracja, która działa
Sandbox to microVM Firecracker z Pythonem 3.12, Node.js 22 i bashem, uruchamiana w około sekundę i usuwana, gdy skończysz. Ruch wychodzący działa, przychodzący nie, a w środku nie ma niczego twojego.
Pułapka to traktowanie sandboxa jak wywołania funkcji. Każdy jest rozliczany za co najmniej 60 sekund i startuje sekundę, więc sandbox na rozwiązanie jest wolny i rozrzutny. Zamiast tego umieść harness w środku:
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")
W środku harness.py uruchamia każde rozwiązanie w podprocesie z własnym krótkim timeoutem i zapisuje pass, fail albo timeout. Niesforne rozwiązanie zabija własny podproces, a nie cały przebieg. Jeśli rozwiązaniu uda się zepsuć sam sandbox, tracisz jeden fragment, tworzysz sandbox od nowa i jedziesz dalej.
Pliki to maksymalnie 5 MB na jeden transfer, więc dziel duże zbiory danych na fragmenty — i tak chcesz tego dla równoległości.
Przepustowość, uczciwie
Konto może mieć do 20 sandboxów, ale 2 polecenia wykonują się jednocześnie. Zadanie w tle liczy się, dopóki działa. Szybka ewaluacja wygląda więc jak dwa sandboxy, z których każdy w tle mieli swój fragment, a nie dwadzieścia sandboxów walczących o dwa sloty.
Dla typowych benchmarków kodu to aż nadto: większość rozwiązań kończy się w mniej niż sekundę, a jeden sandbox przerabia tysiące na godzinę. Jeśli musisz oceniać wiele modeli jednocześnie na ogromnym zestawie, trafisz na sufit. Wtedy lepszym narzędziem jest VPS z własną izolacją.
Zasada dotycząca CPU, którą warto znać
Sandboxy są zaprojektowane do pracy w zrywach. Sandbox utrzymywany powyżej 90% CPU dłużej niż 15 minut jest traktowany jako nadużycie — sandbox efemeryczny zostaje zatrzymany. Zwykłe ewaluacje, w których szybkie uruchomienia przeplatają się z zapisywaniem wyników, nawet się do tego nie zbliżają. Benchmark, który godzinami pali pełne CPU (kompilacja dużego projektu na każde rozwiązanie, numeryczne testy obciążeniowe) — już tak. Do tego weź VPS na miesiąc: taryfa AI agent daje 4 vCPU i 4 GB za $10.
Ile kosztuje przebieg
Płacisz za sekundę za vCPU i RAM taryfy, minimum 60 sekund, z przedpłaconego salda.
| Obciążenie | Taryfa | Czas | Przybliżony koszt |
|---|---|---|---|
| 1000 krótkich rozwiązań w Pythonie | small (0.5 vCPU, 1 GB) | ~20 min | $0.011 |
| 5000 rozwiązań, numpy dozwolone | standard (1 vCPU, 2 GB) | ~2 h | $0.13 |
| Budowanie + testy na rozwiązanie | plus (2 vCPU, 4 GB) | ~3 h | $0.40 |
Wywołania modelu, które generują te rozwiązania, będą kosztować więcej niż samo wykonanie — zwykle o rząd wielkości.
Klucze i powtarzalność
Jeśli harness wywołuje API modelu z wnętrza sandboxa — na przykład do oceny w stylu LLM-as-judge — przekaż klucz jako zmienną środowiskową sandboxa. Wartości są przechowywane zaszyfrowane, nigdy nie trafiają do logów, a API zwraca tylko nazwy zmiennych.
Dla powtarzalności przypnij wersje pakietów w harnessie i zapisuj taryfę sandboxa razem z wynikami. Każdy sandbox startuje z tego samego czystego obrazu, co usuwa z twoich liczb zmienną „na moim laptopie działało”. Szczerze mówiąc, już samo to jest warte zmiany.
Zacznij od strony sandboxów i dokumentacji sandboxów. Nowe konta dostają $1 czasu sandboxów — wystarczy na pierwszą ewaluację kilku tysięcy rozwiązań na taryfie small. Dokumentacja SDK opisuje zadania w tle i przesyłanie plików, a limity i rozliczenia sandboxów zawierają pełną tabelę limitów.
Powiązane: sandbox dla agentów AI i pierwsze zadanie agenta w sandboxie.
Komentarze
Brak komentarzy. Bądź pierwszy.