Попробуйте решить эту задачу самостоятельно

Практикуйтесь с интерактивными подсказками и моментальной обратной связью

Перейти на Premium

Постановка задачи

💬 Что такое ChatGPT?

Вы наверняка знаете, что такое ChatGPT. Это диалоговый сервис на базе искусственного интеллекта, в котором пользователи отправляют запросы на естественном языке и получают ответы от большой языковой модели в виде потока токенов. Диалоги сохраняются, поэтому пользователи могут вернуться к старому чату и продолжить общение с того места, на котором остановились.

В рамках этой задачи мы будем рассматривать большую языковую модель (LLM) как черный ящик. Мы не занимаемся обучением модели или настройкой ее внутренних процессов. Вся наша архитектура сосредоточена вокруг системы обслуживания запросов: как быстро передавать токены пользователю, как планировать нагрузку на дефицитные графические процессоры (GPU) и как удерживать затраты в разумных пределах по мере роста диалогов. Мы также ограничим рамки проектирования форматом "только текст на входе и выходе", без поддержки изображений, аудио или видео, а также без возможности редактирования и ветвления сообщений.

В этой статье мы разработаем систему, поддерживающую основные функции ChatGPT, погрузимся в потоковую передачу ответов и планирование GPU. Мы начнем с определения требований, а затем перейдем к проектированию в соответствии с нашей структурой интервью.

Функциональные требования

Основные требования

  1. Пользователи могут отправлять запросы в чате и получать сгенерированный ИИ ответ.
  2. Пользователи могут просматривать прошлые чаты и возобновлять диалог, при этом контекст предыдущей беседы должен передаваться модели вместе с новым запросом.

За рамками задачи

  • Редактирование или ветвление существующих сообщений.
  • Ввод и вывод изображений, аудио или видео (работаем только с текстом).
  • Возможность поделиться чатом или совместная работа над чатом с другими пользователями.
  • Пользовательские модели, вызов инструментов/функций (tool/function calling) и поиск в интернете.
  • Полнотекстовый поиск по истории чатов пользователя.

Нефункциональные требования

Нефункциональные требования описывают свойства системы, важные для пользователя и бизнеса.

ChatGPT кажется нерабочим, если после нажатия Enter вы несколько секунд смотрите на пустой экран. Поэтому время до первого токена (time-to-first-token, TTFT) важнее, чем общее время генерации ответа. Поскольку графические процессоры (GPU) являются дефицитным и дорогим ресурсом, система должна тщательно распределять вычислительные мощности. На момент написания статьи ChatGPT обслуживает чуть более 200 миллионов активных пользователей в день (DAU) - именно на этот масштаб мы будем ориентироваться.

Перейдите на Premium, чтобы продолжить

Разблокируйте доступ к этой статье и всем остальным материалам с NowInterview Premium

Перейти на Premium