Сборные масштабируемые приложения LLM с Kubernetes: пошаговое руководство

Андела спонсировала этот пост.

Большие языковые модели (LLMS), такие как GPT-4, преобразовали возможности ИИ, открыв новые достижения в области обработки естественного языка, разговорного ИИ и создания контента. Их воздействие простирается в разных отраслях, от питания чат -ботов и виртуальных помощников до автоматизации анализа документов и улучшения вовлечения клиентов.

Но в то время как LLM обещают огромный потенциал, развертывание их эффективно в реальных сценариях представляет уникальные проблемы. Эти модели требуют значительных вычислительных ресурсов, беспрепятственной масштабируемости и эффективного управления трафиком для удовлетворения требований производственных сред.

Вот где входит Kubernetes. Признанная в качестве ведущей платформы оркестровки контейнеров, Kubernetes может обеспечить динамическую и надежную структуру для управления и масштабирования приложений на основе LLM в облачной экосистеме. Способность Kubernetes обрабатывать контейнерные рабочие нагрузки делает его важным инструментом для организаций, стремящихся внедрить решения AI без ущерба для производительности или гибкости.

Это пошаговое руководство проведет вас через процесс развертывания и масштабирования приложения с LLM с использованием Kubernetes. Понимание того, как эффективно масштабировать приложения для искусственного интеллекта, является разница между моделью, застрявшей в исследовательских средах, и одним из действительных результатов в производстве. Мы рассмотрим, как контейнерные приложения LLM, развернуть их в Kubernetes, настроить AutoScaling для удовлетворения колеблющихся требований и управления пользовательским трафиком для оптимальной производительности.

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

Предварительные условия

