Мащабиране на LLM за продукция: Практически наръчник

Използване на API за LLM интеграция

Интегрирането на LLM в кодова база може да бъде постигнато чрез различни методи, но използването на OpenAI-съвместим API е силно препоръчително за внедрявания в производствена среда. Този подход осигурява гъвкавостта да се адаптира към бързо развиващия се пейзаж на моделите. Моделите, считани за авангардни само преди месеци, бързо могат да остареят.

След AI бума, който започна с ChatGPT през 2022 г., API интерфейсът на OpenAI се очерта като де факто стандарт за свързване на приложения към LLM. Този стандарт позволява на разработчиците да изграждат приложения, използвайки наличните ресурси, като например да започнат с Mistral 7B в Llama.cpp на преносим компютър и безпроблемно да преминат към API сървърите на Mistral AI за внедряване в производствена среда. Това елиминира заключването към един модел, машина за извод или API доставчик.

Базираните в облака услуги за извод предоставят капиталово ефективен (capex) начин за мащабиране на AI внедрявания. Тези услуги елиминират необходимостта от управление на хардуер и конфигурация на модели, вместо това предоставят API за интеграция на приложения.

В допълнение към API предложенията от големите производители на модели, нарастващ брой AI инфраструктурни стартъпи предлагат извод като услуга за модели с отворени тегла. Тези доставчици се различават по своите подходи. Някои, като SambaNova, Cerebras и Groq, използват специализиран хардуер или техники като спекулативно декодиране за ускоряване на извода, но предлагат по-малък избор на модели. Други, като Fireworks AI, поддържат внедряването на персонализирани фино настроени модели, използвайки Low Rank Adaptation (LoRA) адаптери. Разнообразието на AI екосистемата налага задълбочено проучване, преди да се ангажирате с конкретен доставчик.

Съображения за локално LLM внедряване

В ситуации, в които облачните подходи не са осъществими поради ограничения, свързани с поверителността, регулаторни изисквания или съществуваща инфраструктура (напр. компанията вече е инвестирала в GPU сървъри), става необходимо локално внедряване. Това може да представи няколко предизвикателства. Някои често срещани въпроси, които възникват, включват:

  • Избор на модел: Подходящият модел зависи от конкретния случай на употреба. Модел, предназначен за чатбот за обслужване на клиенти, ще има различни изисквания от този, използван за генериране с разширена информация или като кодов асистент. Препоръчително е да прекарате време с API доставчиците, за да идентифицирате модел, който отговаря на нуждите.
  • Изисквания към хардуера: Определянето на необходимия хардуер е от решаващо значение, тъй като GPU са скъпи и могат да бъдат трудни за придобиване. Самият модел може да предостави информация за хардуера, необходим за неговото изпълнение. По-големите модели изискват повече хардуер. Груба оценка на минималната GPU памет може да се изчисли, като броят на параметрите (в милиарди) се умножи по 2 GB за модели, обучени при 16-битова прецизност. За 8-битови модели са необходими 1 GB на милиард параметри. Техники за компресиране на модели като квантуване могат да намалят това до 512 MB на милиард параметри. Това е долна граница. Необходима е допълнителна памет, за да се обслужва моделът на няколко потребители едновременно поради кеша за ключове-стойности, който действа като краткосрочна памет на модела. Матрицата за поддръжка на Nvidia предлага насоки за GPU, необходими за изпълнение на различни модели.
  • Резервираност: В допълнение към оразмеряването на хардуера към модела, трябва да се обмисли и резервираността. Единичният GPU възел е уязвим на повреда, така че е важно да се разгърнат две или повече системи за резервиране и балансиране на натоварването.
  • Методи за внедряване: LLM могат да бъдат внедрени и обслужвани в производствена среда, използвайки различни методи: bare metal с балансиране на натоварването, виртуални машини или контейнери в Docker или Kubernetes. Kubernetes опростява широкомащабните внедрявания, като автоматизира създаването на контейнери, работата в мрежа и балансирането на натоварването.

Kubernetes за LLM внедряване

Kubernetes абстрахира голяма част от сложността, свързана с широкомащабните внедрявания, като автоматизира създаването на контейнери, работата в мрежа и балансирането на натоварването. Много предприятия вече са внедрили и разбират Kubernetes. Nvidia, Hugging Face и други предпочитат контейнеризирани среди с Nvidia Inference Microservices (NIMs) и Hugging Face Generative AI Services (HUGS), предварително конфигурирани за често срещани работни натоварвания и внедрявания.

Машини за извод

Налични са различни машини за извод за изпълнение на модели, включително Ollama и Llama.cpp, които са съвместими с широк спектър от хардуер. За мащабиране на модели често се използват библиотеки като vLLM, TensorRT LLM, SGLang и PyTorch. Това ръководство се фокусира върху внедряването на модели с помощта на vLLM, защото поддържа широк избор от популярни модели и предлага широка поддръжка и съвместимост в Nvidia, AMD и друг хардуер.

Подготовка на Kubernetes средата

Настройването на Kubernetes среда за работа с GPU изисква допълнителни драйвери и зависимости в сравнение с типичната Kubernetes настройка. Процесът на настройка ще се различава за AMD и Nvidia хардуер.

Това ръководство използва K3S в конфигурация с един възел. Основните стъпки са подобни на многовъзлови среди, но зависимостите трябва да бъдат удовлетворени на всеки GPU работен възел и конфигурацията на хранилището може да изисква корекции.

Целта е да се осигури солидна основа за внедряване на работни натоварвания заизвод по начин, който е подходящ за производствена среда. Необходими са следните предпоставки:

  • Сървър или работна станция с поне една поддържана AMD или Nvidia GPU карта
  • Нова инсталация на Ubuntu 24.04 LTS

Nvidia зависимости

Настройването на Nvidia-ускорена K3S среда изисква инсталиране на CUDA Drivers Fabric Manager и Headless server drivers. Инсталирайте Nvidia server utilities за отстраняване на проблеми с драйверите.