Тонкая настройка с Kubeflow Trainer v2
В этом руководстве показано, как использовать Kubeflow Trainer v2 для запуска задач контролируемой тонкой настройки (SFT) с помощью LlamaFactory на Kubernetes.
Содержание
ОбзорТребованияПрава RBACСборка образа Trainer или использование предсобранного образаСкачайте ноутбук и запустите примерПланирование с KueueКак это работаетСоздание LocalQueue (необязательно)Отправка TrainJob с Kueue (необязательно)Обзор
Kubeflow Trainer v2 разделяет шаблоны заданий (TrainingRuntime) и запуски заданий (TrainJob), что позволяет:
- Определять переиспользуемый
TrainingRuntime, который содержит образ контейнера, шаги тренировочного пайплайна (инициализация датасета → инициализация модели → тренер) и конфигурацию LlamaFactory. - Отправлять множество запусков
TrainJob, ссылающихся на один и тот же runtime, переопределяя только изменяющиеся параметры для каждого эксперимента — базовую модель, URL датасета, гиперпараметры или ресурсы GPU.
Требования
Перед началом убедитесь, что выполнены следующие условия:
Права RBAC
Если при создании или управлении ресурсами Kubeflow Trainer v2 возникают ошибки прав RBAC, остановитесь и обратитесь к администратору кластера. Попросите администратора создать временную роль и привязать её к вашей учётной записи или namespace, чтобы у вас были права чтения и записи для кастомных ресурсов trainjobs и trainingruntimes.
Пример, как администратор кластера может предоставить такие права ServiceAccount, используемому рабочей средой с именем aml-editor:
Замените mlops-demo-ai-test на namespace, в котором работают рабочая среда и ресурсы Trainer v2.
Сборка образа Trainer или использование предсобранного образа
Используйте наш предсобранный образ alaudadockerhub/fine_tune_with_llamafactory:v0.1.11 или соберите собственный образ с помощью предоставленного Containerfile в aml-docs.
Скачайте ноутбук и запустите пример
- Скачайте ноутбук в текущую рабочую среду в Alauda AI, создайте новую рабочую среду, если у вас её нет, и откройте ноутбук.
- Следуйте инструкциям в ноутбуке для создания
TrainingRuntimeи отправкиTrainJobдля тонкой настройки модели LLaMA-Factory. В ноутбуке приведены примеры конфигураций с использованием общего PVCteam-model-cache-pvcи Git-учётных данных.
Планирование с Kueue
Kueue обеспечивает очередь заданий, управление квотами и справедливое планирование для рабочих нагрузок Kubernetes. При установке Kueue в вашем кластере TrainJobs удерживаются в состоянии suspended до тех пор, пока Kueue не допустит их на основе доступных квот.
Как это работает
- Администратор кластера создаёт
ClusterQueueс квотами ресурсов (CPU, память, GPU). - Администратор namespace создаёт
LocalQueue, ссылающийся наClusterQueue. - Пользователи маркируют свои
TrainJobметкойkueue.x-k8s.io/queue-name, чтобы отправить их вLocalQueue. - Kueue оценивает запрос ресурсов, допускает нагрузку при наличии квоты и снимает приостановку с задания.
Подробности по настройке ClusterQueue и LocalQueue смотрите в документации Kueue.
Создание LocalQueue (необязательно)
Перед отправкой TrainJobs с Kueue создайте LocalQueue в вашем namespace, ссылающийся на существующий ClusterQueue:
Отправка TrainJob с Kueue (необязательно)
Для интеграции с Kueue добавьте метку kueue.x-k8s.io/queue-name в metadata.labels вашего TrainJob. Это укажет Kueue, к какому LocalQueue относится задание:
Остальная часть спецификации TrainJob остаётся без изменений. Полный пример смотрите в ноутбуке.
При включённом Kueue в кластере может быть настроено ограничение по времени ожидания PodsReady (например, 5 минут). Если ваш тренировочный образ большой и ещё не закеширован на узле, первая попытка может быть отменена из-за таймаута загрузки образа. Повторная отправка задания обычно успешна, так как образ уже будет закеширован локально.