В Jina AI наша миссия — предоставлять корпоративным пользователям высококачественные поисковые решения. Для достижения этой цели мы делаем наши модели доступными через различные каналы. Однако выбор правильного канала для вашего конкретного случая может быть непростым. В этой статье мы проведем вас через процесс принятия решений и разберем все компромиссы, предоставив практическое руководство по выбору наилучшего способа доступа к нашим базовым поисковым моделям в зависимости от вашего профиля пользователя и потребностей.
tagБазовые поисковые модели Jina
Наши базовые поисковые модели включают:
- Embeddings: Они преобразуют информацию о цифровых объектах в векторы вложений, захватывая их основные характеристики.
- Rerankers: Они выполняют глубокий семантический анализ наборов запрос-документ для улучшения релевантности поиска.
- Small language models: К ним относятся специализированные SLM, такие как ReaderLM-v2 для узкоспециализированных задач, например HTML2Markdown или извлечения информации.
В этой статье мы рассмотрим различные варианты развертывания jina-embeddings-v3, сравнивая три ключевых подхода:
- Использование Jina API
- Развертывание через CSP, например AWS SageMaker
- Самостоятельное размещение в кластере Kubernetes по коммерческой лицензии
В сравнении будут оцениваться стоимостные последствия и преимущества каждого подхода, чтобы помочь вам определить наиболее подходящий вариант для ваших потребностей.
tagКлючевые показатели производительности
Мы оценили пять ключевых показателей производительности в различных сценариях использования:
- Коэффициент успешных запросов: Процент успешных запросов к серверу embeddings
- Задержка запросов: Время, необходимое серверу embeddings для обработки и возврата запроса
- Пропускная способность токенов: Количество токенов, которые сервер embeddings может обработать в секунду
- Стоимость за токен: Общая стоимость обработки на единицу текста
Для самостоятельно размещенных embeddings Jina в кластерах Kubernetes мы также изучили влияние динамической пакетной обработки. Эта функция ставит запросы в очередь до достижения максимального размера пакета (8192 для jina-embeddings-v3) перед генерацией embeddings.
Мы намеренно исключили из анализа два важных фактора производительности:
- Автоматическое масштабирование: Хотя это crucial для облачных развертываний с переменными нагрузками, его эффективность зависит от множества переменных — эффективности оборудования, сетевой архитектуры, задержек и выбора реализации. Эти сложности выходят за рамки нашего текущего анализа. Отметим, что Jina API включает автоматическое масштабирование, и наши результаты отражают это.
- Квантизация: Хотя эта техника создает меньшие векторы embeddings и уменьшает передачу данных, основные преимущества исходят от других компонентов системы (хранение данных и вычисления векторных расстояний), а не от уменьшенной передачи данных. Поскольку мы фокусируемся на прямых затратах на использование модели, мы оставили квантизацию за рамками этого анализа.
Наконец, мы рассмотрим финансовые последствия каждого подхода, учитывая как общую стоимость владения, так и расходы на токен/запрос.
tagНастройка развертывания
Мы оценили три сценария развертывания и использования jina-embeddings-v3:
tagИспользование Jina API
Все модели embeddings Jina AI доступны через Jina API. Доступ работает по системе предоплаченных токенов, с миллионом бесплатных токенов для тестирования. Мы оценивали производительность, делая API-вызовы через интернет из наших офисов в Германии.
tagИспользование AWS SageMaker
Jina Embeddings v3 доступна пользователям AWS через SageMaker. Использование требует подписки AWS на эту модель. Для примера кода у нас есть подготовленный блокнот, который показывает, как подписаться на модели Jina AI и использовать их с учетной записью AWS.
Хотя модели также доступны на Microsoft Azure и Google Cloud Platform, мы сосредоточили наше тестирование на AWS. Мы ожидаем аналогичную производительность на других платформах. Все тесты выполнялись на экземпляре ml.g5.xlarge в регионе us-east-1.
tagСамостоятельное размещение на Kubernetes
Мы создали приложение FastAPI на Python, которое загружает jina-embeddings-v3 из HuggingFace используя библиотеку SentenceTransformer. Приложение включает две конечные точки:
/embed: Принимает текстовые фрагменты в качестве входных данных и возвращает их embeddings/health: Обеспечивает базовый мониторинг состояния
Мы развернули это как сервис Kubernetes в Amazon Elastic Kubernetes Service, используя экземпляр g5.xlarge в регионе us-east-1.
С динамической пакетной обработкой и без нее
Мы тестировали производительность в кластере Kubernetes в двух конфигурациях: Одна, где он немедленно обрабатывал каждый запрос при его получении, и другая, где использовалась динамическая пакетная обработка. В случае динамической пакетной обработки сервис ждет, пока не будет собрано MAX_TOKENS (8192) в очереди, или не будет достигнут предопределенный тайм-аут в 2 секунды, прежде чем вызывать модель и вычислять embeddings. Этот подход увеличивает использование GPU и уменьшает фрагментацию памяти GPU.
Для каждого сценария развертывания мы провели тесты, варьируя три ключевых параметра:
- Размер пакета: Каждый запрос содержал либо 1, 32, или 128 текстовых фрагментов для embeddings
- Длина фрагмента: Мы использовали текстовые фрагменты, содержащие 128, 512, или 1024 токена
- Одновременные запросы: Мы отправляли 1, 5, или 10 запросов одновременно
tagРезультаты тестирования
Таблица ниже представляет собой сводку результатов для каждого сценария использования, усредненную по всем настройкам трех переменных выше.
| Метрика | Jina API | SageMaker | Самостоятельное размещение с пакетной обработкой |
Самостоятельное размещение стандартное |
|---|---|---|---|---|
| Коэффициент успешных запросов | 87.6% | 99.9% | 55.7% | 58.3% |
| Задержка (секунды) |
11.4 | 3.9 | 2.7 | 2.6 |
| Нормализованная задержка по коэффициенту успеха (секунды) |
13.0 | 3.9 | 4.9 | 4.4 |
| Пропускная способность токенов (токенов/секунду) |
13.8K | 15.0K | 2.2K | 2.6K |
| Пиковая пропускная способность токенов (токенов/секунду) |
63.0K | 32.2K | 10.9K | 10.5K |
| Цена (USD за 1M токенов) |
$0.02 | $0.07 | $0.32 | $0.32 |
tagКоэффициент успешных запросов
Коэффициенты успеха в нашем тестировании варьируются от почти идеальных 99.9% у SageMaker до скромных 56-58% у самостоятельно размещенных решений, что подчеркивает, почему 100% надежность остается недостижимой в производственных системах. Три ключевых фактора способствуют этому:
- Нестабильность сети вызывает неизбежные сбои даже в облачных средах
- Конкуренция за ресурсы, особенно память GPU, приводит к отказам запросов под нагрузкой
- Необходимые ограничения по времени означают, что некоторые запросы должны завершаться неудачно для поддержания здоровья системы
tagКоэффициент успеха по размеру пакета
Большие размеры пакетов часто вызывают ошибки нехватки памяти в конфигурации самостоятельно размещенного Kubernetes. Без динамической пакетной обработки все запросы, содержащие 32 или 128 элементов в пакете, завершались неудачно по этой причине. Даже с реализованной динамической пакетной обработкой частота отказов для больших пакетов оставалась значительно высокой.
| Размер пакета | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Размер пакета | Процент успешных запросов по уровню параллелизма
Параллелизм — способность обрабатывать несколько запросов одновременно — не оказал ни сильного, ни последовательного влияния на процент успешных запросов в конфигурациях самостоятельно развернутого Kubernetes, и лишь минимальное влияние на AWS SageMaker, по крайней мере до уровня параллелизма 10.
tagПроцент успешных запросов по длине токеновДлинные отрывки с большим количеством токенов влияют как на Jina Embedding API, так и на Kubernetes с динамической пакетной обработкой аналогично большим пакетам: с увеличением размера значительно возрастает частота сбоев. Однако, в то время как самостоятельно развернутые решения без динамической пакетной обработки почти всегда терпят неудачу с большими пакетами, они лучше справляются с отдельными длинными отрывками. Что касается SageMaker, длина отрывков — как и параллелизм, и размер пакета — не оказала заметного влияния на процент успешных запросов.
tagЗадержка запросовВсе тесты задержки были повторены пять раз при уровнях параллелизма 1, 5 и 10. Время отклика — это среднее значение по пяти попыткам. Пропускная способность запросов — это величина, обратная времени отклика в секундах, умноженная на параллелизм. tagJina APIВремя отклика в Jina API в первую очередь зависит от размера пакета, независимо от уровня параллелизма. Хотя длина отрывка также влияет на производительность, ее влияние не столь однозначно. В качестве общего принципа можно сказать, что запросы, содержащие больше данных — будь то через большие размеры пакетов или длинные отрывки — обрабатываются дольше. Параллелизм 1:
Параллелизм 5:
Параллелизм 10:
Для одиночных запросов (размер пакета 1):
Для больших пакетов (32 и 128 элементов):
Для пропускной способности:
tagAWS SageMakerТесты AWS SageMaker проводились на экземпляре Параллелизм 1:
Параллелизм 5:
Параллелизм 10:
Ключевые отличия от Jina API:
tagСамостоятельно размещенный кластер KubernetesТесты самостоятельного размещения проводились в Amazon's Elastic Kubernetes Service с использованием экземпляра Параллельность 1:
Параллельность 5:
Параллельность 10:
† Этот аномальный результат является побочным продуктом тайм-аута динамической пакетной обработки в 2 секунды. При параллельности 10, когда каждый запрос отправляет 1024 токена данных, очередь заполняется почти мгновенно, и системе пакетной обработки никогда не приходится ждать тайм-аута. При меньших размерах и параллельности это происходит, автоматически добавляя две потерянные секунды к каждому запросу. Такая нелинейность типична для неоптимизированных пакетных процессов. При получении запросов с более чем 16 384 токенами наша конфигурация самостоятельного размещения завершалась ошибками сервера, обычно из-за нехватки памяти. Это было верно независимо от уровней параллельности. Поэтому тесты с большим количеством данных не отображаются. Высокая параллельность увеличивала время отклика практически линейно: уровни параллельности 5 требовали примерно в пять раз больше времени для ответа, чем 1. Уровни 10 - в десять раз больше. Динамическая пакетная обработка замедляет время отклика примерно на две секунды для небольших пакетов. Это ожидаемо, поскольку очередь пакетной обработки ждет 2 секунды перед обработкой неполного пакета. Однако для больших размеров пакетов она приносит умеренные улучшения во времени отклика. tagПропускная способность токеновПропускная способность токенов увеличивается с большими размерами пакетов, большей длиной отрывков и более высокими уровнями параллельности на всех платформах. Поэтому мы представим только результаты при высокой нагрузке, так как более низкие уровни не дали бы значимого показателя производительности в реальных условиях. Все тесты проводились при уровне параллельности 10, с 16 384 токенами на запрос, усредненными по пяти запросам. Мы тестировали две конфигурации: размер пакета 32 с отрывками по 512 токенов и размер пакета 128 с отрывками по 128 токенов. Общее количество токенов остается постоянным в обеих конфигурациях. Пропускная способность токенов (токенов в секунду):
При высокой нагрузке Jina API значительно превосходит альтернативы, в то время как протестированные решения для самостоятельного размещения показывают существенно более низкую производительность. tagСтоимость за миллион токеновСтоимость, пожалуй, является наиболее критическим фактором при выборе решения для эмбеддингов. Хотя расчет стоимости AI-моделей может быть сложным, вот сравнительный анализ различных вариантов:
tagJina APIСервис следует модели ценообразования на основе токенов с двумя предоплаченными уровнями:
Стоит отметить, что эти токены работают во всем наборе продуктов Jina, включая ридеры, ранжировщики и классификаторы zero-shot. tagAWS SageMakerЦенообразование SageMaker сочетает почасовую стоимость инстанса с лицензионными сборами за модель. При использовании инстанса
При средней пропускной способности 15 044 токенов/секунду (54.16M токенов/час), стоимость за миллион токенов составляет от 0.0788. tagСамостоятельный хостинг с KubernetesЗатраты на самостоятельный хостинг значительно варьируются в зависимости от выбора инфраструктуры. Используя инстанс AWS EC2
При 2 588 токенах/секунду (9.32M токенов/час), стоимость за миллион токенов составляет 0.379. Хотя почасовая ставка ниже, чем у SageMaker, сниженная пропускная способность приводит к более высокой стоимости за токен. Важные аспекты самостоятельного хостинга:
tagКлючевые выводыAPI Jina оказывается наиболее экономически эффективным решением, даже без учета времени холодного старта и при оптимальной пропускной способности альтернатив. Самостоятельный хостинг может иметь смысл для организаций с существующей надежной инфраструктурой, где дополнительные затраты на сервер минимальны. Кроме того, изучение облачных провайдеров помимо AWS может дать лучшие цены. Однако для большинства компаний, особенно малого и среднего бизнеса, ищущих готовые решения, API Jina предлагает непревзойденную экономическую эффективность. tagАспекты безопасности и конфиденциальности данныхПри выборе стратегии развертывания моделей встраивания требования к безопасности и конфиденциальности данных могут играть решающую роль наряду с производительностью и стоимостью. Мы предоставляем гибкие варианты развертывания для соответствия различным требованиям безопасности: tagОблачные провайдерыДля предприятий, уже работающих с крупными облачными провайдерами, наши предложения на облачных маркетплейсах (такие как AWS Marketplace, Azure и GCP) предоставляют естественное решение для развертывания в рамках существующих систем безопасности. Эти развертывания обеспечивают:
tagСамостоятельный хостинг и локальное развертываниеОрганизации со строгими требованиями безопасности или специфическими нормативными обязательствами часто предпочитают полный физический контроль над своей инфраструктурой. Наш вариант самостоятельного хостинга обеспечивает:
Для получения коммерческой лицензии на наши модели CC-BY-NC сначала необходимо получить лицензию у нас. Пожалуйста, свяжитесь с нашей командой продаж. tagСервис Jina APIДля стартапов и малого/среднего бизнеса, пытающихся сбалансировать безопасность и удобство с затратами, наш API-сервис обеспечивает корпоративный уровень безопасности без дополнительных операционных затрат:
Предложения моделей Jina AI позволяют организациям выбрать стратегию развертывания, которая наилучшим образом соответствует их требованиям безопасности при сохранении операционной эффективности. tagВыбор решенияБлок-схема ниже обобщает результаты всех эмпирических тестов и таблиц, которые вы видели: ![]() Сначала рассмотрите ваши потребности в безопасности и насколько вы готовы пожертвовать гибкостью для их удовлетворения. Затем подумайте о том, как вы планируете использовать ИИ в вашем предприятии:
Также учтите ваши внутренние экспертные знания и существующую инфраструктуру:
Наконец, рассмотрите ожидаемые объемы данных. Являетесь ли вы крупным пользователем, ожидающим выполнять миллионы операций с использованием моделей ИИ каждый день? tagЗаключениеИнтеграция ИИ в операционные решения остается неизведанной территорией для многих ИТ-отделов, поскольку на рынке не хватает установившихся готовых решений. Эта неопределенность может затруднять стратегическое планирование. Наш количественный анализ призван предоставить конкретные рекомендации по включению наших поисковых базовых моделей в ваши конкретные рабочие процессы и приложения. Что касается стоимости за единицу, API Jina выделяется как одна из наиболее экономичных опций, доступных предприятиям. Мало какие альтернативы могут сравниться с нашей ценовой политикой при обеспечении сопоставимой функциональности. Мы стремимся предоставлять поисковые возможности, которые не только мощные и удобные в использовании, но и экономически эффективные для организаций любого размера. Будь то через основных облачных провайдеров или самостоятельный хостинг, наши решения учитывают даже самые сложные корпоративные требования, выходящие за рамки чисто стоимостных соображений. Этот анализ разбирает различные факторы стоимости, чтобы помочь в принятии решений. Учитывая, что каждая организация имеет свои уникальные требования, мы понимаем, что одна статья не может охватить все сценарии. Если у вас есть особые потребности, не освещенные здесь, пожалуйста, свяжитесь с нами, чтобы обсудить, как мы можем наилучшим образом поддержать вашу реализацию. |









