−25%

na Windows przy płatności rocznej, do 31.10. Do planów

EQVPS
Zacznij

Sandbox do ewaluacji LLM: 1000 rozwiązań napisanych przez model za mniej więcej cent

Ocena modelu na zadaniach programistycznych oznacza uruchomienie tysięcy programów, których nikt nie napisał ręcznie. Uruchamiaj je w jednorazowych sandboxach na microVM, a nie na swoim laptopie — rozliczenie za sekundę i uczciwie o przepustowości oraz limitach CPU.

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ążenieTaryfaCzasPrzybliżony koszt
1000 krótkich rozwiązań w Pythoniesmall (0.5 vCPU, 1 GB)~20 min$0.011
5000 rozwiązań, numpy dozwolonestandard (1 vCPU, 2 GB)~2 h$0.13
Budowanie + testy na rozwiązanieplus (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.

Gotowy na wdrożenie? Płać kryptowalutą, bez KYC — online w około minutę.

Wdróż teraz →

FAQ

Po co ewaluacji w ogóle sandbox?

Bo uruchamiasz tysiące programów napisanych przez model. Większość jest nieszkodliwa, niektóre zapętlają się w nieskończoność, a nieliczne usuwają pliki albo otwierają połączenia sieciowe. Na twojej stacji roboczej to ryzyko dla danych; w sandboxie to po prostu nieudane rozwiązanie.

Czy tworzyć jeden sandbox na jedno rozwiązanie?

Zwykle nie. Utworzenie sandboxa trwa około sekundy i jest rozliczane za co najmniej 60 sekund, więc sandbox na każde rozwiązanie marnuje jedno i drugie. Uruchom w jednym sandboxie harness, który wykonuje wiele rozwiązań, każde z własnym timeoutem, i twórz sandbox od nowa między modelami albo gdy coś go zepsuje.

Jak szybko mogę działać?

Konto wykonuje maksymalnie 2 polecenia jednocześnie w obrębie do 20 sandboxów. Praktyczny schemat to kilka sandboxów, w każdym twój harness działa jako zadanie w tle i przerabia swój fragment zbioru danych.

Czy mogę puścić długi benchmark na wiele godzin?

Jako zadanie w tle — tak, do końca życia sandboxa (24 godziny w przypadku efemerycznego). Ale sandbox utrzymywany na pełnym obciążeniu CPU dłużej niż 15 minut jest traktowany jako nadużycie. Ewaluacje w zrywach są w porządku; równomierne, wielogodzinne obliczenia należą na VPS.

Czy sandbox może wywoływać API mojego modelu?

Ruch wychodzący do internetu jest otwarty, więc tak. Przekaż klucz API jako zmienną środowiskową sandboxa — jest przechowywana w postaci zaszyfrowanej i API nigdy jej nie zwraca — zamiast wklejać go do wygenerowanego kodu.

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.