Вопрос или проблема
Я запускаю этот пример ноутбука Hugging Face для Vertex AI в Colab Enterprise: https://github.com/huggingface/Google-Cloud-Containers/blob/main/examples/vertex-ai/notebooks/trl-lora-sft-fine-tuning-on-vertex-ai/vertex-notebook.ipynb
Нам удалось включить все необходимые IAM разрешения для моей учетной записи пользователя до последней ячейки, но, очевидно, не хватает некоторых разрешений для выполнения метода submit(). Все детали верны (имя корзины, проект и т. д.) и работают в предыдущих ячейках.
Последнее разрешение, которое мы пытались добавить: (это не сработало)
gcloud projects add-iam-policy-binding my-project-name --member=user:[email protected] --role=roles/aiplatform.user
Код в ноутбуке:
# предыдущая ячейка...
job = aiplatform.CustomContainerTrainingJob(
display_name="trl-lora-sft",
container_uri=os.getenv("CONTAINER_URI"),
command=[
"sh",
"-c",
'exec trl sft "$@"',
"--",
],
)
###############
# финальная ячейка вызывает ошибку:
job.submit(
args=args,
replica_count=1,
machine_type="g2-standard-12",
accelerator_type="NVIDIA_L4",
accelerator_count=1,
base_output_dir=f"{os.getenv('BUCKET_URI')}/Mistral-7B-v0.3-LoRA-SFT-Guanaco",
environment_variables={
"HF_HOME": "/root/.cache/huggingface",
"HF_TOKEN": get_token(),
"TRL_USE_RICH": "0",
"ACCELERATE_LOG_LEVEL": "INFO",
"TRANSFORMERS_LOG_LEVEL": "INFO",
"TQDM_POSITION": "-1",
},
timeout=60 * 60 * 3, # 3 часа (10800с)
create_request_timeout=60 * 10, # 10 минут (600с)
)
Сообщение об ошибке:
PermissionDenied: 403 Доступ запрещен к ресурсу проекта 'my-project-name'. [links {
description: "Консоль разработчиков Google"
url: "https://console.developers.google.com"
}
, reason: "CONSUMER_INVALID"
domain: "googleapis.com"
metadata {
key: "consumer"
value: "projects/\'my-project-name\'"
}
metadata {
key: "service"
value: "aiplatform.googleapis.com"
}
]
.
Ответ или решение
Разрешения для CustomContainerTrainingJob на GCP Vertex AI Notebook
При работе с Google Cloud Vertex AI и выполнении задач, таких как настройка заранее обученных моделей, пользователи часто сталкиваются с проблемами разрешений. Рассмотрим ваш случай, когда возникает ошибка "PermissionDenied: 403", что указывает на нехватку прав на выполнение операции submit() для вашего объекта CustomContainerTrainingJob
.
Ошибка
Ошибка, с которой вы столкнулись:
PermissionDenied: 403 Permission denied on resource project 'my-project-name'.
[links {
description: "Google developers console"
url: "https://console.developers.google.com"
}
, reason: "CONSUMER_INVALID"
domain: "googleapis.com"
metadata {
key: "consumer"
value: "projects/\'my-project-name\'"
}
metadata {
key: "service"
value: "aiplatform.googleapis.com"
}
]
указывает на проблемы с разрешениями или настройками API для заданного проекта. В частности, причина "CONSUMER_INVALID" может означать, что проект не настроен для использования API Vertex AI.
Решение проблемы
-
Проверка активации API: Убедитесь, что необходимые API для вашего проекта активированы:
- Перейдите в консоль Google Cloud и откройте раздел "API и службы".
- Найдите и убедитесь, что API
Vertex AI
и другие связанные API (например,Compute Engine API
) включены.
-
Разрешения IAM: Убедитесь, что вы назначили все необходимые IAM-роль для вашего пользователя. Для выполнения
CustomContainerTrainingJob
могут потребоваться следующие роли:roles/aiplatform.user
: Позволяет запускать и управлять ресурсами AI Platform.roles/storage.objectAdmin
: Для записи в указанный вами Cloud Storage Bucket.roles/compute.networkUser
: Позволяет пользователю создавать и использовать виртуальные машины в проекте.
Пример команды для назначения роли:
gcloud projects add-iam-policy-binding my-project-name \ --member=user:[ваш email] \ --role=roles/aiplatform.user gcloud projects add-iam-policy-binding my-project-name \ --member=user:[ваш email] \ --role=roles/storage.objectAdmin
-
Проверка настроек проекта: Проверьте, что ваш проект действительно является "активным" проектом в Google Cloud. Иногда проекты могут быть отключены или неактивны.
-
Проверка идентификаторов: Убедитесь, что в вашем коде правильно указаны идентификаторы контейнера и Cloud Storage Bucket. Откройте консоль и убедитесь, что вы используете правильный путь к объектам.
-
Квоты и лимиты: Убедитесь, что в вашем проекте не исчерпаны лимиты использования для Vertex AI и Compute Engine.
Дополнительные советы
-
Использование Cloud IAM: Используйте Cloud IAM для управления доступом к ресурсам, а не полагайтесь на стандартные права доступа. Это позволяет вам более гибко и безопасно управлять доступом.
-
Логи и отладка: Отслеживайте логи выполнения вашего кода через Google Cloud Logging, чтобы получить более детальную информацию и возможность отладки проблем.
-
Документация: Ознакомьтесь с документацией по Vertex AI, чтобы получить более полное представление о необходимых разрешениях и настройках для использования функционала.
Надеемся, что эти рекомендации помогут вам решить проблему с разрешениями на выполнение CustomContainerTrainingJob
в Vertex AI.