В Modal типичная среда Sandbox более половины своего времени использует менее 6% от пиковой загрузки CPU. Возьмем агента для написания кода: Sandbox почти простаивает, пока модель рассуждает о дальнейших действиях, и выдает всплески активности только тогда, когда агент устанавливает зависимости, запускает тесты или собирает проект. Этот же паттерн проявляется и в других типичных рабочих нагрузках Sandbox: развертываниях RL, оценках (evals) и конструкторах приложений.
Сегодня большинство сред sandbox оцениваются по модели резервирования фиксированных ресурсов. Резервирование плохо подходит для скачкообразных рабочих нагрузок по двум причинам:
- Вы должны угадать свой пик. Использование ресурсов агентом сильно варьируется от задачи к задаче, а слишком маленький Sandbox может дать сбой, поэтому в итоге вы бронируете ресурсы с запасом, значительно превышающим ваш реальный пик.
- Вы платите за пик все время. Sandbox большую часть времени работает далеко ниже зарезервированного уровня, но вы платите за все.
Мы считаем, что ваш счет должен соответствовать вашей рабочей нагрузке: расти, когда она занята, и падать, когда она простаивает. Вот почему наши среды Sandbox поддерживают всплески ресурсов (burst): Sandbox получает необходимые CPU и память в моменты пиковой нагрузки и возвращает их обратно после завершения работы. Вы платите только за то, что фактически используете.
Как это выглядит на Modal: тарификация по активным ресурсам
Каждый Sandbox по умолчанию поддерживает всплески ресурсов. Начните с базового запроса в 0.125 ядра и 128 МиБ и позволяйте вашему Sandbox расти по мере необходимости.
При тарификации по активным ресурсам вы платите каждую секунду за то, что используете, причем небольшой запрос служит базовым уровнем. Вы можете запросить больше для гарантии, но тогда вы будете платить за эти ресурсы даже тогда, когда ваш Sandbox простаивает. Вы также можете установить лимит, чтобы ограничить максимальный масштаб всплесков вашего Sandbox; думайте об этом как об определении размера компьютера, на котором работает Sandbox. Большинству рабочих нагрузок не нужно задавать запрос или лимит: используйте значения по умолчанию и масштабируйтесь от них.
Оценка затрат на Sandbox в Modal
Поскольку вы платите за то, что используете, оценивайте свои расходы по среднему использованию, а не по пиковому:
Стоимость CPU ≈ время выполнения × ставка CPU × среднее количество используемых ядер Стоимость памяти ≈ время выполнения × ставка памяти × среднее количество используемых ГиБ
Стоимость CPU ≈ время выполнения × ставка CPU × среднее количество используемых ядер Стоимость памяти ≈ время выполнения × ставка памяти × среднее количество используемых ГиБ
Этот метод усреднения работает для сред Sandbox со всплесками ресурсов, поскольку каждую секунду Sandbox тарифицируется по наибольшему из двух значений: его запросу или фактическому использованию. Поскольку среднее значение находится значительно ниже пика, клиенты с неравномерными нагрузками могут в итоге платить лишь малую часть от их обычного счета за резервирование.
Калькулятор ниже поможет вам оценить, как изменится ваш счет.
20-минутная задача агента по написанию кода: установка, затем чтение, редактирование, тестирование и проверка типов, пока модель думает между шагами, и сборка в конце.
CPU (1 CPU ≈ 2 vCPU) Всплески для установки и сборки; тесты используют около 1 CPU.
03605 мин10 мин15 мин20 минзарезервировано для самой загруженной минуты: 1.5 CPUполная скорость на Modal, медленнее на фиксированном сервере
Память (ГиБ) Около 0.8 ГиБ между шагами; 2.3 ГиБ для сборки.
01.5305 мин10 мин15 мин20 минзарезервировано для пика: 3 ГиБвсплеск
Резервирование: размер определяется заранее (CPU для самой загруженной минуты, память для пика), оплата за весь сервер постоянно Modal: оплата за то, что использует рабочая нагрузка, каждую секунду
Прейскурантная цена Modal · оплата по факту использования
14.19¢/CPU·ч 2.40¢/ГиБ·ч
Ставка CPU при резервировании, ¢ за vCPU·ч · редактируемая
Ставка памяти при резервировании, ¢ за ГиБ·ч · редактируемая
Всплески выгоднее: экономия 58% по сравнению с фиксированным резервированием.
Modal резервирует только минимум: 0.125 CPU и 128 МиБ.
1 CPU ≈ 2 vCPU. Modal оценивает CPU по физическим ядрам; большинство провайдеров sandbox оценивают по vCPU. Расходы указаны в расчете на час работы Sandbox. Резервирование покрывает самую загруженную минуту работы CPU и пиковый объем памяти рабочей нагрузки, округленные до целых vCPU и ГиБ, по стандартной фиксированной прейскурантной цене. Иллюстративные рабочие нагрузки, не производственные трассировки.
Почему всплески работают
Вашему Sandbox гарантирован его запрос, который по умолчанию невелик. Когда он превышает этот объем за счет всплеска, он задействует общий пул простаивающих ресурсов машины, которые планировщик Modal держит свободными на каждом компьютере.
Это работает благодаря закону больших чисел. Среды Sandbox, разделяющие одну машину, в основном выполняют несвязанные задачи для разных клиентов, поэтому пики их нагрузки редко совпадают по времени. Если бы каждый Sandbox резервировал емкость под свой пик, машине потребовалось бы место для суммы всех пиков. При использовании всплесков машине требуется место лишь для максимального одновременного использования. По той же причине электросеть может быть намного меньше суммы пиковых нагрузок всех домохозяйств.
Какого размера должны быть мои среды Modal Sandbox?
Для большинства рабочих нагрузок — никакого. Начните со значений по умолчанию и позвольте вашему Sandbox использовать всплески ресурсов, оплачивая только то, что он применяет. По умолчанию CPU может увеличиваться до 16 ядер сверх запроса, а для памяти нет никаких ограничений.
Лимит необязателен, но может быть полезен в следующих ситуациях:
- Вам нужна стабильная среда: для тестов (evals), развертываний RL и других бенчмарков лимит не позволяет какому-либо запуску использовать значительно больше CPU и памяти, чем другим. Если среде каждый раз требуются абсолютно одинаковые ресурсы, установите значение запроса равным лимиту.
- Вы хотите ограничить расходы: лимит ограничивает объем памяти и CPU, которые может получить Sandbox, и тем самым ограничивает общую сумму счета от процесса без ограничений или вышедшего из-под контроля агента.
Устанавливая лимит памяти, задавайте его выше реального пика Sandbox. Среды Sandbox, превышающие лимит памяти, останавливаются.
Запрос по умолчанию означает, что вы не платите за простаивающие ресурсы: ваш Sandbox оплачивается по запросу по умолчанию, когда он простаивает, и вы платите за то, что используете, во время всплесков.
Минимизация влияния принудительных завершений (evictions)
Пики нагрузок редко совпадают. Однако если это произойдет и на машине закончится CPU, среды Sandbox со всплесками замедлятся до тех пор, пока CPU не освободится. Каждому Sandbox гарантирован как минимум запрошенный CPU, но на практике большинство получает больше при необходимости.
У памяти есть более существенный недостаток. Если на машине заканчивается память, среды Sandbox, использующие в этот момент больше ресурсов, чем их запрос, могут быть принудительно завершены с ошибкой нехватки памяти (OOM — out-of-memory error) (Sandbox в пределах своего запроса никогда не завершается принудительно).
Такие завершения происходят редко, и мы подтверждаем это соглашением об уровне обслуживания (SLO): для сред Sandbox со всплесками объемом менее 8 ГиБ частота ошибок OOM составляет менее 0.0001% в минуту (омернительно примерно 1 принудительное завершение на 694 Sandbox-дня). У нас пока нет SLO для более крупных сред Sandbox, но на практике у них также наблюдаются низкие показатели принудительных завершений.
Мы также предоставили инструменты, помогающие снизить влияние ошибок OOM. Снимки при выходе (Exit snapshots) автоматически сохраняют файлы вашего Sandbox при его остановке, а снимки файловой системы сохраняют их в любое выбранное вами время. Тома (Volumes) хранят данные вне Sandbox, а SDK причин завершения работы (termination reasons SDK) позволяет обнаружить принудительное завершение и повторить попытку.
Если ваша рабочая нагрузка не может допускать ошибки OOM при указанных показателях, установите более высокий запрос памяти (гарантированная память). Чтобы найти правильный размер, начните с запроса по умолчанию, проверьте график причин выхода (Exit Reasons) в вашей панели управления, чтобы оценить ситуацию, и при необходимости скорректируйте запрос.
Резюме
Короче говоря, большинство рабочих нагрузок Sandbox носят скачкообразный характер, поэтому им нужна соответствующая модель ценообразования. Благодаря тарификации Modal по активным ресурсам вы платите за то, что используете, предоставляя своему Sandbox необходимые ресурсы, поэтому рассчитывайте затраты по среднему использованию, а не по пиковому. Оставьте значения по умолчанию, и ваш Sandbox начнет работу с малого, увеличивая ресурсы по мере необходимости.
Каждый Sandbox по умолчанию имеет ограничения, поэтому вы можете протестировать его в своем следующем проекте с помощью Modal.Sandbox.create(). Если вы все еще не уверены, какой вариант подходит именно вам, обратитесь к своему торговому представителю или свяжитесь с нами по адресу sales@modal.com.












