$ 45.54USD
€ 50.95EUR


OpenAI масштабує сховище даних для мільярдів користувачів ChatGPT

OpenAI розробила власну платформу онлайн-зберігання даних Habitat, щоб забезпечити швидкий і надійний доступ до інформації для всіх своїх продуктів. Платформа має відповідати на запити понад 1 мільярда користувачів у 40 географічних регіонах за мілісекунди.

Інфраструктура OpenAI стикається з викликом: підтримувати вибухове зростання та нові сценарії використання, продовжуючи покращувати надійність, продуктивність та швидкість розробки продуктів. Для цього довелося переосмислити дизайн та експлуатацію платформи онлайн-зберігання.

Ця двочастинна серія пояснює, як Habitat трансформувалася з простої клієнтської бібліотеки та бази даних у глобально розподілену платформу, що зберігає понад 500 петабайтів даних. Частина I була присвячена еволюції Habitat від Python-клієнта до сервісу. У цій частині, Частині II, розглядається масштабування базового компонента зберігання – Azure Cosmos DB, та досягнення надійної мультиорендної моделі співкерованих контейнерів з високою продуктивністю читання на глобальному рівні.

Онлайн-платформа зберігання даних

Habitat – це платформа онлайн-зберігання, створена OpenAI для швидкого та надійного доступу до необхідної інформації.

  • Запити
  • Відповіді
  • Зміни (CDC)

Надійність мультиорендності в масштабі

Зі зростанням компаній інфраструктурні команди часто переходять від одноорендних до мультиорендних систем. Хоча одноорендність знижує ризики та полегшує розподіл відповідальності, вона стає дорогою у використанні. Мультиорендність, навпаки, централізує управління ресурсами, але може створювати проблеми «шумних сусідів» (noisy neighbors), коли один орендар споживає надмірну частку ресурсів.

OpenAI пройшла шлях від одного мультиорендного контейнера Azure Cosmos DB до виділення окремих контейнерів (одноорендний підхід) і зрештою повернулася до мультиорендної моделі за замовчуванням. Це стало можливим завдяки використанню вбудованих механізмів Azure Cosmos DB.

Фаза I: використання базових можливостей Azure Cosmos DB

Спочатку OpenAI дозволяла будь-яке клієнтське навантаження, покладаючись на ліміт у 10 тис. одиниць запитів на секунду (RU/s) на логічний ключ розділу. Однак це призводило до проблем:

  • Обмеження логічних ключів розділів: Часті колізії на загальних ключах (наприклад, `user_id`) між різними сценаріями використання обмежували загальну пропускну здатність.
  • «Шумні сусіди»: Фізичні розділи, де фактично застосовуються ліміти, могли страждати від надмірного навантаження від одного логічного ключа, впливаючи на інші.
  • Слабкі розділи: Зі зростанням обсягу даних ліміт пропускної здатності на фізичний розділ зменшувався, що знижувало продуктивність навіть при стабільному навантаженні.

Фаза II: ізоляція навантажень та одноорендність

Використання окремих контейнерів для критичних сценаріїв використання частково вирішило ці проблеми. Кожен контейнер мав власні фізичні розділи, що зменшувало вплив «шумних сусідів». Однак це вимагало значного обсягу роботи з планування потужностей для кожного нового контейнера.

Цей підхід спричинив проблеми зі стабільним агрегованим зростанням: нові сценарії використання, що швидко набирали популярність, непередбачувано збільшували навантаження на виділені контейнери, вимагаючи термінового масштабування. Командам доводилося постійно планувати потужності, що стало складним завданням для великої організації.

Фаза III: мультиорендність за замовчуванням з можливістю міграції даних

Для вирішення операційних проблем OpenAI повернулася до мультиорендного рішення, тісно співпрацюючи з командою Azure над покращеннями:

  • Обмеження найактивніших ключів: Запобігає надмірному споживанню ресурсів «шумними сусідами».
  • Якість обслуговування (QoS): Пріоритизація запитів для інтерактивних користувачів над фоновими завданнями (наприклад, масове завантаження даних).
  • Безсерверний режим: Оновлений безсерверний режим Azure Cosmos DB дозволив фізичним розділам масштабуватися до 10 тис. RU/s, усунувши потребу в ручному моніторингу та масштабуванні контейнерів.

Ці зміни дозволили повернутися до використання одного спільного контейнера, значно спростивши планування потужностей для команд розробників та зберігши ізоляцію між робочими навантаженнями. За останні місяці не було жодних інцидентів, пов’язаних з виділенням ресурсів чи «шумними сусідами», навіть при прискоренні розробки продуктів.

Підвищення продуктивності в глобальному масштабі

Після забезпечення надійності, наступним пріоритетом стало підвищення продуктивності для глобальних користувачів. Через географічне розподілення обчислювальних потужностей та сховищ даних, міжрегіональні запити стали неминучими, що призводило до значних затримок.

Для оптимізації продуктивності читання (понад 90% запитів Habitat) OpenAI впровадила трирівневу стратегію:

  • Зберігання даних ближче до користувачів: Де це можливо, дані розміщуються в тих самих регіонах, де перебувають користувачі, для зменшення затримок, хоча це обмежено доступною фізичною потужністю хмарних центрів обробки даних.
  • Широке реплікування найменших та найкритичніших до затримок наборів даних: Найважливіші дані (наприклад, метадані автентифікації) реплікуються у великій кількості регіонів для зменшення часу зворотного шляху.
  • Інтегроване кешування: Використання розподіленого кешу Valkey для зберігання найчастіше використовуваних даних, що значно зменшує затримки, особливо між регіонами. Інноваційний підхід до інвалідації кешу, що базується на Change Data Capture (CDC) Azure Cosmos DB, забезпечує актуальність даних.

Переписування частин сервісу Habitat на Rust замість Python також суттєво зменшило накладні витрати, підвищивши продуктивність. Ці зміни дозволили зменшити p50 затримку для читання приблизно з 120 мс до 10 мс.

Масштабування Change Data Capture

Надійна CDC є ключовим компонентом не лише для кешування Habitat, але й для живлення вторинних індексів, конвеєрів міграції даних, аналітики тощо. Платформа CDC OpenAI абстрагує складність роботи з мільйонами змін на секунду, забезпечуючи простий інтерфейс для розробників.

Погляд у майбутнє

Для масштабування Habitat та сховища розмов для наступного мільярда користувачів OpenAI розробляє власну систему онлайн-зберігання даних екзабайтного масштабу, оптимізовану для великих обсягів даних. Ця система поєднує ядро RocksDB Cloud з Raft-реплікацією та реалізує ту саму модель документів, що й Azure Cosmos DB, але з рознесеним сховищем для зменшення потреби у флеш-пам’яті.

джерело: OpenAI