(java || kotlin) && devOps
Ссылка
нажмите — покажем
нажмите — покажем
В продолжение предыдущего поста - цифры по памяти получаются большие, и это на достаточно скромной модели.
У условного ChatGPT будет в 50 раз больше, или 40 х 50 = 2 Тб.
Как оно работает?
Как работают коммерческие LLM мы не знаем, открытых данных по коммерческим провайдерам: OpenAI, Anthropic, Google - нет.
Поэтому далее будет много предположений.
В качестве крупного провайдера LLM возьмем ChatGPT.
Пусть у него 1 млн карточек NVidia https://www.tomsguide.com/ai/sam-altmans-trillion-dollar-ai-vision-starts-with-100-million-gpus-heres-what-that-means-for-the-future-of-chatgpt-and-you.
Пусть это NVidia H100, т.е. получаем 80 х 10^6 Гб памяти.
Ремарка: снова хочется сказать - вот куда вся память делась!)
Размер памяти для хранения модели как уже говорилось пусть будет 2 Тб = 2000 Гб.
Пусть одна модель шарится на 10 серверов: в один (8 х 80 = 640 Гб) такая не влезет, а если шарить слишком на много серверов - вырастает latency.
На 10 серверов получаем 6400 Гб памяти, 6400 - 2000 = 4400 Гб на KV кэш.
Размер сессии у нас был 2 Гб х 50 = 100 Гб, но это для кодинга.
Исходя из данные тут https://www.index.dev/blog/chatgpt-statistics 50% можно сессий можно считать рабочими (кодинг, проекты), 50% - вопросы и ответы.
Вторые сильно меньше по контексту, пусть будет 3 000 токенов. Среднее - 33 000 токенов.
Т.е. на сессию берем 100 / 2 = 50 Гб.
4400 / 50 ~ 100 сессий на 10 серверов.
Пусть на инференс уходит 80% карточек. Остальное оставим на обучение и тестовые стенды.
Это 800 000.
Итого, система держит 800 000 / 8 / 10 * 100 ~ 1 млн сессий.
DAU у ChatGPT порядка 100 млн https://www.incremys.com/en/resources/blog/chatgpt-statistics
По часовым поясам они распределены неравномерно, возьмем 16 активных часов.
Это 100 / 16 ~ 6 млн человек в час.
Итого - уже не хватает, учитывая что 50% сессий длинные, а аудитория растет.
И тут можно понять, почему все агенты повторно шлют историю с каждым запросом, см. https://t.me/javaKotlinDevOps/581.
Хранить в памяти сессию, не зная вернется ли пользователь, с такими нагрузками нельзя.
Соответственно, тут или сбрасывать на диск (наверное SSD) в векторизованном виде, либо хранить ID сессии и каждый раз преобразовывать заново из текста запроса.
Если используется первый вариант, а для скорости ответа это важно - то становится понятно, почему также подорожали и SSD диски)))
#ai
115 ·