paddlex 3.0.0rc0__py3-none-any.whl → 3.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- paddlex/.version +1 -1
- paddlex/__init__.py +17 -34
- paddlex/__main__.py +1 -1
- paddlex/configs/modules/chart_parsing/PP-Chart2Table.yaml +13 -0
- paddlex/configs/modules/doc_vlm/PP-DocBee-2B.yaml +14 -0
- paddlex/configs/modules/doc_vlm/PP-DocBee-7B.yaml +14 -0
- paddlex/configs/modules/doc_vlm/PP-DocBee2-3B.yaml +14 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-L.yaml +40 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-M.yaml +40 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-S.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocBlockLayout.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocLayout-L.yaml +2 -2
- paddlex/configs/modules/layout_detection/PP-DocLayout-M.yaml +2 -2
- paddlex/configs/modules/layout_detection/PP-DocLayout-S.yaml +2 -2
- paddlex/configs/modules/layout_detection/PP-DocLayout_plus-L.yaml +40 -0
- paddlex/configs/modules/open_vocabulary_detection/YOLO-Worldv2-L.yaml +13 -0
- paddlex/configs/modules/text_detection/PP-OCRv5_mobile_det.yaml +40 -0
- paddlex/configs/modules/text_detection/PP-OCRv5_server_det.yaml +40 -0
- paddlex/configs/modules/text_recognition/PP-OCRv5_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/PP-OCRv5_server_rec.yaml +39 -0
- paddlex/configs/modules/textline_orientation/PP-LCNet_x1_0_textline_ori.yaml +41 -0
- paddlex/configs/pipelines/OCR.yaml +7 -6
- paddlex/configs/pipelines/PP-ChatOCRv3-doc.yaml +3 -1
- paddlex/configs/pipelines/PP-ChatOCRv4-doc.yaml +91 -34
- paddlex/configs/pipelines/PP-StructureV3.yaml +72 -72
- paddlex/configs/pipelines/anomaly_detection.yaml +1 -1
- paddlex/configs/pipelines/doc_understanding.yaml +9 -0
- paddlex/configs/pipelines/formula_recognition.yaml +2 -2
- paddlex/configs/pipelines/layout_parsing.yaml +3 -2
- paddlex/configs/pipelines/seal_recognition.yaml +1 -0
- paddlex/configs/pipelines/table_recognition.yaml +2 -1
- paddlex/configs/pipelines/table_recognition_v2.yaml +7 -1
- paddlex/configs/pipelines/ts_anomaly_detection.yaml +1 -1
- paddlex/configs/pipelines/ts_classification.yaml +1 -1
- paddlex/configs/pipelines/ts_forecast.yaml +1 -1
- paddlex/constants.py +17 -0
- paddlex/engine.py +7 -5
- paddlex/hpip_links.html +23 -11
- paddlex/inference/__init__.py +3 -3
- paddlex/inference/common/__init__.py +1 -1
- paddlex/inference/common/batch_sampler/__init__.py +5 -4
- paddlex/inference/common/batch_sampler/audio_batch_sampler.py +5 -6
- paddlex/inference/common/batch_sampler/base_batch_sampler.py +20 -16
- paddlex/inference/common/batch_sampler/det_3d_batch_sampler.py +4 -7
- paddlex/inference/common/batch_sampler/doc_vlm_batch_sampler.py +87 -0
- paddlex/inference/common/batch_sampler/image_batch_sampler.py +45 -60
- paddlex/inference/common/batch_sampler/ts_batch_sampler.py +9 -10
- paddlex/inference/common/batch_sampler/video_batch_sampler.py +2 -22
- paddlex/inference/common/reader/__init__.py +4 -4
- paddlex/inference/common/reader/audio_reader.py +3 -3
- paddlex/inference/common/reader/det_3d_reader.py +7 -5
- paddlex/inference/common/reader/image_reader.py +16 -12
- paddlex/inference/common/reader/ts_reader.py +3 -2
- paddlex/inference/common/reader/video_reader.py +3 -3
- paddlex/inference/common/result/__init__.py +7 -7
- paddlex/inference/common/result/base_cv_result.py +12 -2
- paddlex/inference/common/result/base_result.py +7 -5
- paddlex/inference/common/result/base_ts_result.py +1 -2
- paddlex/inference/common/result/base_video_result.py +2 -2
- paddlex/inference/common/result/mixin.py +31 -25
- paddlex/inference/models/__init__.py +41 -85
- paddlex/inference/models/anomaly_detection/__init__.py +1 -1
- paddlex/inference/models/anomaly_detection/predictor.py +9 -19
- paddlex/inference/models/anomaly_detection/processors.py +9 -2
- paddlex/inference/models/anomaly_detection/result.py +3 -2
- paddlex/inference/models/base/__init__.py +2 -2
- paddlex/inference/models/base/predictor/__init__.py +1 -2
- paddlex/inference/models/base/predictor/base_predictor.py +278 -39
- paddlex/inference/models/common/__init__.py +6 -15
- paddlex/inference/models/common/static_infer.py +724 -251
- paddlex/inference/models/common/tokenizer/__init__.py +7 -3
- paddlex/inference/models/common/tokenizer/bert_tokenizer.py +1 -1
- paddlex/inference/models/common/tokenizer/clip_tokenizer.py +609 -0
- paddlex/inference/models/common/tokenizer/gpt_tokenizer.py +9 -7
- paddlex/inference/models/common/tokenizer/qwen2_5_tokenizer.py +112 -0
- paddlex/inference/models/common/tokenizer/qwen2_tokenizer.py +438 -0
- paddlex/inference/models/common/tokenizer/qwen_tokenizer.py +288 -0
- paddlex/inference/models/common/tokenizer/tokenizer_utils.py +85 -77
- paddlex/inference/models/common/tokenizer/tokenizer_utils_base.py +339 -123
- paddlex/inference/models/common/tokenizer/utils.py +1 -1
- paddlex/inference/models/common/tokenizer/vocab.py +8 -8
- paddlex/inference/models/common/ts/__init__.py +1 -1
- paddlex/inference/models/common/ts/funcs.py +13 -6
- paddlex/inference/models/common/ts/processors.py +14 -5
- paddlex/inference/models/common/vision/__init__.py +3 -3
- paddlex/inference/models/common/vision/funcs.py +17 -12
- paddlex/inference/models/common/vision/processors.py +61 -46
- paddlex/inference/models/common/vlm/__init__.py +13 -0
- paddlex/inference/models/common/vlm/activations.py +189 -0
- paddlex/inference/models/common/vlm/bert_padding.py +127 -0
- paddlex/inference/models/common/vlm/conversion_utils.py +99 -0
- paddlex/inference/models/common/vlm/distributed.py +229 -0
- paddlex/inference/models/common/vlm/flash_attn_utils.py +119 -0
- paddlex/inference/models/common/vlm/fusion_ops.py +205 -0
- paddlex/inference/models/common/vlm/generation/__init__.py +34 -0
- paddlex/inference/models/common/vlm/generation/configuration_utils.py +533 -0
- paddlex/inference/models/common/vlm/generation/logits_process.py +730 -0
- paddlex/inference/models/common/vlm/generation/stopping_criteria.py +106 -0
- paddlex/inference/models/common/vlm/generation/utils.py +2162 -0
- paddlex/inference/models/common/vlm/transformers/__init__.py +16 -0
- paddlex/inference/models/common/vlm/transformers/configuration_utils.py +1037 -0
- paddlex/inference/models/common/vlm/transformers/conversion_utils.py +408 -0
- paddlex/inference/models/common/vlm/transformers/model_outputs.py +1612 -0
- paddlex/inference/models/common/vlm/transformers/model_utils.py +2014 -0
- paddlex/inference/models/common/vlm/transformers/utils.py +178 -0
- paddlex/inference/models/common/vlm/utils.py +109 -0
- paddlex/inference/models/doc_vlm/__init__.py +15 -0
- paddlex/inference/models/doc_vlm/modeling/GOT_ocr_2_0.py +830 -0
- paddlex/inference/models/doc_vlm/modeling/__init__.py +17 -0
- paddlex/inference/models/doc_vlm/modeling/qwen2.py +1606 -0
- paddlex/inference/models/doc_vlm/modeling/qwen2_5_vl.py +3006 -0
- paddlex/inference/models/doc_vlm/modeling/qwen2_vl.py +2495 -0
- paddlex/inference/models/doc_vlm/predictor.py +253 -0
- paddlex/inference/models/doc_vlm/processors/GOT_ocr_2_0.py +97 -0
- paddlex/inference/models/doc_vlm/processors/__init__.py +17 -0
- paddlex/inference/models/doc_vlm/processors/common.py +561 -0
- paddlex/inference/models/doc_vlm/processors/qwen2_5_vl.py +548 -0
- paddlex/inference/models/doc_vlm/processors/qwen2_vl.py +543 -0
- paddlex/inference/models/doc_vlm/result.py +21 -0
- paddlex/inference/models/face_feature/__init__.py +1 -1
- paddlex/inference/models/face_feature/predictor.py +2 -1
- paddlex/inference/models/formula_recognition/__init__.py +1 -1
- paddlex/inference/models/formula_recognition/predictor.py +18 -28
- paddlex/inference/models/formula_recognition/processors.py +126 -97
- paddlex/inference/models/formula_recognition/result.py +43 -35
- paddlex/inference/models/image_classification/__init__.py +1 -1
- paddlex/inference/models/image_classification/predictor.py +9 -19
- paddlex/inference/models/image_classification/processors.py +4 -2
- paddlex/inference/models/image_classification/result.py +4 -3
- paddlex/inference/models/image_feature/__init__.py +1 -1
- paddlex/inference/models/image_feature/predictor.py +9 -19
- paddlex/inference/models/image_feature/processors.py +7 -5
- paddlex/inference/models/image_feature/result.py +2 -3
- paddlex/inference/models/image_multilabel_classification/__init__.py +1 -1
- paddlex/inference/models/image_multilabel_classification/predictor.py +7 -6
- paddlex/inference/models/image_multilabel_classification/processors.py +6 -2
- paddlex/inference/models/image_multilabel_classification/result.py +4 -3
- paddlex/inference/models/image_unwarping/__init__.py +1 -1
- paddlex/inference/models/image_unwarping/predictor.py +8 -16
- paddlex/inference/models/image_unwarping/processors.py +6 -2
- paddlex/inference/models/image_unwarping/result.py +4 -2
- paddlex/inference/models/instance_segmentation/__init__.py +1 -1
- paddlex/inference/models/instance_segmentation/predictor.py +7 -15
- paddlex/inference/models/instance_segmentation/processors.py +4 -7
- paddlex/inference/models/instance_segmentation/result.py +11 -10
- paddlex/inference/models/keypoint_detection/__init__.py +1 -1
- paddlex/inference/models/keypoint_detection/predictor.py +5 -3
- paddlex/inference/models/keypoint_detection/processors.py +11 -3
- paddlex/inference/models/keypoint_detection/result.py +9 -4
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/__init__.py +1 -1
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/predictor.py +15 -26
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/processors.py +26 -14
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/result.py +15 -12
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/visualizer_3d.py +77 -39
- paddlex/inference/models/multilingual_speech_recognition/__init__.py +1 -1
- paddlex/inference/models/multilingual_speech_recognition/predictor.py +11 -15
- paddlex/inference/models/multilingual_speech_recognition/processors.py +45 -53
- paddlex/inference/models/multilingual_speech_recognition/result.py +1 -1
- paddlex/inference/models/object_detection/__init__.py +1 -1
- paddlex/inference/models/object_detection/predictor.py +8 -12
- paddlex/inference/models/object_detection/processors.py +63 -33
- paddlex/inference/models/object_detection/result.py +5 -4
- paddlex/inference/models/object_detection/utils.py +3 -1
- paddlex/inference/models/open_vocabulary_detection/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_detection/predictor.py +31 -14
- paddlex/inference/models/open_vocabulary_detection/processors/__init__.py +3 -2
- paddlex/inference/models/open_vocabulary_detection/processors/common.py +114 -0
- paddlex/inference/models/open_vocabulary_detection/processors/groundingdino_processors.py +19 -8
- paddlex/inference/models/open_vocabulary_detection/processors/yoloworld_processors.py +209 -0
- paddlex/inference/models/open_vocabulary_segmentation/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_segmentation/predictor.py +6 -13
- paddlex/inference/models/open_vocabulary_segmentation/processors/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_segmentation/processors/sam_processer.py +12 -12
- paddlex/inference/models/open_vocabulary_segmentation/results/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_segmentation/results/sam_result.py +11 -9
- paddlex/inference/models/semantic_segmentation/__init__.py +1 -1
- paddlex/inference/models/semantic_segmentation/predictor.py +9 -18
- paddlex/inference/models/semantic_segmentation/processors.py +11 -8
- paddlex/inference/models/semantic_segmentation/result.py +4 -3
- paddlex/inference/models/table_structure_recognition/__init__.py +1 -1
- paddlex/inference/models/table_structure_recognition/predictor.py +8 -18
- paddlex/inference/models/table_structure_recognition/processors.py +23 -29
- paddlex/inference/models/table_structure_recognition/result.py +8 -15
- paddlex/inference/models/text_detection/__init__.py +1 -1
- paddlex/inference/models/text_detection/predictor.py +24 -24
- paddlex/inference/models/text_detection/processors.py +116 -44
- paddlex/inference/models/text_detection/result.py +8 -13
- paddlex/inference/models/text_recognition/__init__.py +1 -1
- paddlex/inference/models/text_recognition/predictor.py +11 -19
- paddlex/inference/models/text_recognition/processors.py +27 -13
- paddlex/inference/models/text_recognition/result.py +3 -2
- paddlex/inference/models/ts_anomaly_detection/__init__.py +1 -1
- paddlex/inference/models/ts_anomaly_detection/predictor.py +12 -17
- paddlex/inference/models/ts_anomaly_detection/processors.py +6 -2
- paddlex/inference/models/ts_anomaly_detection/result.py +21 -10
- paddlex/inference/models/ts_classification/__init__.py +1 -1
- paddlex/inference/models/ts_classification/predictor.py +14 -27
- paddlex/inference/models/ts_classification/processors.py +7 -2
- paddlex/inference/models/ts_classification/result.py +21 -12
- paddlex/inference/models/ts_forecasting/__init__.py +1 -1
- paddlex/inference/models/ts_forecasting/predictor.py +13 -18
- paddlex/inference/models/ts_forecasting/processors.py +12 -3
- paddlex/inference/models/ts_forecasting/result.py +24 -11
- paddlex/inference/models/video_classification/__init__.py +1 -1
- paddlex/inference/models/video_classification/predictor.py +9 -15
- paddlex/inference/models/video_classification/processors.py +24 -24
- paddlex/inference/models/video_classification/result.py +7 -3
- paddlex/inference/models/video_detection/__init__.py +1 -1
- paddlex/inference/models/video_detection/predictor.py +8 -15
- paddlex/inference/models/video_detection/processors.py +24 -11
- paddlex/inference/models/video_detection/result.py +10 -5
- paddlex/inference/pipelines/__init__.py +48 -37
- paddlex/inference/pipelines/_parallel.py +172 -0
- paddlex/inference/pipelines/anomaly_detection/__init__.py +1 -1
- paddlex/inference/pipelines/anomaly_detection/pipeline.py +29 -9
- paddlex/inference/pipelines/attribute_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/attribute_recognition/pipeline.py +24 -9
- paddlex/inference/pipelines/attribute_recognition/result.py +10 -8
- paddlex/inference/pipelines/base.py +43 -13
- paddlex/inference/pipelines/components/__init__.py +14 -8
- paddlex/inference/pipelines/components/chat_server/__init__.py +1 -1
- paddlex/inference/pipelines/components/chat_server/base.py +2 -2
- paddlex/inference/pipelines/components/chat_server/openai_bot_chat.py +8 -8
- paddlex/inference/pipelines/components/common/__init__.py +5 -4
- paddlex/inference/pipelines/components/common/base_operator.py +2 -1
- paddlex/inference/pipelines/components/common/base_result.py +3 -2
- paddlex/inference/pipelines/components/common/convert_points_and_boxes.py +1 -2
- paddlex/inference/pipelines/components/common/crop_image_regions.py +11 -5
- paddlex/inference/pipelines/components/common/seal_det_warp.py +44 -13
- paddlex/inference/pipelines/components/common/sort_boxes.py +4 -2
- paddlex/inference/pipelines/components/common/warp_image.py +50 -0
- paddlex/inference/pipelines/components/faisser.py +10 -5
- paddlex/inference/pipelines/components/prompt_engineering/__init__.py +2 -2
- paddlex/inference/pipelines/components/prompt_engineering/base.py +2 -2
- paddlex/inference/pipelines/components/prompt_engineering/generate_ensemble_prompt.py +2 -1
- paddlex/inference/pipelines/components/prompt_engineering/generate_kie_prompt.py +2 -2
- paddlex/inference/pipelines/components/retriever/__init__.py +2 -2
- paddlex/inference/pipelines/components/retriever/base.py +18 -16
- paddlex/inference/pipelines/components/retriever/openai_bot_retriever.py +2 -2
- paddlex/inference/pipelines/components/retriever/qianfan_bot_retriever.py +87 -84
- paddlex/inference/pipelines/components/utils/__init__.py +1 -1
- paddlex/inference/pipelines/components/utils/mixin.py +7 -7
- paddlex/inference/pipelines/doc_preprocessor/__init__.py +1 -1
- paddlex/inference/pipelines/doc_preprocessor/pipeline.py +70 -51
- paddlex/inference/pipelines/doc_preprocessor/result.py +5 -10
- paddlex/inference/pipelines/doc_understanding/__init__.py +15 -0
- paddlex/inference/pipelines/doc_understanding/pipeline.py +71 -0
- paddlex/inference/pipelines/face_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/face_recognition/pipeline.py +3 -1
- paddlex/inference/pipelines/face_recognition/result.py +3 -2
- paddlex/inference/pipelines/formula_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/formula_recognition/pipeline.py +137 -93
- paddlex/inference/pipelines/formula_recognition/result.py +20 -29
- paddlex/inference/pipelines/image_classification/__init__.py +1 -1
- paddlex/inference/pipelines/image_classification/pipeline.py +30 -11
- paddlex/inference/pipelines/image_multilabel_classification/__init__.py +1 -1
- paddlex/inference/pipelines/image_multilabel_classification/pipeline.py +31 -12
- paddlex/inference/pipelines/instance_segmentation/__init__.py +1 -1
- paddlex/inference/pipelines/instance_segmentation/pipeline.py +30 -9
- paddlex/inference/pipelines/keypoint_detection/__init__.py +1 -1
- paddlex/inference/pipelines/keypoint_detection/pipeline.py +30 -9
- paddlex/inference/pipelines/layout_parsing/__init__.py +1 -1
- paddlex/inference/pipelines/layout_parsing/pipeline.py +54 -56
- paddlex/inference/pipelines/layout_parsing/pipeline_v2.py +904 -261
- paddlex/inference/pipelines/layout_parsing/result.py +9 -21
- paddlex/inference/pipelines/layout_parsing/result_v2.py +525 -250
- paddlex/inference/pipelines/layout_parsing/setting.py +87 -0
- paddlex/inference/pipelines/layout_parsing/utils.py +570 -2004
- paddlex/inference/pipelines/layout_parsing/xycut_enhanced/__init__.py +16 -0
- paddlex/inference/pipelines/layout_parsing/xycut_enhanced/utils.py +1144 -0
- paddlex/inference/pipelines/layout_parsing/xycut_enhanced/xycuts.py +563 -0
- paddlex/inference/pipelines/{3d_bev_detection → m_3d_bev_detection}/__init__.py +1 -1
- paddlex/inference/pipelines/{3d_bev_detection → m_3d_bev_detection}/pipeline.py +17 -10
- paddlex/inference/pipelines/multilingual_speech_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/multilingual_speech_recognition/pipeline.py +17 -6
- paddlex/inference/pipelines/object_detection/__init__.py +1 -1
- paddlex/inference/pipelines/object_detection/pipeline.py +29 -9
- paddlex/inference/pipelines/ocr/__init__.py +1 -1
- paddlex/inference/pipelines/ocr/pipeline.py +151 -77
- paddlex/inference/pipelines/ocr/result.py +31 -24
- paddlex/inference/pipelines/open_vocabulary_detection/__init__.py +1 -1
- paddlex/inference/pipelines/open_vocabulary_detection/pipeline.py +17 -6
- paddlex/inference/pipelines/open_vocabulary_segmentation/__init__.py +1 -1
- paddlex/inference/pipelines/open_vocabulary_segmentation/pipeline.py +17 -6
- paddlex/inference/pipelines/pp_chatocr/__init__.py +1 -1
- paddlex/inference/pipelines/pp_chatocr/pipeline_base.py +14 -5
- paddlex/inference/pipelines/pp_chatocr/pipeline_v3.py +22 -14
- paddlex/inference/pipelines/pp_chatocr/pipeline_v4.py +34 -16
- paddlex/inference/pipelines/pp_shitu_v2/__init__.py +1 -1
- paddlex/inference/pipelines/pp_shitu_v2/pipeline.py +12 -8
- paddlex/inference/pipelines/pp_shitu_v2/result.py +4 -4
- paddlex/inference/pipelines/rotated_object_detection/__init__.py +1 -1
- paddlex/inference/pipelines/rotated_object_detection/pipeline.py +30 -9
- paddlex/inference/pipelines/seal_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/seal_recognition/pipeline.py +127 -63
- paddlex/inference/pipelines/seal_recognition/result.py +4 -2
- paddlex/inference/pipelines/semantic_segmentation/__init__.py +1 -1
- paddlex/inference/pipelines/semantic_segmentation/pipeline.py +30 -9
- paddlex/inference/pipelines/small_object_detection/__init__.py +1 -1
- paddlex/inference/pipelines/small_object_detection/pipeline.py +30 -9
- paddlex/inference/pipelines/table_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/table_recognition/pipeline.py +61 -37
- paddlex/inference/pipelines/table_recognition/pipeline_v2.py +668 -65
- paddlex/inference/pipelines/table_recognition/result.py +12 -10
- paddlex/inference/pipelines/table_recognition/table_recognition_post_processing.py +12 -8
- paddlex/inference/pipelines/table_recognition/table_recognition_post_processing_v2.py +55 -37
- paddlex/inference/pipelines/table_recognition/utils.py +1 -1
- paddlex/inference/pipelines/ts_anomaly_detection/__init__.py +1 -1
- paddlex/inference/pipelines/ts_anomaly_detection/pipeline.py +16 -6
- paddlex/inference/pipelines/ts_classification/__init__.py +1 -1
- paddlex/inference/pipelines/ts_classification/pipeline.py +16 -6
- paddlex/inference/pipelines/ts_forecasting/__init__.py +1 -1
- paddlex/inference/pipelines/ts_forecasting/pipeline.py +16 -6
- paddlex/inference/pipelines/video_classification/__init__.py +1 -1
- paddlex/inference/pipelines/video_classification/pipeline.py +17 -6
- paddlex/inference/pipelines/video_detection/__init__.py +1 -1
- paddlex/inference/pipelines/video_detection/pipeline.py +20 -7
- paddlex/inference/serving/__init__.py +5 -1
- paddlex/inference/serving/basic_serving/__init__.py +1 -1
- paddlex/inference/serving/basic_serving/_app.py +31 -19
- paddlex/inference/serving/basic_serving/_pipeline_apps/__init__.py +7 -4
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/__init__.py +1 -1
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/common.py +12 -4
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/image_recognition.py +1 -1
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/ocr.py +7 -2
- paddlex/inference/serving/basic_serving/_pipeline_apps/anomaly_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/doc_preprocessor.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/doc_understanding.py +153 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/face_recognition.py +16 -13
- paddlex/inference/serving/basic_serving/_pipeline_apps/formula_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/human_keypoint_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/image_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/image_multilabel_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/instance_segmentation.py +13 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/layout_parsing.py +10 -8
- paddlex/inference/serving/basic_serving/_pipeline_apps/m_3d_bev_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/multilingual_speech_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/object_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/ocr.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_segmentation.py +13 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/pedestrian_attribute_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv3_doc.py +14 -12
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv4_doc.py +17 -14
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_shituv2.py +16 -13
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_structurev3.py +16 -9
- paddlex/inference/serving/basic_serving/_pipeline_apps/rotated_object_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/seal_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/semantic_segmentation.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/small_object_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition.py +11 -12
- paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition_v2.py +14 -12
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_anomaly_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_forecast.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/vehicle_attribute_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/video_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/video_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_server.py +9 -4
- paddlex/inference/serving/infra/__init__.py +1 -1
- paddlex/inference/serving/infra/config.py +1 -1
- paddlex/inference/serving/infra/models.py +13 -6
- paddlex/inference/serving/infra/storage.py +9 -4
- paddlex/inference/serving/infra/utils.py +54 -28
- paddlex/inference/serving/schemas/__init__.py +1 -1
- paddlex/inference/serving/schemas/anomaly_detection.py +1 -1
- paddlex/inference/serving/schemas/doc_preprocessor.py +1 -1
- paddlex/inference/serving/schemas/doc_understanding.py +78 -0
- paddlex/inference/serving/schemas/face_recognition.py +1 -1
- paddlex/inference/serving/schemas/formula_recognition.py +2 -2
- paddlex/inference/serving/schemas/human_keypoint_detection.py +1 -1
- paddlex/inference/serving/schemas/image_classification.py +1 -1
- paddlex/inference/serving/schemas/image_multilabel_classification.py +1 -1
- paddlex/inference/serving/schemas/instance_segmentation.py +1 -1
- paddlex/inference/serving/schemas/layout_parsing.py +2 -3
- paddlex/inference/serving/schemas/m_3d_bev_detection.py +1 -1
- paddlex/inference/serving/schemas/multilingual_speech_recognition.py +1 -1
- paddlex/inference/serving/schemas/object_detection.py +1 -1
- paddlex/inference/serving/schemas/ocr.py +1 -1
- paddlex/inference/serving/schemas/open_vocabulary_detection.py +1 -1
- paddlex/inference/serving/schemas/open_vocabulary_segmentation.py +1 -1
- paddlex/inference/serving/schemas/pedestrian_attribute_recognition.py +1 -1
- paddlex/inference/serving/schemas/pp_chatocrv3_doc.py +2 -3
- paddlex/inference/serving/schemas/pp_chatocrv4_doc.py +3 -3
- paddlex/inference/serving/schemas/pp_shituv2.py +1 -1
- paddlex/inference/serving/schemas/pp_structurev3.py +11 -7
- paddlex/inference/serving/schemas/rotated_object_detection.py +1 -1
- paddlex/inference/serving/schemas/seal_recognition.py +2 -2
- paddlex/inference/serving/schemas/semantic_segmentation.py +1 -1
- paddlex/inference/serving/schemas/shared/__init__.py +1 -1
- paddlex/inference/serving/schemas/shared/classification.py +1 -1
- paddlex/inference/serving/schemas/shared/image_segmentation.py +1 -1
- paddlex/inference/serving/schemas/shared/object_detection.py +1 -1
- paddlex/inference/serving/schemas/shared/ocr.py +1 -1
- paddlex/inference/serving/schemas/small_object_detection.py +1 -1
- paddlex/inference/serving/schemas/table_recognition.py +3 -7
- paddlex/inference/serving/schemas/table_recognition_v2.py +6 -7
- paddlex/inference/serving/schemas/ts_anomaly_detection.py +1 -1
- paddlex/inference/serving/schemas/ts_classification.py +1 -1
- paddlex/inference/serving/schemas/ts_forecast.py +1 -1
- paddlex/inference/serving/schemas/vehicle_attribute_recognition.py +1 -1
- paddlex/inference/serving/schemas/video_classification.py +1 -1
- paddlex/inference/serving/schemas/video_detection.py +1 -1
- paddlex/inference/utils/__init__.py +1 -1
- paddlex/inference/utils/benchmark.py +332 -179
- paddlex/inference/utils/color_map.py +1 -1
- paddlex/inference/utils/get_pipeline_path.py +1 -1
- paddlex/inference/utils/hpi.py +258 -0
- paddlex/inference/utils/hpi_model_info_collection.json +2331 -0
- paddlex/inference/utils/io/__init__.py +11 -11
- paddlex/inference/utils/io/readers.py +31 -27
- paddlex/inference/utils/io/style.py +21 -14
- paddlex/inference/utils/io/tablepyxl.py +13 -5
- paddlex/inference/utils/io/writers.py +9 -10
- paddlex/inference/utils/mkldnn_blocklist.py +25 -0
- paddlex/inference/utils/model_paths.py +48 -0
- paddlex/inference/utils/{new_ir_blacklist.py → new_ir_blocklist.py} +1 -2
- paddlex/inference/utils/official_models.py +278 -262
- paddlex/inference/utils/pp_option.py +184 -92
- paddlex/inference/utils/trt_blocklist.py +43 -0
- paddlex/inference/utils/trt_config.py +420 -0
- paddlex/model.py +30 -12
- paddlex/modules/__init__.py +57 -80
- paddlex/modules/anomaly_detection/__init__.py +2 -2
- paddlex/modules/anomaly_detection/dataset_checker/__init__.py +2 -3
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +6 -3
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/check_dataset.py +8 -4
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +7 -4
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/split_dataset.py +2 -2
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/visualizer.py +7 -2
- paddlex/modules/anomaly_detection/evaluator.py +3 -3
- paddlex/modules/anomaly_detection/exportor.py +1 -1
- paddlex/modules/anomaly_detection/model_list.py +1 -1
- paddlex/modules/anomaly_detection/trainer.py +3 -4
- paddlex/modules/base/__init__.py +5 -5
- paddlex/modules/base/build_model.py +1 -2
- paddlex/modules/base/dataset_checker/__init__.py +2 -2
- paddlex/modules/base/dataset_checker/dataset_checker.py +4 -4
- paddlex/modules/base/dataset_checker/utils.py +1 -3
- paddlex/modules/base/evaluator.py +13 -13
- paddlex/modules/base/exportor.py +12 -13
- paddlex/modules/base/trainer.py +21 -11
- paddlex/modules/base/utils/__init__.py +13 -0
- paddlex/modules/base/utils/cinn_setting.py +89 -0
- paddlex/modules/base/utils/coco_eval.py +94 -0
- paddlex/modules/base/utils/topk_eval.py +118 -0
- paddlex/modules/doc_vlm/__init__.py +18 -0
- paddlex/modules/doc_vlm/dataset_checker.py +29 -0
- paddlex/modules/doc_vlm/evaluator.py +29 -0
- paddlex/modules/doc_vlm/exportor.py +29 -0
- paddlex/modules/doc_vlm/model_list.py +16 -0
- paddlex/modules/doc_vlm/trainer.py +41 -0
- paddlex/modules/face_recognition/__init__.py +2 -2
- paddlex/modules/face_recognition/dataset_checker/__init__.py +2 -2
- paddlex/modules/face_recognition/dataset_checker/dataset_src/__init__.py +1 -1
- paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py +3 -5
- paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/visualizer.py +2 -5
- paddlex/modules/face_recognition/evaluator.py +3 -3
- paddlex/modules/face_recognition/exportor.py +1 -1
- paddlex/modules/face_recognition/model_list.py +1 -1
- paddlex/modules/face_recognition/trainer.py +1 -1
- paddlex/modules/formula_recognition/__init__.py +2 -2
- paddlex/modules/formula_recognition/dataset_checker/__init__.py +3 -3
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/analyse_dataset.py +13 -12
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/check_dataset.py +2 -6
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/convert_dataset.py +11 -10
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/split_dataset.py +1 -2
- paddlex/modules/formula_recognition/evaluator.py +6 -3
- paddlex/modules/formula_recognition/exportor.py +1 -1
- paddlex/modules/formula_recognition/model_list.py +4 -1
- paddlex/modules/formula_recognition/trainer.py +5 -3
- paddlex/modules/general_recognition/__init__.py +2 -2
- paddlex/modules/general_recognition/dataset_checker/__init__.py +2 -2
- paddlex/modules/general_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/general_recognition/dataset_checker/dataset_src/analyse_dataset.py +7 -9
- paddlex/modules/general_recognition/dataset_checker/dataset_src/check_dataset.py +4 -5
- paddlex/modules/general_recognition/dataset_checker/dataset_src/convert_dataset.py +6 -5
- paddlex/modules/general_recognition/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/visualizer.py +2 -5
- paddlex/modules/general_recognition/evaluator.py +2 -2
- paddlex/modules/general_recognition/exportor.py +1 -1
- paddlex/modules/general_recognition/model_list.py +1 -1
- paddlex/modules/general_recognition/trainer.py +1 -1
- paddlex/modules/image_classification/__init__.py +2 -2
- paddlex/modules/image_classification/dataset_checker/__init__.py +2 -2
- paddlex/modules/image_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/image_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -9
- paddlex/modules/image_classification/dataset_checker/dataset_src/check_dataset.py +4 -3
- paddlex/modules/image_classification/dataset_checker/dataset_src/convert_dataset.py +4 -4
- paddlex/modules/image_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/image_classification/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/image_classification/dataset_checker/dataset_src/utils/visualizer.py +2 -5
- paddlex/modules/image_classification/evaluator.py +3 -3
- paddlex/modules/image_classification/exportor.py +1 -1
- paddlex/modules/image_classification/model_list.py +2 -1
- paddlex/modules/image_classification/trainer.py +3 -3
- paddlex/modules/image_unwarping/__init__.py +1 -1
- paddlex/modules/image_unwarping/model_list.py +1 -1
- paddlex/modules/instance_segmentation/__init__.py +2 -2
- paddlex/modules/instance_segmentation/dataset_checker/__init__.py +2 -3
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/analyse_dataset.py +9 -5
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/check_dataset.py +8 -5
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/convert_dataset.py +8 -8
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/split_dataset.py +7 -4
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/visualizer.py +10 -8
- paddlex/modules/instance_segmentation/evaluator.py +2 -2
- paddlex/modules/instance_segmentation/exportor.py +1 -1
- paddlex/modules/instance_segmentation/model_list.py +1 -1
- paddlex/modules/instance_segmentation/trainer.py +1 -1
- paddlex/modules/keypoint_detection/__init__.py +2 -2
- paddlex/modules/keypoint_detection/dataset_checker/__init__.py +2 -2
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/__init__.py +1 -1
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/check_dataset.py +10 -5
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/visualizer.py +8 -3
- paddlex/modules/keypoint_detection/evaluator.py +2 -2
- paddlex/modules/keypoint_detection/exportor.py +1 -1
- paddlex/modules/keypoint_detection/model_list.py +1 -1
- paddlex/modules/keypoint_detection/trainer.py +2 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/__init__.py +2 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/__init__.py +3 -3
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/analyse_dataset.py +8 -8
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/check_dataset.py +1 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/evaluator.py +3 -3
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/exportor.py +1 -1
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/model_list.py +1 -1
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/trainer.py +5 -7
- paddlex/modules/multilabel_classification/__init__.py +2 -2
- paddlex/modules/multilabel_classification/dataset_checker/__init__.py +2 -2
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -9
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/check_dataset.py +4 -3
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/convert_dataset.py +10 -7
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/visualizer.py +1 -5
- paddlex/modules/multilabel_classification/evaluator.py +3 -3
- paddlex/modules/multilabel_classification/exportor.py +1 -1
- paddlex/modules/multilabel_classification/model_list.py +1 -1
- paddlex/modules/multilabel_classification/trainer.py +3 -3
- paddlex/modules/multilingual_speech_recognition/__init__.py +2 -2
- paddlex/modules/multilingual_speech_recognition/dataset_checker.py +3 -3
- paddlex/modules/multilingual_speech_recognition/evaluator.py +3 -3
- paddlex/modules/multilingual_speech_recognition/exportor.py +3 -3
- paddlex/modules/multilingual_speech_recognition/model_list.py +1 -1
- paddlex/modules/multilingual_speech_recognition/trainer.py +7 -5
- paddlex/modules/object_detection/__init__.py +2 -2
- paddlex/modules/object_detection/dataset_checker/__init__.py +2 -11
- paddlex/modules/object_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/object_detection/dataset_checker/dataset_src/analyse_dataset.py +10 -8
- paddlex/modules/object_detection/dataset_checker/dataset_src/check_dataset.py +10 -5
- paddlex/modules/object_detection/dataset_checker/dataset_src/convert_dataset.py +17 -12
- paddlex/modules/object_detection/dataset_checker/dataset_src/split_dataset.py +8 -4
- paddlex/modules/object_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/object_detection/dataset_checker/dataset_src/utils/visualizer.py +9 -8
- paddlex/modules/object_detection/evaluator.py +11 -6
- paddlex/modules/object_detection/exportor.py +1 -1
- paddlex/modules/object_detection/model_list.py +3 -1
- paddlex/modules/object_detection/trainer.py +4 -5
- paddlex/modules/open_vocabulary_detection/__init__.py +2 -2
- paddlex/modules/open_vocabulary_detection/dataset_checker.py +3 -3
- paddlex/modules/open_vocabulary_detection/evaluator.py +3 -3
- paddlex/modules/open_vocabulary_detection/exportor.py +3 -3
- paddlex/modules/open_vocabulary_detection/model_list.py +2 -4
- paddlex/modules/open_vocabulary_detection/trainer.py +7 -5
- paddlex/modules/open_vocabulary_segmentation/__init__.py +2 -2
- paddlex/modules/open_vocabulary_segmentation/dataset_checker.py +3 -3
- paddlex/modules/open_vocabulary_segmentation/evaluator.py +3 -3
- paddlex/modules/open_vocabulary_segmentation/exportor.py +3 -3
- paddlex/modules/open_vocabulary_segmentation/model_list.py +1 -1
- paddlex/modules/open_vocabulary_segmentation/trainer.py +7 -5
- paddlex/modules/semantic_segmentation/__init__.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +2 -3
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/analyse_dataset.py +6 -3
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/convert_dataset.py +7 -4
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/split_dataset.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/visualizer.py +6 -2
- paddlex/modules/semantic_segmentation/evaluator.py +3 -3
- paddlex/modules/semantic_segmentation/exportor.py +1 -1
- paddlex/modules/semantic_segmentation/model_list.py +1 -1
- paddlex/modules/semantic_segmentation/trainer.py +3 -4
- paddlex/modules/table_recognition/__init__.py +2 -2
- paddlex/modules/table_recognition/dataset_checker/__init__.py +5 -5
- paddlex/modules/table_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/table_recognition/dataset_checker/dataset_src/analyse_dataset.py +3 -2
- paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +8 -7
- paddlex/modules/table_recognition/dataset_checker/dataset_src/split_dataset.py +2 -1
- paddlex/modules/table_recognition/evaluator.py +3 -3
- paddlex/modules/table_recognition/exportor.py +1 -1
- paddlex/modules/table_recognition/model_list.py +1 -1
- paddlex/modules/table_recognition/trainer.py +2 -5
- paddlex/modules/text_detection/__init__.py +2 -2
- paddlex/modules/text_detection/dataset_checker/__init__.py +4 -6
- paddlex/modules/text_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/text_detection/dataset_checker/dataset_src/analyse_dataset.py +12 -9
- paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +3 -3
- paddlex/modules/text_detection/dataset_checker/dataset_src/split_dataset.py +3 -3
- paddlex/modules/text_detection/evaluator.py +3 -3
- paddlex/modules/text_detection/exportor.py +1 -1
- paddlex/modules/text_detection/model_list.py +3 -1
- paddlex/modules/text_detection/trainer.py +2 -5
- paddlex/modules/text_recognition/__init__.py +2 -2
- paddlex/modules/text_recognition/dataset_checker/__init__.py +4 -5
- paddlex/modules/text_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/text_recognition/dataset_checker/dataset_src/analyse_dataset.py +13 -12
- paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +2 -5
- paddlex/modules/text_recognition/dataset_checker/dataset_src/convert_dataset.py +11 -10
- paddlex/modules/text_recognition/dataset_checker/dataset_src/split_dataset.py +1 -2
- paddlex/modules/text_recognition/evaluator.py +3 -3
- paddlex/modules/text_recognition/exportor.py +1 -1
- paddlex/modules/text_recognition/model_list.py +3 -1
- paddlex/modules/text_recognition/trainer.py +2 -3
- paddlex/modules/ts_anomaly_detection/__init__.py +2 -2
- paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +4 -5
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +1 -9
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +2 -6
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/split_dataset.py +4 -4
- paddlex/modules/ts_anomaly_detection/evaluator.py +3 -3
- paddlex/modules/ts_anomaly_detection/exportor.py +2 -3
- paddlex/modules/ts_anomaly_detection/model_list.py +1 -1
- paddlex/modules/ts_anomaly_detection/trainer.py +8 -8
- paddlex/modules/ts_classification/__init__.py +2 -2
- paddlex/modules/ts_classification/dataset_checker/__init__.py +4 -5
- paddlex/modules/ts_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/ts_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -5
- paddlex/modules/ts_classification/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/ts_classification/dataset_checker/dataset_src/convert_dataset.py +2 -6
- paddlex/modules/ts_classification/dataset_checker/dataset_src/split_dataset.py +5 -5
- paddlex/modules/ts_classification/evaluator.py +3 -3
- paddlex/modules/ts_classification/exportor.py +2 -3
- paddlex/modules/ts_classification/model_list.py +1 -1
- paddlex/modules/ts_classification/trainer.py +7 -7
- paddlex/modules/ts_forecast/__init__.py +2 -2
- paddlex/modules/ts_forecast/dataset_checker/__init__.py +4 -5
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/analyse_dataset.py +1 -9
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/convert_dataset.py +2 -6
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/split_dataset.py +4 -4
- paddlex/modules/ts_forecast/evaluator.py +3 -3
- paddlex/modules/ts_forecast/exportor.py +2 -3
- paddlex/modules/ts_forecast/model_list.py +1 -1
- paddlex/modules/ts_forecast/trainer.py +7 -7
- paddlex/modules/video_classification/__init__.py +2 -2
- paddlex/modules/video_classification/dataset_checker/__init__.py +2 -2
- paddlex/modules/video_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/video_classification/dataset_checker/dataset_src/analyse_dataset.py +9 -9
- paddlex/modules/video_classification/dataset_checker/dataset_src/check_dataset.py +2 -3
- paddlex/modules/video_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/video_classification/evaluator.py +3 -3
- paddlex/modules/video_classification/exportor.py +1 -1
- paddlex/modules/video_classification/model_list.py +1 -1
- paddlex/modules/video_classification/trainer.py +3 -3
- paddlex/modules/video_detection/__init__.py +2 -2
- paddlex/modules/video_detection/dataset_checker/__init__.py +2 -2
- paddlex/modules/video_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/video_detection/dataset_checker/dataset_src/analyse_dataset.py +8 -9
- paddlex/modules/video_detection/dataset_checker/dataset_src/check_dataset.py +3 -5
- paddlex/modules/video_detection/evaluator.py +3 -3
- paddlex/modules/video_detection/exportor.py +1 -1
- paddlex/modules/video_detection/model_list.py +1 -1
- paddlex/modules/video_detection/trainer.py +3 -3
- paddlex/ops/__init__.py +7 -4
- paddlex/ops/iou3d_nms/iou3d_cpu.cpp +8 -6
- paddlex/ops/iou3d_nms/iou3d_cpu.h +3 -2
- paddlex/ops/iou3d_nms/iou3d_nms.cpp +8 -6
- paddlex/ops/iou3d_nms/iou3d_nms.h +6 -4
- paddlex/ops/iou3d_nms/iou3d_nms_api.cpp +24 -18
- paddlex/ops/iou3d_nms/iou3d_nms_kernel.cu +9 -7
- paddlex/ops/setup.py +3 -3
- paddlex/ops/voxel/voxelize_op.cc +22 -19
- paddlex/ops/voxel/voxelize_op.cu +25 -25
- paddlex/paddlex_cli.py +104 -87
- paddlex/repo_apis/Paddle3D_api/__init__.py +1 -1
- paddlex/repo_apis/Paddle3D_api/bev_fusion/__init__.py +1 -1
- paddlex/repo_apis/Paddle3D_api/bev_fusion/config.py +1 -1
- paddlex/repo_apis/Paddle3D_api/bev_fusion/model.py +6 -6
- paddlex/repo_apis/Paddle3D_api/bev_fusion/register.py +2 -2
- paddlex/repo_apis/Paddle3D_api/bev_fusion/runner.py +1 -1
- paddlex/repo_apis/Paddle3D_api/pp3d_config.py +3 -2
- paddlex/repo_apis/PaddleClas_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleClas_api/cls/__init__.py +3 -3
- paddlex/repo_apis/PaddleClas_api/cls/config.py +5 -4
- paddlex/repo_apis/PaddleClas_api/cls/model.py +4 -4
- paddlex/repo_apis/PaddleClas_api/cls/register.py +12 -3
- paddlex/repo_apis/PaddleClas_api/cls/runner.py +2 -3
- paddlex/repo_apis/PaddleClas_api/shitu_rec/__init__.py +2 -2
- paddlex/repo_apis/PaddleClas_api/shitu_rec/config.py +2 -2
- paddlex/repo_apis/PaddleClas_api/shitu_rec/model.py +1 -4
- paddlex/repo_apis/PaddleClas_api/shitu_rec/register.py +2 -2
- paddlex/repo_apis/PaddleClas_api/shitu_rec/runner.py +1 -6
- paddlex/repo_apis/PaddleDetection_api/__init__.py +2 -2
- paddlex/repo_apis/PaddleDetection_api/config_helper.py +3 -3
- paddlex/repo_apis/PaddleDetection_api/instance_seg/__init__.py +2 -2
- paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +2 -3
- paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +4 -4
- paddlex/repo_apis/PaddleDetection_api/instance_seg/register.py +2 -3
- paddlex/repo_apis/PaddleDetection_api/instance_seg/runner.py +2 -3
- paddlex/repo_apis/PaddleDetection_api/object_det/__init__.py +3 -3
- paddlex/repo_apis/PaddleDetection_api/object_det/config.py +5 -4
- paddlex/repo_apis/PaddleDetection_api/object_det/model.py +6 -7
- paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +26 -1
- paddlex/repo_apis/PaddleDetection_api/object_det/register.py +32 -3
- paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +2 -3
- paddlex/repo_apis/PaddleNLP_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/__init__.py +4 -3
- paddlex/repo_apis/PaddleOCR_api/config_utils.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/formula_rec/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/formula_rec/config.py +7 -6
- paddlex/repo_apis/PaddleOCR_api/formula_rec/model.py +9 -13
- paddlex/repo_apis/PaddleOCR_api/formula_rec/register.py +29 -3
- paddlex/repo_apis/PaddleOCR_api/formula_rec/runner.py +2 -3
- paddlex/repo_apis/PaddleOCR_api/table_rec/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/table_rec/config.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/table_rec/model.py +4 -4
- paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +2 -3
- paddlex/repo_apis/PaddleOCR_api/table_rec/runner.py +3 -3
- paddlex/repo_apis/PaddleOCR_api/text_det/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/text_det/config.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/text_det/model.py +4 -4
- paddlex/repo_apis/PaddleOCR_api/text_det/register.py +20 -3
- paddlex/repo_apis/PaddleOCR_api/text_det/runner.py +3 -3
- paddlex/repo_apis/PaddleOCR_api/text_rec/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +7 -6
- paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +9 -13
- paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +20 -3
- paddlex/repo_apis/PaddleOCR_api/text_rec/runner.py +2 -3
- paddlex/repo_apis/PaddleSeg_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleSeg_api/base_seg_config.py +2 -2
- paddlex/repo_apis/PaddleSeg_api/seg/__init__.py +1 -1
- paddlex/repo_apis/PaddleSeg_api/seg/config.py +3 -6
- paddlex/repo_apis/PaddleSeg_api/seg/model.py +6 -6
- paddlex/repo_apis/PaddleSeg_api/seg/register.py +2 -3
- paddlex/repo_apis/PaddleSeg_api/seg/runner.py +2 -3
- paddlex/repo_apis/PaddleTS_api/__init__.py +4 -3
- paddlex/repo_apis/PaddleTS_api/ts_ad/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_ad/config.py +5 -6
- paddlex/repo_apis/PaddleTS_api/ts_ad/register.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_ad/runner.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_base/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_base/config.py +2 -4
- paddlex/repo_apis/PaddleTS_api/ts_base/model.py +4 -4
- paddlex/repo_apis/PaddleTS_api/ts_base/runner.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_cls/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_cls/config.py +4 -5
- paddlex/repo_apis/PaddleTS_api/ts_cls/register.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_cls/runner.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_fc/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_fc/config.py +6 -7
- paddlex/repo_apis/PaddleTS_api/ts_fc/register.py +1 -1
- paddlex/repo_apis/PaddleVideo_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleVideo_api/config_utils.py +1 -1
- paddlex/repo_apis/PaddleVideo_api/video_cls/__init__.py +3 -3
- paddlex/repo_apis/PaddleVideo_api/video_cls/config.py +5 -4
- paddlex/repo_apis/PaddleVideo_api/video_cls/model.py +4 -4
- paddlex/repo_apis/PaddleVideo_api/video_cls/register.py +2 -3
- paddlex/repo_apis/PaddleVideo_api/video_cls/runner.py +2 -3
- paddlex/repo_apis/PaddleVideo_api/video_det/__init__.py +3 -3
- paddlex/repo_apis/PaddleVideo_api/video_det/config.py +5 -4
- paddlex/repo_apis/PaddleVideo_api/video_det/model.py +5 -5
- paddlex/repo_apis/PaddleVideo_api/video_det/register.py +2 -3
- paddlex/repo_apis/PaddleVideo_api/video_det/runner.py +2 -3
- paddlex/repo_apis/__init__.py +1 -1
- paddlex/repo_apis/base/__init__.py +4 -5
- paddlex/repo_apis/base/config.py +3 -4
- paddlex/repo_apis/base/model.py +11 -19
- paddlex/repo_apis/base/register.py +1 -1
- paddlex/repo_apis/base/runner.py +11 -12
- paddlex/repo_apis/base/utils/__init__.py +1 -1
- paddlex/repo_apis/base/utils/arg.py +1 -1
- paddlex/repo_apis/base/utils/subprocess.py +1 -1
- paddlex/repo_manager/__init__.py +2 -9
- paddlex/repo_manager/core.py +12 -30
- paddlex/repo_manager/meta.py +41 -31
- paddlex/repo_manager/repo.py +171 -161
- paddlex/repo_manager/utils.py +13 -224
- paddlex/utils/__init__.py +1 -1
- paddlex/utils/cache.py +8 -10
- paddlex/utils/config.py +6 -5
- paddlex/utils/{custom_device_whitelist.py → custom_device_list.py} +53 -199
- paddlex/utils/deps.py +249 -0
- paddlex/utils/device.py +87 -36
- paddlex/utils/download.py +4 -4
- paddlex/utils/env.py +37 -7
- paddlex/utils/errors/__init__.py +1 -1
- paddlex/utils/errors/dataset_checker.py +1 -1
- paddlex/utils/errors/others.py +2 -16
- paddlex/utils/file_interface.py +4 -5
- paddlex/utils/flags.py +17 -12
- paddlex/utils/fonts/__init__.py +36 -5
- paddlex/utils/func_register.py +1 -1
- paddlex/utils/install.py +87 -0
- paddlex/utils/interactive_get_pipeline.py +3 -3
- paddlex/utils/lazy_loader.py +3 -3
- paddlex/utils/logging.py +10 -1
- paddlex/utils/misc.py +6 -6
- paddlex/utils/pipeline_arguments.py +15 -7
- paddlex/utils/result_saver.py +4 -5
- paddlex/utils/subclass_register.py +2 -4
- paddlex/version.py +2 -1
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/METADATA +237 -102
- paddlex-3.0.1.dist-info/RECORD +1095 -0
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/WHEEL +1 -1
- paddlex/inference/models/base/predictor/basic_predictor.py +0 -139
- paddlex/paddle2onnx_requirements.txt +0 -1
- paddlex/repo_manager/requirements.txt +0 -21
- paddlex/serving_requirements.txt +0 -9
- paddlex-3.0.0rc0.dist-info/RECORD +0 -1015
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/entry_points.txt +0 -0
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info/licenses}/LICENSE +0 -0
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -28,20 +28,25 @@ from typing import (
|
|
28
28
|
TypeVar,
|
29
29
|
)
|
30
30
|
|
31
|
-
import aiohttp
|
32
|
-
import fastapi
|
33
|
-
from fastapi.encoders import jsonable_encoder
|
34
|
-
from fastapi.exceptions import RequestValidationError
|
35
|
-
from fastapi.responses import JSONResponse
|
36
|
-
from starlette.exceptions import HTTPException
|
37
31
|
from typing_extensions import ParamSpec, TypeGuard
|
38
32
|
|
39
33
|
from ....utils import logging
|
34
|
+
from ....utils.deps import class_requires_deps, function_requires_deps, is_dep_available
|
40
35
|
from ...pipelines import BasePipeline
|
41
36
|
from ..infra.config import AppConfig
|
42
|
-
from ..infra.models import
|
37
|
+
from ..infra.models import AIStudioNoResultResponse
|
43
38
|
from ..infra.utils import call_async, generate_log_id
|
44
39
|
|
40
|
+
if is_dep_available("aiohttp"):
|
41
|
+
import aiohttp
|
42
|
+
if is_dep_available("fastapi"):
|
43
|
+
import fastapi
|
44
|
+
from fastapi.encoders import jsonable_encoder
|
45
|
+
from fastapi.exceptions import RequestValidationError
|
46
|
+
from fastapi.responses import JSONResponse
|
47
|
+
if is_dep_available("starlette"):
|
48
|
+
from starlette.exceptions import HTTPException
|
49
|
+
|
45
50
|
PipelineT = TypeVar("PipelineT", bound=BasePipeline)
|
46
51
|
P = ParamSpec("P")
|
47
52
|
R = TypeVar("R")
|
@@ -64,6 +69,7 @@ def _is_error(obj: object) -> TypeGuard[_Error]:
|
|
64
69
|
# for type hinting. However, I would stick with the current design, as it does
|
65
70
|
# not introduce runtime overhead at the moment and may prove useful in the
|
66
71
|
# future.
|
72
|
+
@class_requires_deps("fastapi")
|
67
73
|
class PipelineWrapper(Generic[PipelineT]):
|
68
74
|
def __init__(self, pipeline: PipelineT) -> None:
|
69
75
|
super().__init__()
|
@@ -94,6 +100,7 @@ class PipelineWrapper(Generic[PipelineT]):
|
|
94
100
|
return await call_async(func, *args, **kwargs)
|
95
101
|
|
96
102
|
|
103
|
+
@class_requires_deps("aiohttp")
|
97
104
|
class AppContext(Generic[PipelineT]):
|
98
105
|
def __init__(self, *, config: AppConfig) -> None:
|
99
106
|
super().__init__()
|
@@ -117,21 +124,22 @@ class AppContext(Generic[PipelineT]):
|
|
117
124
|
self._pipeline = val
|
118
125
|
|
119
126
|
@property
|
120
|
-
def aiohttp_session(self) -> aiohttp.ClientSession:
|
127
|
+
def aiohttp_session(self) -> "aiohttp.ClientSession":
|
121
128
|
if not self._aiohttp_session:
|
122
129
|
raise AttributeError("`aiohttp_session` has not been set.")
|
123
130
|
return self._aiohttp_session
|
124
131
|
|
125
132
|
@aiohttp_session.setter
|
126
|
-
def aiohttp_session(self, val: aiohttp.ClientSession) -> None:
|
133
|
+
def aiohttp_session(self, val: "aiohttp.ClientSession") -> None:
|
127
134
|
self._aiohttp_session = val
|
128
135
|
|
129
136
|
|
137
|
+
@function_requires_deps("fastapi", "aiohttp", "starlette")
|
130
138
|
def create_app(
|
131
139
|
*, pipeline: PipelineT, app_config: AppConfig, app_aiohttp_session: bool = True
|
132
|
-
) -> Tuple[fastapi.FastAPI, AppContext[PipelineT]]:
|
140
|
+
) -> Tuple["fastapi.FastAPI", AppContext[PipelineT]]:
|
133
141
|
@contextlib.asynccontextmanager
|
134
|
-
async def _app_lifespan(app: fastapi.FastAPI) -> AsyncGenerator[None, None]:
|
142
|
+
async def _app_lifespan(app: "fastapi.FastAPI") -> AsyncGenerator[None, None]:
|
135
143
|
ctx.pipeline = PipelineWrapper[PipelineT](pipeline)
|
136
144
|
if app_aiohttp_session:
|
137
145
|
async with aiohttp.ClientSession(
|
@@ -148,8 +156,8 @@ def create_app(
|
|
148
156
|
app.state.context = ctx
|
149
157
|
|
150
158
|
@app.get("/health", operation_id="checkHealth")
|
151
|
-
async def _check_health() ->
|
152
|
-
return
|
159
|
+
async def _check_health() -> AIStudioNoResultResponse:
|
160
|
+
return AIStudioNoResultResponse(
|
153
161
|
logId=generate_log_id(), errorCode=0, errorMsg="Healthy"
|
154
162
|
)
|
155
163
|
|
@@ -158,7 +166,7 @@ def create_app(
|
|
158
166
|
request: fastapi.Request, exc: RequestValidationError
|
159
167
|
) -> JSONResponse:
|
160
168
|
json_compatible_data = jsonable_encoder(
|
161
|
-
|
169
|
+
AIStudioNoResultResponse(
|
162
170
|
logId=generate_log_id(),
|
163
171
|
errorCode=422,
|
164
172
|
errorMsg=json.dumps(exc.errors()),
|
@@ -171,7 +179,7 @@ def create_app(
|
|
171
179
|
request: fastapi.Request, exc: HTTPException
|
172
180
|
) -> JSONResponse:
|
173
181
|
json_compatible_data = jsonable_encoder(
|
174
|
-
|
182
|
+
AIStudioNoResultResponse(
|
175
183
|
logId=generate_log_id(), errorCode=exc.status_code, errorMsg=exc.detail
|
176
184
|
)
|
177
185
|
)
|
@@ -185,7 +193,7 @@ def create_app(
|
|
185
193
|
# necessary to log the exception info here?
|
186
194
|
logging.exception("Unhandled exception")
|
187
195
|
json_compatible_data = jsonable_encoder(
|
188
|
-
|
196
|
+
AIStudioNoResultResponse(
|
189
197
|
logId=generate_log_id(),
|
190
198
|
errorCode=500,
|
191
199
|
errorMsg="Internal server error",
|
@@ -197,13 +205,17 @@ def create_app(
|
|
197
205
|
|
198
206
|
|
199
207
|
# TODO: Precise type hints
|
208
|
+
@function_requires_deps("fastapi")
|
200
209
|
def primary_operation(
|
201
|
-
app: fastapi.FastAPI, path: str, operation_id: str, **kwargs: Any
|
210
|
+
app: "fastapi.FastAPI", path: str, operation_id: str, **kwargs: Any
|
202
211
|
) -> Callable:
|
203
212
|
return app.post(
|
204
213
|
path,
|
205
214
|
operation_id=operation_id,
|
206
|
-
responses={
|
215
|
+
responses={
|
216
|
+
422: {"model": AIStudioNoResultResponse},
|
217
|
+
500: {"model": AIStudioNoResultResponse},
|
218
|
+
},
|
207
219
|
response_model_exclude_none=True,
|
208
220
|
**kwargs,
|
209
221
|
)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -15,10 +15,12 @@
|
|
15
15
|
import importlib
|
16
16
|
from typing import Any, Dict
|
17
17
|
|
18
|
-
from
|
19
|
-
|
18
|
+
from .....utils.deps import function_requires_deps, is_dep_available
|
20
19
|
from ...infra.config import create_app_config
|
21
20
|
|
21
|
+
if is_dep_available("fastapi"):
|
22
|
+
from fastapi import FastAPI
|
23
|
+
|
22
24
|
|
23
25
|
def _pipeline_name_to_mod_name(pipeline_name: str) -> str:
|
24
26
|
if not pipeline_name:
|
@@ -31,7 +33,8 @@ def _pipeline_name_to_mod_name(pipeline_name: str) -> str:
|
|
31
33
|
|
32
34
|
# XXX: A dynamic approach is used here for writing fewer lines of code, at the
|
33
35
|
# cost of sacrificing some benefits of type hints.
|
34
|
-
|
36
|
+
@function_requires_deps("fastapi")
|
37
|
+
def create_pipeline_app(pipeline: Any, pipeline_config: Dict[str, Any]) -> "FastAPI":
|
35
38
|
pipeline_name = pipeline_config["pipeline_name"]
|
36
39
|
mod_name = _pipeline_name_to_mod_name(pipeline_name)
|
37
40
|
mod = importlib.import_module(f".{mod_name}", package=__package__)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -15,16 +15,19 @@
|
|
15
15
|
import os
|
16
16
|
from typing import Dict, Optional, Tuple, Union
|
17
17
|
|
18
|
-
import cv2
|
19
18
|
import numpy as np
|
20
19
|
from PIL.Image import Image
|
21
20
|
|
21
|
+
from ......utils.deps import function_requires_deps, is_dep_available
|
22
22
|
from ....infra import utils as serving_utils
|
23
23
|
from ....infra.storage import Storage, SupportsGetURL
|
24
24
|
|
25
|
+
if is_dep_available("opencv-contrib-python"):
|
26
|
+
import cv2
|
27
|
+
|
25
28
|
|
26
29
|
def prune_result(result: dict) -> dict:
|
27
|
-
KEYS_TO_REMOVE = ["input_path"]
|
30
|
+
KEYS_TO_REMOVE = ["input_path", "page_index"]
|
28
31
|
|
29
32
|
def _process_obj(obj):
|
30
33
|
if isinstance(obj, dict):
|
@@ -39,6 +42,7 @@ def prune_result(result: dict) -> dict:
|
|
39
42
|
return _process_obj(result)
|
40
43
|
|
41
44
|
|
45
|
+
@function_requires_deps("opencv-contrib-python")
|
42
46
|
def postprocess_image(
|
43
47
|
image: np.ndarray,
|
44
48
|
log_id: str,
|
@@ -86,7 +90,11 @@ def postprocess_images(
|
|
86
90
|
output_images: Dict[str, str] = {}
|
87
91
|
for key, img in images.items():
|
88
92
|
output_images[key] = postprocess_image(
|
89
|
-
|
93
|
+
(
|
94
|
+
cv2.cvtColor(np.array(img.convert("RGB")), cv2.COLOR_RGB2BGR)
|
95
|
+
if isinstance(img, Image)
|
96
|
+
else img
|
97
|
+
),
|
90
98
|
log_id=log_id,
|
91
99
|
filename=filename_template.format(key=key),
|
92
100
|
file_storage=file_storage,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -15,15 +15,19 @@
|
|
15
15
|
from typing import Final, List, Tuple, Union
|
16
16
|
|
17
17
|
import numpy as np
|
18
|
-
from fastapi import HTTPException
|
19
18
|
from typing_extensions import Literal
|
20
19
|
|
20
|
+
from ......utils.deps import function_requires_deps, is_dep_available
|
21
21
|
from ....infra import utils as serving_utils
|
22
22
|
from ....infra.models import ImageInfo, PDFInfo
|
23
23
|
from ....infra.storage import SupportsGetURL, create_storage
|
24
24
|
from ....schemas.shared.ocr import BaseInferRequest
|
25
25
|
from ..._app import AppContext
|
26
26
|
|
27
|
+
if is_dep_available("fastapi"):
|
28
|
+
from fastapi import HTTPException
|
29
|
+
|
30
|
+
|
27
31
|
DEFAULT_MAX_NUM_INPUT_IMGS: Final[int] = 10
|
28
32
|
DEFAULT_MAX_OUTPUT_IMG_SIZE: Final[Tuple[int, int]] = (2000, 2000)
|
29
33
|
|
@@ -52,6 +56,7 @@ def update_app_context(app_context: AppContext) -> None:
|
|
52
56
|
)
|
53
57
|
|
54
58
|
|
59
|
+
@function_requires_deps("fastapi")
|
55
60
|
def get_file_type(request: BaseInferRequest) -> Literal["PDF", "IMAGE"]:
|
56
61
|
if request.fileType is None:
|
57
62
|
if serving_utils.is_url(request.file):
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -14,16 +14,19 @@
|
|
14
14
|
|
15
15
|
from typing import Any
|
16
16
|
|
17
|
-
from
|
18
|
-
|
17
|
+
from .....utils.deps import function_requires_deps, is_dep_available
|
19
18
|
from ...infra import utils as serving_utils
|
20
19
|
from ...infra.config import AppConfig
|
21
|
-
from ...infra.models import
|
20
|
+
from ...infra.models import AIStudioResultResponse
|
22
21
|
from ...schemas.anomaly_detection import INFER_ENDPOINT, InferRequest, InferResult
|
23
22
|
from .._app import create_app, primary_operation
|
24
23
|
|
24
|
+
if is_dep_available("fastapi"):
|
25
|
+
from fastapi import FastAPI
|
26
|
+
|
25
27
|
|
26
|
-
|
28
|
+
@function_requires_deps("fastapi")
|
29
|
+
def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> "FastAPI":
|
27
30
|
app, ctx = create_app(
|
28
31
|
pipeline=pipeline, app_config=app_config, app_aiohttp_session=True
|
29
32
|
)
|
@@ -33,7 +36,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
33
36
|
INFER_ENDPOINT,
|
34
37
|
"infer",
|
35
38
|
)
|
36
|
-
async def _infer(request: InferRequest) ->
|
39
|
+
async def _infer(request: InferRequest) -> AIStudioResultResponse[InferResult]:
|
37
40
|
pipeline = ctx.pipeline
|
38
41
|
aiohttp_session = ctx.aiohttp_session
|
39
42
|
|
@@ -54,7 +57,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
54
57
|
else:
|
55
58
|
output_image_base64 = None
|
56
59
|
|
57
|
-
return
|
60
|
+
return AIStudioResultResponse[InferResult](
|
58
61
|
logId=serving_utils.generate_log_id(),
|
59
62
|
result=InferResult(
|
60
63
|
labelMap=label_map, size=size, image=output_image_base64
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -14,18 +14,21 @@
|
|
14
14
|
|
15
15
|
from typing import Any, Dict, List
|
16
16
|
|
17
|
-
from
|
18
|
-
|
17
|
+
from .....utils.deps import function_requires_deps, is_dep_available
|
19
18
|
from ...infra import utils as serving_utils
|
20
19
|
from ...infra.config import AppConfig
|
21
|
-
from ...infra.models import
|
20
|
+
from ...infra.models import AIStudioResultResponse
|
22
21
|
from ...schemas.doc_preprocessor import INFER_ENDPOINT, InferRequest, InferResult
|
23
22
|
from .._app import create_app, primary_operation
|
24
23
|
from ._common import common
|
25
24
|
from ._common import ocr as ocr_common
|
26
25
|
|
26
|
+
if is_dep_available("fastapi"):
|
27
|
+
from fastapi import FastAPI
|
28
|
+
|
27
29
|
|
28
|
-
|
30
|
+
@function_requires_deps("fastapi")
|
31
|
+
def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> "FastAPI":
|
29
32
|
app, ctx = create_app(
|
30
33
|
pipeline=pipeline, app_config=app_config, app_aiohttp_session=True
|
31
34
|
)
|
@@ -37,7 +40,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
37
40
|
INFER_ENDPOINT,
|
38
41
|
"infer",
|
39
42
|
)
|
40
|
-
async def _infer(request: InferRequest) ->
|
43
|
+
async def _infer(request: InferRequest) -> AIStudioResultResponse[InferResult]:
|
41
44
|
pipeline = ctx.pipeline
|
42
45
|
|
43
46
|
log_id = serving_utils.generate_log_id()
|
@@ -86,7 +89,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
86
89
|
)
|
87
90
|
)
|
88
91
|
|
89
|
-
return
|
92
|
+
return AIStudioResultResponse[InferResult](
|
90
93
|
logId=log_id,
|
91
94
|
result=InferResult(
|
92
95
|
docPreprocessingResults=doc_pp_results,
|
@@ -0,0 +1,153 @@
|
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
import math
|
16
|
+
import time
|
17
|
+
from typing import Any, List
|
18
|
+
|
19
|
+
from .....utils import logging
|
20
|
+
from .....utils.deps import function_requires_deps, is_dep_available
|
21
|
+
from ...infra import utils as serving_utils
|
22
|
+
from ...infra.config import AppConfig
|
23
|
+
from ...schemas.doc_understanding import (
|
24
|
+
INFER_ENDPOINT,
|
25
|
+
ImageContent,
|
26
|
+
ImageUrl,
|
27
|
+
InferRequest,
|
28
|
+
Message,
|
29
|
+
RoleType,
|
30
|
+
TextContent,
|
31
|
+
)
|
32
|
+
from .._app import create_app, primary_operation
|
33
|
+
|
34
|
+
if is_dep_available("fastapi"):
|
35
|
+
from fastapi import FastAPI
|
36
|
+
if is_dep_available("openai"):
|
37
|
+
from openai.types.chat import ChatCompletion
|
38
|
+
from openai.types.chat.chat_completion import Choice as ChatCompletionChoice
|
39
|
+
from openai.types.chat.chat_completion_message import ChatCompletionMessage
|
40
|
+
if is_dep_available("pillow"):
|
41
|
+
from PIL import Image
|
42
|
+
|
43
|
+
|
44
|
+
@function_requires_deps("fastapi", "openai", "pillow")
|
45
|
+
def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> "FastAPI":
|
46
|
+
app, ctx = create_app(
|
47
|
+
pipeline=pipeline, app_config=app_config, app_aiohttp_session=True
|
48
|
+
)
|
49
|
+
|
50
|
+
@primary_operation(
|
51
|
+
app,
|
52
|
+
"/chat/completions",
|
53
|
+
"inferA",
|
54
|
+
)
|
55
|
+
@primary_operation(
|
56
|
+
app,
|
57
|
+
INFER_ENDPOINT,
|
58
|
+
"infer",
|
59
|
+
)
|
60
|
+
async def _infer(request: InferRequest) -> "ChatCompletion":
|
61
|
+
pipeline = ctx.pipeline
|
62
|
+
aiohttp_session = ctx.aiohttp_session
|
63
|
+
|
64
|
+
def _resize_image_with_token_limit(image, max_token_num=2200, tile_size=28):
|
65
|
+
image = Image.fromarray(image)
|
66
|
+
w0, h0 = image.width, image.height
|
67
|
+
tokens = math.ceil(w0 / tile_size) * math.ceil(h0 / tile_size)
|
68
|
+
if tokens <= max_token_num:
|
69
|
+
return image
|
70
|
+
|
71
|
+
k = math.sqrt(
|
72
|
+
max_token_num / (math.ceil(w0 / tile_size) * math.ceil(h0 / tile_size))
|
73
|
+
)
|
74
|
+
k = min(1.0, k)
|
75
|
+
w_new = max(int(w0 * k), tile_size)
|
76
|
+
h_new = max(int(h0 * k), tile_size)
|
77
|
+
new_size = (w_new, h_new)
|
78
|
+
resized_image = image.resize(new_size)
|
79
|
+
tokens_new = math.ceil(w_new / tile_size) * math.ceil(h_new / tile_size)
|
80
|
+
logging.info(
|
81
|
+
f"Resizing image from {w0}x{h0} to {w_new}x{h_new}, "
|
82
|
+
f"which will reduce the image tokens from {tokens} to {tokens_new}."
|
83
|
+
)
|
84
|
+
|
85
|
+
return resized_image
|
86
|
+
|
87
|
+
def _process_messages(messages: List[Message]):
|
88
|
+
system_message = ""
|
89
|
+
user_message = ""
|
90
|
+
image_url = ""
|
91
|
+
|
92
|
+
for msg in messages:
|
93
|
+
if msg.role == RoleType.SYSTEM:
|
94
|
+
if isinstance(msg.content, list):
|
95
|
+
for content in msg.content:
|
96
|
+
if isinstance(content, TextContent):
|
97
|
+
system_message = content.text
|
98
|
+
break
|
99
|
+
else:
|
100
|
+
system_message = msg.content
|
101
|
+
|
102
|
+
elif msg.role == RoleType.USER:
|
103
|
+
if isinstance(msg.content, list):
|
104
|
+
for content in msg.content:
|
105
|
+
if isinstance(content, str):
|
106
|
+
user_message = content
|
107
|
+
else:
|
108
|
+
if isinstance(content, TextContent):
|
109
|
+
user_message = content.text
|
110
|
+
elif isinstance(content, ImageContent):
|
111
|
+
image_url = content.image_url
|
112
|
+
if isinstance(image_url, ImageUrl):
|
113
|
+
image_url = image_url.url
|
114
|
+
else:
|
115
|
+
user_message = msg.content
|
116
|
+
return system_message, user_message, image_url
|
117
|
+
|
118
|
+
system_message, user_message, image_url = _process_messages(request.messages)
|
119
|
+
if request.max_image_tokens is not None:
|
120
|
+
if image_url.startswith("data:image"):
|
121
|
+
_, image_url = image_url.split(",", 1)
|
122
|
+
img_bytes = await serving_utils.get_raw_bytes_async(
|
123
|
+
image_url, aiohttp_session
|
124
|
+
)
|
125
|
+
image = serving_utils.image_bytes_to_array(img_bytes)
|
126
|
+
image = _resize_image_with_token_limit(image, request.max_image_tokens)
|
127
|
+
else:
|
128
|
+
image = image_url
|
129
|
+
|
130
|
+
result = (
|
131
|
+
await pipeline.infer(
|
132
|
+
{"image": image, "query": user_message},
|
133
|
+
)
|
134
|
+
)[0]
|
135
|
+
|
136
|
+
return ChatCompletion(
|
137
|
+
id=serving_utils.generate_log_id(),
|
138
|
+
model=request.model,
|
139
|
+
choices=[
|
140
|
+
ChatCompletionChoice(
|
141
|
+
index=0,
|
142
|
+
finish_reason="stop",
|
143
|
+
message=ChatCompletionMessage(
|
144
|
+
role="assistant",
|
145
|
+
content=result["result"],
|
146
|
+
),
|
147
|
+
)
|
148
|
+
],
|
149
|
+
created=int(time.time()),
|
150
|
+
object="chat.completion",
|
151
|
+
)
|
152
|
+
|
153
|
+
return app
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -16,23 +16,26 @@ import asyncio
|
|
16
16
|
from operator import attrgetter
|
17
17
|
from typing import Any, Dict, List
|
18
18
|
|
19
|
-
from
|
20
|
-
|
19
|
+
from .....utils.deps import function_requires_deps, is_dep_available
|
21
20
|
from ....pipelines.components import IndexData
|
22
21
|
from ...infra import utils as serving_utils
|
23
22
|
from ...infra.config import AppConfig
|
24
|
-
from ...infra.models import
|
23
|
+
from ...infra.models import AIStudioResultResponse
|
25
24
|
from ...schemas import face_recognition as schema
|
26
25
|
from .._app import create_app, primary_operation
|
27
26
|
from ._common import image_recognition as ir_common
|
28
27
|
|
28
|
+
if is_dep_available("fastapi"):
|
29
|
+
from fastapi import FastAPI
|
30
|
+
|
29
31
|
# XXX: Currently the implementations of the face recognition and PP-ShiTuV2
|
30
32
|
# pipeline apps overlap significantly. We should aim to facilitate code reuse,
|
31
33
|
# but is it acceptable to assume a strong similarity between these two
|
32
34
|
# pipelines?
|
33
35
|
|
34
36
|
|
35
|
-
|
37
|
+
@function_requires_deps("fastapi")
|
38
|
+
def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> "FastAPI":
|
36
39
|
app, ctx = create_app(
|
37
40
|
pipeline=pipeline, app_config=app_config, app_aiohttp_session=True
|
38
41
|
)
|
@@ -46,7 +49,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
46
49
|
)
|
47
50
|
async def _build_index(
|
48
51
|
request: schema.BuildIndexRequest,
|
49
|
-
) ->
|
52
|
+
) -> AIStudioResultResponse[schema.BuildIndexResult]:
|
50
53
|
pipeline = ctx.pipeline
|
51
54
|
aiohttp_session = ctx.aiohttp_session
|
52
55
|
|
@@ -74,7 +77,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
74
77
|
index_data_bytes = index_data.to_bytes()
|
75
78
|
await serving_utils.call_async(index_storage.set, index_key, index_data_bytes)
|
76
79
|
|
77
|
-
return
|
80
|
+
return AIStudioResultResponse[schema.BuildIndexResult](
|
78
81
|
logId=serving_utils.generate_log_id(),
|
79
82
|
result=schema.BuildIndexResult(
|
80
83
|
indexKey=index_key, imageCount=len(index_data.id_map)
|
@@ -88,7 +91,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
88
91
|
)
|
89
92
|
async def _add_images_to_index(
|
90
93
|
request: schema.AddImagesToIndexRequest,
|
91
|
-
) ->
|
94
|
+
) -> AIStudioResultResponse[schema.AddImagesToIndexResult]:
|
92
95
|
pipeline = ctx.pipeline
|
93
96
|
aiohttp_session = ctx.aiohttp_session
|
94
97
|
|
@@ -116,7 +119,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
116
119
|
index_storage.set, request.indexKey, index_data_bytes
|
117
120
|
)
|
118
121
|
|
119
|
-
return
|
122
|
+
return AIStudioResultResponse[schema.AddImagesToIndexResult](
|
120
123
|
logId=serving_utils.generate_log_id(),
|
121
124
|
result=schema.AddImagesToIndexResult(imageCount=len(index_data.id_map)),
|
122
125
|
)
|
@@ -128,7 +131,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
128
131
|
)
|
129
132
|
async def _remove_images_from_index(
|
130
133
|
request: schema.RemoveImagesFromIndexRequest,
|
131
|
-
) ->
|
134
|
+
) -> AIStudioResultResponse[schema.RemoveImagesFromIndexResult]:
|
132
135
|
pipeline = ctx.pipeline
|
133
136
|
|
134
137
|
index_storage = ctx.extra["index_storage"]
|
@@ -146,7 +149,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
146
149
|
index_storage.set, request.indexKey, index_data_bytes
|
147
150
|
)
|
148
151
|
|
149
|
-
return
|
152
|
+
return AIStudioResultResponse[schema.RemoveImagesFromIndexResult](
|
150
153
|
logId=serving_utils.generate_log_id(),
|
151
154
|
result=schema.RemoveImagesFromIndexResult(
|
152
155
|
imageCount=len(index_data.id_map)
|
@@ -160,7 +163,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
160
163
|
)
|
161
164
|
async def _infer(
|
162
165
|
request: schema.InferRequest,
|
163
|
-
) ->
|
166
|
+
) -> AIStudioResultResponse[schema.InferResult]:
|
164
167
|
pipeline = ctx.pipeline
|
165
168
|
aiohttp_session = ctx.aiohttp_session
|
166
169
|
|
@@ -215,7 +218,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
215
218
|
else:
|
216
219
|
output_image_base64 = None
|
217
220
|
|
218
|
-
return
|
221
|
+
return AIStudioResultResponse[schema.InferResult](
|
219
222
|
logId=serving_utils.generate_log_id(),
|
220
223
|
result=schema.InferResult(faces=objs, image=output_image_base64),
|
221
224
|
)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -14,18 +14,21 @@
|
|
14
14
|
|
15
15
|
from typing import Any, Dict, List
|
16
16
|
|
17
|
-
from
|
18
|
-
|
17
|
+
from .....utils.deps import function_requires_deps, is_dep_available
|
19
18
|
from ...infra import utils as serving_utils
|
20
19
|
from ...infra.config import AppConfig
|
21
|
-
from ...infra.models import
|
20
|
+
from ...infra.models import AIStudioResultResponse
|
22
21
|
from ...schemas.formula_recognition import INFER_ENDPOINT, InferRequest, InferResult
|
23
22
|
from .._app import create_app, primary_operation
|
24
23
|
from ._common import common
|
25
24
|
from ._common import ocr as ocr_common
|
26
25
|
|
26
|
+
if is_dep_available("fastapi"):
|
27
|
+
from fastapi import FastAPI
|
28
|
+
|
27
29
|
|
28
|
-
|
30
|
+
@function_requires_deps("fastapi")
|
31
|
+
def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> "FastAPI":
|
29
32
|
app, ctx = create_app(
|
30
33
|
pipeline=pipeline, app_config=app_config, app_aiohttp_session=True
|
31
34
|
)
|
@@ -37,7 +40,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
37
40
|
INFER_ENDPOINT,
|
38
41
|
"infer",
|
39
42
|
)
|
40
|
-
async def _infer(request: InferRequest) ->
|
43
|
+
async def _infer(request: InferRequest) -> AIStudioResultResponse[InferResult]:
|
41
44
|
pipeline = ctx.pipeline
|
42
45
|
|
43
46
|
log_id = serving_utils.generate_log_id()
|
@@ -86,7 +89,7 @@ def create_pipeline_app(pipeline: Any, app_config: AppConfig) -> FastAPI:
|
|
86
89
|
)
|
87
90
|
)
|
88
91
|
|
89
|
-
return
|
92
|
+
return AIStudioResultResponse[InferResult](
|
90
93
|
logId=log_id,
|
91
94
|
result=InferResult(
|
92
95
|
formulaRecResults=formula_rec_results,
|