Перед началом этого учебника убедитесь, что у вас есть следующее:

  • Основное знание Kubernetes: знакомство с Kubectl, развертывания, услуги и стручки являются обязательными.
  • Установите Docker и настройте его в вашей системе.
  • Установите и запустите кластер Kubernetes на вашей локальной машине (такой как Minikube) или в облаке (AWS Elastic Kubernetes Service, Google Kubernetes Engine или Microsoft Azure Kubernetes Service).
  • Установите Openai и Flask в среду Python, чтобы создать приложение LLM.
  • Установите необходимые зависимости от питона:

    PIP установить колбу Openai

    Шаг 1: Создание приложения LLM-мощного

    Мы начнем с создания простого API на основе Python для взаимодействия с LLM (например, GPT-4 OpenAI).

    Код для приложения

    Создайте файл с именем app.py:

    Из Flask Import Flask, запрос, jsonify import importai import os # initiaze app app app = flask (__ name__) # configure openai API key openai.api_key = os.getenv («openai_api_key») @app.route («/methods = methods =[«POST»]) def Generate (): try: data = request.get_json () reffice = data.get («recaff», «») # сгенерировать ответ с использованием gpt-4 response = openai.completion.create (model = «text-davinci-003», rescim[0].text.strip()}) except Exception as e: return jsonify({«error»: str(e)}), 500 if __name__ == «__main__»: app.run(host=»0.0.0.0″, port=5000) 12345678910111213141516171819202122232425262728 from Флэста импортная колба, запрос, jsonifyImport Openaiimport OS # # initialize flask appapp = flask (__ name__) # Настройка openai API keyopenai.api_key = os.getenv («openai_api_key») @app.route («/generate», methods =[«POST»]) def Generate (): try: data = request.get_json () reffice = data.get («recaff», «») # сгенерировать ответ с использованием gpt-4 response = openai.completion.create (model = «text-davinci-003», rescim[0].Text.strip ()}) За исключением исключения как e: return jsonify ({«error»: str (e)}), 500, если __name__ == «__main__»: app.run (host = «0.0.0.0», port = 5000)

    Шаг 2: Контейнерирование приложения

    Чтобы развернуть приложение в Kubernetes, нам нужно упаковать его в контейнере Docker.

    Dockerfile

    Создайте DockerFile в том же каталоге, что и app.py:

    # Используйте официальное время выполнения Python в качестве базового изображения с Python: 3.9-SLIM # Установите рабочую каталог WorkDir /App # Скопируйте файлы приложения Copy App.py /App # Требования к копированию и установить зависимости. Запустите PIP Flask Openai # Познаком [«python», «app.py»]

    1234567891011121314151617 # Используйте официальное время выполнения Python в качестве базового изображения от Python: 3.9-SLIM # Установите рабочую DirectoryWorkWorkDir /App # Copy Application App.py.py /App # Копировать требования и установить зависимости Pip Flask openai # Познайте порт. [«python», «app.py»]

    Шаг 3: Строительство и нажатие изображения Docker

    Создайте изображение Docker и подтолкните его в реестр контейнеров (например, Hub Docker).

    # Постройте изображение Docker Build -t Your-DockerHub-USERNAME/LLM-APP: V1. # Нажмите изображение Docker, нажмите ваш Dockerhub-Username/LLM-APP: V1 12345 # Стройте имагедокурскую сборку -t -t your-dockerhub-username/llm-app: v1. # Нажмите Imagedocker, толкуйте ваш Dockerhub-username/llm-app: v1

    Шаг 4: Развертывание приложения в Kubernetes

    Мы создадим развертывание и обслуживание Kubernetes для управления и разоблачения приложения LLM.

    Развертывание YAML

    Создайте файл с именем deployment.yaml:

    Apiversion: Apps/V1 вид: Метаданные развертывания: Имя: LLM-APP Спецификация: Репликас: 3 Селектор: MatchLabels: Приложение: LLM-APP Шаблон: метаданные: Метки: Приложение: LLM-APP Спецификация: контейнеры:-name:-ventopport: 5come-nemport: venport: 5000-5000-5come-nevortport: vesportpport: vesport: verport: verport: verport: verportpport: v1 Openai_api_key valuefrom: secretkeyref: имя: openai-secret Ключ: API-Key — Ativersion: V1 вид: метаданные услуги: Имя: LLM-APP-Service Spec: Selection: Приложение: LLM-APP. 1234567891011121314151617181920212223242526272829303132333435363738 APIVERSIO Метаданные: Метки: Приложение: LLM-APP Спецификация: контейнеры:-Имя: LLM-APP Изображение: your-dockerhub-username/llm-app: v1 порты:-Контейнерпорт: 5000 Env:-wome: openai_api_key valuefrom: secretkeyref: имя: openai-secret: API-apiversion: v1kindef: name: namet: namet: vamet: vamet: namet: vamet: vamet: vamet: vamet:. llm-app-servicespec: selector: app: llm-app ports:-Протокол: TCP-порт: 80 TargetPort: 5000 Тип: LoadBalancer

    Секрет для API -ключа

    Создайте секрет Kubernetes, чтобы надежно хранить ключ API OpenAI:

    kubectl Создать секретный общий openai-secret-from-literal = API-key = «your_openai_api_key» 1 kubectl Создать секретный общий openai-secret-for-literal = API-key = «your_openai_api_key»

    Шаг 5: Применение развертывания и обслуживания

    Развернуть приложение в кластер Kubernetes:

    Kubectl Apply -f Deployment.yaml Проверьте развертывание: kubectl Get Deployments Kubectl Get Pods Kubectl Get Services 123456 Kubectl применить -f развертывание. YAML подтвердите развертывание: kubectl Get DeploymentsKubectl Get Podskubect get Services

    Как только служба запускается, обратите внимание на внешний IP -адрес (при использовании облачного провайдера) или Nodeport (если использование Minikube).

    Шаг 6: Настройка автоматического мастерства

    Kubernetes Horizontal Pod Autoscaler (HPA) позволяет масштабировать стручки на основе использования ЦП или памяти.

    Применить HPA

    kubectl Autoscale развертывание LLM-APP-CPU-PERCENT = 50-Мина = 3-MAX = 10 1 Kubectl AutoScal

    Проверьте статус HPA:

    kubectl Получите HPA 1 kubectl Get HPA

    Autoscaler отрегулирует количество стручков в развертывании LLM-APP на основе нагрузки.

    Шаг 7: Мониторинг и регистрация

    Мониторинг и ведение журнала имеют решающее значение для поддержания и устранения неполадок приложений LLM.

    Включить мониторинг

    Используйте такие инструменты, как Prometheus и Grafana для мониторинга кластеров Kubernetes. Для базового мониторинга сервер метрик Kubernetes может предоставить данные об использовании ресурсов.

    Установить сервер метрик:

    kubectl Apply -f 1 kubectl Apply -f

    Просмотреть журналы

    Осмотрите журналы из работающих стручков:

    kubectl logs 1 kubectl logs

    Для агрегированных журналов рассмотрите такие инструменты, как Fluentd, Elasticsearch и Kibana.

    Шаг 8: Тестирование приложения

    Проверьте API LLM, используя такой инструмент, как Curl или Postman:

    curl -x post \ -h «content -type: application/json» \ -d ‘{«rample»: «Объясните Kubernetes в простых терминах.

    Ожидаемый выход:

    {«Ответ»: «Kubernetes-это платформа с открытым исходным кодом, которая управляет контейнерами …»} 123 {«Ответ»: «Kubernetes-это платформа с открытым исходным кодом, которая управляет контейнерами …»}

    Шаг 9: масштабирование за пределами Kubernetes

    Для обработки более продвинутых рабочих нагрузок или развертывания в нескольких регионах:

  • Используйте сервисную сетку: такие инструменты, как Istio, могут управлять трафиком между микросервисами.
  • Реализовать развертывания многоклеточных изделий: такие инструменты, как Cubefed или Cloud Provider Solutions (например, Google Anthos), позволяют управлять многоклеточным управлением.
  • Интегрируйте CI/CD: автоматизация развертывания с использованием трубопроводов с Jenkins, Github Deciates или Gitlab CI.
  • Заключение

    Создание и развертывание масштабируемого приложения LLM с использованием Kubernetes может показаться сложным, но, как мы видели, процесс является одновременно достижимым и полезным. Начиная с создания API с LLM, до развертывания и масштабирования его в кластере Kubernetes, у вас теперь есть план для обеспечения надежных, масштабируемых, масштабируемых и готовых к производственным средам.

    Благодаря функциям Kubernetes, включая автоматическое мастерство, мониторинг и обнаружение услуг, ваша установка создана для эффективного удовлетворения реальных требований. Отсюда вы можете еще больше раздвигать границы, изучив расширенные усовершенствования, такие как развертывание канарских исследований, A/B -тестирование или интеграция без серверов компонентов с использованием собственных инструментов Kubernetes, таких как Knatie. Возможности бесконечны, и этот фундамент — только начало.

    Хотите узнать больше о LLMS? Узнайте, как использовать Langchain и эффективно оптимизировать крупные языковые модели в руководстве Анделы, «Использование Langchain для сравнения производительности приложения LLM».

    Andela предоставляет крупнейший в мире частный рынок для глобального отдаленного технологического таланта, основанного на платформе с AI для управления полным жизненным циклом найма контракта. Andela помогает компаниям масштабировать команды и быстрее реализовать проекты через специализированные области: App Engineering, AI, облако, данные и аналитика. Узнайте больше последних из Andela Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Oladimeji Sowole является членом Andela Talent Network, частного рынка для глобальных технологических талантов. Ученый из данных и аналитик данных с более чем 6 -летним профессиональным опытом создания визуализаций данных с различными инструментами и прогнозирующими моделями … Подробнее от Oladimeji Sowole

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *