Info on data handling in mlcmp

This commit is contained in:
Georgii Zhulikov 2025-07-11 17:56:33 +03:00
parent 015775dfe0
commit 8e0ca08813

View file

@ -196,6 +196,28 @@ def example_inference_func(parameters: list,
Тип объекта `model` может быть любым, то есть это может быть и набор моделей, если это соответствует логике вычислений.
#### Передача данных
Для передачи данных на вход функции inference и возвращения результатов вычислений пользователю есть два основных метода:
1. Передача данных напрямую, как объектов Python.
2. Передача данных через файл.
При объектной передаче поле `datatype` для соответствующей переменной устанавливается в одно из значений `"FP32", "FP64", "INT32", "str", "dict"`. В таком случае данные передаются напрямую в функцию inference в поле `data` одного из элементов списка `inputs`. Аналогично, для выходных данных (список `outputs` в примере ниже) ожидается, что данные будут переданы напрямую в поле `data`.
- Типы `FP32`, `FP64`, `INT32` означают, что сами данные переданы одномерным списком соответствующего типа. Если для вычислений важна размерность данных, она должна быть передана отдельно в параметре `shape`.
- Например, если указать `"data": [1, 2, 3, 4], "shape", [2, 2]`, это будет означать, что данные должны быть обработаны как массив 2x2, а не вектор из 4 элементов. За обработку данных отвечает код модуля, вызываемый из функции inference, автоматического преобразования размерности при обработке запросов не происходит.
- Тип `str` означает, что данные передаются в виде одной строки.
- Тип `dict` означает произвольный словарь, аналогичный объекту JSON.
- Например, `{"x": 10, "y": [1, 2]}`, но не `{"x": numpy.array([1,2])}`
При передаче данных через файл сами данные сохраняются в файл, а в поле `data` указывается путь к этому файлу. К контейнеру, в котором исполняется код модуля и функции inference, монтируется раздел файлового хранилища фреймворка. Входные файлы, переданные пользователем при вызове сервиса, сохраняются в этот раздел и становятся доступны внутри контейнера сервиса.
Если поле `datatype` установлено в значение `FILE`, то считывания входных данных необходимо считать содержимое файла, путь к которому передан в поле `data`. Поле `content_type` в таком случае позволяет уточнить тип переданного файла.
Чтобы вывести результат работы функции inference пользователю в виде файла, можно записать его в произвольное место в локальной файловой системе контейнера и указать путь к этому файлу в поле `data` элемента списка выходных данных. Во входной переменной `output_fields` среди информации об ожидаемых выходных данных в поле `data` передаётся путь во временной папке. Вместо произвольного места для сохранения файла можно использовать этот переданный путь
#### Пример функции
```python