1. Введение
Пользовательские экземпляры блокнотов Vertex AI Workbench позволяют создавать и управлять виртуальными машинами (ВМ) для глубокого обучения, которые поставляются в комплекте с JupyterLab .
В экземплярах ноутбуков, управляемых пользователем, предустановлен набор пакетов для глубокого обучения, включая поддержку фреймворков TensorFlow и PyTorch. Вы можете настроить экземпляры либо только с процессором, либо с поддержкой графического процессора.
Что вы построите
В этом руководстве описывается процесс развертывания защищенного пользовательского блокнота на основе лучших практик в области сетей и безопасности. Процесс включает следующие шаги:
- Создайте VPC
- Создайте облачный маршрутизатор и облачный NAT.
- Настройте экземпляр ноутбука с соответствующими параметрами безопасности.
В этом руководстве представлены подробные инструкции для каждого шага. Также приводятся советы и рекомендации по обеспечению безопасности ноутбуков, управляемых пользователями. На рисунке 1 показана иллюстрация развертывания с использованием автономной VPC.
Рисунок 1

Что вы узнаете
- Как определить, подходит ли вашей организации общая или автономная VPC-сеть.
- Как создать автономную VPC
- Как создать облачный маршрутизатор и облачный NAT
- Как создать блокнот, управляемый пользователем
- Как получить доступ к блокноту, управляемому пользователем
- Как отслеживать состояние ноутбука, управляемое пользователем
- Как создать и применить расписание экземпляра
Что вам понадобится
- Проект Google Cloud
Разрешения IAM
- Администратор вычислительной сети
- Администратор безопасности вычислительных систем
- Администратор вычислительных экземпляров
- Администратор блокнотов
- Администратор хранилища
- Администратор проекта IAM
- Администратор учетной записи службы
- Пользователь служебной учетной записи
- Средство просмотра объектов хранилища (применяется к учетной записи службы)
- Пользователь Vertex AI (применяется к учетной записи сервиса)
2. Сеть VPC
Сеть VPC можно рассматривать так же, как и физическую сеть, за исключением того, что она виртуализирована в Google Cloud. Сеть VPC — это глобальный ресурс, состоящий из региональных подсетей. В Google Cloud сети VPC логически изолированы друг от друга.
Автономная VPC
На рисунке 2 представлен пример автономной глобальной VPC, включающей региональную подсеть (us-central1), а также облачный маршрутизатор и облачный NAT, используемые для обеспечения безопасного подключения управляемого пользователем ноутбука к Интернету.
Рисунок 2

Общая VPC
Функция Shared VPC позволяет экспортировать подсети из сети VPC в рамках основного проекта в сервисные проекты в той же организации . Основной проект содержит сетевые ресурсы, которые используются совместно с сервисным проектом, такие как подсети, Cloud NAT и правила брандмауэра. Сервисный проект содержит ресурсы уровня приложения, которые используют сетевые ресурсы основного проекта.
На рисунке 3 показана глобальная общая VPC, в которой сетевая инфраструктура и инфраструктура безопасности развернуты в основном проекте, а рабочие нагрузки — в сервисном проекте.
Рисунок 3

