1. Введение
Экземпляры управляемых пользователем блокнотов Vertex AI Workbench позволяют создавать экземпляры виртуальных машин глубокого обучения (ВМ), предварительно упакованные с помощью JupyterLab , и управлять ими.
Экземпляры блокнотов, управляемых пользователем, имеют предустановленный набор пакетов глубокого обучения, включая поддержку платформ TensorFlow и PyTorch. Вы можете настроить экземпляры с поддержкой только процессора или графического процессора.
Что ты построишь
В этом руководстве описывается процесс развертывания защищенного блокнота, управляемого пользователем, на основе передового опыта из раздела «Сеть и безопасность». Предусмотрены следующие шаги:
- Создать VPC
- Создайте облачный маршрутизатор и облачный NAT
- Настройте экземпляр блокнота с соответствующими параметрами безопасности.
В этом руководстве представлены подробные инструкции для каждого шага. Он также содержит советы и рекомендации по обеспечению безопасности блокнотов, управляемых пользователями. На рис. 1 показано развертывание с использованием автономного VPC.
Рисунок 1
Что вы узнаете
- Как определить, подходит ли вашей организации общий или автономный VPC
- Как создать автономный VPC
- Как создать облачный маршрутизатор и облачный NAT
- Как создать блокнот, управляемый пользователем
- Как получить доступ к блокноту, управляемому пользователем
- Как отслеживать состояние ноутбука, управляемого пользователем
- Как создать и применить расписание экземпляра
Что вам понадобится
- Облачный проект Google
IAM-разрешения
- Администратор вычислительной сети
- Администратор вычислительной безопасности
- Администратор вычислительного экземпляра
- Администратор ноутбуков
- Администратор хранилища
- Администратор проекта IAM
- Администратор сервисного аккаунта
- Пользователь сервисного аккаунта
- Средство просмотра объектов хранилища (применяется к учетной записи службы)
- Пользователь Vertex AI (применяется к учетной записи службы)
2. Сеть VPC
Вы можете думать о сети VPC так же, как о физической сети, за исключением того, что она виртуализирована в Google Cloud. Сеть VPC — это глобальный ресурс, состоящий из региональных подсетей. Сети VPC логически изолированы друг от друга в Google Cloud.
Автономное облако облака
На рисунке 2 показан пример автономного глобального VPC, состоящего из региональной подсети (us-central1) в дополнение к облачному маршрутизатору и облачному NAT, используемому для того, чтобы позволить управляемому пользователем ноутбуку безопасно устанавливать подключение к Интернету.
Рисунок 2
Общий VPC
Общий VPC позволяет экспортировать подсети из сети VPC в хост-проекте для обслуживания проектов в той же организации . Хост-проект содержит сетевые ресурсы, которые используются совместно с сервисным проектом, например подсети, облачные ресурсы и правила брандмауэра. Проект службы содержит ресурсы уровня приложения, которые используют сетевые ресурсы главного проекта.
На рис. 3 показана глобальная общая среда VPC, в которой сетевая инфраструктура и инфраструктура безопасности развертываются в хост-проекте, а рабочие нагрузки — в сервисном проекте.
Рисунок 3
Автономное и общее VPC
Одной сети VPC достаточно для многих простых случаев использования, поскольку ее легче создавать, поддерживать и понимать, чем более сложные альтернативы. Общий VPC — эффективный инструмент для организаций с несколькими командами, поскольку он позволяет им расширить архитектурную простоту одной сети VPC на несколько рабочих групп за счет использования сервисных проектов.
Лучшие практики VPC, используемые в руководстве
- Включите Cloud NAT для доступа к ноутбуку.
- Включайте частный доступ Google при создании подсетей.
- Создайте предписывающие правила брандмауэра, чтобы уменьшить нежелательный трафик, например, не используйте TCP 0.0.0.0/0, вместо этого определите точные IP-адреса подсетей или хостов.
- Используйте политики брандмауэра, чтобы расширить сферу действия правил входящего доступа, например географическое расположение, списки аналитики угроз, имена исходных доменов и т. д.
3. Рекомендации по использованию ноутбуков
Правильный размер экземпляров
- Остановите и/или удалите неиспользуемые экземпляры.
- Используйте меньший начальный экземпляр и выполните итерацию с меньшими выборочными данными.
- Масштабируйте экземпляры по мере необходимости
- Экспериментируйте с меньшими наборами данных
Выбирайте правильные типы машин
- Оптимизированные по стоимости виртуальные машины
- Более эффективное использование аппаратных ресурсов для снижения затрат
- Экономия до 31% по сравнению с N1
- Дополнительная экономия (20–50%) при заключении контракта на 1 или 3 года.
- Увеличение размера машины или добавление графических процессоров может помочь повысить производительность и преодолеть ошибки ограничения памяти.
Запланируйте отключение ваших экземпляров
- Отключение экземпляров, когда они простаивают (плата только за дисковое пространство)
- Запланируйте автоматическое выключение и запуск экземпляров виртуальных машин ноутбука в определенные часы.
Следите за состоянием здоровья ноутбука
- Экземпляры блокнотов, управляемых пользователями, имеют встроенный инструмент диагностики, который поможет вам отслеживать работоспособность ваших экземпляров.
Вопросы безопасности
Ниже приведены рекомендуемые меры безопасности при создании записной книжки, управляемой пользователем.
- Выберите вариант доступа к блокноту «только для одного пользователя». Если указанный пользователь не является создателем экземпляра, необходимо предоставить указанному пользователю роль пользователя учетной записи службы (roles/iam.serviceAccountUser) в учетной записи службы экземпляра.
- Отключите следующие параметры:
- корневой доступ
- nbconvert
- загрузка файла из пользовательского интерфейса JupyterLab
- Вместо назначения внешнего IP-адреса ноутбуку, управляемому пользователем, будет использоваться Cloud NAT.
- Выберите следующие параметры вычислений:
- Безопасная загрузка
- Модуль виртуальной доверенной платформы (vTPM)
- Мониторинг целостности
4. Прежде чем начать
Обновите проект для поддержки руководства.
В этом руководстве переменные $variables используются для облегчения реализации конфигурации gcloud в Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
gcloud config list project
gcloud config set project [your-project-name]
projectid=your-project-name
echo $projectid
5. Настройка VPC
Создайте автономный VPC
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks create securevertex-vpc --project=$projectid --subnet-mode=custom
Создайте подсеть блокнотов, управляемую пользователем.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks subnets create securevertex-subnet-a --project=$projectid --range=10.10.10.0/28 --network=securevertex-vpc --region=us-central1 --enable-private-ip-google-access
Облачный маршрутизатор и конфигурация NAT
Облачный NAT используется в руководстве для загрузки пакетов программного обеспечения для ноутбуков, поскольку экземпляр ноутбука, управляемый пользователем, не имеет внешнего IP-адреса. Cloud NAT также предлагает возможности исходящего NAT, что означает, что интернет-хостам не разрешено инициировать связь с ноутбуком, управляемым пользователем, что делает его более безопасным.
В Cloud Shell создайте региональный облачный маршрутизатор.
gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1
В Cloud Shell создайте региональный шлюз Cloud Nat.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1 --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
6. Создайте сегмент хранения
Корзины хранилища обеспечивают безопасную загрузку/извлечение файлов. В руководстве облачное хранилище будет содержать сценарий после запуска для установки пакетов генеративного искусственного интеллекта в управляемые пользователем блокноты.
Создайте сегмент Cloud Storage и замените BUCKET_NAME глобально уникальным именем, которое вы предпочитаете.
Внутри Cloud Shell создайте уникальный сегмент хранилища.
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
Сохраните BUCKET_NAME на время лабораторной работы.
BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
7. Создайте сценарий после запуска.
Чтобы включить загрузку пакетов Generative AI, создайте сценарий после запуска в облачной оболочке с помощью редактора vi или nano и сохраните его как poststartup.sh.
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
google-cloud-bigquery \
google-cloud-pipeline-components \
google-cloud-aiplatform \
seaborn \
kfp" >> /tmp/notebook_config.log 2>&1
Пример:
vpc_admin@cloudshell$ more poststartup.sh
#! /bin/bash
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Changing dir to /home/jupyter" >> /tmp/notebook_config.log 2>&1
cd /home/jupyter
echo "Cloning generative-ai from github" >> /tmp/notebook_config.log 2>&1
su - jupyter -c "git clone https://github.com/GoogleCloudPlatform/generative-ai.git" >> /tmp/notebook_config.log 2>&1
echo "Current user: id" >> /tmp/notebook_config.log 2>&1
echo "Installing python packages" >> /tmp/notebook_config.log 2&1
su - jupyter -c "pip install --upgrade --no-warn-conflicts --no-warn-script-location --user \
google-cloud-bigquery \
google-cloud-pipeline-components \
google-cloud-aiplatform \
seaborn \
kfp" >> /tmp/notebook_config.log 2>&1
Загрузите сценарий после запуска в свою корзину хранилища из облачной оболочки с помощью gsutil.
gsutil cp poststartup.sh gs://$BUCKET_NAME
8. Создайте учетную запись службы.
Для обеспечения высокого уровня контроля над записной книжкой, управляемой пользователем, требуется учетная запись службы . После создания разрешения учетной записи службы можно изменить в зависимости от бизнес-требований. В этом руководстве к учетной записи службы будут применены следующие правила:
Прежде чем продолжить, необходимо API учетной записи службы.
В Cloud Shell создайте учетную запись службы.
gcloud iam service-accounts create user-managed-notebook-sa \
--display-name="user-managed-notebook-sa"
В Cloud Shell обновите учетную запись службы, указав роль «Просмотр объектов хранилища».
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.objectViewer"
В Cloud Shell обновите учетную запись службы, указав роль пользователя Vertex AI.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
В Cloud Shell укажите учетную запись службы и запишите адрес электронной почты, который будет использоваться при создании блокнота, управляемого пользователем.
gcloud iam service-accounts list
Пример:
$ gcloud iam service-accounts list
DISPLAY NAME: user-managed-notebook-sa
EMAIL: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com
DISABLED: False
9. Создайте безопасный блокнот, управляемый пользователем.
Экземпляр блокнотов, управляемых пользователем, — это экземпляр виртуальной машины глубокого обучения с предустановленными новейшими библиотеками машинного обучения и обработки данных. При желании вы можете включить графические процессоры Nvidia для аппаратного ускорения.
Включить потребительские API
Создайте блокнот, управляемый пользователем.
- Перейти к рабочему столу
- Выберите «Записные книжки, управляемые пользователями», а затем выберите «Создать записную книжку». Откроется страница Создать блокнот, управляемый пользователем.
- Если развернут существующий блокнот, выберите «Записные книжки, управляемые пользователями» → «Новая записная книжка» → «Настроить».
- На странице «Создание блокнота, управляемого пользователем» в разделе «Сведения» укажите следующую информацию для нового экземпляра:
- Имя: укажите имя для нового экземпляра.
- Регион и зона: в руководстве будут использоваться регион us-central1 и зона us-central1-a.
Выберите Продолжить
- В разделе «Окружающая среда» укажите следующее:
- Операционная система: выберите операционную систему, которую вы хотите использовать.
- Выберите среду , которую вы хотите использовать.
- Версия: выберите версию, которую вы хотите использовать.
- Сценарий после запуска ( необязательно, используйте ранее созданный генеративный сценарий AI). Выберите «Обзор», чтобы выбрать сценарий, который будет запускаться после запуска экземпляра.
- Метаданные: Необязательно: укажите пользовательские ключи метаданных для экземпляра.
Выберите Продолжить
- В разделе Тип машины укажите следующее:
- Тип машины: выберите количество процессоров и объем оперативной памяти для вашего нового экземпляра. Vertex AI Workbench предоставляет ежемесячную оценку затрат для каждого выбранного вами типа машины.
- Тип графического процессора: выберите тип графического процессора и количество графических процессоров для вашего нового экземпляра. Информацию о различных графических процессорах см. в разделе Графические процессоры в Compute Engine .
- Установите флажок «Установить драйвер NVIDIA GPU автоматически».
Экранированная виртуальная машина
- Включите безопасную загрузку
- Включите vTPM
- Включите мониторинг целостности
Выберите Продолжить
- В разделе «Диски» укажите следующее:
- Диски: Необязательно: Чтобы изменить параметры загрузки или диска данных по умолчанию, выберите тип загрузочного диска, размер загрузочного диска в ГБ, тип диска данных и размер диска данных в ГБ, который вам нужен. Дополнительные сведения о типах дисков см. в разделе Параметры хранилища .
- Удалить в корзину: Необязательно: установите этот флажок, чтобы использовать поведение корзины операционной системы по умолчанию. Если вы используете поведение корзины по умолчанию, файлы, удаленные с помощью пользовательского интерфейса JupyterLab, можно восстановить, но эти удаленные файлы занимают дисковое пространство.
- Резервное копирование: необязательно: чтобы синхронизировать местоположение облачного хранилища с диском данных вашего экземпляра, выберите «Обзор» и укажите местоположение облачного хранилища. Чтобы узнать о стоимости хранения, ознакомьтесь с ценами на облачное хранилище .
- Шифрование: ключ шифрования, управляемый Google.
Выберите Продолжить
- В разделе «Сеть» укажите следующее:
- Сеть: выберите «Сети в этом проекте» или «Сети, которыми поделились со мной». Если вы используете общий VPC в главном проекте, вам также необходимо предоставить роль пользователя вычислительной сети (roles/compute.networkUser) агенту службы ноутбуков из проекта службы.
- В поле Сеть выберите нужную сеть. В руководстве используется сеть securevertex-vpc. Вы можете выбрать сеть VPC, если в сети включен частный доступ Google или есть доступ к Интернету. В поле Подсеть выберите нужную подсеть, в руководстве используется подсеть securevertex-subnet-a .
- Снимите флажок «Назначить внешний IP-адрес».
- Выберите разрешить доступ через прокси.
Выберите Продолжить
- В разделе IAM и безопасность укажите следующее:
- Выберите «Один пользователь» , а затем в поле «Электронная почта пользователя» введите учетную запись пользователя, которой вы хотите предоставить доступ. Если указанный пользователь не является создателем экземпляра, необходимо предоставить указанному пользователю роль пользователя учетной записи службы (roles/iam.serviceAccountUser) в учетной записи службы экземпляра.
- Снимите флажок «Использовать учетную запись службы Compute Engine по умолчанию на виртуальной машине для вызова API Google Cloud».
- Введите адрес электронной почты вновь созданной учетной записи службы, например: user-managed-notebook-sa@my-project-id.iam.gserviceaccount.com .
Параметры безопасности
- Снимите флажок, чтобы разрешить root-доступ к экземпляру.
- Снимите флажок, включите nbconvert
- Снимите флажок «Включить загрузку файлов из пользовательского интерфейса JupyterLab».
- Включить терминал (отменить выбор для производственных сред)
Выберите Продолжить
- В разделе «Состояние системы» укажите следующие данные.
Обновление среды и работоспособность системы
- Установите флажок Включить автоматическое обновление среды.
- Выберите, обновлять ли свой блокнот еженедельно или ежемесячно.
В разделе «Работоспособность системы и отчетность» установите или снимите следующие флажки:
- Включить отчет о состоянии системы
- Сообщайте о пользовательских показателях в Cloud Monitoring
- Установите агент облачного мониторинга
Выберите Создать.
10. Валидация
Vertex AI Workbench создает экземпляр блокнотов, управляемый пользователем, на основе указанных вами свойств и автоматически запускает этот экземпляр. Когда экземпляр готов к использованию, Vertex AI Workbench активирует ссылку Open JupyterLab , которая предоставляет конечному пользователю доступ к блокноту.
11. Наблюдательность
Мониторинг показателей системы и приложений с помощью мониторинга
Для экземпляров блокнотов, управляемых пользователями, на которых установлен мониторинг , вы можете отслеживать показатели системы и приложений с помощью консоли Google Cloud:
- В консоли Google Cloud перейдите на страницу блокнотов, управляемых пользователями .
- Щелкните имя экземпляра, для которого вы хотите просмотреть метрики системы и приложения.
- На странице сведений о блокноте перейдите на вкладку Мониторинг. Просмотрите метрики системы и приложения для вашего экземпляра.
12. Создайте расписание для блокнота
Расписания экземпляров позволяют автоматически запускать и останавливать экземпляры виртуальных машин (ВМ). Использование расписаний экземпляров для автоматизации развертывания экземпляров виртуальных машин поможет оптимизировать затраты и более эффективно управлять экземплярами виртуальных машин. Вы можете использовать расписания экземпляров как для повторяющихся, так и для разовых рабочих нагрузок. Например, используйте расписания экземпляров, чтобы запускать экземпляры виртуальных машин только в рабочее время или обеспечить емкость для однократного события.
Чтобы использовать расписания экземпляров, создайте политику ресурсов, подробно описывающую поведение при запуске и остановке, а затем прикрепите эту политику к одному или нескольким экземплярам виртуальных машин.
В этом руководстве показано, как создать расписание экземпляра, при котором ваш ноутбук будет включаться в 7 утра и выключаться в 18:00.
Для создания расписания экземпляра вам потребуются разрешения Compute.instance.start и Compute.instance.stop, поэтому рекомендуется использовать пользовательскую роль, созданную предоставленным вам администратором.
После создания настраиваемая роль будет назначена учетной записи службы Compute Engine по умолчанию в вашем проекте, что позволит расписанию экземпляра запускать и останавливать ваш блокнот.
Создать пользовательскую роль
В Cloud Shell создайте специальную роль VmScheduler и включите необходимые разрешения.
gcloud iam roles create Vm_Scheduler --project=$projectid \
--title=vm-scheduler-notebooks \
--permissions="compute.instances.start,compute.instances.stop" --stage=ga
Опишите пользовательскую роль из Cloud Shell.
gcloud iam roles describe Vm_Scheduler --project=$projectid
Пример:
$ gcloud iam roles describe Vm_Scheduler --project=$projectid
etag: BwX991B0_kg=
includedPermissions:
- compute.instances.start
- compute.instances.stop
name: projects/$projectid/roles/Vm_Scheduler
stage: GA
title: vm-scheduler-notebooks
Обновите учетную запись службы по умолчанию
В следующем разделе вы определите и обновите учетную запись службы по умолчанию, имеющую следующий формат: PROJECT_NUMBER-compute@developer.gserviceaccount.com.
В Cloud Shell определите номер текущего проекта.
gcloud projects list --filter=$projectid
В Cloud Shell сохраните номер проекта как переменную.
project_number=your_project_number
echo $project_number
В Cloud Shell обновите учетную запись службы вычислений по умолчанию, добавив настраиваемую роль VM_Scheduler.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"
Создайте расписание экземпляра
В Cloud Shell создайте расписание запуска и остановки.
gcloud compute resource-policies create instance-schedule optimize-notebooks \
--region=us-central1 \
--vm-start-schedule='0 7 * * *' \
--vm-stop-schedule='0 18 * * *' \
--timezone=America/Chicago
В Cloud Shell сохраните имя вашего блокнота.
gcloud compute instances list
notebook_vm=your_notebookvm_name
echo $notebook_vm
Вы можете прикрепить расписание экземпляра к любому существующему экземпляру виртуальной машины, расположенному в том же регионе, что и расписание экземпляра.
В Cloud Shell свяжите расписание со своим блокнотом.
gcloud compute instances add-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a
13. Очистка
Удалите блокнот, управляемый пользователем, из консоли, перейдите в Vertex AI → Workbench, выберите и удалите блокнот.
В Cloud Shell удалите компоненты VPC.
gcloud compute routers delete cloud-router-us-central1 --region=us-central1 --quiet
gcloud compute routers nats delete cloud-nat-us-central1 --region=us-central1 --router=cloud-router-us-central1 --quiet
gcloud compute instances remove-resource-policies $notebook_vm \
--resource-policies=optimize-notebooks \
--zone=us-central1-a --quiet
gcloud compute resource-policies delete optimize-notebooks --region=us-central1 --quiet
gcloud compute instances delete $notebook_vm --zone=us-central1-a --quiet
gcloud compute networks subnets delete securevertex-subnet-a --region=us-central1 --quiet
gcloud iam service-accounts delete user-managed-notebook-sa@$projectid.iam.gserviceaccount.com --quiet
gcloud projects remove-iam-policy-binding $projectid --member="serviceAccount:$project_number-compute@developer.gserviceaccount.com" --role="projects/$projectid/roles/Vm_Scheduler"
gcloud iam roles delete Vm_Scheduler --project=$projectid
gcloud compute networks delete securevertex-vpc --quiet
14. Поздравления
Отличная работа! Вы успешно настроили и проверили защищенный блокнот, управляемый пользователем, создав собственное автономное облако VPC, используя передовые методы повышения безопасности для управляемых блокнотов, и внедрили расписание экземпляров для оптимизации расходов.
Что дальше?
Посмотрите некоторые из этих уроков...
- Введение в вершинные конвейеры
- Пользовательское задание обучения и прогнозирование с использованием управляемого набора данных
Дальнейшее чтение и видео
- Начало работы с блокнотами для машинного обучения
- Начните работу с Vertex AI
- Введение в генеративный ИИ
Справочная документация
- Введение в Vertex AI Workbench
- Знакомство с блокнотами, управляемыми пользователями
- Используйте экземпляр блокнотов, управляемых пользователем, в пределах периметра службы.
- Создать учетную запись службы
- Планирование запуска и остановки экземпляра виртуальной машины