Что нового! |
---|
Последний выпуск: 15 ноября 2024 г. kaito v0.3.2. |
Первый выпуск: 15 ноября 2023 г. kaito v0.1.0. |
kaito — это оператор, который автоматизирует вывод модели AI/ML или рабочую нагрузку по настройке в кластере Kubernetes. Целевыми моделями являются популярные большие модели с открытым исходным кодом, такие как falcon и phi-3. kaito имеет следующие ключевые отличия от большинства методологий развертывания основных моделей, построенных на основе инфраструктур виртуальных машин:
Используя kaito , рабочий процесс внедрения больших моделей вывода ИИ в Kubernetes значительно упрощается.
kaito следует классическому шаблону проектирования Kubernetes Custom Resource Definition (CRD)/контроллер. Пользователь управляет пользовательским ресурсом workspace
, который описывает требования к графическому процессору, а также спецификации вывода или настройки. Контроллеры kaito автоматизируют развертывание путем согласования настраиваемого ресурса workspace
.
На рисунке выше представлен обзор архитектуры kaito . Его основные компоненты состоят из:
workspace
, создает настраиваемые ресурсы machine
(описанные ниже) для запуска автоматической подготовки узла и создает рабочую нагрузку вывода или настройки ( deployment
, statefulset
или job
) на основе предустановленных конфигураций модели.machine
CRD, созданный Карпентером, для взаимодействия с контроллером рабочей области. Он интегрируется с API-интерфейсами REST Azure Resource Manager для добавления новых узлов графического процессора в кластер AKS или AKS Arc.Примечание. GPU-provisioner — это компонент с открытым исходным кодом. Его можно заменить другими контроллерами, если они поддерживают API ядра Karpenter.
Ознакомьтесь с руководством по установке здесь для развертывания с помощью Azure CLI и здесь для развертывания с использованием Terraform.
После установки kaito можно попробовать выполнить следующие команды, чтобы запустить службу вывода falcon-7b.
$ cat examples/inference/ kaito _workspace_falcon_7b.yaml
apiVersion: kaito .sh/v1alpha1
kind: Workspace
metadata:
name: workspace-falcon-7b
resource:
instanceType: " Standard_NC12s_v3 "
labelSelector:
matchLabels:
apps: falcon-7b
inference:
preset:
name: " falcon-7b "
$ kubectl apply -f examples/inference/ kaito _workspace_falcon_7b.yaml
Статус рабочей области можно отслеживать, выполнив следующую команду. Когда столбец WORKSPACEREADY принимает True
, модель развернута успешно.
$ kubectl get workspace workspace-falcon-7b
NAME INSTANCE RESOURCEREADY INFERENCEREADY JOBSTARTED WORKSPACESUCCEEDED AGE
workspace-falcon-7b Standard_NC12s_v3 True True True True 10m
Затем можно найти IP-адрес кластера службы вывода и использовать модуль временного curl
для проверки конечной точки службы в кластере.
$ kubectl get svc workspace-falcon-7b
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
workspace-falcon-7b ClusterIP < CLUSTERIP > < none > 80/TCP,29500/TCP 10m
export CLUSTERIP= $( kubectl get svc workspace-falcon-7b -o jsonpath= " {.spec.clusterIPs[0]} " )
$ kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http:// $CLUSTERIP /chat -H " accept: application/json " -H " Content-Type: application/json " -d " { " prompt " : " YOUR QUESTION HERE " } "
Подробное использование моделей с поддержкой kaito можно найти ЗДЕСЬ . Если пользователи хотят развернуть свои собственные контейнерные модели, они могут предоставить шаблон модуля в поле inference
пользовательского ресурса рабочей области (подробнее см. в определениях API). Контроллер создаст рабочую нагрузку развертывания, используя все подготовленные узлы графического процессора. Обратите внимание, что в настоящее время контроллер НЕ поддерживает автоматическое обновление модели. Он создает рабочие нагрузки вывода на основе предустановленных конфигураций только в том случае, если рабочие нагрузки не существуют.
Количество поддерживаемых моделей в kaito растёт! Пожалуйста, проверьте этот документ, чтобы узнать, как добавить новую поддерживаемую модель.
Начиная с версии v0.3.0, kaito поддерживает тонкую настройку модели и использование точно настроенных адаптеров в службе вывода. Дополнительную информацию см. в документе настройки и документе вывода.
Чтобы использовать предпочтительные узлы, убедитесь, что узел имеет метку, указанную в labelSelector в разделе matchLabels. Например, если ваш labelSelector:
labelSelector:
matchLabels:
apps: falcon-7b
Тогда узел должен иметь метку: apps=falcon-7b
.
При использовании размещенных общедоступных моделей пользователь может вручную удалить существующую рабочую нагрузку вывода ( Deployment
of StatefulSet
), а контроллер рабочей области создаст новую с последней предустановленной конфигурацией (например, версией образа), определенной в текущем выпуске. Для частных моделей рекомендуется создать новое рабочее пространство с новой версией образа в Спец.
kaito предоставляет ограниченную возможность переопределить предустановленные конфигурации для моделей, которые используют время работы transformer
вручную. Чтобы обновить параметры развернутой модели, выполните kubectl edit
для рабочей нагрузки, которая может быть либо StatefulSet
, либо Deployment
. Например, чтобы включить 4-битное квантование при развертывании falcon-7b-instruct
, вы должны выполнить:
kubectl edit deployment workspace-falcon-7b-instruct
В спецификации развертывания найдите и измените поле команды.
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16 --load_in_4bit
В настоящее время мы разрешаем пользователям изменять следующие параметры вручную:
pipeline
: для моделей генерации текста это может быть либо text-generation
, либо conversational
.load_in_4bit
или load_in_8bit
: разрешение квантования модели.Если вам нужно настроить другие параметры, пожалуйста, сообщите о проблеме для возможного включения в будущем.
Основное различие заключается в предполагаемых вариантах использования. Модели инструкций — это доработанные версии, оптимизированные для приложений интерактивного чата. Обычно они являются предпочтительным выбором для большинства реализаций из-за их повышенной производительности в диалоговом контексте. С другой стороны, модели без инструкций или необработанные модели предназначены для дальнейшей тонкой настройки.
Читать далее
Этот проект приветствует вклад и предложения. Для внесения вклада вы должны согласиться с Лицензионным соглашением для авторов (CLA), в котором указано, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Для получения более подробной информации посетите CLA для CNCF.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
В этом проекте приняты CLA для CNCF. Подпишите CLA в электронной форме через https://easycla.lfx.linuxfoundation.org. Если у вас возникнут проблемы, вы можете отправить заявку с помощью группы Linux Foundation ID через веб-сайт поддержки Linux Foundation.
См. лицензию MIT.
kaito принял Кодекс поведения Cloud Native Compute Foundation. Для получения дополнительной информации см. Кодекс поведения kaito .
« kaito devs» kaito [email protected]