documentation/pages/datamodule-usage.md
2025-05-29 16:56:31 +03:00

4.3 KiB
Raw Permalink Blame History

Структура модуля данных

Подключение модуля данных к базовому модулю

Чтобы модуль данных можно было использовать в базовом модуле, его нужно подключить, создав компонент DataBox специального типа - ссылку на модуль данных.

apiVersion: "unified-platform.cs.hse.ru/v1"
kind: DataBox
metadata:
  name: dataref
  namespace: pu-username-pa-appname
spec:
  datasetReference:
    datasetComponentRef:
      name: some-data-collection
      namespace: pu-otheruser-pa-datamodulename
  • dataref - имя DataBox в текущем модуле - в pu-username-pa-appname
  • some-data-collection - название компонента DatasetComponent в модуле данных.
  • pu-otheruser-pa-datamodulename - название "модуля" в модуле данных.

Модуль данных разворачивается так же, как и базовый модуль, и тоже содержит набор компонентов, определяемых манифестами в формате YAML. Поэтому, чтобы указать ссылку на компонент данных, нужно знать его полное имя: "имя модуля" + "имя компонента".

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

Чтобы подключить модуль данных к пайплайну, нужно

  1. Использовать MLDev-пайплайн
  2. Подключить сам модуль данных к пайплайну через атрибут mountDataset в разделе connectedBoxes.
  3. Использовать класс StageSrc вместо StageVar при указании переменной.
  4. Указать, откуда монтируется переменная, через mountFrom.

Например, в файле с определением UnipPipeline,

stage_prepare: !BasicStage &stage_prepare
  name: stage_prepare
  inputs:
    - !StageSrc        # Пункт 3 - переменная типа StageSrc
      name: preparation_data
      path: ./data/preparation
      version: v1
  outputs:
    - !StageVar
      name: internal_state
  script:
    - python src/prepare.py

...
# остальные этапы, если есть
...

pipeline: !UnipPipeline
  name: my-project
  namespace: pu-username-pa-appname
  variables:
    - name: preparation_data
      mountFrom:       # Пункт 4 - переменная из ящика mydataset
        box:
          name: mydataset
    - name: internal_state
    - name: user_report
  runs:
    - *container_stage_prepare
    - *container_stage_complete    
  connected_boxes:
    - name: user-box
      path: /userdata/
      default: true
      mount_s3_box:
        s3_box_name: users
    - name: mydataset
      mount_dataset:   # Пункт 2 - подключение ящика dataref к пайплайну под именем mydataset
        dataset_reference_name: dataref

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

Доступ к модулю данных через API

Модуль данных поддерживает работу через API, аналогичную файловому API.

Основные отличия:

  1. Поддерживаются только запросы GET, то есть данные можно только считывать, но не записывать.
  2. В ссылках вместо files используется ключевое слово datasets, а вместо названия компонента DataBox - название компонента DatasetComponent.

Пример:

curl -X GET https://platform.stratpro.hse.ru/pu-otheruser-pa-datamodulename/datasets/some-data-collection/data/my_dir/my_file.txt -H "Content-Type: application/json" -u "username:password"