Автономная VPC против общей 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) для учетной записи службы экземпляра.
- Отключите следующие параметры:
- доступ с правами root
- nbconvert
- Загрузка файла из пользовательского интерфейса JupyterLab
- Вместо назначения внешнего IP-адреса управляемому пользователем ноутбуку будет использоваться облачный 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.
В руководстве по загрузке программных пакетов для ноутбуков используется Cloud NAT, поскольку управляемый пользователем экземпляр ноутбука не имеет внешнего IP-адреса. Cloud NAT также предлагает возможности исходящего NAT, что означает, что интернет-хостам не разрешается инициировать связь с управляемым пользователем ноутбуком, что повышает безопасность.
Внутри Cloud Shell создайте региональный облачный маршрутизатор.
gcloud compute routers create cloud-router-us-central1 --network securevertex-vpc --region us-central1
Внутри Cloud Shell создайте региональный шлюз 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. Создайте хранилище (bucket).
Облачные хранилища обеспечивают безопасную загрузку/извлечение файлов; в этом руководстве будет показано, что облачное хранилище содержит скрипт, запускаемый после выполнения команды, для установки пакетов генеративного ИИ в управляемые пользователем блокноты.
Создайте сегмент 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. Создайте скрипт, выполняемый после запуска системы.
Чтобы разрешить загрузку пакетов генеративного ИИ, создайте скрипт после запуска в облачной оболочке с помощью редактора 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
Загрузите скрипт после запуска системы в ваше хранилище из Cloud Shell с помощью 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.
Выберите «Продолжить»
- В разделе «Окружающая среда» укажите следующее:
- Операционная система: Выберите операционную систему, которую вы хотите использовать.
- Выберите среду , которую вы хотите использовать.
- Версия: Выберите версию, которую хотите использовать.
- Скрипт, запускаемый после запуска ( необязательно, используйте ранее созданный скрипт генеративного ИИ): выберите «Обзор», чтобы выбрать скрипт, который будет запущен после запуска экземпляра.
- Метаданные: Необязательно: Укажите пользовательские ключи метаданных для экземпляра.
Выберите «Продолжить»
- В разделе «Тип оборудования» укажите следующее:
- Тип машины: выберите количество процессоров и объем оперативной памяти для вашего нового экземпляра. Vertex AI Workbench предоставляет ежемесячные оценки стоимости для каждого выбранного вами типа машины.
- Тип графического процессора: выберите тип графического процессора и количество графических процессоров для вашего нового экземпляра. Информацию о различных графических процессорах см. в разделе «Графические процессоры в Compute Engine» .
- Установите флажок «Установить драйвер NVIDIA GPU автоматически для меня».
Экранированная виртуальная машина
- Включите безопасную загрузку.
- Включите vTPM
- Включите мониторинг целостности.
Выберите «Продолжить»
- В разделе «Диски» укажите следующее:
- Диски: (Необязательно) Чтобы изменить параметры загрузочного или дискового хранилища по умолчанию, выберите нужный тип загрузочного диска, размер загрузочного диска в ГБ, тип диска данных и размер диска данных в ГБ. Дополнительную информацию о типах дисков см. в разделе «Параметры хранилища» .
- Удалить в корзину: Необязательно: Установите этот флажок, чтобы использовать стандартное поведение корзины операционной системы. При использовании стандартного поведения корзины файлы, удаленные с помощью пользовательского интерфейса JupyterLab, можно восстановить, но эти удаленные файлы занимают место на диске.
- Резервное копирование: (необязательно) Чтобы синхронизировать местоположение облачного хранилища с диском данных вашего экземпляра, выберите «Обзор» и укажите местоположение облачного хранилища. Информацию о стоимости хранения см. в разделе «Цены на облачное хранилище» .
- Шифрование: ключ шифрования, управляемый Google.
Выберите «Продолжить»
- В разделе «Сетевые настройки» укажите следующее:
- Сетевые настройки: выберите либо «Сети в этом проекте», либо «Сети, предоставленные мне». Если вы используете общую VPC в основном проекте, необходимо также предоставить роль пользователя вычислительной сети (roles/compute.networkUser) агенту службы Notebooks из проекта службы.
- В поле «Сеть» выберите нужную сеть. В руководстве используется сеть securevertex-vpc. Вы можете выбрать любую сеть VPC, если в ней включен Private Google Access или она имеет доступ к интернету. В поле «Подсеть» выберите нужную подсеть; в руководстве используется подсеть 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».
- Включить терминал (снять флажок для производственных сред)
Выберите «Продолжить»

- В разделе «Состояние системы» укажите следующее.
Обновление среды и состояние системы
- Установите флажок «Включить автоматическое обновление среды».
- Выберите, будете ли вы обновлять свой ноутбук еженедельно или ежемесячно.
В разделе «Состояние системы и отчетность» установите или снимите следующие флажки:
- Включить отчет о состоянии системы
- Передавайте пользовательские метрики в систему мониторинга облака.
- Установите агент облачного мониторинга.
Выберите «Создать».
10. Валидация
Vertex AI Workbench создает управляемый пользователем экземпляр блокнотов на основе указанных вами свойств и автоматически запускает его. Когда экземпляр будет готов к использованию, Vertex AI Workbench активирует ссылку Open JupyterLab , которая предоставляет конечному пользователю доступ к блокноту.
11. Наблюдаемость
Отслеживайте системные и прикладные показатели с помощью системы мониторинга.
Для экземпляров блокнотов, управляемых пользователями, на которых установлен модуль мониторинга , вы можете отслеживать системные и прикладные метрики с помощью консоли Google Cloud:
- В консоли Google Cloud перейдите на страницу «Управляемые пользователем блокноты» .
- Щелкните по имени экземпляра, для которого вы хотите просмотреть системные и прикладные метрики.
- На странице с подробными сведениями о ноутбуке перейдите на вкладку «Мониторинг». Просмотрите системные и прикладные метрики для вашего экземпляра.
12. Создайте расписание в блокноте.
Расписания запуска позволяют автоматически запускать и останавливать экземпляры виртуальных машин (ВМ). Использование расписаний запуска для автоматизации развертывания экземпляров ВМ может помочь оптимизировать затраты и более эффективно управлять экземплярами ВМ. Вы можете использовать расписания запуска как для повторяющихся, так и для разовых рабочих нагрузок. Например, используйте расписания запуска для работы экземпляров ВМ только в рабочее время или для обеспечения ресурсов для разового события.
Для использования расписаний экземпляров создайте политику ресурсов, подробно описывающую поведение запуска и остановки, а затем прикрепите эту политику к одному или нескольким экземплярам виртуальных машин.
В этом руководстве вы узнаете, как создать расписание включения/выключения ноутбука в 7:00 утра и в 18:00.
Для создания расписания экземпляров вам потребуются разрешения compute.instances.start и compute.instances.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
- Введение в управляемые пользователем блокноты
- Используйте экземпляр блокнотов, управляемый пользователем, в рамках сервисной инфраструктуры.
- Создайте учетную запись службы
- Планирование запуска и остановки экземпляра виртуальной машины