Expand on files
This commit is contained in:
parent
eedb74a966
commit
f28a9b1d20
1 changed files with 80 additions and 9 deletions
|
@ -1,14 +1,15 @@
|
||||||
# Компонент DataBox
|
# Компонент DataBox и работа с файлами
|
||||||
|
|
||||||
Компонент DataBox позволяет хранить данные, необходимые для работы модуля.
|
## DataBox
|
||||||
|
|
||||||
|
Компонент DataBox позволяет хранить данные, необходимые для работы модуля, в файловом хранилище S3.
|
||||||
|
|
||||||
Рекомендуемая структура расположения данных:
|
Рекомендуемая структура расположения данных:
|
||||||
|
|
||||||
1. Образ Docker:
|
1. Образ Docker:
|
||||||
1. Код проекта
|
1. Код проекта
|
||||||
2. Среда с зависимостями
|
2. Системные библиотеки и прочие программные зависимости
|
||||||
3. Системные библиотеки и прочие "программные" зависимости
|
3. Постоянные файлы настроек
|
||||||
4. Постоянные файлы настроек
|
|
||||||
2. DataBox для данных:
|
2. DataBox для данных:
|
||||||
1. Предобученные веса моделей машинного обучения.
|
1. Предобученные веса моделей машинного обучения.
|
||||||
2. Большие и постоянные наборы внешних данных (например, исторические погодные данные для модуля прогноза погоды).
|
2. Большие и постоянные наборы внешних данных (например, исторические погодные данные для модуля прогноза погоды).
|
||||||
|
@ -22,14 +23,84 @@
|
||||||
apiVersion: "unified-platform.cs.hse.ru/v1"
|
apiVersion: "unified-platform.cs.hse.ru/v1"
|
||||||
kind: DataBox
|
kind: DataBox
|
||||||
metadata:
|
metadata:
|
||||||
name: users
|
name: userdata
|
||||||
namespace: pu-username-pa-bm99
|
namespace: my-app
|
||||||
spec:
|
spec:
|
||||||
s3DefaultStorage:
|
s3DefaultStorage:
|
||||||
capacity: 1G
|
capacity: 1G
|
||||||
```
|
```
|
||||||
|
|
||||||
В данном примере `users` - это имя компонента DataBox, по которому в дальнейшем смогут обращаться другие компоненты и пользователи.
|
В данном примере `userdata` - это имя компонента DataBox, по которому в дальнейшем смогут обращаться другие компоненты и пользователи. Например, в [ML-компонентах](./mlcmp.md) это имя используется в разделе `connectedBoxes`.
|
||||||
|
|
||||||
|
Поле `spec.s3DefaultStorage.capacity` определяет размер выделенного под DataBox дискового пространства. Можно не указывать `capacity`, тогда поле будет выглядеть так:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
spec:
|
||||||
|
s3DefaultStorage: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
Если `capacity` не указано, по умолчанию выделяется 1ГБ пространства.
|
||||||
|
|
||||||
|
## Пути
|
||||||
|
|
||||||
|
### Файловое хранилище
|
||||||
|
|
||||||
|
В файловом хранилище файлы хранятся со следующей структурой:
|
||||||
|
|
||||||
|
```
|
||||||
|
/my-app/userdata/users/gzhulikov/file_groups/my_file_group/file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Здесь:
|
||||||
|
|
||||||
|
- `my-app` - имя приложения. Файлы разных приложений хранятся отдельно друг от друга, между ними нет пересечения
|
||||||
|
- `userdata` - имя компонента DataBox.
|
||||||
|
- `users` - системная часть пути, означающая "далее идут файлы, загруженные пользователями".
|
||||||
|
- `gzhulikov` - имя пользователя, который загрузил данные
|
||||||
|
- `file_groups` - системная часть пути
|
||||||
|
- `my_file_group` - созданная пользователем файловая группа (можно считать это "папкой" в хранилище S3)
|
||||||
|
- `file.txt` - файл в хранилище S3
|
||||||
|
|
||||||
|
### Компоненты модуля
|
||||||
|
|
||||||
|
Компоненты `MLComponent` и `ExperimentPipeline` взаимодействуют с данными из хранилища S3. Это взаимодействие контролируется разделом `connectedBoxes`, а также параметром `mountFrom` в переменных пайплайнов.
|
||||||
|
|
||||||
|
Структура пути в манифестах `MLComponent` и `ExperimentPipeline`:
|
||||||
|
|
||||||
|
```
|
||||||
|
users/developer/file_groups/my_file_group_file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Здесь:
|
||||||
|
|
||||||
|
- Имя приложения заранее известно, так как во всех компонентах уже указано, какому приложению они принадлежат
|
||||||
|
- Имя компонента `DataBox` указывается отдельно от пути в соответствующем поле манифеста
|
||||||
|
- Остальные компоненты пути повторяют структуру файлового хранилища, начиная с системной части пути - `users`
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
connectedBoxes:
|
||||||
|
- name: model-box
|
||||||
|
path: /home/myproject/data/weights/
|
||||||
|
mountS3Box:
|
||||||
|
subPath: users/developer/file_groups/models_pretrained
|
||||||
|
s3BoxName: model-box
|
||||||
|
- name: user-box
|
||||||
|
copyS3Box:
|
||||||
|
s3BoxName: userdata
|
||||||
|
```
|
||||||
|
|
||||||
|
Здесь подключаются два компонента DataBox:
|
||||||
|
|
||||||
|
1. Монтируется DataBox `model-box`
|
||||||
|
- Путь `users/developer/file_groups/models_pretrained` в DataBox (в хранилище S3)
|
||||||
|
- Путь `/home/myproject/data/weights/` в локальной файловой системе контейнера
|
||||||
|
- Название компонента DataBox контролируется полем `s3BoxName`
|
||||||
|
- Название смонтированного компонента для упоминания внутри манифеста контролируется полем `name`. В этом примере эти два названия совпадают
|
||||||
|
2. DataBox `userdata` подключается в режиме копирования
|
||||||
|
- Название компонента DataBox контролируется полем `s3BoxName`
|
||||||
|
- Название смонтированного компонента для упоминания внутри манифеста контролируется полем `name`. Если в этом манифесте нужно будет упомянуть этот DataBox, нужно будет использовать имя `user-box`, не `userdata`.
|
||||||
|
|
||||||
Например, в [ML-компонентах](./mlcmp.md) это имя используется в разделе `connectedBoxes`.
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue