У бенчмарків із коду є брудний секрет: щоб оцінити модель, треба запустити те, що вона написала. Прогін 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, а повна таблиця квот — у розділі ліміти й оплата пісочниць.
За темою: пісочниця для ШІ-агентів і перше завдання агента в пісочниці.
Коментарі
Поки немає коментарів. Будьте першим.