Обзор хранилища (Файловый менеджер)

Временные ограничения при загрузке данных

Предупреждение

С 27.11.2022 все существующие бакеты S3 перешли в режим только чтение. Для загрузки новых данных в S3 просим:

  • Создать новый воркспейс. К новым воркспейсам бакет из нового хранилища S3 подключается автоматически. Запись в бакеты S3 новых воркспейсов доступна без ограничений.

  • Использовать для загрузки данных автоматически созданные к новому воркспейсу бакеты.

Загрузить данные в новый бакет можно через интерфейс Обзора хранилища и Data transfer service в новом воркспейсе. Для загрузки больших объемов данных можно также использовать сторонние клиентские приложения с графическим интерфейсом (например, Cyberduck и S3 Browser).

Данные для подключения (Credentials) нового бакета S3 созданного воркспейса можно получить в интерфейсе ML Space.

Созданный бакет можно использовать для загрузки данных в хранилище S3 в различных сценариях.

Сценарий 1

В коде скриптов Jupyter Server/задач обучения/деплоев для работы с S3 используются библиотеки boto3 или аналогичные. В этом случае достаточно заменить параметры подключения к бакету S3 (credentials) в старом воркспейcе на параметры подключения к бакету S3 (credentials) из нового воркспейса.

Сценарий 2

Перенос данных S3 и NFS, а также необходимых Jupyter Server/деплоев в новый воркспейс. В этом случае каких-либо изменений в коде скриптов не потребуется. Выполнить перенос данных из S3/NFS старого воркспейса можно, воспользовавшись Data Transfer Service.

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

Сценарий 3

Без переноса данных S3 и NFS, а также необходимые Jupyter Server/деплои в новый воркспейс. Если в коде используется метод S3CopyJob библиотеки client_lib, то необходимо заменить его на методы copy_to_nfs и copy_from_nfs, предварительно создав коннектор к бакету S3 в новом воркспейсе, либо использовать методы библиотеки boto3 или аналогичных.

Если вы используете создание образов для деплоев в модуле Deployments, то в пункте “Хранилище S3” необходимо использовать вариант «Указать вручную» и ввести credentials от бакета S3 нового воркспейса.

При возникновении сложностей при создании или использовании новых бакетов обратитесь в техническую поддержку.

Общая информация

Объектное хранилище S3 — основной ресурс для хранения большого объема данных. Оно обеспечивает безопасный и оперативный доступ к пользовательским данным, которые хранятся в виде объектов в бакетах.

Для каждого созданного workspace автоматически создается бакет, доступный всем пользователям workspace (тип доступа — public). Пользователь может создать личный бакет (тип доступа — private) для хранения данных, к которым он хочет ограничить доступ. Этот бакет будет отображаться в каждом workspace (cм. Workspace).

Взаимодействие с объектами в бакете (загрузка, скачивание, просмотр и др.) реализовано посредством Обзора хранилища. Он имитирует иерархическую структуру каталогов, упрощая визуальный поиск необходимых данных.

Для удобства отображения реализована возможность переименовать бакет. Чтобы переименовать бакет, перейдите в меню Кнопка с тремя вертикальными точками и выберите Переименовать.

После переименования, имя бакета будет изменено в модулях платформы Data transfer service. Для взаимодействия с внешними S3 нужно использовать credentials. Подробнее про credentials см. Credentials S3 и копирование пути к объекту на S3.

Создание пользовательского бакета

Важно

Данный способ создания бакетов в платформе ML Space является единственным предусмотренным для корректной работы всех остальных компонентов платформы.

Бакеты, созданные через приложения и консольные утилиты (S3 Browser, CyberDuck, AWS CLI и др.), будут удалены без уведомления пользователей.

Для создания нового пользовательского бакета необходимо:

  1. Нажать Создать бакет.

    • Название бакета будет создано автоматически.

    • Тип доступа к бакету по умолчанию — private.

  2. Нажать Сохранить.

Пользователь ML Space может создать только один бакет с типом доступа private по умолчанию. Данный бакет будет доступен как личное хранилище в каждом workspace, вне зависимости от выбранного workspace. После создания бакет появится на вкладке Обзор хранилища.

Загрузка данных в хранилище S3

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

  • Интерфейс Обзор хранилища (кнопка Загрузить).

  • Сторонние клиентские приложения с графическим интерфейсом (Cyberduck и S3 Browser для загрузки в бакеты с типами доступа private и public).

    При использовании Cyberduck для перехода в бакет, нужно указать его имя. Подробнее как узнать имя бакета см. Credentials S3 и копирование пути к объекту на S3.

  • Data transfer service (см. Data transfer service).

Важно

Рекомендуемый объем загружаемых файлов на S3 через интерфейс (кнопка Загрузить) — не более 500МБ, количество объектов не должно превышать 1000.

Для загрузки данных через Файловый менеджер:

  1. Перейдите на вкладку Обзор хранилища.

  2. Выберите бакет для загрузки объекта двойным кликом или создайте новый пользовательский бакет.

  3. Нажмите кнопку Загрузить. Выберите Загрузить папку или Загрузить файл.

  4. В диалоговом окне выберите объект (папку, один или несколько файлов) для загрузки и нажмите кнопку Загрузить.

