Управление данными

Данные из объектного хранилища S3 могут использоваться в рамках других сервисов.

Использование данных для обучения моделей

Для обучения моделей (см. Обучение модели) пользовательские данные с S3 необходимо перенести в горячее хранилище NFS ML Space. NFS обеспечивает быстрый доступ к данным во время обучения моделей. У кластера нет прямого доступа к хранилищам данных, а есть доступ только к пользовательским файлам, которые находятся на NFS-дисках кластера. Точкой монтирования NFS и кластера по умолчанию является текущая рабочая директория пользователя /home/jovyan/. Обзор данных на NFS и управление этими данными осуществляется через интерфейс Jupyter Notebook/ JupyterLab (предпочтителен из-за большего набора функций для просмотра и управления объектами хранилища).

При создании окружений (см. подробнее Регионы размещения ресурсов) для каждого региона используется независимое хранилище.

Перемещение данных с S3 на NFS

Перемещение данных между объектным хранилищем S3 и NFS осуществляется через:

  1. Интерфейс Файлового менеджера.

  2. Правило переноса в Data transfer service.

  3. Средства библиотеки client_lib.

Перемещение данных через интерфейс Файлового менеджера

Для перемещения данных через интерфейс Файлового менеджера необходимо:

  1. Выбрать объекты для переноса на вкладке Обзор хранилища.

  2. Нажать кнопку Отправить на NFS.

Перемещение данных с помощью правил переноса

Перемещение данных между S3 и NFS возможно настроить c заданными параметрами и периодичностью с помощью создания Правила переноса между S3 и NFS в Data transfer service (cм. Миграция данных). Прогресс и результат переноса можно посмотреть на вкладке История переносов в Data transfer service.

Доступен перенос данных между кластерами с помощью правил переноса.

Перемещение данных средствами библиотеки client_lib

Перемещение данных средствами библиотеки client_lib включает следующие этапы:

  1. Передача параметров доступа к бакету S3.

  2. Копирование данных с S3 в NFS.

  3. Физическое перемещение данных.

Для этого в интерфейсе Jupyter Notebook/ JupyterLab выполните следующие действия:

import client_lib #импорт необходимой библиотеки

Для передачи параметров доступа к бакету S3 используется метод save_aws_credentials. Обратите внимание на то, что метод вызывается один раз. В дальнейшем при перекладке данных с NFS на S3 передача параметров доступа не потребуется.

from client_lib import save_aws_credentials

Необходимы следующие данные:

  • Имя бакета (s3_namespace).

  • Код доступа (access_key_id).

  • Ключ безопасности (security_key).

client_lib.save_aws_credentials('your_namespace', 'your_access_key_id', 'your_security_key')

Копирование данных осуществляется с помощью класса S3CopyJob указанной библиотеки. Для процедуры копирования необходимо указать источник данных и путь, по которому их предполагается переместить.

Физическое перемещение данных осуществляется с помощью метода submit() класса S3CopyJob.

Важно

На сервисе существуют технические ограничения на копирование файлов в корень бакета средствами библиотеки client_lib. Для переноса таких файлов необходимо сначала создать папку, в которую предполагается переносить файлы.

client_lib.S3CopyJob('s3://your_bucket_name/your_folder/mnist.npz ','/home/jovyan/').submit()
#перемещение данных из объектного хранилища S3 в NFS
client_lib.S3CopyJob('/home/jovyan/quick-start/job_launch/model.ckpt-10937.data-00000-of-00001', 's3_bucket/your_folder').submit()
#выгрузка данных из NFS

Для копирования папок в классе S3CopyJob библиотеки client_lib существует необязательный параметр recursive (по умолчанию принимает значение False).

Пример копирования папок:

# Перемещение папки с файлами
client_lib.S3CopyJob("/home/jovyan/quick-start/job_launch/checkpoints_tf/mnist_convnet_model/", s3_bucket, recursive=True).submit()

Также для перемещения папки из src в dst можно использовать параметр folder_auto_create в рамках метода submit.

# Submit copy job
client_lib.S3CopyJob(bucket, "/home/jovyan", recursive=True).submit(folder_auto_create=True)

Если файлов много, удобно отслеживать прогресс операции копирования. Для этого выполните в ячейке следующую команду:

s3_jb = client_lib.S3CopyJob("s3://your_bucket_name/folder", "/home/jovyan/",
recursive=True)
s3_jb.submit()
s3_jb.wait()