Использование Kubeflow Notebooks
Kubeflow Notebooks предоставляют Kubernetes-нативную среду Jupyter для дата-сайентистов, позволяя разрабатывать, обучать и развёртывать модели машинного обучения. Каждый сервер блокнотов запускается как отдельный Pod в вашем namespace, обеспечивая изоляцию и выделенные ресурсы.
ПРИМЕЧАНИЕ: Рекомендуется использовать Alauda AI Workbench для более интегрированного опыта с дополнительными возможностями, такими как типы ресурсов, конфигурации и лучшая интеграция с другими компонентами. Тем не менее, вы также можете использовать нативные Kubeflow Notebooks, если предпочитаете более лёгкую настройку или нуждаетесь в специфичных функциях исходного проекта.
Содержание
КонцепцииСоздание Notebook ServerПодключение к блокнотуУправление окружениемУстановка Python-пакетовИспользование кастомных образовУправление конфигурациями (PodDefaults)Создание PodDefaultПрименение конфигурацииДоступ к даннымИспользование смонтированных томовИспользование Object Storage (S3 / MinIO)Лучшие практикиКонцепции
- Notebook Server: экземпляр JupyterLab, работающий в контейнере.
- Custom Image: можно использовать стандартные предустановленные образы (например, с TensorFlow, PyTorch) или предоставить собственный Docker-образ с нужными библиотеками.
- Persistent Storage: по умолчанию серверы блокнотов подключаются к Persistent Volume Claims (PVC) для хранения рабочего каталога (обычно
/home/jovyan). Это гарантирует сохранность ваших блокнотов и данных даже при перезапуске или обновлении сервера.
Создание Notebook Server
-
Доступ к панели управления:
Перейдите в раздел Notebooks на панели управления Kubeflow. -
Новый блокнот:
Нажмите New Notebook. Убедитесь, что выбран правильный namespace в верхней части панели, где вы хотите создать сервер блокнотов. -
Настройка сервера:
- Name: Введите уникальное имя для сервера блокнотов.
- Image:
- Select Type: Выберите тип образа, включая JupyterLab, Visual Studio Code или RStudio.
- Select Image: Выберите из списка предустановленных образов или укажите собственный, предоставив URL Docker-образа.
- CPU / RAM: Выделите ресурсы CPU и памяти в соответствии с нагрузкой. Начинайте с малого (например, 1 CPU, 2 ГБ RAM) и увеличивайте при необходимости.
- GPUs: Запросите GPU (например, NVIDIA), если планируете запускать задачи глубокого обучения или инференса, требующие ускорения.
- Workspace Volume: Этот том монтируется в ваш домашний каталог (
/home/jovyan). Создайте новый том (по умолчанию) или подключите существующий для доступа к предыдущей работе. - Data Volumes: (Опционально) Подключите дополнительные существующие PVC для доступа к большим наборам данных без копирования в рабочее пространство.
- Configurations: (Опционально) Выберите PodDefaults (если доступны) для внедрения общих конфигураций, таких как учётные данные S3, настройки Git или переменные окружения.
-
Запуск:
Нажмите Launch. Сервер будет создан. Дождитесь, пока статус не станет Running (зелёный).
Подключение к блокноту
Когда статус сервера станет Running:
- Нажмите Connect.
- Откроется интерфейс JupyterLab/VS Code/RStudio в новой вкладке браузера.
- Теперь вы можете создавать блокноты Python 3, открывать терминал или управлять файлами.
Управление окружением
Установка Python-пакетов
Хотя вы можете устанавливать пакеты в домашний каталог для сохранения, лучшей практикой является использование кастомного образа для воспроизводимости.
Создайте каталог "venv" в домашнем каталоге и установите пакеты туда:
При запуске новой сессии терминала не забудьте активировать виртуальное окружение для доступа к установленным пакетам.
Чтобы использовать виртуальное окружение в Jupyter-блокнотах, установите ipykernel и создайте новый kernel:
Затем в вашем Jupyter-блокноте можно выбрать kernel "Python (venv)" для использования пакетов из виртуального окружения.
Виртуальные окружения сохраняются в домашнем каталоге, поэтому будут доступны даже после остановки и перезапуска сервера блокнотов. Однако, если нужно делиться окружением между несколькими серверами или обеспечить лучшую воспроизводимость, рассмотрите возможность создания кастомного Docker-образа с предустановленными пакетами.
Использование кастомных образов
Для production-сред или сложных зависимостей (например, системных библиотек) создайте Docker-образ со всеми необходимыми библиотеками и используйте его как Custom Image при создании блокнота. Это обеспечит точную воспроизводимость.
Управление конфигурациями (PodDefaults)
Kubeflow использует ресурсы PodDefault (часто обозначаемые как Configurations в UI) для внедрения общих конфигураций — таких как переменные окружения, тома и точки монтирования — в блокноты. Это стандартный способ безопасно предоставлять учётные данные для Object Storage (S3, MinIO) без жёсткого кодирования в блокнотах.
Создание PodDefault
Вы можете создать PodDefault, применив YAML-манифест.
Определите PodDefault, который выбирает pod'ы с определённой меткой.
Применение конфигурации
При создании нового Notebook Server:
- Прокрутите до раздела Configurations.
- Вы увидите список доступных PodDefaults (например,
s3-access). - Отметьте нужный для применения.
Это автоматически внедрит указанные переменные окружения или тома в контейнер блокнота.
Доступ к данным
Использование смонтированных томов
Если вы подключили том с данными (PVC) при создании, он будет доступен по указанной точке монтирования.
Использование Object Storage (S3 / MinIO)
Для доступа к данным в S3-совместимом хранилище используйте библиотеки, такие как boto3 или s3fs. Если администратор настроил PodDefaults для учётных данных, переменные окружения (например, AWS_ACCESS_KEY_ID) будут автоматически заполнены.
Лучшие практики
- Останавливайте неиспользуемые серверы: Серверы блокнотов потребляют ресурсы кластера (особенно GPU), даже когда простаивают. Останавливайте их, если не работаете активно.
- Интеграция с Git: Используйте расширение Git в JupyterLab (или терминал) для контроля версий блокнотов. Избегайте хранения больших наборов данных в Git.
- Мониторинг ресурсов: Следите за использованием ресурсов. Если ядро часто падает (OOM), возможно, нужно остановить сервер и перезапустить с увеличенными лимитами памяти.
- Очистка: Периодически удаляйте старые серверы блокнотов и связанные с ними PVC, если данные больше не нужны.