Для загрузки данных через Drag-and-drop:

  1. Перейдите на вкладку Обзор хранилища.

  2. Выберите расположение, куда требуется загрузить файлы (например, <bucket-name>/<d_and_d_folder>/d_and_d.json).

  3. Перетащите требуемые для загрузки файлы в требуемую папку (например, <bucket-name>/<d_and_d_folder>).

После загрузки папка или файл будут отображаться в интерфейсе Обзора хранилища.

Важно

Через Drag-and-drop временно недоступна загрузка файлов с расширением app и папок целиком.

Создание пользовательского бакета

Для создания нового пользовательского бакета необходимо:

  1. Нажмите кнопку Создать бакет.

    • Название бакета будет создано автоматически.

    • Тип доступа к бакету по умолчанию — private.

  2. Нажмите кнопку Сохранить.

По умолчанию пользователь ML Space может создать только один бакет с типом доступа private. Такой бакет будет доступен как личное хранилище в каждом workspace, вне зависимости от выбранного workspace. После создания бакет появится на вкладке Обзор хранилища.

Credentials S3 и копирование пути к объекту на S3

Параметры доступа к бакету (credentials) и возможность их копирования доступны по клику на кнопку Кнопка с тремя вертикальными точками. Обратите внимание на то, что credentials используются для подключения к бакету и использованию объектов из него другими модулями и сервисами платформы ML Space. Чтобы скопировать путь до объекта на S3, нажмите Кнопка копирования пути до объекта в навигационной цепочке над таблицей или справа от строки URL в свойствах файла. Чтобы скачать credentials в формате .txt, нажмите на кнопку S3cmd config.

Копирование путей до папок и файлов

Чтобы скопировать путь до папки на S3 ML Space, нажмите Кнопка копирования пути до объекта в панели навигации хранилища. Чтобы скопировать путь до файла, нажмите Кнопка с тремя вертикальными точками, выберите Свойства и скопируйте URL, нажав Кнопка копирования пути до объекта.

Чтобы скопировать путь до папки или файла на NFS ML Space:

  • В интерфейсе JupyterLab кликните по объекту правой кнопкой мыши и нажмите Copy path. При этом будет скопирован относительный путь до папки/файла, например quick-start/README.md.

  • В Jupyter Notebook зайдите в терминал и выполните команду pwd, затем скопируйте путь. При этом будет скопирован относительный путь до папки/файла, например quick-start.

Подключение стороннего бакета (бакета миграции)

Важно

В настоящее время для подключения доступны бакеты Advanced.

При работе с бакетом миграции есть следующие ограничения:

  • Возможно подключить только один бакет миграции.

  • Нельзя отключить уже подключенный бакет.

  • Нельзя загружать новые файлы и удалять уже имеющиеся через интерфейс платформы. Для загрузки и удаления файлов используйте консольные утилиты. Подробнее см. в документации объектного хранилища S3.

Для подключения стороннего бакета нужно:

  1. Откройте S3 credentials бакета, который требуется подключить.

  2. Заполните требуемые поля в меню Подключить бакет.

  3. Нажмите Подключить.

Подробнее про параметры бакета миграции см. быстрый старт для Object Storage Service.

Работа с архивами

Важно

Если для работы требуется множество файлов — упакуйте их в архив.

Данные на NFS могут храниться в виде архива. Работа с такими архивами имеет ряд особенностей, которые обусловлены ограничениями архитектуры NFS на количество файлов и длину их имен. Ограничения могут приводить к ошибке со стороны файловой системы при попытке распаковать архив: «Cannot open. File too large». Ошибка возникает, когда в процессе распаковки в одном каталоге одновременно появляется много файлов с длинными именами.

Для корректной работы с архивами рекомендуется:

  1. Реорганизовать структуру данных. По возможности сгруппировать файлы и переместить их в подкаталоги.

  2. Выбрать оптимальную длину имени файла. Эксперименты показали, что максимальное количество файлов, после которого проявляется ограничение файловой системы, линейно зависит от средней длины имени файла. Например, для создания в одного каталога 1 млн файлов средняя длина имени файла должна составлять не более 80–85 символов.

  3. По возможности использовать данные в архивах без предварительной разархивации. Таким образом, устраняется ограничение файловой системы на количество файлов, а также повышается ее производительность. Увеличение производительности особенно заметно на медленных файловых системах, к которым относятся сетевые FS, в частности, NFS. В PyTorch это реализуется с помощью собственного класса для загрузки датасета, унаследованного от класса torch.utils.data.Dataset. Пример кода такого класса для датасета можно посмотреть в реализации класса torchvision.dataset.folder.DatasetFolder.

См.также

Сторонние инструменты для работы с Файловым менеджером

Для работы с файловым менеджером можно использовать:

Графические клиенты
  • S3 Browser

  • CyberDuck

  • WinSCP

  • BucketAnywhere

  • Консольные приложения

AWS CLI
  • S3cmd

  • SDK

AWS SDK для Java
  • AWS SDK для JavaScript

  • AWS SDK для .NET

  • AWS SDK для PHP

  • SDK для Python (boto)

FUSE
  • s3fs

  • goofys

Подробнее про эти инструменты можно посмотреть в документации объектного хранилища S3.