[WIP]: Datapipe ml opts: добавлена динамическая фильтрация индексов
Real-time, incremental ETL library for ML with record-level depend
Status: Alpha
Brought to you by:
otatarinova
Originally created by: bobokvsky
В виде работающего черновика внедрена реализация "фильтров", который теперь является List[LabelDict]
и принимает либо функцию с аргументами ds, run_config, либо в виде словаря [{"image_id": "id1"}, {"image_id": "id2"}]
Суть фильтра -- перезаписывает текущий запущенный run_config
фильтрами по индексов, и при выполнении трансформации отбирать только те индексы, которые указаны в нем. Если список run_config.filters
пустой, возвращает как обычно
Надо аккуратно зарефакторить этот код в хороший вид, внедрить тесты
Пример кода:
def filter_only_val_images(ds: DataStore, run_config: Optional[RunConfig]) -> List[LabelDict]:
dt__image = ds.get_table("image")
dt__subset__has__image = ds.get_table("subset__has__image__detection_train")
df__image = dt__image.get_data(
idx=dt__subset__has__image.get_data(idx=pd.DataFrame({"subset_id": ["val"]}))
)
if len(df__image) > 0:
filters = df__image[["image_id"]].to_dict(orient="records")
return filters
return []
...
BatchTransform(
func=steps.inference_steps.inference_on_bboxes,
inputs=["image", "model"],
outputs=["prediction"],
filters=filter_only_val_images, # может быть просто и [{"subset_id": "val"}]
),