У бенчмарков по коду есть грязный секрет: чтобы оценить модель, нужно запустить то, что она написала. Прогон pass@k на несколько сотен задач с десятью решениями на каждую — это тысячи свежесгенерированных программ, а вы бы ни одну из них не сделали curl | bash от незнакомца.
Большинство начинает на ноутбуке с subprocess.run и таймаутом. Это работает, пока какое-нибудь решение не запишет файл на 40 GB, не размножит процессы до остановки машины или тихо не прочитает ваш домашний каталог. Решение не в более хитром таймауте. Решение — запускать решения там, где вам не жалко.
Схема, которая работает
Песочница — это микро-VM Firecracker с Python 3.12, Node.js 22 и bash, которая стартует примерно за секунду и удаляется, когда вы закончили. Исходящий интернет работает, входящий нет, и ничего вашего внутри нет.
Ловушка — обращаться с песочницей как с вызовом функции. Каждая оплачивается минимум за 60 секунд и стартует секунду, так что одна песочница на решение — медленно и расточительно. Вместо этого поместите харнес внутрь:
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 команды. Фоновая задача считается, пока работает. Так что быстрая оценка выглядит как две песочницы, каждая из которых в фоне перемалывает свой кусок, а не двадцать песочниц, дерущихся за два слота.
Для типичных бенчмарков по коду этого хватает с лихвой: большинство решений выполняются меньше чем за секунду, и одна песочница проходит тысячи за час. Если нужно оценивать много моделей сразу на огромном наборе, вы упрётесь в потолок. Тогда лучший инструмент — VPS с вашей собственной изоляцией.
Правило CPU, о котором стоит знать
Песочницы рассчитаны на пиковую нагрузку. Песочница, загруженная больше чем на 90% CPU дольше 15 минут, считается злоупотреблением — временная песочница останавливается. Обычные прогоны оценки, где быстрые запуски чередуются с учётом результатов, к этому не приближаются. Бенчмарк, который часами жжёт CPU на полную (сборка большого проекта на каждое решение, численные стресс-тесты), — приблизится. Для такого берите VPS помесячно: тариф AI agent даёт 4 vCPU и 4 GB за $10.
Сколько стоит прогон
Вы платите посекундно за vCPU и RAM тарифа, минимум 60 секунд, с предоплаченного баланса.
| Нагрузка | Тариф | Время | Примерная стоимость |
|---|---|---|---|
| 1 000 коротких решений на Python | 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, а полная таблица квот — в разделе лимиты и оплата песочниц.
По теме: песочница для ИИ-агентов и первая задача агента в песочнице.
Комментарии
Пока нет комментариев. Будьте первым.