Это руководство предоставляет комплексный набор лучших практик, которые помогут вам перейти от прототипа к производству. Будь вы опытным инженером по машинному обучению или недавним энтузиастом, это руководство должно предоставить вам инструменты, необходимые для успешного использования платформы в производственной среде: от обеспечения доступа к нашему API до проектирования надежной архитектуры, способной справиться с большими объемами трафика. Используйте это руководство, чтобы помочь разработать план для максимально гладкого и эффективного развертывания вашего приложения.
После входа в вашу учетную запись OpenAI вы можете найти название и ID вашей организации в настройках организации. Название организации - это метка для вашей организации, отображаемая в пользовательских интерфейсах. ID организации - это уникальный идентификатор вашей организации, который можно использовать в запросах API.
Пользователи, принадлежащие к нескольким организациям, могут передавать заголовок, чтобы указать, какая организация используется для запроса API. Использование из этих запросов API будет учитываться в пределах квоты указанной организации. Если заголовок не предоставляется, счет будет выставлен организации по умолчанию. Вы можете изменить вашу организацию по умолчанию в настройках пользователя.
Вы можете пригласить новых членов в вашу организацию со страницы Команды. Члены могут быть читателями или владельцами. Читатели могут делать запросы API и просматривать базовую информацию об организации, в то время как владельцы могут изменять информацию о биллинге и управлять членами внутри организации.
Чтобы начать использовать OpenAI API, введите свои платежные данные. Если платежные данные не введены, у вас все равно будет доступ для входа, но вы не сможете делать запросы к API.
После ввода платежной информации, у вас будет утвержденный лимит использования в размере $100 в месяц, который установлен OpenAI. Ваш лимит квоты будет автоматически увеличиваться по мере увеличения вашего использования на платформе и перехода от одного уровня использования к другому. Вы можете просмотреть текущий лимит использования на странице лимитов в настройках вашего аккаунта.
Если вы хотите получать уведомление, когда ваше использование превысит определенную сумму в долларах, вы можете установить порог уведомления через страницу лимитов использования. Когда порог уведомления достигнут, владельцы организации получат уведомление по электронной почте. Также вы можете установить месячный бюджет, так что, когда месячный бюджет будет достигнут, любые последующие запросы к API будут отклонены. Обратите внимание, что эти лимиты являются максимальным усилием, и могут быть задержки между использованием и применением лимитов в 5-10 минут.
OpenAI API использует ключи API для аутентификации. Посетите страницу ваших ключей API, чтобы получить ключ API, который вы будете использовать в своих запросах.
Это относительно простой способ контролировать доступ, но вы должны быть бдительными в обеспечении безопасности этих ключей. Избегайте размещения ключей API в вашем коде или в общедоступных репозиториях; вместо этого, храните их в безопасном месте. Вы должны предоставлять доступ к вашим ключам вашему приложению с использованием переменных среды окружения или сервиса управления секретами, так чтобы вам не нужно было жестко кодировать их в вашей кодовой базе.
Использование ключа API может быть отслежено на странице Использования после включения отслеживания. Если вы используете ключ API, сгенерированный до 20 декабря 2023 года, отслеживание не будет включено по умолчанию. Вы можете включить отслеживание впредь на панели управления ключами API. Все ключи API, сгенерированные после 20 декабря 2023 года, имеют включенное отслеживание. Любое предыдущее неотслеживаемое использование будет отображаться как Untracked
на панели управления.
По мере вашего масштабирования, вы можете захотеть создать отдельные организации для ваших пробных и производственных сред окружения. Пожалуйста, обратите внимание, что вы можете зарегистрироваться, используя два отдельных адреса электронной почты, например bob+prod@widgetcorp.com и bob+dev@widgetcorp.com, чтобы создать две организации. Это позволит вам изолировать вашу разработку и тестирование, так чтобы вы случайно не нарушили работу вашего активного приложения. Таким образом, вы также можете ограничить доступ к вашей производственной организации.
При проектировании вашего приложения или сервиса для производства, использующего наш API, важно учитывать, как вы будете масштабировать его, чтобы удовлетворить потребностям в трафике. Независимо от выбора поставщика облачных услуг, существует несколько ключевых областей, которые вам нужно будет учитывать:
- Горизонтальное масштабирование: Возможно, вы захотите масштабировать ваше приложение горизонтально, чтобы обработать запросы к вашему приложению, исходящие из множества источников. Это может включать развертывание дополнительных серверов или контейнеров для распределения нагрузки. Если вы выберете этот тип масштабирования, убедитесь, что ваша архитектура спроектирована для работы с несколькими узлами и что у вас есть механизмы для балансировки нагрузки между ними.
- Вертикальное масштабирование: Другой вариант - масштабирование вашего приложения вверх вертикально, что означает увеличение ресурсов, доступных одному узлу. Это может включать повышение возможностей вашего сервера для обработки дополнительной нагрузки. Если вы выберете этот тип масштабирования, убедитесь, что ваше приложение спроектировано для использования этих дополнительных ресурсов.
- Кэширование: Храня часто запрашиваемые данные, вы можете улучшить время ответа без необходимости делать повторные вызовы к нашему API. Ваше приложение должно быть спроектировано для использования кэшированных данных по возможности и для инвалидации кэша при добавлении новой информации. Существует несколько способов сделать это. Например, вы можете хранить данные в базе данных, файловой системе или в кэше в памяти, в зависимости от того, что лучше всего подходит для вашего приложения.
- Балансировка нагрузки: Наконец, рассмотрите техники балансировки нагрузки, чтобы гарантировать равномерное распределение запросов по доступным серверам. Это может включать использование балансировщика нагрузки перед вашими серверами или использование DNS round-robin. Балансировка нагрузки поможет улучшить производительность и уменьшить узкие места.
При использовании нашего API важно понимать и планировать ограничения.
Задержка — это время, которое требуется для обработки запроса и возврата ответа. В этом разделе мы обсудим некоторые факторы, влияющие на задержку наших моделей генерации текста, и предложим рекомендации по ее сокращению.
На задержку запроса на выполнение в основном влияют два фактора: модель и количество сгенерированных токенов. Жизненный цикл запроса на выполнение выглядит так:
Большая часть задержек обычно возникает на шаге генерации токенов.
Интуиция: Токены запроса добавляют очень небольшую задержку к вызовам завершения. Время для генерации токенов завершения значительно дольше, так как токены генерируются по одному. Большее время генерации будет накапливать задержку из-за генерации, требуемой для каждого токена.
Теперь, когда мы рассмотрели основы задержки, давайте рассмотрим различные факторы, которые могут влиять на задержку, в общем порядке от наиболее влиятельных до наименее влиятельных.
Наш API предлагает различные модели с различным уровнем сложности и общности. Наиболее способные модели, такие как gpt-4
, могут генерировать более сложные и разнообразные завершения, но они также требуют больше времени для обработки вашего запроса. Модели такие как gpt-3.5-turbo
, могут генерировать более быстрые и дешевые завершения чата, но они могут давать результаты, которые менее точные или релевантные для вашего запроса. Вы можете выбрать модель, которая наилучшим образом соответствует вашему случаю использования и компромиссу между скоростью и качеством.
Запрос большого количества генерируемых токенов завершения может привести к увеличению задержек:
- Меньшее максимальное количество токенов: для запросов с аналогичным количеством генерации токенов, те, у которых параметр
max_tokens
ниже, несут меньшую задержку. - Включение последовательностей остановки: чтобы предотвратить генерацию ненужных токенов, добавьте последовательность остановки. К примеру, вы можете использовать последовательности остановки для генерации списка с определенным количеством элементов. В данном случае, используя
11.
в качестве последовательности остановки, вы можете сгенерировать список только из 10 элементов, так как генерация остановится, когда будет достигнут11.
. - Генерировать меньше завершений: уменьшите значения
n
иbest_of
когда возможно, гдеn
относится к тому, сколько завершений нужно сгенерировать для каждого запроса, аbest_of
используется для представления результата с наивысшей логарифмической вероятностью на токен.
Если n
и best_of
оба равны 1 (что является значением по умолчанию), количество генерируемых токенов будет не более, чем равно max_tokens
.
Если n
(количество возвращаемых завершений) или best_of
(количество генерируемых завершений для рассмотрения) установлены в значение > 1
, каждый запрос создаст несколько результатов. Здесь вы можете рассматривать количество генерируемых токенов как [ max_tokens * max (n, best_of) ]
Установка stream: true
в запросе заставляет модель начинать возвращать токены, как только они становятся доступны, вместо того чтобы ждать, пока не будет сгенерирована полная последовательность токенов. Это не изменяет время получения всех токенов, но уменьшает время для первого токена для приложения, где мы хотим показать частичный прогресс или собираемся остановить генерации. Это может быть лучшим пользовательским опытом и улучшением UX, поэтому стоит экспериментировать со стримингом.
Наши серверы в настоящий момент расположены в США. Хотя в будущем мы надеемся иметь глобальное избыточное размещение, пока что вы можете рассмотреть вопрос о размещении соответствующих частей вашей инфраструктуры в США, чтобы минимизировать время в пути между вашими серверами и серверами OpenAI.
Чтобы контролировать ваши затраты, вы можете установить порог уведомления в своем аккаунте, чтобы получать электронное оповещение, как только вы превысите определенный порог использования. Вы также можете установить месячный бюджет. Пожалуйста, помните о потенциальной возможности месячного бюджета вызвать прерывания в работе вашего приложения/пользователей. Используйте панель мониторинга использования для контроля использования токенов в текущем и прошлых циклах выставления счетов.
Одна из сложностей переноса вашего прототипа в производство заключается в бюджетировании расходов, связанных с запуском вашего приложения. OpenAI предлагает модель оплаты по мере использования, с ценами за 1000 токенов (примерно равно 750 словам). Для оценки ваших расходов вам нужно будет спрогнозировать использование токенов. Учитывайте такие факторы, как уровни трафика, частота взаимодействия пользователей с вашим приложением и объем обрабатываемых данных.
Одним полезным подходом к снижению затрат является рассмотрение затрат как функции количества токенов и стоимости за токен. Есть два потенциальных пути для снижения затрат, используя этот подход. Во-первых, вы могли бы работать над уменьшением стоимости за токен, переключаясь на меньшие модели для некоторых задач, чтобы снизить затраты. В качестве альтернативы, вы могли бы попытаться сократить количество требуемых токенов. Есть несколько способов сделать это, таких как использование более коротких запросов, тонкая настройка моделей, или кэширование общих пользовательских запросов, чтобы они не требовали повторной обработки.
Перенося ваш прототип в производство, вы можете захотеть рассмотреть разработку стратегии MLOps. MLOps (операции машинного обучения) относится к процессу управления полным жизненным циклом ваших моделей машинного обучения, включая любые модели, которые вы можете настраивать с использованием нашего API. Несколько аспектов следует учитывать при разработке вашей стратегии MLOps. К ним относятся
- Управление данными и моделями: управление данными, используемыми для тренировки или тонкой настройки модели, отслеживание версий и изменений.
- Мониторинг модели: отслеживание производительности вашей модели во времени и выявление любых потенциальных проблем или снижения эффективности.
- Повторное обучение модели: обеспечение актуальности вашей модели в связи с изменениями в данных или эволюционирующими требованиями и ее повторное обучение или тонкая настройка по мере необходимости.
- Развертывание модели: автоматизация процесса развертывания вашей модели и связанных с ней артефактов в производство.
Продумывание этих аспектов вашего приложения поможет гарантировать, что ваша модель останется актуальной и будет хорошо работать со временем.
Когда вы переводите свой прототип в продакшн, вам потребуется оценить и решить любые требования к безопасности и соответствию нормам, которые могут применяться к вашему приложению. Это будет включать в себя анализ обрабатываемых вами данных, понимание того, как наш API обрабатывает данные, и определение тех регуляций, которым вы должны соответствовать.
Некоторые общие области, которые вам нужно будет рассмотреть, включают хранение данных, передачу данных и сохранение данных. Вам также может потребоваться внедрить защиту конфиденциальности данных, такую как шифрование или анонимизация, где это возможно. Кроме того, вы должны следовать лучшим практикам безопасного кодирования, таким как санитизация ввода и корректная обработка ошибок.
Создавая ваше приложение с нашим API, рассмотрите наши лучшие практики безопасности, чтобы обеспечить безопасность и успех вашего приложения. Эти рекомендации подчеркивают важность тщательного тестирования продукта, активного решения потенциальных проблем и ограничения возможностей для неправомерного использования.