Сравнить S3 vs EBS для checkpoint'ов 70B
ТЕХНИЧЕСКОЕ ЗАДАНИЕ: Сравнить S3 vs EBS для checkpoint'ов 70B
1. Цель задачи
Оценить производительность (время сохранения и загрузки) и стоимость хранения чекпоинтов модели 70B параметров (~140 ГБ) при использовании Amazon S3 (объектное хранилище) и Amazon EBS (блочное хранилище, GP3/io2). На основе измерений построить decision‑matrix, позволяющую выбрать оптимальное хранилище для разных сценариев (частые чекпоинты vs редкие, длительное хранение vs временное).
Ключевой результат Набор метрик (latency p50/p99, throughput, cost/GB/месяц, cost/операцию) и анализ trade‑off для чекпоинтов 140 ГБ.
2. Исходные данные
Перед началом необходимо иметь:
| Что нужно | Откуда взять |
|---|---|
| AWS аккаунт с доступом к S3 и EBS | рабочий/тестовый AWS аккаунт (можно ограниченный) |
| Чекпоинт модели 70B (~140 ГБ) | сгенерировать синтетический файл 140 ГБ (dd / fallocate) или реальный чекпоинт |
| Инструмент для бенчмаркинга | Python + boto3 + s3fs, aws-cli, fio (для EBS), time, dd |
| Скрипты для автоматизации | собственные скрипты на Python/bash |
| Среда выполнения | EC2 инстанс (c5.4xlarge / c6i.4xlarge) с EBS‑диском и доступом к S3 в одном регионе |
| Метрики стоимости | AWS Pricing Calculator / публичные цены (us-east-1 как baseline) |
Если нет реального инструмента — симулируем:
- Установить Python 3.10+, boto3, s3fs, fio, sysbench.
- Создать синтетический файл размером 140 ГБ: fallocate -l 140G /tmp/checkpoint.bin (на файловой системе с достаточным местом).
- Настроить bucket|S3 bucket (регион eu‑west‑1) и EBS volume типа gp3 (2000 IOPS, 500 MB/s throughput) того же размера 200 ГБ (чтобы хватило под чекпоинт + буфер).
- Написать скрипт, который повторяет операции upload/download (S3) / read/write (EBS) с замером времени и через time или
process_time().
3. Технологический стек
| Компонент | Инструменты | Назначение |
|---|---|---|
| Объектное хранилище | Amazon S3 (Standard) | Хранение чекпоинта в объектном хранилище |
| Блочное хранилище | Amazon EBS (GP3) | Подключение как блочное устройство /fs |
| Среда тестирования | AWS EC2 (c6i.4xlarge, Linux 2023) | Запуск нагрузочных тестов |
| Клиент S3 | boto3 / s3fs / aws‑cli | Upload/download чекпоинта |
| Работа с EBS | dd / fio / system‑python‑read‑write | Чтение/запись блочного устройства |
| Мониторинг | iostat / dstat / CloudWatch | Метрики I/O, latency |
| Анализ | Python‑pandas + matplotlib | Построение графиков, вычисление метрик |
| Стоимость | AWS Pricing Calculator | Расчёт ежемесячной стоимости хранения и трафика |
4. Этапы выполнения
Этап 1: Подготовка инфраструктуры (30 минут)
Действия
- Создать EC2 инстанс (c6i.4xlarge) в выбранном регионе (например, eu‑west‑1).
- Root‑диск: 50 ГБ gp3 (запас).
- VPC, security group с разрешённым HTTPS/S3 доступом.
- Создать EBS volume (gp3, 200 ГБ) и прикрепить его как
/dev/xvdb.- Настроить IOPS 3000 (базовый), throughput 500 MB/s.
- Создать bucket|S3 bucket (уникальное имя, стандартный класс, без публичного доступа).
- Установить зависимости Python 3, boto3, s3fs, fio, sysbench, git.
- Сгенерировать синтетический чекпоинт 140 ГБ на временном диске EC2 (если root‑диск мал – используем каталог на EBS второй том).
Ожидаемый результат этапа Рабочая тестовая среда (EC2 + EBS + S3), готовый файл /mnt/checkpoint.bin.
Этап 2: Бенчмарк S3 (upload/download) (1 час)
Действия
- Измерить чистое время upload чекпоинта 140 ГБ в S3.
- Измерить чистое время download того же файла из S3 в локальную папку.
- Аналогично через
aws s3 cp --recursive(один файл) с time.
- Аналогично через
- Собрать метрики throughput (MB/s) = 140 * 1024 / time, latency p50/p99 если доступны (или просто среднее).
- Примечание Убедиться, что инстанс и S3 в одном регионе для минимальной задержки.
Ожидаемый результат этапа Таблица с временами upload/download (по 5 запусков), средний/медианный throughput, оценка стоимости вызовов S3 (PUT/GET + egress в пределах региона бесплатно, но по стандарту S3 – плата за запросы).
Этап 3: Бенчмарк EBS write/read (1 час)
Действия
- Подготовить EBS том создать на нём файловую систему XFS (или ext4), смонтировать в
/mnt/ebs. - Измерить последовательную запись (write) 140 ГБ на EBS.
- Скопировать
/mnt/checkpoint.binв/mnt/ebs/командойcp, замерить через time. - Проверить, что файл не помещается в cache – использовать
dd if=/mnt/checkpoint.bin of=/mnt/ebs/cp.bin bs=1M oflag=directдля прямого I/O. - Повторить 5 раз.
- Скопировать
- Измерить последовательное чтение (read) того же файла с EBS.
- time dd if=/mnt/ebs/cp.bin of=/dev/null bs=1M iflag=direct.
- Повторить 5 раз.
- Зафиксировать IOPS, throughput (через iostat -x 1 30 во время операций), average latency.
Ожидаемый результат этапа Метрики write/read throughput, IOPS, latency для EBS gp3 (с 3000 IOPS). При необходимости повторить для другого типа EBS (io2 Block Express), изменив конфигурацию (это дополнительный этап, опционально).
Этап 4: Анализ cost/latency trade-off (1–2 часа)
Действия
- Рассчитать стоимость хранения
- Рассчитать стоимость операций
- S3: PUT стоимость $0.005 за 1000 запросов, GET $0.0004 за 1000 запросов. Для 140 ГБ (multipart ~parts) – пренебрежимо мало.
- EBS: плата за хранение только (IOPS и throughput не дополнительно для gp3 до лимитов). Если требуется больше IOPS – доплата.
- Сравнить метрики производительности
- Построить таблицу: S3 throughput (upload/download), EBS write/read throughput, latency per 1 MB.
- Рассчитать total time: save + load полного чекпоинта 140 ГБ.
- Выделить сценарии
- Частые чекпоинты (каждые 5–10 минут), хранятся временно (перезапись) → EBS, т.к. быстрее (нет HTTPS overhead).
- Редкие чекпоинты (раз в час) с длительным хранением → S3, т.к. дешевле и не занимает локальный volume.
- Гибрид: быстрый чекпоинт на EBS, затем асинхронная отправка на S3 для долговременного хранения.
- Graph Показать latencies с error‑bar на графиках.
Ожидаемый результат этапа Decision‑matrix (таблица), содержащая для каждого сценария (частый/редкий/гибрид) рекомендуемое решение, стоимость и время. Краткие выводы.
Этап 5: Оформление отчёта (30 минут)
Действия
- Создать документ с результатами
- Включить код скриптов тестирования (например, Python скрипты бенчмарка).
- Указать ограничения (синтетический файл, не учитывает сети/регион, single‑threaded vs multi‑threaded).
Ожидаемый результат этапа Законченный отчёт в Markdown/PDF, доступный для ревью.
5. Критерии приемки (Definition of Done)
- Создана и корректно настроена среда EC2 + EBS + S3.
- Проведены минимум по 5 замеров upload/download для S3 и write/read для EBS.
- Получены надёжные метрики: время, throughput (MB/s), при необходимости latency p50/p99.
- Выполнен расчёт стоимости хранения и операций для каждого хранилища (на 1 месяц, 140 ГБ).
- Построен хотя бы один график сравнения (столбчатая диаграмма времени/стоимости).
- Сформулированы как минимум три сценария использования с конкретной рекомендацией.
- Отчёт доступен в виде Markdown-файла с таблицами и кодом бенчмарков (или ссылкой на репозиторий).
- Описаны возможные источники погрешности (синтетический файл, прямой I/O, cache effects).
6. Ожидаемый результат
Основной артефакт
report_benchmark_checkpoint_70B.md – отчёт, включающий:
- Описание конфигурации (инстанс, EBS gp3 200GB, Bucket Standard).
- Таблицы замеров (S3 upload, S3 download, EBS write, EBS read) – по 5 строк каждая.
- График:
latency_comparison.png– столбцы (mean time для каждого типа операции) или box‑plot. - Таблица cost analysis (ценовые данные на момент теста).
- Decision‑matrix (рекомендации для частых/двойных/редких чекпоинтов).
- Выводы и ограничения.
Дополнительные результаты
- Набор скриптов в отдельном файле
benchmark.pyили bash‑скрипте с командами. - Лог выполнения (
benchmark.log) с выхлопамиtime,iostat.
7. Возможные сложности и их решение
| Сложность | Решение |
|---|---|
| Время генерации синтетического файла 140 ГБ слишком большое | Использовать fallocate (моментально, но файл будет sparse – при чтении реальные IO zero). Допустимо для теста пропускной способности (write при dd с direct – всеравно по фактическим данным). Либо сделать 140 ГБ не одним файлом, а набором 140 файлов по 1 ГБ. |
| Нехватка места на EC2 root volume | Монтировать EBS том как /mnt/ebs и генерировать файл там. Использовать отдельный volume 200 ГБ. |
| S3 upload занимает много времени из-за малого количества параллельных потоков | Использовать s3fs с опцией multipart_chunksize или aws s3 cp с --concurrency=10 (увеличивает параллелизм). Задокументировать настройки. |
| EBS write/read медленнее ожидаемого из-за неоптимального блочного размера dd | Установить bs=1M – оптимальный для последовательных операций. Для большей точности использовать fio с профилями seqwrite/seqread. |
| Стоимость запуска тестов (особенно EC2 инстанс) превышает бюджет | Использовать t3.2xlarge (недорогой, но burstable) с настройкой credits. Для тестов throughput EBS t3 не лучший, но для демонстрации подойдёт. Если бюджет жёсткий – использовать AWS Free Tier (t2.micro, но EBS будет узким). |
| Нельзя получить точные метрики latency из-за кэширования файловой системы | Использовать O_DIRECT (флаг direct для dd) или fio с --direct=1. Для S3 кэш S3 не используется на стороне клиента – можно выполнить предварительную очистку кэша ОС (echo 3 > /proc/sys/vm/drop_caches). |
| Зависимость от времени суток/загруженности AWS | Проводить тесты в несколько повторений, взять mean и median. Указать регион и временную зону. |
8. Бюджет времени (оценка)
| Этап | Время |
|---|---|
| Этап 1: Подготовка инфраструктуры | 30 мин |
| Этап 2: Бенчмарк S3 | 1 ч |
| Этап 3: Бенчмарк EBS | 1 ч |
| Этап 4: Анализ cost/latency | 1 ч 30 мин |
| Этап 5: Оформление отчёта | 30 мин |
| Итого | 4 ч 30 мин |
Примечание При первом выполнении может потребоваться дополнительное время на настройку AWS (до 1 часа). Запас: +1 час на непредвиденные задержки (очистка кэша, повторные замеры, решение проблем с сетью).
9. Связанные вопросы из базы знаний
| Вопрос | Тема |
|---|---|
| 13 | Сравнение S3 vs EBS для чекпоинтов |
| 14 | Оптимизация multipart upload для больших файлов |
| 15 | Выбор размера блока (I/O) для последовательного чтения |
| 42 | Стоимость хранения vs стоимость сети в AWS |
| 57 | Метрики throughput и latency при нагрузке на EBS |
| 89 | Влияние региона на latency S3 |
| 134 | Использование fio для бенчмарка дисковой подсистемы |
| 271 | Параллельная загрузка в S3 (multithreading) |
| 302 | Сравнение FSx for Lustre vs S3 для чекпоинтов LLM |
10. Чек-лист самопроверки
- Я создал(а) два отдельных AWS ресурса (S3 bucket и EBS volume) и прикрепил(а) их к EC2.
- Я сгенерировал(а) синтетический файл 140 ГБ и убедился(ась), что он не sparse (при dd с /dev/urandom или fallocate с последующей записью).
- Провёл(а) минимум 5 измерений для каждого типа операции (upload/download/write/read), зафиксировал(а) время.
- Очищал(а) кэш ОС между замерами (echo 3 > /proc/sys/vm/drop_caches) для EBS.
- Для S3 использовал(а)
aws s3 cpс параметром--no-progressчтобы избежать искажения времени из-за вывода. - Для EBS использовал(а)
O_DIRECT(dd с direct) чтобы миновать кэш ФС. - Записал(а) все настройки (тип инстанса, регион, размер/тип EBS, конфигурация S3 multipart) в отчёт.
- Рассчитал(а) среднее значение и медиану времени, throughput в MB/s, и стоимость.
- Сделал(а) выводы для минимум трёх сценариев (частые чекпоинты / редкие / гибрид) и указал(а) рекомендацию.
- Оформил(а) отчёт в Markdown с таблицами и графиком, приложил(а) скрипты/логи.