Как сообщает AWS Machine Learning, приложения, которые обрабатывают запросы, выбирают действия агентов или назначают результаты политик, часто требуют оценок по фиксированному набору вариантов, а не свободного текста. Разработка этих моделей принятия решений с помощью llama.cpp на Amazon SageMaker AI предоставляет управляемый путь для развертывания квантизированных моделей на инфраструктуре CPU или GPU. Этот пост продолжает серию о специализированных контейнерах глубокого обучения AWS для генеративного ИИ. В предыдущих постах рассматривались WhisperX, vLLM-Omni – Часть 1 и vLLM-Omni – Часть 2. В этом посте сначала используется DLC AWS для llama.cpp для предоставления совместимых с OpenAI завершений чата через InvokeEndpoint SageMaker AI. Затем тот же самый рабочий процесс расширяется с помощью SemIf, ранее известного как OpenJev, который возвращает вероятности по заданным вариантам без декодирования токена ответа. Приложенный образец кода включает в себя варианты развертывания на CPU и GPU. Обзор решения показывает два пути развертывания из одной упакованной модели. Путь генерации текста использует DLC AWS для llama.cpp и возвращает сгенерированные ответы через совместимый с OpenAI API. Путь структурированного принятия решений создает дочерний образ, который заменяет стандартный сервер на адаптер SemIf и возвращает вероятности для заданных вариантов. Для стандартного пути модель упаковывается как model.tar.gz в Amazon Simple Storage Service (Amazon S3) и ссылается на опубликованный образ DLC напрямую. Контейнер находит первый .gguf файл в /opt/ml/model, сопоставляет POST /invocations с llama-server на /v1/chat/completions и передает переменные окружения SM_LLAMA_CPP_* аргументам llama.cpp. HTTP API llama-server не раскрывает конечные логиты позиции и операции состояния, которые использует SemIf. Поэтому путь структурированного принятия решений использует AWS CodeBuild для создания дочернего образа и хранения его в Amazon Elastic Container Registry (Amazon ECR). Дочерний образ сохраняет скомпилированные библиотеки CPU или CUDA DLC, заменяя его точку входа на адаптер, совместимый с SageMaker. AWS DLC для llama.cpp принимает схему завершений чата OpenAI. Отправьте массив сообщений с ролью и содержанием, а также управляющие параметры генерации, такие как max_tokens и stream. Ответ использует массив вариантов, совместимый с OpenAI. SemIf использует ограниченную схему принятия решений вместо сообщений чата. Запрос содержит определенный пользователем идентификатор, неструктурированное состояние, вопрос и упорядоченный список разрешенных вариантов. Ответ возвращает option_ids, вероятности и сырые option_logits в том же порядке, а также метаданные о запросе, времени и модели. С стабильными идентификаторами вариантов ваше приложение может применять пороги, резервные варианты и проверки политик без парсинга сгенерированного текста. SemIf принадлежит к более широкому классу моделей принятия решений, которые оценивают результаты, определенные приложением, из неструктурированного состояния. Другие реализации включают Jev, модель принятия решений TypeSafe и API /v1/systemone; Kev, сервер моделей, разработанный для совместимости с API TypeSafe; и Strands Decider 2B, модель, специально созданная для рабочих процессов агентов с откалиброванными выходами. Используйте этот шаблон, когда ваше приложение определяет разрешенные варианты во время запроса и требует модель для интерпретации неструктурированного контекста. Примеры включают маршрутизацию дела в очередь, извлечение одного значения из известного набора, назначение приоритета инцидента, проверку результата политики или выбор действия агента. Держите авторизацию и детерминированные бизнес-правила вне модели и проверяйте вероятности модели перед тем, как рассматривать их как операционную уверенность. Используйте стандартный путь генерации текста SageMaker AI, когда вам нужны завершения чата, совместимые с OpenAI, через InvokeEndpoint. Образ SageMaker AI сопоставляет POST /invocations с конечной точкой /v1/chat/completions llama-server. Создавайте дочерний образ только тогда, когда вашему приложению нужно поведение, которое этот интерфейс не предоставляет, например, прямой доступ к логитам и состоянию SemIf. Настройте свои целевые показатели задержки и качества. Следующий бенчмарк применяется к расширению SemIf, а не к конечной точке генерации текста. Размер модели, квантизация, длина подсказки, время выполнения и количество потоков CPU влияют на каждое решение. Для количественной оценки этих компромиссов мы последовательно отправили те же 231 публичные задачи JevBench на одну конечную точку CPU и одну конечную точку GPU. Сравнение показывает, что конечная точка GPU была в 4.9 раз быстрее по p50 и в 32.2 раза быстрее по p95 по сравнению с конфигурацией CPU. Образец использует функцию пулов экземпляров SageMaker AI, чтобы перечислить совместимые типы экземпляров GPU в порядке приоритета, чтобы SageMaker мог выбрать альтернативу, когда первый выбор недоступен. Пул упорядочивает g6e, g6, g5 и затем g4dn. SageMaker выбрал ml.g6e.xlarge, и журналы запуска подтвердили, что llama.cpp выгрузил все 34 слоя модели на NVIDIA L40S. Изображения CPU и GPU использовали разные сборки llama.cpp и давали разные прогнозы по шести сложным задачам. Рассматривайте разницу в точности одного ответа как вариацию времени выполнения, а не как доказательство того, что выгрузка на GPU улучшает качество модели. Эти измерения включают сетевую задержку и не являются гарантиями сервиса. Оцените полную модель и конфигурацию инфраструктуры в соответствии с вашими собственными решениями. Используйте CPU для фоновых, оффлайн или низкоскоростных рабочих нагрузок, которые не чувствительны к задержке и могут терпеть несколько секунд времени ответа. Используйте GPU для интерактивных решений, длинных подсказок или рабочих нагрузок с жесткими целевыми показателями задержки. Перед развертыванием модели принятия решений и ее расширением с помощью SemIf убедитесь, что у вас есть учетная запись AWS и ведро S3 в вашем регионе развертывания, Python 3.10 или новее, Git и интерфейс командной строки AWS. Вам также понадобится специализированная роль службы CodeBuild для опционального расширения SemIf и роль управления идентификацией и доступом AWS, которую SageMaker AI может принять. Проверьте квоты для совместимого x86 CPU или NVIDIA GPU SageMaker в реальном времени. Заключение: DLC AWS для llama.cpp предоставляет вам управляемую основу для обслуживания моделей принятия решений на SageMaker AI на экземплярах CPU и GPU. Он может загружать GGUF модели из артефактов модели SageMaker AI или настроенного репозитория Hugging Face, а затем предоставлять завершения чата, совместимые с OpenAI, через InvokeEndpoint без необходимости в пользовательском контейнере. Когда вашему приложению нужны прямые логиты и операции состояния модели, вы можете расширить DLC с помощью адаптера SemIf. Выбирайте CPU для рабочих нагрузок, которые не чувствительны к задержке, и выбирайте GPU, когда предварительное заполнение подсказок и задержка на хвосте влияют на взаимодействие с приложением. Материал подготовлен нейросетью на основе оригинальной публикации. ИИ может ошибаться в деталях (цифры, имена, даты, цитаты) — для важной информации сверяйтесь с первоисточником.