Использовать бакет OBS Advanced в ML Space
В этой инструкции описано, как подключить бакет OBS Advanced, а также как перенести данные в хранилища ML Space несколькими способами.
Перед началом работы создайте Access Key
и Security Key
в OBS Advanced.
Примечание
Для подключения доступны только бакеты миграции Advanced. При работе с ними учитывайте следующие ограничения:
Возможно подключить только один бакет миграции.
Нельзя отключить уже подключенный бакет.
Нельзя загружать новые файлы и удалять уже имеющиеся через интерфейс платформы. Для загрузки и удаления файлов используйте консольные утилиты. Подробнее — в документации объектного хранилища S3.
Шаг 1. Подключите бакет OBS Advanced
Для подключения бакета OBS Advanced доступно два способа.
Подключение через интерфейс платформы
Для подключения бакета OBS Advanced с помощью Подключить бакет:
Войдите на Главную страницу.
Перейдите
.Заполните требуемые поля и нажмите Подключиться.
Подключенный бакет отразится в списке доступных для работы бакетов. Пример приведен на рисунке ниже.
Подключение с помощью коннектора
Для подключения бакета OBS Advanced через коннектор:
Войдите на Главную страницу.
Перейдите
.Выберите Custom S3 в качестве источника данных.
Заполните требуемые поля и нажмите Создать коннектор.
В открывшемся диалоговом окне введите необходимые данные, где
Access Key
иSecurity Key
— ключи доступа. В качестве S3 Endpoint укажитеhttps://obs.ru-moscow-1.hc.sbercloud.ru
Подключенный коннектор отразится в списке доступных для работы. Пример приведен на рисунке ниже.
См.также
Шаг 2. Перенесите данные из OBS Advanced в ML Space
Рассмотрим несколько примеров того, как перенести объекты из OBS Advanced в хранилища S3 и NFS ML Space.
Перенос данных на S3 с помощью API и Boto3
Для переноса данных используйте:
Правило переноса, в котором в качестве источника укажите коннектор, созданный на шаге 1.
Вызовы API:
Активируйте коннектор с помощью вызова.
Подсказка
Системные коннекторы создавать и активировать не нужно.
Скрипт для Boto3, в котором укажите параметры подключения:
s3 = boto3.client( service_name="s3", aws_access_key_id="S3 access key ID", # Access Key of OBS bucket aws_secret_access_key="S3 security key", # Secret Key of OBS bucket endpoint_url=endpoint_url # Endpoint_url of OBS bucket ) s3.download_file( "bucket_name", # Name of OBS Advanced bucket "object_name", # File to download "/home/jovyan/test.py" # Path to upload file to NFS )
Перенос данных на NFS требуемого региона
Для переноса данных во время обучения задачи используйте Boto3-скрипт, указав параметры подключения и добавив его в начало скрипта обучения:
Import boto3
BUCKET_NAME = 'advanced-mlspace' # Name of OBS bucket
KEY = 'data/' # The path to the data to be transferred
s3 = boto3.resource(
service_name="s3",
aws_access_key_id=access_key_id # Access Key of OBS bucket
aws_secret_access_key=secret_access_key # Secret Key of OBS bucket
endpoint_url=endpoint_url # Endpoint_url of OBS bucket
)
try:
s3.Bucket(BUCKET_NAME).download_file(KEY, 'test.py')
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
print("The object does not exist.")
else:
raise
При создании задачи обучения в качестве параметра script
укажите путь до вашего скрипта на NFS.
job = client_lib.Job(
base_image='cr.ai.cloud.ru/aicloud-base-images/horovod-cuda11.0-tf2.4.0-pt1.7.1-a100',
script='/home/jovyan/script.file', # Path to the script
n_workers=1,
instance_type='a100.1gpu.80vG.12C.96G',
region='SR002-MT' # Without specifying the region, the training task will be sent to Christofari.V100 by default
)
job.submit()
Перенос данных на S3 с помощью скрипта загрузки данных
Для переноса данных можно воспользоваться утилитой Rclone. Чтобы установить утилиту, выполните в командной строке:
sudo -v ; curl https://rclone.org/install.sh | sudo bash
Данные будут перенесены с помощью скрипта data_loader.sh:
# !/usr/bin/env bash
source_acc_key_id="$1" # Access key ID of bucket in Advanced OBS
source_secret_key="$2" # Secret access key of bucket in Advanced OBS
obs_bucket_name="$3" # Bucket name in OBS
dest_acc_key_id="$4" # Access key ID of bucket in MLSpace S3
dest_secret_key="$5" # Secret access key of bucket in MLSpace S3
s3_bucket_name="$6" # Bucket name in MLSpace S3
rclone config create obsadvanced s3 access_key_id=$source_acc_key_id acl=private endpoint=obs.ru-moscow-1.hc.sbercloud.ru provider=HuaweiOBS region=ru-northwest-2 secret_access_key=$source_secret_key
rclone config create mlspaces3 s3 access_key_id=$dest_acc_key_id acl=private endpoint=n-ws-lmcne.s3pd02.sbercloud.ru provider=Other secret_access_key=$dest_secret_key
rclone copyto obsadvanced:$obs_bucket_name mlspaces3:$s3_bucket_name
Чтобы запустить скрипт, замените соответствующие аргументы на требуемые свойства бакета S3.
./data_loader.sh obs_access_key_id obs_secret_key obs_bucket_name mlspaces3_access_key mlspaces3_secret_key mlspaces3_bucket_name
После выполнения начнется перенос данных из бакета OBS Advanced в бакет S3 ML Space.
Примечание
Скрипт не переносит одинаковые файлы из OBS Advanced в S3 платформы.
для Dev & Test