From 308271dfb13c030b2027a0e790d4eaee15fea10f Mon Sep 17 00:00:00 2001 From: felixhjh <852142024@qq.com> Date: Thu, 11 Nov 2021 11:39:27 +0000 Subject: [PATCH] create new examples directory --- examples/Cpp/PaddleClas/imagenet/README.md | 41 + examples/Cpp/PaddleClas/imagenet/README_CN.md | 41 + examples/Cpp/PaddleClas/imagenet/benchmark.py | 127 +++ examples/Cpp/PaddleClas/imagenet/benchmark.sh | 50 + examples/Cpp/PaddleClas/imagenet/daisy.jpg | Bin 0 -> 39696 bytes .../imagenet/data/n01440764_10026.JPEG | Bin 0 -> 13697 bytes examples/Cpp/PaddleClas/imagenet/flower.jpg | Bin 0 -> 56806 bytes examples/Cpp/PaddleClas/imagenet/get_model.sh | 7 + .../Cpp/PaddleClas/imagenet/imagenet.label | 1000 +++++++++++++++++ .../imagenet/resnet50_http_client.py | 67 ++ .../imagenet/resnet50_rpc_client.py | 49 + .../PaddleClas/imagenet/test_image_reader.py | 37 + examples/Cpp/PaddleClas/mobilenet/README.md | 22 + .../Cpp/PaddleClas/mobilenet/README_CN.md | 22 + examples/Cpp/PaddleClas/mobilenet/daisy.jpg | Bin 0 -> 39696 bytes .../mobilenet/mobilenet_tutorial.py | 32 + .../Cpp/PaddleClas/resnet_v2_50/README.md | 22 + .../Cpp/PaddleClas/resnet_v2_50/README_CN.md | 22 + .../Cpp/PaddleClas/resnet_v2_50/benchmark.py | 107 ++ .../Cpp/PaddleClas/resnet_v2_50/benchmark.sh | 58 + .../Cpp/PaddleClas/resnet_v2_50/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/resnet_v2_50/resnet50_debug.py | 31 + .../resnet_v2_50/resnet50_v2_tutorial.py | 32 + .../PaddleClas/resnet_v2_50/run_benchmark.sh | 6 + examples/Cpp/PaddleDetection/README.md | 23 + examples/Cpp/PaddleDetection/README_CN.md | 24 + .../Cpp/PaddleDetection/blazeface/README.md | 23 + .../PaddleDetection/blazeface/test_client.py | 39 + .../cascade_rcnn/000000570688.jpg | Bin 0 -> 138365 bytes .../PaddleDetection/cascade_rcnn/README.md | 21 + .../PaddleDetection/cascade_rcnn/README_CN.md | 21 + .../PaddleDetection/cascade_rcnn/get_data.sh | 2 + .../cascade_rcnn/label_list.txt | 80 ++ .../cascade_rcnn/test_client.py | 46 + .../000000570688.jpg | Bin 0 -> 138365 bytes .../faster_rcnn_hrnetv2p_w18_1x/README.md | 23 + .../faster_rcnn_hrnetv2p_w18_1x/README_CN.md | 22 + .../label_list.txt | 80 ++ .../test_client.py | 46 + .../000000570688.jpg | Bin 0 -> 138365 bytes .../faster_rcnn_r50_fpn_1x_coco/README.md | 39 + .../faster_rcnn_r50_fpn_1x_coco/README_CN.md | 37 + .../label_list.txt | 80 ++ .../test_client.py | 46 + .../fcos_dcn_r50_fpn_1x_coco/000000014439.jpg | Bin 0 -> 195229 bytes .../fcos_dcn_r50_fpn_1x_coco/README.md | 20 + .../fcos_dcn_r50_fpn_1x_coco/README_CN.md | 22 + .../fcos_dcn_r50_fpn_1x_coco/label_list.txt | 80 ++ .../fcos_dcn_r50_fpn_1x_coco/test_client.py | 46 + .../ppyolo_r50vd_dcn_1x_coco/000000570688.jpg | Bin 0 -> 138365 bytes .../ppyolo_r50vd_dcn_1x_coco/README.md | 21 + .../ppyolo_r50vd_dcn_1x_coco/README_CN.md | 22 + .../ppyolo_r50vd_dcn_1x_coco/label_list.txt | 80 ++ .../ppyolo_r50vd_dcn_1x_coco/test_client.py | 45 + .../ssd_vgg16_300_240e_voc/000000014439.jpg | Bin 0 -> 195229 bytes .../ssd_vgg16_300_240e_voc/README.md | 20 + .../ssd_vgg16_300_240e_voc/README_CN.md | 22 + .../ssd_vgg16_300_240e_voc/label_list.txt | 20 + .../ssd_vgg16_300_240e_voc/test_client.py | 46 + .../ttfnet_darknet53_1x_coco/000000570688.jpg | Bin 0 -> 138365 bytes .../ttfnet_darknet53_1x_coco/README.md | 20 + .../ttfnet_darknet53_1x_coco/README_CN.md | 22 + .../ttfnet_darknet53_1x_coco/label_list.txt | 80 ++ .../ttfnet_darknet53_1x_coco/test_client.py | 45 + .../000000570688.jpg | Bin 0 -> 138365 bytes .../yolov3_darknet53_270e_coco/README.md | 21 + .../yolov3_darknet53_270e_coco/README_CN.md | 22 + .../yolov3_darknet53_270e_coco/label_list.txt | 80 ++ .../yolov3_darknet53_270e_coco/test_client.py | 45 + .../PaddleDetection/yolov4/000000570688.jpg | Bin 0 -> 138365 bytes examples/Cpp/PaddleDetection/yolov4/README.md | 23 + .../Cpp/PaddleDetection/yolov4/README_CN.md | 24 + .../Cpp/PaddleDetection/yolov4/label_list.txt | 80 ++ .../Cpp/PaddleDetection/yolov4/test_client.py | 41 + examples/Cpp/PaddleNLP/bert/README.md | 80 ++ examples/Cpp/PaddleNLP/bert/README_CN.md | 85 ++ examples/Cpp/PaddleNLP/bert/batching.py | 126 +++ examples/Cpp/PaddleNLP/bert/benchmark.py | 144 +++ examples/Cpp/PaddleNLP/bert/benchmark.sh | 55 + .../PaddleNLP/bert/benchmark_with_profile.sh | 10 + examples/Cpp/PaddleNLP/bert/bert_client.py | 37 + .../Cpp/PaddleNLP/bert/bert_gpu_server.py | 42 + .../Cpp/PaddleNLP/bert/bert_httpclient.py | 58 + examples/Cpp/PaddleNLP/bert/bert_reader.py | 72 ++ examples/Cpp/PaddleNLP/bert/bert_server.py | 38 + examples/Cpp/PaddleNLP/bert/get_data.sh | 2 + examples/Cpp/PaddleNLP/bert/prepare_model.py | 49 + .../PaddleNLP/bert/test_multi_fetch_client.py | 53 + examples/Cpp/PaddleNLP/bert/tokenization.py | 441 ++++++++ examples/Cpp/PaddleNLP/lac/README.md | 26 + examples/Cpp/PaddleNLP/lac/README_CN.md | 26 + examples/Cpp/PaddleNLP/lac/benchmark.py | 53 + examples/Cpp/PaddleNLP/lac/lac_client.py | 49 + examples/Cpp/PaddleNLP/lac/lac_http_client.py | 66 ++ examples/Cpp/PaddleNLP/lac/lac_reader.py | 126 +++ examples/Cpp/PaddleNLP/lac/utils.py | 141 +++ examples/Cpp/PaddleNLP/senta/README.md | 23 + examples/Cpp/PaddleNLP/senta/README_CN.md | 23 + examples/Cpp/PaddleNLP/senta/get_data.sh | 7 + .../Cpp/PaddleNLP/senta/senta_web_service.py | 73 ++ examples/Cpp/PaddleOCR/ocr/README.md | 127 +++ examples/Cpp/PaddleOCR/ocr/README_CN.md | 126 +++ .../Cpp/PaddleOCR/ocr/det_debugger_server.py | 79 ++ examples/Cpp/PaddleOCR/ocr/det_web_server.py | 78 ++ examples/Cpp/PaddleOCR/ocr/imgs/1.jpg | Bin 0 -> 312292 bytes examples/Cpp/PaddleOCR/ocr/ocr_cpp_client.py | 44 + .../Cpp/PaddleOCR/ocr/ocr_debugger_server.py | 113 ++ examples/Cpp/PaddleOCR/ocr/ocr_web_client.py | 40 + examples/Cpp/PaddleOCR/ocr/ocr_web_server.py | 105 ++ .../Cpp/PaddleOCR/ocr/rec_debugger_server.py | 79 ++ .../Cpp/PaddleOCR/ocr/rec_img/ch_doc3.jpg | Bin 0 -> 2117 bytes examples/Cpp/PaddleOCR/ocr/rec_web_client.py | 41 + examples/Cpp/PaddleOCR/ocr/rec_web_server.py | 80 ++ examples/Cpp/PaddleRec/criteo_ctr/README.md | 31 + .../Cpp/PaddleRec/criteo_ctr/README_CN.md | 31 + examples/Cpp/PaddleRec/criteo_ctr/args.py | 105 ++ .../Cpp/PaddleRec/criteo_ctr/benchmark.py | 76 ++ .../Cpp/PaddleRec/criteo_ctr/benchmark.sh | 9 + .../PaddleRec/criteo_ctr/benchmark_batch.py | 79 ++ .../PaddleRec/criteo_ctr/benchmark_batch.sh | 12 + examples/Cpp/PaddleRec/criteo_ctr/clean.sh | 1 + examples/Cpp/PaddleRec/criteo_ctr/get_data.sh | 2 + .../Cpp/PaddleRec/criteo_ctr/local_train.py | 88 ++ .../Cpp/PaddleRec/criteo_ctr/network_conf.py | 74 ++ .../Cpp/PaddleRec/criteo_ctr/test_client.py | 76 ++ .../Cpp/PaddleRec/criteo_ctr/test_server.py | 36 + .../PaddleRec/criteo_ctr_with_cube/README.md | 72 ++ .../criteo_ctr_with_cube/README_CN.md | 70 ++ .../criteo_ctr_with_cube/criteo_reader.py | 83 ++ .../criteo_ctr_with_cube/cube/conf/cube.conf | 13 + .../cube/conf/gflags.conf | 4 + .../PaddleRec/criteo_ctr_with_cube/cube/keys | 10 + .../criteo_ctr_with_cube/cube_prepare.sh | 20 + .../criteo_ctr_with_cube/get_data.sh | 2 + .../criteo_ctr_with_cube/local_train.py | 101 ++ .../criteo_ctr_with_cube/network_conf.py | 77 ++ .../criteo_ctr_with_cube/test_client.py | 57 + .../criteo_ctr_with_cube/test_server.py | 41 + examples/Cpp/PaddleSeg/deeplabv3/N0060.jpg | Bin 0 -> 49567 bytes examples/Cpp/PaddleSeg/deeplabv3/README.md | 22 + examples/Cpp/PaddleSeg/deeplabv3/README_CN.md | 21 + .../PaddleSeg/deeplabv3/deeplabv3_client.py | 34 + .../PaddleSeg/unet_for_image_seg/N0060.jpg | Bin 0 -> 49567 bytes .../PaddleSeg/unet_for_image_seg/README.md | 22 + .../PaddleSeg/unet_for_image_seg/README_CN.md | 22 + .../unet_for_image_seg/seg_client.py | 34 + .../unet_benchmark/README.md | 8 + .../unet_benchmark/img_data/N0060.jpg | Bin 0 -> 49567 bytes .../unet_benchmark/launch_benckmark.sh | 3 + .../unet_benchmark/unet_benchmark.py | 159 +++ examples/Cpp/encryption/README.md | 48 + examples/Cpp/encryption/README_CN.md | 49 + examples/Cpp/encryption/encrypt.py | 28 + examples/Cpp/encryption/get_data.sh | 4 + examples/Cpp/encryption/test_client.py | 33 + examples/Cpp/fit_a_line/README.md | 41 + examples/Cpp/fit_a_line/README_CN.md | 43 + examples/Cpp/fit_a_line/benchmark.py | 77 ++ examples/Cpp/fit_a_line/benchmark.sh | 55 + examples/Cpp/fit_a_line/get_data.sh | 2 + examples/Cpp/fit_a_line/local_train.py | 53 + examples/Cpp/fit_a_line/test_client.py | 35 + examples/Cpp/fit_a_line/test_httpclient.py | 58 + .../fit_a_line/test_multi_process_client.py | 42 + examples/Cpp/fit_a_line/test_server.py | 36 + examples/Cpp/imdb/README.md | 28 + examples/Cpp/imdb/README_CN.md | 26 + examples/Cpp/imdb/abtest_client.py | 43 + examples/Cpp/imdb/abtest_get_data.py | 23 + examples/Cpp/imdb/benchmark.py | 107 ++ examples/Cpp/imdb/benchmark.sh | 43 + examples/Cpp/imdb/clean_data.sh | 1 + examples/Cpp/imdb/get_data.sh | 4 + examples/Cpp/imdb/imdb_reader.py | 92 ++ examples/Cpp/imdb/local_train.py | 73 ++ examples/Cpp/imdb/nets.py | 134 +++ examples/Cpp/imdb/test_client.py | 40 + examples/Cpp/imdb/test_http_client.py | 61 + examples/Cpp/low_precision/resnet50/README.md | 28 + .../Cpp/low_precision/resnet50/README_CN.md | 27 + examples/Cpp/low_precision/resnet50/daisy.jpg | Bin 0 -> 39696 bytes .../low_precision/resnet50/resnet50_client.py | 32 + examples/Cpp/util/README.md | 31 + examples/Cpp/util/README_CN.md | 31 + examples/Cpp/util/get_acc.py | 28 + examples/Cpp/util/show_profile.py | 41 + examples/Cpp/util/timeline_trace.py | 55 + examples/Cpp/xpu/bert/README.md | 36 + examples/Cpp/xpu/bert/bert_client.py | 37 + examples/Cpp/xpu/bert/chinese_bert_reader.py | 123 ++ examples/Cpp/xpu/bert/get_data.sh | 2 + examples/Cpp/xpu/ernie/README.md | 36 + .../Cpp/xpu/ernie/chinese_ernie_reader.py | 130 +++ examples/Cpp/xpu/ernie/ernie_client.py | 37 + examples/Cpp/xpu/ernie/get_data.sh | 2 + examples/Cpp/xpu/fit_a_line_xpu/README.md | 25 + examples/Cpp/xpu/fit_a_line_xpu/README_CN.md | 33 + examples/Cpp/xpu/fit_a_line_xpu/benchmark.py | 57 + examples/Cpp/xpu/fit_a_line_xpu/get_data.sh | 2 + .../Cpp/xpu/fit_a_line_xpu/local_train.py | 53 + .../Cpp/xpu/fit_a_line_xpu/test_client.py | 35 + examples/Cpp/xpu/resnet_v2_50_xpu/README.md | 22 + .../Cpp/xpu/resnet_v2_50_xpu/README_CN.md | 22 + examples/Cpp/xpu/resnet_v2_50_xpu/daisy.jpg | Bin 0 -> 39696 bytes .../Cpp/xpu/resnet_v2_50_xpu/localpredict.py | 31 + .../xpu/resnet_v2_50_xpu/resnet50_client.py | 32 + examples/Cpp/xpu/vgg19/README.md | 30 + examples/Cpp/xpu/vgg19/daisy.jpg | Bin 0 -> 39696 bytes examples/Cpp/xpu/vgg19/vgg19_client.py | 33 + .../Pipeline/PaddleClas/DarkNet53/README.md | 19 + .../PaddleClas/DarkNet53/README_CN.md | 19 + .../PaddleClas/DarkNet53/benchmark.py | 153 +++ .../PaddleClas/DarkNet53/benchmark.sh | 44 + .../PaddleClas/DarkNet53/benchmark_cfg.yaml | 29 + .../Pipeline/PaddleClas/DarkNet53/config.yml | 33 + .../PaddleClas/DarkNet53/cpu_utilization.py | 4 + .../Pipeline/PaddleClas/DarkNet53/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/DarkNet53/get_model.sh | 5 + .../PaddleClas/DarkNet53/imagenet.label | 1000 +++++++++++++++++ .../DarkNet53/pipeline_http_client.py | 19 + .../DarkNet53/pipeline_rpc_client.py | 37 + .../DarkNet53/resnet50_web_service.py | 71 ++ .../Pipeline/PaddleClas/HRNet_W18_C/README.md | 19 + .../PaddleClas/HRNet_W18_C/README_CN.md | 19 + .../PaddleClas/HRNet_W18_C/benchmark.py | 153 +++ .../PaddleClas/HRNet_W18_C/benchmark.sh | 44 + .../PaddleClas/HRNet_W18_C/config.yml | 33 + .../PaddleClas/HRNet_W18_C/cpu_utilization.py | 4 + .../Pipeline/PaddleClas/HRNet_W18_C/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/HRNet_W18_C/get_model.sh | 5 + .../PaddleClas/HRNet_W18_C/imagenet.label | 1000 +++++++++++++++++ .../HRNet_W18_C/pipeline_http_client.py | 19 + .../HRNet_W18_C/pipeline_rpc_client.py | 37 + .../HRNet_W18_C/resnet50_web_service.py | 72 ++ .../Pipeline/PaddleClas/MobileNetV1/README.md | 19 + .../PaddleClas/MobileNetV1/README_CN.md | 19 + .../PaddleClas/MobileNetV1/benchmark.py | 153 +++ .../PaddleClas/MobileNetV1/benchmark.sh | 44 + .../PaddleClas/MobileNetV1/config.yml | 33 + .../PaddleClas/MobileNetV1/cpu_utilization.py | 4 + .../Pipeline/PaddleClas/MobileNetV1/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/MobileNetV1/get_model.sh | 5 + .../PaddleClas/MobileNetV1/imagenet.label | 1000 +++++++++++++++++ .../MobileNetV1/pipeline_http_client.py | 19 + .../MobileNetV1/pipeline_rpc_client.py | 37 + .../MobileNetV1/resnet50_web_service.py | 72 ++ .../Pipeline/PaddleClas/MobileNetV2/README.md | 19 + .../PaddleClas/MobileNetV2/README_CN.md | 19 + .../PaddleClas/MobileNetV2/benchmark.py | 153 +++ .../PaddleClas/MobileNetV2/benchmark.sh | 44 + .../PaddleClas/MobileNetV2/config.yml | 33 + .../PaddleClas/MobileNetV2/cpu_utilization.py | 4 + .../Pipeline/PaddleClas/MobileNetV2/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/MobileNetV2/get_model.sh | 5 + .../PaddleClas/MobileNetV2/imagenet.label | 1000 +++++++++++++++++ .../MobileNetV2/pipeline_http_client.py | 19 + .../MobileNetV2/pipeline_rpc_client.py | 37 + .../MobileNetV2/resnet50_web_service.py | 72 ++ .../MobileNetV3_large_x1_0/README.md | 19 + .../MobileNetV3_large_x1_0/README_CN.md | 19 + .../MobileNetV3_large_x1_0/benchmark.py | 153 +++ .../MobileNetV3_large_x1_0/benchmark.sh | 44 + .../MobileNetV3_large_x1_0/config.yml | 33 + .../MobileNetV3_large_x1_0/cpu_utilization.py | 4 + .../MobileNetV3_large_x1_0/daisy.jpg | Bin 0 -> 39696 bytes .../MobileNetV3_large_x1_0/get_model.sh | 5 + .../MobileNetV3_large_x1_0/imagenet.label | 1000 +++++++++++++++++ .../pipeline_http_client.py | 19 + .../pipeline_rpc_client.py | 37 + .../resnet50_web_service.py | 72 ++ .../PaddleClas/ResNeXt101_vd_64x4d/README.md | 19 + .../ResNeXt101_vd_64x4d/README_CN.md | 19 + .../ResNeXt101_vd_64x4d/benchmark.py | 153 +++ .../ResNeXt101_vd_64x4d/benchmark.sh | 44 + .../PaddleClas/ResNeXt101_vd_64x4d/config.yml | 33 + .../ResNeXt101_vd_64x4d/cpu_utilization.py | 4 + .../PaddleClas/ResNeXt101_vd_64x4d/daisy.jpg | Bin 0 -> 39696 bytes .../ResNeXt101_vd_64x4d/get_model.sh | 5 + .../ResNeXt101_vd_64x4d/imagenet.label | 1000 +++++++++++++++++ .../pipeline_http_client.py | 19 + .../pipeline_rpc_client.py | 37 + .../resnet50_web_service.py | 72 ++ .../Pipeline/PaddleClas/ResNet50_vd/README.md | 19 + .../PaddleClas/ResNet50_vd/README_CN.md | 19 + .../PaddleClas/ResNet50_vd/benchmark.py | 153 +++ .../PaddleClas/ResNet50_vd/benchmark.sh | 44 + .../PaddleClas/ResNet50_vd/config.yml | 33 + .../PaddleClas/ResNet50_vd/cpu_utilization.py | 4 + .../Pipeline/PaddleClas/ResNet50_vd/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/ResNet50_vd/get_model.sh | 5 + .../PaddleClas/ResNet50_vd/imagenet.label | 1000 +++++++++++++++++ .../ResNet50_vd/pipeline_http_client.py | 19 + .../ResNet50_vd/pipeline_rpc_client.py | 37 + .../ResNet50_vd/resnet50_web_service.py | 72 ++ .../PaddleClas/ResNet50_vd_FPGM/README.md | 19 + .../PaddleClas/ResNet50_vd_FPGM/README_CN.md | 19 + .../PaddleClas/ResNet50_vd_FPGM/benchmark.py | 153 +++ .../PaddleClas/ResNet50_vd_FPGM/benchmark.sh | 44 + .../PaddleClas/ResNet50_vd_FPGM/config.yml | 33 + .../ResNet50_vd_FPGM/cpu_utilization.py | 4 + .../PaddleClas/ResNet50_vd_FPGM/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/ResNet50_vd_FPGM/get_model.sh | 5 + .../ResNet50_vd_FPGM/imagenet.label | 1000 +++++++++++++++++ .../ResNet50_vd_FPGM/pipeline_http_client.py | 19 + .../ResNet50_vd_FPGM/pipeline_rpc_client.py | 37 + .../ResNet50_vd_FPGM/resnet50_web_service.py | 72 ++ .../PaddleClas/ResNet50_vd_KL/README.md | 19 + .../PaddleClas/ResNet50_vd_KL/README_CN.md | 19 + .../PaddleClas/ResNet50_vd_KL/benchmark.py | 153 +++ .../PaddleClas/ResNet50_vd_KL/benchmark.sh | 44 + .../PaddleClas/ResNet50_vd_KL/config.yml | 33 + .../ResNet50_vd_KL/cpu_utilization.py | 4 + .../PaddleClas/ResNet50_vd_KL/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/ResNet50_vd_KL/get_model.sh | 5 + .../PaddleClas/ResNet50_vd_KL/imagenet.label | 1000 +++++++++++++++++ .../ResNet50_vd_KL/pipeline_http_client.py | 19 + .../ResNet50_vd_KL/pipeline_rpc_client.py | 37 + .../ResNet50_vd_KL/resnet50_web_service.py | 72 ++ .../PaddleClas/ResNet50_vd_PACT/README.md | 19 + .../PaddleClas/ResNet50_vd_PACT/README_CN.md | 19 + .../PaddleClas/ResNet50_vd_PACT/benchmark.py | 153 +++ .../PaddleClas/ResNet50_vd_PACT/benchmark.sh | 44 + .../PaddleClas/ResNet50_vd_PACT/config.yml | 33 + .../ResNet50_vd_PACT/cpu_utilization.py | 4 + .../PaddleClas/ResNet50_vd_PACT/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/ResNet50_vd_PACT/get_model.sh | 5 + .../ResNet50_vd_PACT/imagenet.label | 1000 +++++++++++++++++ .../ResNet50_vd_PACT/pipeline_http_client.py | 19 + .../ResNet50_vd_PACT/pipeline_rpc_client.py | 37 + .../ResNet50_vd_PACT/resnet50_web_service.py | 72 ++ .../PaddleClas/ResNet_V2_50/README.md | 20 + .../PaddleClas/ResNet_V2_50/README_CN.md | 20 + .../PaddleClas/ResNet_V2_50/benchmark.py | 153 +++ .../PaddleClas/ResNet_V2_50/benchmark.sh | 44 + .../PaddleClas/ResNet_V2_50/config.yml | 33 + .../PaddleClas/ResNet_V2_50/daisy.jpg | Bin 0 -> 39696 bytes .../ResNet_V2_50/pipeline_http_client.py | 35 + .../ResNet_V2_50/pipeline_rpc_client.py | 37 + .../ResNet_V2_50/resnet50_web_service.py | 71 ++ .../PaddleClas/ShuffleNetV2_x1_0/README.md | 19 + .../PaddleClas/ShuffleNetV2_x1_0/README_CN.md | 19 + .../PaddleClas/ShuffleNetV2_x1_0/benchmark.py | 153 +++ .../PaddleClas/ShuffleNetV2_x1_0/benchmark.sh | 44 + .../PaddleClas/ShuffleNetV2_x1_0/config.yml | 33 + .../ShuffleNetV2_x1_0/cpu_utilization.py | 4 + .../PaddleClas/ShuffleNetV2_x1_0/daisy.jpg | Bin 0 -> 39696 bytes .../PaddleClas/ShuffleNetV2_x1_0/get_model.sh | 5 + .../ShuffleNetV2_x1_0/imagenet.label | 1000 +++++++++++++++++ .../ShuffleNetV2_x1_0/pipeline_http_client.py | 19 + .../ShuffleNetV2_x1_0/pipeline_rpc_client.py | 36 + .../ShuffleNetV2_x1_0/resnet50_web_service.py | 72 ++ .../Pipeline/PaddleClas/imagenet/README.md | 19 + .../Pipeline/PaddleClas/imagenet/README_CN.md | 19 + .../Pipeline/PaddleClas/imagenet/config.yml | 41 + .../Pipeline/PaddleClas/imagenet/daisy.jpg | Bin 0 -> 39696 bytes .../Pipeline/PaddleClas/imagenet/get_model.sh | 5 + .../PaddleClas/imagenet/imagenet.label | 1000 +++++++++++++++++ .../imagenet/pipeline_rpc_client.py | 39 + .../imagenet/resnet50_web_service.py | 68 ++ .../faster_rcnn/000000570688.jpg | Bin 0 -> 138365 bytes .../PaddleDetection/faster_rcnn/README.md | 18 + .../PaddleDetection/faster_rcnn/benchmark.py | 132 +++ .../PaddleDetection/faster_rcnn/benchmark.sh | 44 + .../faster_rcnn/benchmark_config.yaml | 32 + .../PaddleDetection/faster_rcnn/config.yml | 29 + .../faster_rcnn/label_list.txt | 80 ++ .../faster_rcnn/pipeline_http_client.py | 35 + .../faster_rcnn/web_service.py | 77 ++ .../ppyolo_mbv3/000000570688.jpg | Bin 0 -> 138365 bytes .../PaddleDetection/ppyolo_mbv3/README.md | 19 + .../PaddleDetection/ppyolo_mbv3/README_CN.md | 19 + .../PaddleDetection/ppyolo_mbv3/benchmark.py | 132 +++ .../PaddleDetection/ppyolo_mbv3/benchmark.sh | 44 + .../ppyolo_mbv3/benchmark_config.yaml | 32 + .../PaddleDetection/ppyolo_mbv3/config.yml | 30 + .../ppyolo_mbv3/label_list.txt | 80 ++ .../ppyolo_mbv3/pipeline_http_client.py | 35 + .../ppyolo_mbv3/web_service.py | 78 ++ .../PaddleDetection/yolov3/000000570688.jpg | Bin 0 -> 138365 bytes .../Pipeline/PaddleDetection/yolov3/README.md | 19 + .../PaddleDetection/yolov3/README_CN.md | 19 + .../PaddleDetection/yolov3/benchmark.py | 132 +++ .../PaddleDetection/yolov3/benchmark.sh | 44 + .../yolov3/benchmark_config.yaml | 32 + .../PaddleDetection/yolov3/config.yml | 29 + .../PaddleDetection/yolov3/label_list.txt | 80 ++ .../yolov3/pipeline_http_client.py | 35 + .../PaddleDetection/yolov3/web_service.py | 77 ++ examples/Pipeline/PaddleNLP/bert/README.md | 19 + examples/Pipeline/PaddleNLP/bert/README_CN.md | 19 + examples/Pipeline/PaddleNLP/bert/benchmark.py | 151 +++ examples/Pipeline/PaddleNLP/bert/benchmark.sh | 59 + examples/Pipeline/PaddleNLP/bert/config.yml | 32 + examples/Pipeline/PaddleNLP/bert/get_data.sh | 6 + .../PaddleNLP/bert/pipeline_rpc_client.py | 37 + .../Pipeline/PaddleNLP/bert/web_service.py | 61 + examples/Pipeline/PaddleOCR/ocr/README.md | 60 + examples/Pipeline/PaddleOCR/ocr/README_CN.md | 60 + examples/Pipeline/PaddleOCR/ocr/benchmark.py | 163 +++ examples/Pipeline/PaddleOCR/ocr/benchmark.sh | 88 ++ examples/Pipeline/PaddleOCR/ocr/config.yml | 90 ++ examples/Pipeline/PaddleOCR/ocr/imgs/1.jpg | Bin 0 -> 312292 bytes .../PaddleOCR/ocr/pipeline_http_client.py | 37 + .../PaddleOCR/ocr/pipeline_rpc_client.py | 41 + .../Pipeline/PaddleOCR/ocr/web_service.py | 180 +++ .../Pipeline/imdb_model_ensemble/README.md | 19 + .../Pipeline/imdb_model_ensemble/README_CN.md | 19 + .../Pipeline/imdb_model_ensemble/analyse.py | 32 + .../Pipeline/imdb_model_ensemble/analyse.yaml | 4 + .../Pipeline/imdb_model_ensemble/config.yml | 100 ++ .../Pipeline/imdb_model_ensemble/get_data.sh | 4 + .../test_pipeline_client.py | 36 + .../test_pipeline_server.py | 111 ++ .../Pipeline/simple_web_service/README.md | 19 + .../Pipeline/simple_web_service/README_CN.md | 19 + .../Pipeline/simple_web_service/benchmark.py | 85 ++ .../Pipeline/simple_web_service/benchmark.sh | 43 + .../Pipeline/simple_web_service/config.yml | 48 + .../Pipeline/simple_web_service/get_data.sh | 2 + .../simple_web_service/web_service.py | 59 + .../simple_web_service/web_service_java.py | 60 + 421 files changed, 30246 insertions(+) create mode 100755 examples/Cpp/PaddleClas/imagenet/README.md create mode 100755 examples/Cpp/PaddleClas/imagenet/README_CN.md create mode 100644 examples/Cpp/PaddleClas/imagenet/benchmark.py create mode 100644 examples/Cpp/PaddleClas/imagenet/benchmark.sh create mode 100644 examples/Cpp/PaddleClas/imagenet/daisy.jpg create mode 100644 examples/Cpp/PaddleClas/imagenet/data/n01440764_10026.JPEG create mode 100644 examples/Cpp/PaddleClas/imagenet/flower.jpg create mode 100644 examples/Cpp/PaddleClas/imagenet/get_model.sh create mode 100644 examples/Cpp/PaddleClas/imagenet/imagenet.label create mode 100644 examples/Cpp/PaddleClas/imagenet/resnet50_http_client.py create mode 100644 examples/Cpp/PaddleClas/imagenet/resnet50_rpc_client.py create mode 100644 examples/Cpp/PaddleClas/imagenet/test_image_reader.py create mode 100644 examples/Cpp/PaddleClas/mobilenet/README.md create mode 100644 examples/Cpp/PaddleClas/mobilenet/README_CN.md create mode 100644 examples/Cpp/PaddleClas/mobilenet/daisy.jpg create mode 100644 examples/Cpp/PaddleClas/mobilenet/mobilenet_tutorial.py create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/README.md create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/README_CN.md create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/benchmark.py create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/benchmark.sh create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/daisy.jpg create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/resnet50_debug.py create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/resnet50_v2_tutorial.py create mode 100644 examples/Cpp/PaddleClas/resnet_v2_50/run_benchmark.sh create mode 100644 examples/Cpp/PaddleDetection/README.md create mode 100644 examples/Cpp/PaddleDetection/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/blazeface/README.md create mode 100644 examples/Cpp/PaddleDetection/blazeface/test_client.py create mode 100644 examples/Cpp/PaddleDetection/cascade_rcnn/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/cascade_rcnn/README.md create mode 100644 examples/Cpp/PaddleDetection/cascade_rcnn/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/cascade_rcnn/get_data.sh create mode 100644 examples/Cpp/PaddleDetection/cascade_rcnn/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/cascade_rcnn/test_client.py create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README.md create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/test_client.py create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README.md create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/test_client.py create mode 100644 examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/000000014439.jpg create mode 100644 examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README.md create mode 100644 examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/test_client.py create mode 100644 examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README.md create mode 100644 examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/test_client.py create mode 100644 examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/000000014439.jpg create mode 100644 examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README.md create mode 100644 examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/test_client.py create mode 100644 examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README.md create mode 100644 examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/test_client.py create mode 100644 examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README.md create mode 100644 examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/test_client.py create mode 100644 examples/Cpp/PaddleDetection/yolov4/000000570688.jpg create mode 100644 examples/Cpp/PaddleDetection/yolov4/README.md create mode 100644 examples/Cpp/PaddleDetection/yolov4/README_CN.md create mode 100644 examples/Cpp/PaddleDetection/yolov4/label_list.txt create mode 100644 examples/Cpp/PaddleDetection/yolov4/test_client.py create mode 100755 examples/Cpp/PaddleNLP/bert/README.md create mode 100755 examples/Cpp/PaddleNLP/bert/README_CN.md create mode 100644 examples/Cpp/PaddleNLP/bert/batching.py create mode 100644 examples/Cpp/PaddleNLP/bert/benchmark.py create mode 100644 examples/Cpp/PaddleNLP/bert/benchmark.sh create mode 100644 examples/Cpp/PaddleNLP/bert/benchmark_with_profile.sh create mode 100644 examples/Cpp/PaddleNLP/bert/bert_client.py create mode 100644 examples/Cpp/PaddleNLP/bert/bert_gpu_server.py create mode 100644 examples/Cpp/PaddleNLP/bert/bert_httpclient.py create mode 100644 examples/Cpp/PaddleNLP/bert/bert_reader.py create mode 100644 examples/Cpp/PaddleNLP/bert/bert_server.py create mode 100644 examples/Cpp/PaddleNLP/bert/get_data.sh create mode 100644 examples/Cpp/PaddleNLP/bert/prepare_model.py create mode 100644 examples/Cpp/PaddleNLP/bert/test_multi_fetch_client.py create mode 100644 examples/Cpp/PaddleNLP/bert/tokenization.py create mode 100755 examples/Cpp/PaddleNLP/lac/README.md create mode 100755 examples/Cpp/PaddleNLP/lac/README_CN.md create mode 100644 examples/Cpp/PaddleNLP/lac/benchmark.py create mode 100644 examples/Cpp/PaddleNLP/lac/lac_client.py create mode 100755 examples/Cpp/PaddleNLP/lac/lac_http_client.py create mode 100644 examples/Cpp/PaddleNLP/lac/lac_reader.py create mode 100644 examples/Cpp/PaddleNLP/lac/utils.py create mode 100644 examples/Cpp/PaddleNLP/senta/README.md create mode 100644 examples/Cpp/PaddleNLP/senta/README_CN.md create mode 100644 examples/Cpp/PaddleNLP/senta/get_data.sh create mode 100644 examples/Cpp/PaddleNLP/senta/senta_web_service.py create mode 100755 examples/Cpp/PaddleOCR/ocr/README.md create mode 100755 examples/Cpp/PaddleOCR/ocr/README_CN.md create mode 100644 examples/Cpp/PaddleOCR/ocr/det_debugger_server.py create mode 100644 examples/Cpp/PaddleOCR/ocr/det_web_server.py create mode 100644 examples/Cpp/PaddleOCR/ocr/imgs/1.jpg create mode 100644 examples/Cpp/PaddleOCR/ocr/ocr_cpp_client.py create mode 100644 examples/Cpp/PaddleOCR/ocr/ocr_debugger_server.py create mode 100644 examples/Cpp/PaddleOCR/ocr/ocr_web_client.py create mode 100644 examples/Cpp/PaddleOCR/ocr/ocr_web_server.py create mode 100644 examples/Cpp/PaddleOCR/ocr/rec_debugger_server.py create mode 100644 examples/Cpp/PaddleOCR/ocr/rec_img/ch_doc3.jpg create mode 100644 examples/Cpp/PaddleOCR/ocr/rec_web_client.py create mode 100644 examples/Cpp/PaddleOCR/ocr/rec_web_server.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/README.md create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/README_CN.md create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/args.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/benchmark.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/benchmark.sh create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.sh create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/clean.sh create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/get_data.sh create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/local_train.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/network_conf.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/test_client.py create mode 100644 examples/Cpp/PaddleRec/criteo_ctr/test_server.py create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/README.md create mode 100644 examples/Cpp/PaddleRec/criteo_ctr_with_cube/README_CN.md create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/criteo_reader.py create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/cube.conf create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/gflags.conf create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/keys create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube_prepare.sh create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/get_data.sh create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/local_train.py create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/network_conf.py create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_client.py create mode 100755 examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_server.py create mode 100644 examples/Cpp/PaddleSeg/deeplabv3/N0060.jpg create mode 100644 examples/Cpp/PaddleSeg/deeplabv3/README.md create mode 100644 examples/Cpp/PaddleSeg/deeplabv3/README_CN.md create mode 100644 examples/Cpp/PaddleSeg/deeplabv3/deeplabv3_client.py create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/N0060.jpg create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/README.md create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/README_CN.md create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/seg_client.py create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/unet_benchmark/README.md create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/unet_benchmark/img_data/N0060.jpg create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/unet_benchmark/launch_benckmark.sh create mode 100644 examples/Cpp/PaddleSeg/unet_for_image_seg/unet_benchmark/unet_benchmark.py create mode 100644 examples/Cpp/encryption/README.md create mode 100644 examples/Cpp/encryption/README_CN.md create mode 100644 examples/Cpp/encryption/encrypt.py create mode 100644 examples/Cpp/encryption/get_data.sh create mode 100644 examples/Cpp/encryption/test_client.py create mode 100644 examples/Cpp/fit_a_line/README.md create mode 100755 examples/Cpp/fit_a_line/README_CN.md create mode 100644 examples/Cpp/fit_a_line/benchmark.py create mode 100644 examples/Cpp/fit_a_line/benchmark.sh create mode 100644 examples/Cpp/fit_a_line/get_data.sh create mode 100644 examples/Cpp/fit_a_line/local_train.py create mode 100755 examples/Cpp/fit_a_line/test_client.py create mode 100755 examples/Cpp/fit_a_line/test_httpclient.py create mode 100644 examples/Cpp/fit_a_line/test_multi_process_client.py create mode 100644 examples/Cpp/fit_a_line/test_server.py create mode 100755 examples/Cpp/imdb/README.md create mode 100755 examples/Cpp/imdb/README_CN.md create mode 100644 examples/Cpp/imdb/abtest_client.py create mode 100644 examples/Cpp/imdb/abtest_get_data.py create mode 100644 examples/Cpp/imdb/benchmark.py create mode 100644 examples/Cpp/imdb/benchmark.sh create mode 100644 examples/Cpp/imdb/clean_data.sh create mode 100644 examples/Cpp/imdb/get_data.sh create mode 100644 examples/Cpp/imdb/imdb_reader.py create mode 100644 examples/Cpp/imdb/local_train.py create mode 100644 examples/Cpp/imdb/nets.py create mode 100644 examples/Cpp/imdb/test_client.py create mode 100755 examples/Cpp/imdb/test_http_client.py create mode 100644 examples/Cpp/low_precision/resnet50/README.md create mode 100644 examples/Cpp/low_precision/resnet50/README_CN.md create mode 100644 examples/Cpp/low_precision/resnet50/daisy.jpg create mode 100644 examples/Cpp/low_precision/resnet50/resnet50_client.py create mode 100644 examples/Cpp/util/README.md create mode 100644 examples/Cpp/util/README_CN.md create mode 100644 examples/Cpp/util/get_acc.py create mode 100644 examples/Cpp/util/show_profile.py create mode 100644 examples/Cpp/util/timeline_trace.py create mode 100644 examples/Cpp/xpu/bert/README.md create mode 100644 examples/Cpp/xpu/bert/bert_client.py create mode 100644 examples/Cpp/xpu/bert/chinese_bert_reader.py create mode 100644 examples/Cpp/xpu/bert/get_data.sh create mode 100644 examples/Cpp/xpu/ernie/README.md create mode 100644 examples/Cpp/xpu/ernie/chinese_ernie_reader.py create mode 100644 examples/Cpp/xpu/ernie/ernie_client.py create mode 100644 examples/Cpp/xpu/ernie/get_data.sh create mode 100755 examples/Cpp/xpu/fit_a_line_xpu/README.md create mode 100755 examples/Cpp/xpu/fit_a_line_xpu/README_CN.md create mode 100644 examples/Cpp/xpu/fit_a_line_xpu/benchmark.py create mode 100644 examples/Cpp/xpu/fit_a_line_xpu/get_data.sh create mode 100644 examples/Cpp/xpu/fit_a_line_xpu/local_train.py create mode 100644 examples/Cpp/xpu/fit_a_line_xpu/test_client.py create mode 100644 examples/Cpp/xpu/resnet_v2_50_xpu/README.md create mode 100644 examples/Cpp/xpu/resnet_v2_50_xpu/README_CN.md create mode 100644 examples/Cpp/xpu/resnet_v2_50_xpu/daisy.jpg create mode 100644 examples/Cpp/xpu/resnet_v2_50_xpu/localpredict.py create mode 100644 examples/Cpp/xpu/resnet_v2_50_xpu/resnet50_client.py create mode 100644 examples/Cpp/xpu/vgg19/README.md create mode 100644 examples/Cpp/xpu/vgg19/daisy.jpg create mode 100644 examples/Cpp/xpu/vgg19/vgg19_client.py create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/README.md create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/benchmark_cfg.yaml create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/config.yml create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/DarkNet53/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/README.md create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/config.yml create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/HRNet_W18_C/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/README.md create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/config.yml create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV1/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/README.md create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/config.yml create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV2/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README.md create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/config.yml create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README.md create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/config.yml create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/README.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/config.yml create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/config.yml create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/README.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/config.yml create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_KL/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/config.yml create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet50_vd_PACT/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/README.md create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/config.yml create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ResNet_V2_50/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README.md create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.py create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.sh create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/config.yml create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/cpu_utilization.py create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleClas/imagenet/README.md create mode 100644 examples/Pipeline/PaddleClas/imagenet/README_CN.md create mode 100644 examples/Pipeline/PaddleClas/imagenet/config.yml create mode 100644 examples/Pipeline/PaddleClas/imagenet/daisy.jpg create mode 100644 examples/Pipeline/PaddleClas/imagenet/get_model.sh create mode 100644 examples/Pipeline/PaddleClas/imagenet/imagenet.label create mode 100644 examples/Pipeline/PaddleClas/imagenet/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleClas/imagenet/resnet50_web_service.py create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/000000570688.jpg create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/README.md create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.py create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.sh create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/benchmark_config.yaml create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/config.yml create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/label_list.txt create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleDetection/faster_rcnn/web_service.py create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/000000570688.jpg create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/README.md create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/README_CN.md create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.py create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.sh create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark_config.yaml create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/config.yml create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/label_list.txt create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleDetection/ppyolo_mbv3/web_service.py create mode 100644 examples/Pipeline/PaddleDetection/yolov3/000000570688.jpg create mode 100644 examples/Pipeline/PaddleDetection/yolov3/README.md create mode 100644 examples/Pipeline/PaddleDetection/yolov3/README_CN.md create mode 100644 examples/Pipeline/PaddleDetection/yolov3/benchmark.py create mode 100644 examples/Pipeline/PaddleDetection/yolov3/benchmark.sh create mode 100644 examples/Pipeline/PaddleDetection/yolov3/benchmark_config.yaml create mode 100644 examples/Pipeline/PaddleDetection/yolov3/config.yml create mode 100644 examples/Pipeline/PaddleDetection/yolov3/label_list.txt create mode 100644 examples/Pipeline/PaddleDetection/yolov3/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleDetection/yolov3/web_service.py create mode 100644 examples/Pipeline/PaddleNLP/bert/README.md create mode 100644 examples/Pipeline/PaddleNLP/bert/README_CN.md create mode 100644 examples/Pipeline/PaddleNLP/bert/benchmark.py create mode 100644 examples/Pipeline/PaddleNLP/bert/benchmark.sh create mode 100644 examples/Pipeline/PaddleNLP/bert/config.yml create mode 100644 examples/Pipeline/PaddleNLP/bert/get_data.sh create mode 100644 examples/Pipeline/PaddleNLP/bert/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleNLP/bert/web_service.py create mode 100644 examples/Pipeline/PaddleOCR/ocr/README.md create mode 100644 examples/Pipeline/PaddleOCR/ocr/README_CN.md create mode 100644 examples/Pipeline/PaddleOCR/ocr/benchmark.py create mode 100644 examples/Pipeline/PaddleOCR/ocr/benchmark.sh create mode 100644 examples/Pipeline/PaddleOCR/ocr/config.yml create mode 100644 examples/Pipeline/PaddleOCR/ocr/imgs/1.jpg create mode 100644 examples/Pipeline/PaddleOCR/ocr/pipeline_http_client.py create mode 100644 examples/Pipeline/PaddleOCR/ocr/pipeline_rpc_client.py create mode 100644 examples/Pipeline/PaddleOCR/ocr/web_service.py create mode 100644 examples/Pipeline/imdb_model_ensemble/README.md create mode 100644 examples/Pipeline/imdb_model_ensemble/README_CN.md create mode 100644 examples/Pipeline/imdb_model_ensemble/analyse.py create mode 100644 examples/Pipeline/imdb_model_ensemble/analyse.yaml create mode 100644 examples/Pipeline/imdb_model_ensemble/config.yml create mode 100644 examples/Pipeline/imdb_model_ensemble/get_data.sh create mode 100644 examples/Pipeline/imdb_model_ensemble/test_pipeline_client.py create mode 100644 examples/Pipeline/imdb_model_ensemble/test_pipeline_server.py create mode 100644 examples/Pipeline/simple_web_service/README.md create mode 100644 examples/Pipeline/simple_web_service/README_CN.md create mode 100644 examples/Pipeline/simple_web_service/benchmark.py create mode 100644 examples/Pipeline/simple_web_service/benchmark.sh create mode 100644 examples/Pipeline/simple_web_service/config.yml create mode 100644 examples/Pipeline/simple_web_service/get_data.sh create mode 100644 examples/Pipeline/simple_web_service/web_service.py create mode 100644 examples/Pipeline/simple_web_service/web_service_java.py diff --git a/examples/Cpp/PaddleClas/imagenet/README.md b/examples/Cpp/PaddleClas/imagenet/README.md new file mode 100755 index 00000000..eaff522a --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/README.md @@ -0,0 +1,41 @@ +## Image Classification + +([简体中文](./README_CN.md)|English) + +The example uses the ResNet50_vd model to perform the imagenet 1000 classification task. + +### Get model config and sample dataset +``` +sh get_model.sh +``` + +### Install preprocess module + +``` +pip3 install paddle_serving_app +``` + + +### Inference Service(Support BRPC-Client/GRPC-Client/Http-Client) + +launch server side +``` +python3 -m paddle_serving_server.serve --model ResNet50_vd_model --port 9696 #cpu inference service +``` + +``` +python3 -m paddle_serving_server.serve --model ResNet50_vd_model --port 9696 --gpu_ids 0 #gpu inference service +``` + +### BRPC-Client +client send inference request +``` +python3 resnet50_rpc_client.py ResNet50_vd_client_config/serving_client_conf.prototxt +``` +*the port of server side in this example is 9696 + +### GRPC-Client/Http-Client +client send inference request +``` +python3 resnet50_http_client.py ResNet50_vd_client_config/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/PaddleClas/imagenet/README_CN.md b/examples/Cpp/PaddleClas/imagenet/README_CN.md new file mode 100755 index 00000000..642bee3d --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/README_CN.md @@ -0,0 +1,41 @@ +## 图像分类示例 + +(简体中文|[English](./README.md)) + +示例中采用ResNet50_vd模型执行imagenet 1000分类任务。 + +### 获取模型配置文件和样例数据 +``` +sh get_model.sh +``` + +### 安装数据预处理模块 + +``` +pip3 install paddle_serving_app +``` + +### 启动服务端(支持BRPC-Client、GRPC-Client、Http-Client) + +启动server端 +``` +python3 -m paddle_serving_server.serve --model ResNet50_vd_model --port 9696 #cpu预测服务 +``` + +``` +python3 -m paddle_serving_server.serve --model ResNet50_vd_model --port 9696 --gpu_ids 0 #gpu预测服务 +``` + +### BRPC-Client预测 +client端进行预测 +``` +python3 resnet50_rpc_client.py ResNet50_vd_client_config/serving_client_conf.prototxt +``` +*server端示例中服务端口为9696端口 + + +### GRPC-Client/Http-Client预测 +client端进行预测 +``` +python3 resnet50_http_client.py ResNet50_vd_client_config/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/PaddleClas/imagenet/benchmark.py b/examples/Cpp/PaddleClas/imagenet/benchmark.py new file mode 100644 index 00000000..12b013bd --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/benchmark.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import unicode_literals, absolute_import +import os +import sys +import time +import requests +import json +import base64 +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency +from paddle_serving_app.reader import Sequential, File2Image, Resize +from paddle_serving_app.reader import CenterCrop, RGB2BGR, Transpose, Div, Normalize + +args = benchmark_args() + +seq_preprocess = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + + +def single_func(idx, resource): + file_list = [] + turns = resource["turns"] + latency_flags = False + if os.getenv("FLAGS_serving_latency"): + latency_flags = True + latency_list = [] + for file_name in os.listdir("./image_data/n01440764"): + file_list.append(file_name) + img_list = [] + for i in range(1000): + img_list.append("./image_data/n01440764/" + file_list[i]) + profile_flags = False + if "FLAGS_profile_client" in os.environ and os.environ[ + "FLAGS_profile_client"]: + profile_flags = True + if args.request == "rpc": + fetch = ["score"] + client = Client() + client.load_client_config(args.model) + client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) + start = time.time() + for i in range(turns): + if args.batch_size >= 1: + l_start = time.time() + feed_batch = [] + i_start = time.time() + for bi in range(args.batch_size): + img = seq_preprocess(img_list[i]) + feed_batch.append({"image": img}) + i_end = time.time() + if profile_flags: + print("PROFILE\tpid:{}\timage_pre_0:{} image_pre_1:{}". + format(os.getpid(), + int(round(i_start * 1000000)), + int(round(i_end * 1000000)))) + + result = client.predict(feed=feed_batch, fetch=fetch) + l_end = time.time() + if latency_flags: + latency_list.append(l_end * 1000 - l_start * 1000) + else: + print("unsupport batch size {}".format(args.batch_size)) + + elif args.request == "http": + py_version = sys.version_info[0] + server = "http://" + resource["endpoint"][idx % len(resource[ + "endpoint"])] + "/image/prediction" + start = time.time() + for i in range(turns): + if py_version == 2: + image = base64.b64encode( + open("./image_data/n01440764/" + file_list[i]).read()) + else: + image_path = "./image_data/n01440764/" + file_list[i] + image = base64.b64encode(open(image_path, "rb").read()).decode( + "utf-8") + req = json.dumps({"feed": [{"image": image}], "fetch": ["score"]}) + r = requests.post( + server, data=req, headers={"Content-Type": "application/json"}) + end = time.time() + if latency_flags: + return [[end - start], latency_list] + return [[end - start]] + + +if __name__ == '__main__': + multi_thread_runner = MultiThreadRunner() + endpoint_list = [ + "127.0.0.1:9292", "127.0.0.1:9293", "127.0.0.1:9294", "127.0.0.1:9295" + ] + turns = 100 + start = time.time() + result = multi_thread_runner.run( + single_func, args.thread, {"endpoint": endpoint_list, + "turns": turns}) + #result = single_func(0, {"endpoint": endpoint_list}) + end = time.time() + total_cost = end - start + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + avg_cost = avg_cost / args.thread + print("total cost: {}s".format(end - start)) + print("each thread cost: {}s.".format(avg_cost)) + print("qps: {}samples/s".format(args.batch_size * args.thread * turns / + total_cost)) + if os.getenv("FLAGS_serving_latency"): + show_latency(result[1]) diff --git a/examples/Cpp/PaddleClas/imagenet/benchmark.sh b/examples/Cpp/PaddleClas/imagenet/benchmark.sh new file mode 100644 index 00000000..99bda3c8 --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/benchmark.sh @@ -0,0 +1,50 @@ +rm profile_log* +export CUDA_VISIBLE_DEVICES=0,1,2,3 +export FLAGS_profile_server=1 +export FLAGS_profile_client=1 +python -m paddle_serving_server.serve --model $1 --port 9292 --thread 4 --gpu_ids 0,1,2,3 --mem_optim --ir_optim 2> elog > stdlog & + +sleep 5 +gpu_id=0 +#save cpu and gpu utilization log +if [ -d utilization ];then + rm -rf utilization +else + mkdir utilization +fi + +#warm up +$PYTHONROOT/bin/python3 benchmark.py --thread 4 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 +echo -e "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + +for thread_num in 1 4 8 16 +do +for batch_size in 1 4 16 64 +do + job_bt=`date '+%Y%m%d%H%M%S'` + nvidia-smi --id=0 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_use.log 2>&1 & + nvidia-smi --id=0 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + gpu_memory_pid=$! + $PYTHONROOT/bin/python benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + kill ${gpu_memory_pid} + kill `ps -ef|grep used_memory|awk '{print $2}'` + echo "model name :" $1 + echo "thread num :" $thread_num + echo "batch size :" $batch_size + echo "=================Done====================" + echo "model name :$1" >> profile_log + echo "batch size :$batch_size" >> profile_log + job_et=`date '+%Y%m%d%H%M%S'` + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$1 + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$1 + rm -rf gpu_use.log gpu_utilization.log + $PYTHONROOT/bin/python ../util/show_profile.py profile $thread_num >> profile_log + tail -n 8 profile >> profile_log + echo "" >> profile_log_$1 +done +done + +#Divided log +awk 'BEGIN{RS="\n\n"}{i++}{print > "ResNet_log_"i}' profile_log_$1 +mkdir $1_log && mv ResNet_log_* $1_log +ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/examples/Cpp/PaddleClas/imagenet/daisy.jpg b/examples/Cpp/PaddleClas/imagenet/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleClas/imagenet/data/n01440764_10026.JPEG b/examples/Cpp/PaddleClas/imagenet/data/n01440764_10026.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..b985769e1c1f09585e67291a4926537186a40e49 GIT binary patch literal 13697 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 literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleClas/imagenet/get_model.sh b/examples/Cpp/PaddleClas/imagenet/get_model.sh new file mode 100644 index 00000000..e017cc51 --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/get_model.sh @@ -0,0 +1,7 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/ResNet50_vd.tar.gz +tar -xzvf ResNet50_vd.tar.gz +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/ResNet101_vd.tar.gz +tar -xzvf ResNet101_vd.tar.gz + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Cpp/PaddleClas/imagenet/imagenet.label b/examples/Cpp/PaddleClas/imagenet/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Cpp/PaddleClas/imagenet/resnet50_http_client.py b/examples/Cpp/PaddleClas/imagenet/resnet50_http_client.py new file mode 100644 index 00000000..77782671 --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/resnet50_http_client.py @@ -0,0 +1,67 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from paddle_serving_client import HttpClient +from paddle_serving_app.reader import Sequential, URL2Image, Resize +from paddle_serving_app.reader import CenterCrop, RGB2BGR, Transpose, Div, Normalize +import time + +client = HttpClient() +client.load_client_config(sys.argv[1]) +''' +if you want use GRPC-client, set_use_grpc_client(True) +or you can directly use client.grpc_client_predict(...) +as for HTTP-client,set_use_grpc_client(False)(which is default) +or you can directly use client.http_client_predict(...) +''' +#client.set_use_grpc_client(True) +''' +if you want to enable Encrypt Module,uncommenting the following line +''' +#client.use_key("./key") +''' +if you want to compress,uncommenting the following line +''' +#client.set_response_compress(True) +#client.set_request_compress(True) +''' +we recommend use Proto data format in HTTP-body, set True(which is default) +if you want use JSON data format in HTTP-body, set False +''' +#client.set_http_proto(True) +client.connect(["127.0.0.1:9696"]) + +label_dict = {} +label_idx = 0 +with open("imagenet.label") as fin: + for line in fin: + label_dict[label_idx] = line.strip() + label_idx += 1 + +seq = Sequential([ + URL2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +start = time.time() +image_file = "https://paddle-serving.bj.bcebos.com/imagenet-example/daisy.jpg" +for i in range(10): + img = seq(image_file) + fetch_map = client.predict( + feed={"image": img}, fetch=["score"], batch=False) + print(fetch_map) + +end = time.time() +print(end - start) diff --git a/examples/Cpp/PaddleClas/imagenet/resnet50_rpc_client.py b/examples/Cpp/PaddleClas/imagenet/resnet50_rpc_client.py new file mode 100644 index 00000000..b23f9917 --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/resnet50_rpc_client.py @@ -0,0 +1,49 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, URL2Image, Resize +from paddle_serving_app.reader import CenterCrop, RGB2BGR, Transpose, Div, Normalize +import time + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9696"]) + +label_dict = {} +label_idx = 0 +with open("imagenet.label") as fin: + for line in fin: + label_dict[label_idx] = line.strip() + label_idx += 1 + +seq = Sequential([ + URL2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +start = time.time() +image_file = "https://paddle-serving.bj.bcebos.com/imagenet-example/daisy.jpg" +for i in range(10): + img = seq(image_file) + fetch_map = client.predict( + feed={"image": img}, fetch=["score"], batch=False) + prob = max(fetch_map["score"][0]) + label = label_dict[fetch_map["score"][0].tolist().index(prob)].strip( + ).replace(",", "") + print("prediction: {}, probability: {}".format(label, prob)) + +end = time.time() +print(end - start) diff --git a/examples/Cpp/PaddleClas/imagenet/test_image_reader.py b/examples/Cpp/PaddleClas/imagenet/test_image_reader.py new file mode 100644 index 00000000..b3e1aac7 --- /dev/null +++ b/examples/Cpp/PaddleClas/imagenet/test_image_reader.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_app.reader.image_reader import String2Image, Base64ToImage, Sequential +import base64 + + +def test_String2Image(): + with open("./daisy.jpg") as f: + img_str = f.read() + seq = Sequential([String2Image()]) + img = seq(img_str) + assert (img.shape == (563, 500, 3)) + + +def test_Base64ToImage(): + with open("./daisy.jpg") as f: + img_str = f.read() + seq = Sequential([Base64ToImage()]) + img = seq(base64.b64encode(img_str)) + assert (img.shape == (563, 500, 3)) + + +if __name__ == "__main__": + test_String2Image() + test_Base64ToImage() diff --git a/examples/Cpp/PaddleClas/mobilenet/README.md b/examples/Cpp/PaddleClas/mobilenet/README.md new file mode 100644 index 00000000..1a16b749 --- /dev/null +++ b/examples/Cpp/PaddleClas/mobilenet/README.md @@ -0,0 +1,22 @@ +# Image Classification + +## Get Model + +``` +python3 -m paddle_serving_app.package --get_model mobilenet_v2_imagenet +tar -xzvf mobilenet_v2_imagenet.tar.gz +``` + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model mobilenet_v2_imagenet_model --gpu_ids 0 --port 9393 +``` + +### Client Prediction + +``` +python3 mobilenet_tutorial.py +``` diff --git a/examples/Cpp/PaddleClas/mobilenet/README_CN.md b/examples/Cpp/PaddleClas/mobilenet/README_CN.md new file mode 100644 index 00000000..68474e5d --- /dev/null +++ b/examples/Cpp/PaddleClas/mobilenet/README_CN.md @@ -0,0 +1,22 @@ +# 图像分类 + +## 获取模型 + +``` +python3 -m paddle_serving_app.package --get_model mobilenet_v2_imagenet +tar -xzvf mobilenet_v2_imagenet.tar.gz +``` + +## RPC 服务 + +### 启动服务端 + +``` +python3 -m paddle_serving_server.serve --model mobilenet_v2_imagenet_model --gpu_ids 0 --port 9393 +``` + +### 客户端预测 + +``` +python3 mobilenet_tutorial.py +``` diff --git a/examples/Cpp/PaddleClas/mobilenet/daisy.jpg b/examples/Cpp/PaddleClas/mobilenet/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleClas/mobilenet/mobilenet_tutorial.py b/examples/Cpp/PaddleClas/mobilenet/mobilenet_tutorial.py new file mode 100644 index 00000000..9550a5ff --- /dev/null +++ b/examples/Cpp/PaddleClas/mobilenet/mobilenet_tutorial.py @@ -0,0 +1,32 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, File2Image, Resize +from paddle_serving_app.reader import CenterCrop, RGB2BGR, Transpose, Div, Normalize + +client = Client() +client.load_client_config( + "mobilenet_v2_imagenet_client/serving_client_conf.prototxt") +client.connect(["127.0.0.1:9393"]) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = client.predict(feed={"image": img}, fetch=["feature_map"]) +print(fetch_map["feature_map"].reshape(-1)) diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/README.md b/examples/Cpp/PaddleClas/resnet_v2_50/README.md new file mode 100644 index 00000000..12144b0e --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/README.md @@ -0,0 +1,22 @@ +# Image Classification + +## Get Model + +``` +python3 -m paddle_serving_app.package --get_model resnet_v2_50_imagenet +tar -xzvf resnet_v2_50_imagenet.tar.gz +``` + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model resnet_v2_50_imagenet_model --gpu_ids 0 --port 9393 +``` + +### Client Prediction + +``` +python3 resnet50_v2_tutorial.py +``` diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/README_CN.md b/examples/Cpp/PaddleClas/resnet_v2_50/README_CN.md new file mode 100644 index 00000000..fee0e01f --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/README_CN.md @@ -0,0 +1,22 @@ +# 图像分类 + +## 获取模型 + +``` +python3 -m paddle_serving_app.package --get_model resnet_v2_50_imagenet +tar -xzvf resnet_v2_50_imagenet.tar.gz +``` + +## RPC 服务 + +### 启动服务端 + +``` +python3 -m paddle_serving_server.serve --model resnet_v2_50_imagenet_model --gpu_ids 0 --port 9393 +``` + +### 客户端预测 + +``` +python3 resnet50_v2_tutorial.py +``` diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/benchmark.py b/examples/Cpp/PaddleClas/resnet_v2_50/benchmark.py new file mode 100644 index 00000000..c232d84e --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/benchmark.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import unicode_literals, absolute_import +import os +import sys +import time +import json +import requests +import numpy as np +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize + +args = benchmark_args() + + +def single_func(idx, resource): + total_number = 0 + profile_flags = False + latency_flags = False + if os.getenv("FLAGS_profile_client"): + profile_flags = True + if os.getenv("FLAGS_serving_latency"): + latency_flags = True + latency_list = [] + + if args.request == "rpc": + client = Client() + client.load_client_config(args.model) + client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) + start = time.time() + for i in range(turns): + if args.batch_size >= 1: + l_start = time.time() + seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), + Transpose((2, 0, 1)), Div(255), Normalize( + [0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) + ]) + image_file = "daisy.jpg" + img = seq(image_file) + feed_data = np.array(img) + feed_data = np.expand_dims(feed_data, 0).repeat( + args.batch_size, axis=0) + result = client.predict( + feed={"image": feed_data}, + fetch=["save_infer_model/scale_0.tmp_0"], + batch=True) + l_end = time.time() + if latency_flags: + latency_list.append(l_end * 1000 - l_start * 1000) + total_number = total_number + 1 + else: + print("unsupport batch size {}".format(args.batch_size)) + + else: + raise ValueError("not implemented {} request".format(args.request)) + end = time.time() + if latency_flags: + return [[end - start], latency_list, [total_number]] + else: + return [[end - start]] + + +if __name__ == '__main__': + multi_thread_runner = MultiThreadRunner() + endpoint_list = ["127.0.0.1:9393"] + turns = 1 + start = time.time() + result = multi_thread_runner.run( + single_func, args.thread, {"endpoint": endpoint_list, + "turns": turns}) + end = time.time() + total_cost = end - start + total_number = 0 + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / args.thread + + print("total cost-include init: {}s".format(total_cost)) + print("each thread cost: {}s. ".format(avg_cost)) + print("qps: {}samples/s".format(args.batch_size * total_number / ( + avg_cost * args.thread))) + print("qps(request): {}samples/s".format(total_number / (avg_cost * + args.thread))) + print("total count: {} ".format(total_number)) + if os.getenv("FLAGS_serving_latency"): + show_latency(result[1]) diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/benchmark.sh b/examples/Cpp/PaddleClas/resnet_v2_50/benchmark.sh new file mode 100644 index 00000000..0f94276f --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/benchmark.sh @@ -0,0 +1,58 @@ +rm profile_log* +rm -rf resnet_log* +export CUDA_VISIBLE_DEVICES=0,1,2,3 +export FLAGS_profile_server=1 +export FLAGS_profile_client=1 +export FLAGS_serving_latency=1 +gpu_id=3 +#save cpu and gpu utilization log +if [ -d utilization ];then + rm -rf utilization +else + mkdir utilization +fi +#start server +python3.6 -m paddle_serving_server.serve --model $1 --port 9393 --thread 10 --gpu_ids $gpu_id --use_trt --ir_optim > elog 2>&1 & +sleep 15 + +#warm up +python3.6 benchmark.py --thread 1 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 +echo -e "import psutil\nimport time\nwhile True:\n\tcpu_res = psutil.cpu_percent()\n\twith open('cpu.txt', 'a+') as f:\n\t\tf.write(f'{cpu_res}\\\n')\n\ttime.sleep(0.1)" > cpu.py +for thread_num in 1 2 4 8 16 +do +for batch_size in 1 4 8 16 32 +do + job_bt=`date '+%Y%m%d%H%M%S'` + nvidia-smi --id=$gpu_id --query-compute-apps=used_memory --format=csv -lms 100 > gpu_memory_use.log 2>&1 & + nvidia-smi --id=$gpu_id --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + rm -rf cpu.txt + python3.6 cpu.py & + gpu_memory_pid=$! + python3.6 benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + kill `ps -ef|grep used_memory|awk '{print $2}'` > /dev/null + kill `ps -ef|grep utilization.gpu|awk '{print $2}'` > /dev/null + kill `ps -ef|grep cpu.py|awk '{print $2}'` > /dev/null + echo "model_name:" $1 + echo "thread_num:" $thread_num + echo "batch_size:" $batch_size + echo "=================Done====================" + echo "model_name:$1" >> profile_log_$1 + echo "batch_size:$batch_size" >> profile_log_$1 + job_et=`date '+%Y%m%d%H%M%S'` + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "CPU_UTILIZATION:", max}' cpu.txt >> profile_log_$1 + #awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "MAX_GPU_MEMORY:", max}' gpu_memory_use.log >> profile_log_$1 + #awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$1 + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "MAX_GPU_MEMORY:", max}' gpu_memory_use.log >> profile_log_$1 + awk -F" " '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$1 + rm -rf gpu_memory_use.log gpu_utilization.log gpu_utilization.log.tmp + python3.6 ../util/show_profile.py profile $thread_num >> profile_log_$1 + tail -n 10 profile >> profile_log_$1 + echo "" >> profile_log_$1 +done +done + +#Divided log +awk 'BEGIN{RS="\n\n"}{i++}{print > "resnet_log_"i}' profile_log_$1 +mkdir resnet_log && mv resnet_log_* resnet_log +ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/daisy.jpg b/examples/Cpp/PaddleClas/resnet_v2_50/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/resnet50_debug.py b/examples/Cpp/PaddleClas/resnet_v2_50/resnet50_debug.py new file mode 100644 index 00000000..6919b490 --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/resnet50_debug.py @@ -0,0 +1,31 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize +from paddle_serving_app.local_predict import LocalPredictor +import sys + +debugger = LocalPredictor() +debugger.load_model_config(sys.argv[1], gpu=True) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = debugger.predict(feed={"image": img}, fetch=["feature_map"]) +print(fetch_map["feature_map"].reshape(-1)) diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/resnet50_v2_tutorial.py b/examples/Cpp/PaddleClas/resnet_v2_50/resnet50_v2_tutorial.py new file mode 100644 index 00000000..b249d2a6 --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/resnet50_v2_tutorial.py @@ -0,0 +1,32 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize + +client = Client() +client.load_client_config( + "resnet_v2_50_imagenet_client/serving_client_conf.prototxt") +client.connect(["127.0.0.1:9393"]) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = client.predict(feed={"image": img}, fetch=["score"]) +print(fetch_map["score"].reshape(-1)) diff --git a/examples/Cpp/PaddleClas/resnet_v2_50/run_benchmark.sh b/examples/Cpp/PaddleClas/resnet_v2_50/run_benchmark.sh new file mode 100644 index 00000000..e63be7ed --- /dev/null +++ b/examples/Cpp/PaddleClas/resnet_v2_50/run_benchmark.sh @@ -0,0 +1,6 @@ +if [ ! -x "ResNet50.tar.gz"]; then + wget https://paddle-inference-dist.bj.bcebos.com/AI-Rank/models/Paddle/ResNet50.tar.gz +fi +tar -xzvf ResNet50.tar.gz +python3.6 -m paddle_serving_client.convert --dirname ./ResNet50 --model_filename model --params_filename params +bash benchmark.sh serving_server serving_client diff --git a/examples/Cpp/PaddleDetection/README.md b/examples/Cpp/PaddleDetection/README.md new file mode 100644 index 00000000..e6d4da87 --- /dev/null +++ b/examples/Cpp/PaddleDetection/README.md @@ -0,0 +1,23 @@ +# Serve models from Paddle Detection + +(English|[简体中文](./README_CN.md)) + +### Introduction + +PaddleDetection flying paddle target detection development kit is designed to help developers complete the whole development process of detection model formation, training, optimization and deployment faster and better. For details, see [Github](https://github.com/PaddlePaddle/PaddleDetection/tree/master) + +This article mainly introduces the deployment of Paddle Detection's dynamic graph model on Serving. + +Paddle Detection provides a large number of [Model Zoo](https://github.com/PaddlePaddle/PaddleDetection/blob/master/docs/MODEL_ZOO_cn.md), these model libraries can be used in Paddle Serving with export tools Model. For the export tutorial, please refer to [Paddle Detection Export Model Tutorial (Simplified Chinese)](https://github.com/PaddlePaddle/PaddleDetection/blob/master/deploy/EXPORT_MODEL.md). + +### Serving example +Several examples of PaddleDetection models used in Serving are given in this folder +All examples support TensorRT. + +- [Faster RCNN](./faster_rcnn_r50_fpn_1x_coco) +- [PPYOLO](./ppyolo_r50vd_dcn_1x_coco) +- [TTFNet](./ttfnet_darknet53_1x_coco) +- [YOLOv3](./yolov3_darknet53_270e_coco) +- [HRNet](./faster_rcnn_hrnetv2p_w18_1x) +- [Fcos](./fcos_dcn_r50_fpn_1x_coco) +- [SSD](./ssd_vgg16_300_240e_voc/) diff --git a/examples/Cpp/PaddleDetection/README_CN.md b/examples/Cpp/PaddleDetection/README_CN.md new file mode 100644 index 00000000..f5e62d7a --- /dev/null +++ b/examples/Cpp/PaddleDetection/README_CN.md @@ -0,0 +1,24 @@ +## 使用Paddle Detection模型 + +([English](./README.md)|简体中文) + +### 简介 + +PaddleDetection飞桨目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的组建、训练、优化及部署等全开发流程。详情参见[Github](https://github.com/PaddlePaddle/PaddleDetection/tree/master) + +本文主要是介绍Paddle Detection的动态图模型在Serving上的部署。 + +### 导出模型 + +Paddle Detection提供了大量的[模型库](https://github.com/PaddlePaddle/PaddleDetection/blob/master/docs/MODEL_ZOO_cn.md), 这些模型库配合导出工具都可以得到可以用于Paddle Serving的模型。导出教程参见[Paddle Detection模型导出教程](https://github.com/PaddlePaddle/PaddleDetection/blob/master/deploy/EXPORT_MODEL.md)。 + +### Serving示例 +本文件夹下给出了多个PaddleDetection模型用于Serving的范例 + +- [Faster RCNN](./faster_rcnn_r50_fpn_1x_coco) +- [PPYOLO](./ppyolo_r50vd_dcn_1x_coco) +- [TTFNet](./ttfnet_darknet53_1x_coco) +- [YOLOv3](./yolov3_darknet53_270e_coco) +- [HRNet](./faster_rcnn_hrnetv2p_w18_1x) +- [Fcos](./fcos_dcn_r50_fpn_1x_coco) +- [SSD](./ssd_vgg16_300_240e_voc/) diff --git a/examples/Cpp/PaddleDetection/blazeface/README.md b/examples/Cpp/PaddleDetection/blazeface/README.md new file mode 100644 index 00000000..29e3026b --- /dev/null +++ b/examples/Cpp/PaddleDetection/blazeface/README.md @@ -0,0 +1,23 @@ +# Blazeface + +## Get Model +``` +python3 -m paddle_serving_app.package --get_model blazeface +tar -xf blazeface.tar.gz +``` + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model serving_server --port 9494 +``` + +### Client Prediction + +``` +python3 test_client.py serving_client/serving_client_conf.prototxt test.jpg +``` + +the result is in `output` folder, including a json file and image file with bounding boxes. diff --git a/examples/Cpp/PaddleDetection/blazeface/test_client.py b/examples/Cpp/PaddleDetection/blazeface/test_client.py new file mode 100644 index 00000000..5e22cb86 --- /dev/null +++ b/examples/Cpp/PaddleDetection/blazeface/test_client.py @@ -0,0 +1,39 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import sys +import numpy as np +from paddle_serving_app.reader import BlazeFacePostprocess + +preprocess = Sequential([ + File2Image(), + Normalize([104, 117, 123], [127.502231, 127.502231, 127.502231], False) +]) + +postprocess = BlazeFacePostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config(sys.argv[1]) +client.connect(['127.0.0.1:9494']) + +im_0 = preprocess(sys.argv[2]) +tmp = Transpose((2, 0, 1)) +im = tmp(im_0) +fetch_map = client.predict( + feed={"image": im}, fetch=["detection_output_0.tmp_0"]) +fetch_map["image"] = sys.argv[2] +fetch_map["im_shape"] = im_0.shape +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/cascade_rcnn/000000570688.jpg b/examples/Cpp/PaddleDetection/cascade_rcnn/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/cascade_rcnn/README.md b/examples/Cpp/PaddleDetection/cascade_rcnn/README.md new file mode 100644 index 00000000..8029f39a --- /dev/null +++ b/examples/Cpp/PaddleDetection/cascade_rcnn/README.md @@ -0,0 +1,21 @@ +# Cascade RCNN model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get The Cascade RCNN Model +``` +sh get_data.sh +``` +If you want to have more detection models, please refer to [Paddle Detection Model Zoo](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/docs/MODEL_ZOO_cn.md) + +### Start the service +``` +python3 -m paddle_serving_server.serve --model serving_server --port 9292 --gpu_id 0 +``` + +### Perform prediction +``` +python3 test_client.py 000000570688.jpg +``` + +Image with bounding boxes and json result would be saved in `output` folder. diff --git a/examples/Cpp/PaddleDetection/cascade_rcnn/README_CN.md b/examples/Cpp/PaddleDetection/cascade_rcnn/README_CN.md new file mode 100644 index 00000000..828aba8a --- /dev/null +++ b/examples/Cpp/PaddleDetection/cascade_rcnn/README_CN.md @@ -0,0 +1,21 @@ +# 使用Paddle Serving部署Cascade RCNN模型 + +(简体中文|[English](./README.md)) + +## 获得Cascade RCNN模型 +``` +sh get_data.sh +``` +如果你想要更多的检测模型,请参考[Paddle检测模型库](https://github.com/PaddlePaddle/PaddleDetection/blob/release/0.2/docs/MODEL_ZOO_cn.md) + +### 启动服务 +``` +python3 -m paddle_serving_server.serve --model serving_server --port 9292 --gpu_id 0 +``` + +### 执行预测 +``` +python3 test_client.py 000000570688.jpg +``` + +客户端已经为图片做好了后处理,在`output`文件夹下存放各个框的json格式信息还有后处理结果图片。 diff --git a/examples/Cpp/PaddleDetection/cascade_rcnn/get_data.sh b/examples/Cpp/PaddleDetection/cascade_rcnn/get_data.sh new file mode 100644 index 00000000..204ae1a2 --- /dev/null +++ b/examples/Cpp/PaddleDetection/cascade_rcnn/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco_serving.tar.gz +tar xf cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco_serving.tar.gz diff --git a/examples/Cpp/PaddleDetection/cascade_rcnn/label_list.txt b/examples/Cpp/PaddleDetection/cascade_rcnn/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/cascade_rcnn/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/cascade_rcnn/test_client.py b/examples/Cpp/PaddleDetection/cascade_rcnn/test_client.py new file mode 100644 index 00000000..aac9f672 --- /dev/null +++ b/examples/Cpp/PaddleDetection/cascade_rcnn/test_client.py @@ -0,0 +1,46 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionResize((800, 1333), True, interpolation=2), + DetectionNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True), + DetectionTranspose((2,0,1)), + DetectionPadStride(32) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9292']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +print(fetch_map) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/000000570688.jpg b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README.md b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README.md new file mode 100644 index 00000000..3c0fb8db --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README.md @@ -0,0 +1,23 @@ +# Faster RCNN HRNet model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get The Faster RCNN HRNet Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/faster_rcnn_hrnetv2p_w18_1x.tar.gz +``` + +### Start the service +``` +tar xf faster_rcnn_hrnetv2p_w18_1x.tar.gz +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +This model support TensorRT, if you want a faster inference, please use `--use_trt`. But you need to do some extra work. +Please reference to https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/c%2B%2B/paddle-trt/trt_dynamic_shape_test.cc#L40 + + +### Prediction +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README_CN.md b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README_CN.md new file mode 100644 index 00000000..11dcbd85 --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/README_CN.md @@ -0,0 +1,22 @@ +# 使用Paddle Serving部署Faster RCNN HRNet模型 + +(简体中文|[English](./README.md)) + +## 获得Faster RCNN HRNet模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/faster_rcnn_hrnetv2p_w18_1x.tar.gz +``` + + +### 启动服务 +``` +tar xf faster_rcnn_hrnetv2p_w18_1x.tar.gz +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项,但此时需要额外设置子图的TRT变长最大最小最优shape. +请参考https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/c%2B%2B/paddle-trt/trt_dynamic_shape_test.cc#L40 + +### 执行预测 +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/label_list.txt b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/test_client.py b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/test_client.py new file mode 100644 index 00000000..329f6eff --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_hrnetv2p_w18_1x/test_client.py @@ -0,0 +1,46 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionResize((800, 1333), True, interpolation=2), + DetectionNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True), + DetectionTranspose((2,0,1)), + DetectionPadStride(32) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +print(fetch_map) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/000000570688.jpg b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�?+!A9TzG~kmFEy&hslCVf_vk690B~3k7zKEJxAo@7r8-+( z%<1XzZ|2ipXZg&;6rm#b*7)(ygZQr#bbau5F$vf;k&)LWUwNBQB6ri3dx(zHg$W4J2XHlyU4+*B)Z15lq`;?J?t7al*!29 z6CQh`j<43bm4K*&QBc|UE2Bf}7g_DiNnXNqBb&Wc{YAO*Wnvyam00(|!Q372Nn8Es z8+r~mNzB9t2|R?j4@5M_A}QvpOeX}*Zd9b~(^vdP0*ypa&kL9HtO1S?(OXLl{*kk({;dT5%z1`wnueX})pabi^Tc{4>&%C90 z>V8G_;=f{67ZiRGF8cu^aGjj<#uWFCS3vwJICE?RdGhYB&TU+11ZfYP0-cf|^?Rmk z;h%sFwjo(5%~S< z^}DpsY+6*LN0emcl0}u_Dru80VcgLX6L_R-LI&Zr>5Avpm(r4A~__N~oIm8O4 zAjT|NAMM^!zBYGOB26<(0?P)1(FbjlkSWyGK^dp;Io*5Z#YfW=W^qGB7!t*#`9f!I z#JW`vr2 zJ%nl~_a7CY8gOk%N*$y`0gzx3luU-KJUr+`8~imxa0F_?5RJf`wK|R~;gi zX2J6(aNz##`n1x8wZG!hiN3xWLoF%=oe-j0xn4UXC6FiO^Y(95Ro0``r%Q&A3ew74 zAv^qNDi}u;9J+@GsXpG`u8y(D_5?pN8s|UI{zv+cufnWbk!?c~+mMAyx8vm1L}W1B zB*>2Dsyzk2W6?zNfxF(gI=5?+s=cod&BEO3CvfOBi-9rh)GTp zn~rvg4S8g5TMm0G6;83Lx)$UolXXUnMRf>ai48m_PZg1Q13_bR4gcmn{l~d2z5~H* zYYeR|g9{!!^L!AK89$t}=F(boM@uEkvo*LpRyKY$LQMMS7c7da9kg(+;Ex_m^U(am zmT~vntV7#41H132D!~SCKZ5VJj{h!nE!&^H^C`_w`Kx4C%5l|Cw>v)~%M_X_;oA%M zWJRIhN-aA8+I<9o{CB`p?V8g1$p*ajkExL;6W9K9c_bzlbrgkN#|@Fd?;4UZ6cjq>$ouM~=V z26$JcrE@nf%g^$(rSG11*N=*$k*o{|V@IM`j@`xrhessR?(hOTNMx` zIB))75`YhtpP5@}wQL^SEH}uTi?z}e6Xci}-p}~XCH}Zv6ju|8h2dzDJzi{lo9o{B z$U0{1Qnz0VM=2@pe^{M{u#v;Dxu`r@AfR8fb|+Z+>sF_^X+alF7A>V3M)<%g$Ae>q z%3O**P;aJBQ{#9vlYjg%Fu;>E$A*rBf7LdC=$VVeut*4B1ba>WQ%ybxrQcCWA=+=| z6XDMmT*y%gd}6=G3fgvv%c>kcFJJYfz}NzwbF50Bas3uXZx7AIguI`en%>JqEqG=D ziPO?<1A{fDL7T~L2)kc;EV*hAzjez3q^npx8%w*nLT$StES!ge0wclMsuIiOQ^Mc7 z+?h_6)?byJHs&ekuQijl>--xN18Xk0dMXP1A?h{P zn>HQe`Alc8ORbd#v?X>5XWe)%`i9Tn!}p{{h9nVR6)0nQV%+Jjx}qLjQKgfxi+K*P zK`BgZ|3F96xzE1~$Spr?`YiONe<6H#_r(S$&MB|McRU$Ej?GN49~Z_DIh9fY9n4Z; zFL7QxB>qK0#daM%piF_ZA%f-U%Gc~{(WPkXm#Q@=G7q^NR1w!NU?7lL->aM8NmT@W z&OQbn?|+oD)EE>v+&Y;Ow0fX}d)rf!YRI*J2Q%s-72=NvRy_9zO1MRARh3n7nRR?$ z{qwHorBX9ftRi>-MlRNrOmlW2BYf8rp7QY1tJe%bZUV>uxSG}s6DDs7eEaZ&eK>>l?q4cChA}l# z`sC>deLyu8MaesRNiru1D+vq}7Aa~3BD~%VfZ2$Q5ygE@mPT*=@%e~e8dkRl7$fxB z$xNUS4FHp-QP*fGigY?v*C6X>dn#brz-}tgX;GcrBV3Ptq zt*U>Z$(eQV0MAh8cUX#V22!BeAUS2P>BxzdVavPb6ERe3;1+)~m9 z-ZeB)>iZNpdY*^7hVODFRKs^m+@WaMLu~Kl{U+vXmo|48?T|#$>@UydU--43!~Cs- zcL_)yG2KDw2XBP&#H%uf=15qE;(8OUB*h)xH-G3_-D*1GSYG$Z8A?P&b*xb;Cb_~e zzynjuYt~L?R`N-X?bo{rrbt@&^K9o(BEPGRW0`>KHN$dy6Yx6JvKU*~eG*ovp}^;y zu{9)WZx;q8b>E$8`NE=zG6W>3V5JZj;8hk3pwNNQ3C)FhGcMFH$W)cnL-Ry zl1DB^q@b4#P`%%ZSK`AhDRBL)5y=dsnuduvt8}@AwUZACMegOUP>0Eunc3>8c#qsK zDMz;ABBQ95NjqfyznW02e>^4W)U)D04gvq^IO2`FaPl1)H)dr-f)H>)%`7w6UZ#N^STEVmGn(Xxpiwl~x zBU7b~J%;p$B;3pl{!v5UI%*V@yr)DE#1xl~HdL0dn~f4fRQT78l3a!f`Q+f&l~@Uy z;|%ZwaDrkW9Yq1YS-#}do0e;ag!-o2nQIMC=eOV}UU&mI& zZdnj^c$mo`OO=aF@wKoBzGhaSdcSpAsI`Jc*>n#Xg}h3nhl3h2mR_2uMl9dn7R2gF8pqjMycj{sGznI4}G_~#%zii6No=-{% zl&RJdTteqhnIsZIE39K2$aw7x)S0uD(vUP^ZxB6L{A>})p4PeMyW3?msFbUFUhI`g z#xet$d!`Rk=v;Z|#K$ePq!=_HU~W7P=%#v&#qf;lq&C8*z3#f7vxiQYA%(eyM0J@xbGreEAHnr2b0v+I?X2l^g90&m3{$UfQW0iwfnFX4UNLj4h9Gs&kt1y zq)mlWHGyt;4qmn*pn&v955WT9pgG~xHx&V*0ctUFvyFhFOumDWwKTekaY!wT76bU` z!cpJXo9U4EbHGQ(yXOVv&&kI~`!X?h_d{W4ls$EybZC@bc=j%0wqlq!Wp^@SMtqg%*osX z#f_^@3|df}_ZxFFx-?w1@2&{n0xgG!WoLs z#9qZUh-vPUlTNTCijcRE4_9c(Cn?E#qOx`t{(4z14JUUwVwUYjghyEfgEr%9ldY|S z#Pm&fCQ0hNIxyI+_SLYKk`_r;ZXq!?!AvrWm-z}TY%fTr3S)`h{pPHJulJWwsnmu5 zwXkpndbr?G395nr=Pf`AFU5>|74i4?1-5^n!J;tiXwk*62GN6tkpIU7_Z+&(El>WM zK;?~wR6t=(LPZ>(Xv^v&_?5^!(j0dmod|?5#;r&)vc#&qZHgON{GYvZst15J=pRR^KaW0 zbgtP}rlOp|@YIreiy&>I$iKy%1X9+msGXhSRhje!*<6Y=JDUBL-I-E$6q3F38hbcG zll?+bp2BiO7_EGFspNyR4Kz$Qxhl{Z|402AfDpH2x!?@AU|8`Qf=4(ybsTUDZk}tT z2;2lf?v$h;>cA(nK3e#;*%i9949bvc{BS|)0DQ2wOp?F-ttyrf6>lhzBe(&4`><(n z{4=(*khJ9gIV-eKgw&w$k9V`oF$=6IZUGku2G|p@ z8RDQY;H?V}L6R4>XX-FThUO|!Df#-4g8b~>@JeG+AqTMkiI&Rf26mo=S=dxd30KFb ze7&wB0jcm353cikPbJqKV0X$ln(3&On6QI6C1C{I(BbR=|AdR5o&d~^#B;hO3*3Kz z1t%sX{a*c~j5!<)u8jFO3hRl7q4O3tCB~bgpv6uR&-tyd+yqN%1gpAiNTlK_hzqPa zrn)augg1bbpB;>xz^SD(d~~R$i3<7k*U&6KII0wd#s|nrfYM-oKFGkHAZNt2OAm!f zBcV*qofJYLCt>k;-ZWa_o#KyET``)pSoBmP_63@%ctC5{%6Be}wS+bPkc<%-@C}G# zWtV?$G$nloM1E(mQZ4{MFKN_OJN&;HDU>gt#ip?hjIn`OQJ020z=p$4%eb>l5vX`+ z5KFiKZVVF7vYkYK161H?nv;w=lr-m`wnBY(te~HIn^8$iD;xn|nV&4b zy4OtM&{Z0%=&L%6a9L+(qE9zF06(Jq--;>kr8b?SdiC0r1Ej69S@H$ePGMP}qP?WJ|zpD7IY7R=Uip$#y|%rEh_+ zW_e5TAh%cancA9^Y1y8Fim`!hsr9U}HR)pMCu9y@1(^f^YNqe`c6^3dt0h1gDap(5 zBYtq5W)Gl$HxoH#LXIK282jpbj~*~Y+tqN7&MM>IyphQ4((-ih4^)~}3nrIHb^-`) z$1EMv$1H^uU4n*X!>zl@raQOSr5_bG=p!;r)HW!Je?JW<8a2?ZvU24?Ty>eaCPbCU z-QAxOpD+gqdRd1*HP5;ThU?u3UOoGx(5pfc^n&)^S?}nV+lh`-sIhC75DHTQ}1DeWoKI2DbxIbH-<5yQ$VQtRHDpM7$T_ZFnF#s!=~j z(pUHMl7)2Q=viyYr^(D4@KY80Qz9CKMFd%cwFcIpz^mtyy(mMe!oI>7aWp`}V&_s+0AF>u*VEXGeeq-FieqBR zEl;(*S*Nb?9sl8`wi`{N(7O`56L6WF$BQLraWhx4C0q3SI57IVsgNUWF5gP8bt8_1 zkvUlHRJgyyMT=0T&HPSDl9vsZJ!KCkXb&~_gZ}R>;XiAJ0Uh5D(r1(vKFPz3*}Qo~ zphHY{AE)4MC551WGre69BqY7+J6$PEkqn*vlopCnt^`cp4QwI2i1mx=nsYUiYKBUd z_Z^7$^gHl^yknl&mn=_~)C5$$VCn2f_T7_sRf^6W3#=r9y`p-_q}HUn!TK17Egdt7 zMePwg$mn`HBCQAKK(tcvR(m*|F;-yrszDc-21f=Sg@z)OFXf?AjLf105>msTDv3Y# zTn(R~AlO{PGfmH+PTF5oF?=6Fx;Rd?6#s`?C``hdm~Zl1T6NVf2Kkk6b~$}d4qk!= zI7g__`W;4M|IZj{j33uP*fmBCkNdZ#WSM8~(_3C?IEi^X7$a*AFU#(-J;W^|sRihd zNxoI2@+_3*Ys4t(xto6HHO0`$bDlIOTfTt>1OXuc-X57<9EF>b0@%D0NT~dOGcuz> ze#<(*3Z8*jJvbzO_ap~R+}`(&Y879YMi06D9Ecf(qkZ1{+o42y5Tbs^C-grjyC-%_ zibe};@#EUu)gnM@J^(LTAu>i5hL$8a6eDd)#XC#K_y4#FJLy86!^a$6V3vzNE^xBd z#sHRssN9XNC;MbxnGocmY+xVNJ1;=twp|18Z!O@BBMU$QfDi~Txok^?KuWTfcb|DL zC8OKr@c$#CP!u6){uml9IUK+DVFpZN@d_j+$QjKDh%5l6_HH^NqHNR1r{&(jrnGyt z?1!dAiI#I>2agW=FDiDTkG6=u$ok~b#m0t|-qB0Nl%EB2w=F9^C0SG*i%nS+U)S!n zLI?GD@wCzu^w4~V9v?S!rW<$bokD$E_>l4XA8Lyar6?Bb2dDWqq9(6f7(V<1IWoz$ z*9cJd8(5UpMk)`o?PM9UrO;%|89>VE5Bh|OSd-gnl4ansE$atY@k}Qz;EQBaLZx zAjt=IKnzW2RTY^XIzK4u@Eyz;Inm;~{N_CyIKG9u>LZ8A$;)r=R)OMM~vHn*8_EEenNl^VWuwPxn=)7UczfCkQz`%r4(F@RHOgLhW6}LOd6BqJ5d<50 ze(Tp#@;9*7?`+4GwPkJn6t(sII(sO)55%~8AZ06{GW^kO2tlK{wv=k}aaiKrt#@~y zi2}A-(b1weS@(_+4IT%XqVU(DK3;B1CdQr1PQ%D7BiXeoSM7N;r-wNaZ`*mF|g>2f#U7uunMXt}2Bmxs^d}O!ooMdj-A|p(%_ei$e52EN4PYFASxNkt7 z`V7APS(kJ(^5U#^oZENI)A^74grWsMn4TVWzBFXxAqT6whh%ls+BNj| zUQ?TOtfR9M6Z6DGaeFU4<70fc*j5pSnN=_;UiGPbx3JjUU$|z~$$wWJY>JlqeX8jge00A!)$Yv2JFZHp z61yYBDAX6i!qOnBAKcg=D2QwjgsHU4ht_km;RxMbu5=ks=oL$;pys6X;aX62%28M) zPe@_^S~;vIQb()8!CCw(V8;hbBAu`D*qh9(>G@9wME?)FO;lrk*u?Obx0@@goYS?G z^T!XE+Sq;if2IQ&&7BZpm>A7~sT|jeSSY7kn(S`vxSLy3GxUjt>UaBxfaglW1i8}O zZT$m7tX&P!iC-=gv0v2`uVq88p|&-K$Q?dz-Z{2#LcZ}+;6G4n>iCX@@eWxJGWW?7 z+&wFt*O3n9iQ8acyYohz*LV6a3376YULP4GwmeUS6*mLz={&Qkowet;^~r#@KF)EF zfctH|i3xVBI89OT2TYQRLg(~7xDl0jDHN!>4)NE?QcPin|lrgioGThzXo&QI)^S;whZ?y$D` z4+n)`(2$s<@OE!-u7J7f}d1 z{*1Sj%J6QJZDAUnFL*s~fjw?A!s z(;G{2u4_V>%|YB7#z|G&PlX-@zl=r0aB5z+=XcsN@bk&m1t(5Xk~~Gy&R@v4H_-<< z-_;BOgS{}R#dsde^yJORj1C!&9G^N8E@|g;3g({)OOIrlI}BtzW3|h|0%bJVo1yQh zH`#{-O_tusja{LDC}I!U?ZbBb)tcY`-AR<9xIacUb-qLfJ-mmDaBS1V;X76xG9tQ0 zgoh);ee2!CK6CLnUzMc)N!ekeRhW!SICiXZ8Mj95R7r<|5EE@)mVt4>xG0fLX~OCb z1N4XUHbTgE)EJj8-UyKiXn_i`m^cb|mtD!87@>=yZASo-87&Hu=%+hVZ1P^OD z2^GI1{0_XdXZw*2=8bpQcU~o^ko$XKM%EH$1t(h-oY0I&(cgcvD1z>UnNq`D$}7n1 zO8^H|09Z;Uk!wvDuVbr3Qo=+7vZ*tyrs*xEup|skmaKC{5cU9cP&fN<@Ok6XINR}n z4hgt!AQWo-2~pd#RMP-(BVe2YAW6kVaXa4yV!(EU!vL1A3WV5F9*-spn6T%7Zep|4 z=X$^cpIw?`%up z&Rze3F5=ftoHA?lDx(h|tF}IgXi>>ShF;c4g~?C8-kN=CPU=K#@6&gT*>B;h!Vx6s zERX9c-lFAu<|!iQUE#eI8v1d&Ah)zV+Yhkkh-J;Wv{zfy$aC`R3SQh)j zirP@@0X}vST5e9owM+??T8&7!oVd8J;!YV>hIB!~me!^Z2I zr5JE&NV{n*h0#gTFkK9*=DFtk#dJCjR`Acvz zkX)y>Om|mlIB|Ps(wM*%V6)*)Ou}XB#pM4W%FS^^u*?<#qj;0VL#cukqsY#ABzP_ z6QwxJ@*;Myn+|j$zm&BRGBq#oo1f)^&$cId0dUBLEm~0I)L3ZLc_{}lD-itmvW)W! z3dswlkYXax?s)$D$?mL1U71pqq3N^i=UE6BBkxF~9MeCL2PaFAX0eN{H!@!{888(r zb?i{0vSJpa=vuPN@(8Prv#!ph zkjmDaiMiH}pg2|+SuJig1~!gm=Y%~^S7+?phU|mN#^sr^iB4hG;CJ@QLEDTsu_y3| zHizWjs)!D7b?DQgE{Q06jXZ}a?i-rz*F0;Aa=WS$%Pw;1qqdK;sTfyo?cN}cG?*im z%8oY^#i{hRir;Omy}5K+%}`xxw*#Nyg&SdAwU7^DoKv4CV-HpIXpy)mQZS7u)3SI~ zX>BiTPWLdbH)l2v_${yr;O#z$@;S7vLcyDR=ql9dzfK&RzV>)8`n!sl9@Lh$o>Qe5 zRhgPC;BJ2M`{2h1ZNyP}VM{IlaNn0&j0ZZCPp3zZDW=P@gS8aTg0x6kz^2sv6 zlqx9=6hG#5yr1P;)B2rn^Q?=1!Er2gwH!1_9aZctM~_`bA~R(R3Z8D!>r-mhe&iTA zI#};|mEJ0gU@ztty4n3)X6jjf&DGKN9Omkc{8w77?2q%Mr$!&S4KV2iDy3iCZl!Cg zy?`dd%pm)bkSXS@WB5%b18*3RsFoNp=w#9fHKzEf=E|??&neSUR}QUw zR{pr8F;I~>(Uj&)5ZD7sbkB1y*-@dG`)Pxvms@I`*bI57BV-`d-S7v^MH z(|x|tH5rO|MbCyH7Fr{trH*=rZ3!0p8*YC<(}OVn8g`>qZ#Ho+(0yz+6+ql}hF}v* ztb9v!6e@erAWQd}f3kIubdf*&&P|?7@O%8HFQ*l#{0MhXTgTdynri#ob0;@T(;o~R z(AV!n=%-g%W^)DXa{clN%#A;45t*6=J*SB0CrdGGZ9N%b2D;Nwiv$pN#iB)56d6{` zmKMWXrIQ2@SSSf-| z=MvqMT6o{I*lUK5#cCWYCS zvp)V-f^WYr2C&qv>(kOauM!b}n8*+Q2Rbc4^|eEi0~=GK7~K@S{A|C_y`oT>gR%6^ z!lX$?=1X`5Uz;ErQCJ%{z%x8YD7;Bw#uh2uX-qU3>rJ|OaT#7sFuABA4TaDAK5%wU z0ot5o)cAlOH>0XxNl{-Q6^_H~1$gmxRe_7aX%1erq5|9QaH!WlPOzjXCcq3Kw>k@H zh6CRRwyl}e8o&v3a)!fpRS0msjYX15V`MRBVb7Lo(sWP)fEmO^)e#fWh04^qjV~vS ztE|(Y=#Twqu&=3fh>dgRlbu+3$Kr9m#Y75-9besZd?I!oDWA~sR_))Gm9-8dZ|{U=B;ZR2o3TN)!tJ7| z&{7f%f7$y7WQtdT5NyTjKS>&TgF}24fp@1s5BCYE;BmY1HQ*$~w&89U= zWhu-oyVbtIwu=4m`G<&+pl7P(k^3R}ALMXDZlapsLaV6{pB(DBCPnHTt-IMxK#lk! z3@kx&s&as81jsFCDXGZ(j8Ov100SHQpgEoPV}>+(5=Vua_?6HffUG9~FTDE847g8* zO3IjmQgl?hRa325J4s2@eSTJuw&F0sI_BFUb5C8+xCRZr$nyr>^mf`3vg@`(&dSA) zxqvmFvJU0eZmV_sM$7WXpYv5Cp$NQ!cKYS)!+Rt^vGkVGijajrznsd-v!lAM@1pr) zfpdks`DwrP{j_=pE!oxmMQbO!o*mQ5^WW@M%ZT07g-=CXq;NEu<3kKFyB2U}GaMLp z3jR6H5|q#y`K$!oPT9YC((MN?yb~N$MQ+VlAM7(T5z0(o6JT$|3Km>4T*$^c0-}8L zi@AnoH+)nrNtEvq!U;+W&JaGuG4gxh{uo&d8r-hx?)Q%R`@Z<^Ylj{MptjJwG{W*) zV?%)7;&p6tw0}eN!Q#b2mpuONWRmagc120XoNXwVeOuV)h+hMP46z_!NP>*ngSBwR zucHOz-k@XbuD{BH4`GC%;}1`W2yN|@DsYzN!8TV`(wjbsWlrLCb2UhEI$cL>Wpj>d z2gMNwY}I;m=$u|2H6!i{P84^@IzRj73q6U3HJ>Bq%pYozDX*IE8=~}k+c>>{OOMQW zg*iEYqg!?66VV_0x$l%gwr00Cu%9ltkDDYGtbzgjIFPPieo*(7D6Z)bFQuS>!yQSv znXYqRzH$8>!|^p&T`>}=RdrM-nd|z=vy3yK_cYJEybW10AOLU$Z~`K5yE^j=YXai0~^h?0v2vKMr_>$y0siSnNG4xLsgKSF&fN zuijaL2E(5Z3Eyb`Le(z(ne#mS&Yx-`D10DP?D>i9QL%Ac9wViwQ3;p+tq=&K+cH!> zNUK7nG)Cn&>{e!OD1OuqRz@j=5-xZ*F9p?qK0OF?S~=lpRocwjPz*IVNX#`@A*S`9 zk1<&L4!7)g-*ZOy6p}EZyNHc!L}`-g0B^htCx8A!XYIR@Z zWpUa(5hOY#v#cx)&wYP5xyR|Q`U6p)7HyL6gwN&>?>%{KZeAaS>GzYCG`7Cao_LsX zADhlOE%-nwG~oF9PVQ0iI#POz`252-gir}-J|_yyzFm|!Lf0r~ZgVoA!Ic6AzI+fF ztkkJ$?)--8P&P*G?ICo_mTm&CV&JALxtF0&*jXZ5KOJz%z&*^qo_8Y-U7S! zYmgXX9||)!)~fkzC?4!|**-J{qW2Ry053zkD^~#^F@PSFOw=u~K%qI2F-q`VfDS7P zYZVU;{tM;z1aSBc9t@CT;Itl6Tdo;Dt%v*mR>RqS`VFJez(n&kwTZ`TJLo z!)~!ih#(51wBFo#IxZs3Qpr>;Cgf?91Aco6zW(=rLh=)d!P?Z#s-FHks<(adqTwyptQ6($SS9L z(ZccY@X-LE^jkp7E(CB<_y6ML#EVrqzH1s?B?Sw0jvTj^05A@Z&QBBOw%s_INDkKT zm$2+yXn5Med_R^}kSng>d6&N4lj7v?J73x?i-g>VaSKkrjri6(kq+`YZY!lc3I8xc zp)jMv7W@DXD?s-MusyfPDxU(MKLU8k63cMqMuDMfX=TMm+ff-^XqhlDss;U~*~^0` zq}hAxP66cUnux#isY|Wjc8#qri|Ay{E(8HK^#F9l1=(89C_u9M&gj3p@wl}mz1Vhc z0sENMJ?K#yU8`gt@PHF}dCwPVO_sh@`>5h8p)^g~v)t9`$8vvsV3)iD8|^E|P#9Oz zylEAMcmRWcXk&K8k2RX%cSuZP&(>pW3K&}TJ|^}a`f)>kdx&k!Mz#JP z+c2x_8g%TdV3H8 zUfp#%eV9vhN)z%X?VJdW_5y}fl+0_%UP4CxiU4h0;;)C#%TVI0==?L=hz)iw*sIhL zz$kZQTeZITrKVLyP~pk)3Q1nYE7?{Bb{d9&oYkB95U-!Q5D`^7mKZcu`lI&`=OptZ zKQKtFesgT*YOY>N&bEB*)Gn9K={C8=-9#A@+uUXw8>wb zf3eaY_00rw9;XqGF270J^JwF*KQdhRk_QW(_OjFADyL{f*jH?&al6m90-mY_! zjgf|UJNYu_@84|JbDIz?QJXR=AiLpVcF}vU`Enuc<_kv14culqSF{8`S+

};%6W_W-xp35g}gD^jUa8=L60C_s3wiQN3SHb15^NWe~Zrr*s^Y$2X}Kh=5;{^n3%F!qpgAJ0KS!A zF}w?k?r=_9^ zMl1p=4uzt>lvBmZ--X|i$CU~G2eQf;@wvt5^pBS>XF7=)3Fj5`V2r2PT!0aYPYoEH z=;ZzjW&5J8y8?mjk=%+c3L`!mI$1SZtp^UbqX21BGgb|Eu$v27-igauZy5A(ciQqp%5dmfv$s-Dv7ZL_G8zpiZr_vV2`CHH^But^gjnKK0Q-clnYpBE0y*T+&Tmm5k^ z@SUDjgH5Jb*(hW#0U(7SdFKF4`C0m`IXPMWHLu}G~j$j>##|5y^AY-A`Xk+KfJp2-Mx_YKP#J;}3iaZ5X z@n7sclHS|%x*`i5fW({^I|4xlU{MFIEgO9111_DgY*LP|Gz_Kmo8M;b7vS^bPe5zjPhi zg0dU*5Jd@nBCZ%dbu_h(CHvTCLe&@ow+C>$$_of?)qAl&2tGKo;s|i?0+he;(G4ka zpeCZ|)us$HErsgz7Z=J*V_tvGBW$Pcj zgwZu>CBMk!hs7PTbfiAp?^aRQ3m0f;w0jU1UE-oH3mqgGrT|3PGc=Oj=F0iPn>|_A z6M{$>Nu5Mv`!8GR{Ka{osy`!twjPunC%W>tI-Bi8&Agw>gs}h=((utK`$i z!Bq*Lg5I#hPoJ(@gqWY3+J@6A_g%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0Dj0R=8R;O(Bt`ob{31o8NVX&NCXXbtdbITXZ(MiKL{8o;MNFK~7l^^2v>dB_)d& zW_IL4g#*WJci_mVYcxqDT$`I}3>yIe0TN`C2Msh)+4ptR)Oe(L#D6mSeuAz6@&*Q1 zI30oZ)st{kU=R%VKFWb{nJavB$}_n3eO3B<%{&#eNhLi+(&of9G$>;c#TrJ;WFYaE z4vM)10!S>rf5n_IxRzmAOqPp=w?a(GB!L1xTM}&ui|kA!sVnG5>Cd)ylQ6GNzMVKqt!#{ zz?Oi~P}5RU(ecdF^XE_<&mxga%b8pb%8EfCgPfDAmwdH6O0Ff_4I2W|TM!R2NR6Vw zVQ7POhqqejn!eLD-uH2|M=_OUxKu`2!YE;g(>cjFUpVjNc-H+|wF4?Pg(kd+hK{kR z`sqE>1WataH#Ss(ziKT_WdllPhN?AK<*Z}ayGqK$fsVuIbB^Sk^rXA{5Z3_&T!!?3 zN3WEiw{X0abaxxQ7p-gC#%g+H;%0^xk(B*ehBALYr{}ECeJT&jTC^8zNCU_xav%kQ zmep4VJz8mC1%j5AGN2RnBx`t8rtiw&dld!xjH{>+H8?!8B+7$``sdHvwy}$qCC*Q;0UcAO|(E^3B{#kOq^nCqOmTQE?v?tTgD^#@WB(H+OI}9M46& zYqwWOcU?W>X!QQSdP{w-+mSWGzKVs~w(~<#Sr4vNT1d;Zd^kEJK&Y4G4H%RikBV_T zN}WJ>)4VpAhU@_(2-mFd&0yg8P8`}*DR9CamC)iOl6AR@%Z5w9f(yc9XcJAul!qbf2eyg8$h2VTpg%0$kR zwn^%a)n20=gm1Ke@qoAf)cuTH`u_liyKC{wtP`s=ywcJEuvS3cwy%xZBZs8 z2{)!rRTZ7eGJ;C-M&yM~rF>H`%r9{kPymuGs^Cr6)HU7JRnhKh`s;<#NSR@;sE^c^ zpZBderglOZqgG+TnEvbm%({*zll)_=hd!Z#2H&dL6!M4$>J5Fo*>`_VYHT&Nm2%fw zB#ujDFA_K5ou+Y6kTNJ?47}8`$a~5Az|P7QdvAw$u;JL6Ppa?jn>)8ZEmkVDY2q9+ ziGn-EixFe!HR&oNjTqH^(?%h8a@>gl~ueA~ecQw^+WY!*AMqS`D!kWj^MqrS#)1JseS8D3Msd163bs z0Vf`mgh-?N!~iv`!|+&|bp|1{^RR9VJIY`>JdaXWnqs)K_`V~@tX$dBU74r2H~#?L z>al$m+|*Ov2)a^1xgw6&B{eHn@>+{yBgDwa%0ouVv5=*a`xYJ4>gN~+D++%NQb0d2 zHawxgi4(2B*;?^RuN*a|se&R4c7tL+mD8IO<5JCK>GjKM?+dj>r*-UFfc6{BA)2PH z??oy!RgeiJWj~4$NbIGV0d<9f{_7g@ZY{#9;eWkJgfZT6>Fxru;rPGCVVL)ypM9sO zpRZNTmwv6^HjVo2Y1`L&m|(a;6tyzgu8bPFipwNkwBUwDBBk1Dby)s*lo8vJ90_yQ?zdz+21RzUvcL)!VhM#Fn~x%+pm!w}qy`gmCVM#N|z(r*v4iQP_R5rE=!sFUoGt3|7)_%&vhVd+42EoOI zFR*?c_~(NBM~5GeEu~qyhZyq)K_l(B3vj06zwAH3Ro-pV(u&xG)ORXI93@s&a8!eX z+0^4B$jH|W>@FJ{nw1vT;?x@xYT1DNNaXC5z%lQQ{jxSd+5^*c?NR} zI@Sd4C!DDdR5~Zq&xknct=mq)MYd|LuBewPCwgNe$CRQ=F}Md0`VMY!;QjIeSRoOsi}?0Fe6F1?a^`%T{X=4pG<%^=(*E(-RNMfcw$y4u9HJUP8@S==d`R#E=Lw_Kg7xi$05hI z!nN;cE;r}=eWyY7qIHdz)LwynFm$`&^JmyDeO|q6O8VJt=6b1jdx@AzNcEtjhG$r# zNQg+wta8aCXC(&&8OvH-upaw;943>zTNHnE=u^8-+dUnbt^lzFHcNlRHlIW$W?Z4n1vmhvlmk_$%Zg{O!V)`br>E3_R%%*;I*4x2VQrrhH&Hy-v-CM>ZM)F74?KwP4( zeLx5#0oxuit*{IbR7na|XxtBQiWHV8r2Go;iX>2>VdTtL&M;lci$=inu-0-C!Vf%>?>DGnmgsXwl#_j%yit+;+Q4r6n!OSSp8lcP zsE+Nr!7XIV_(ZFushU-WAk)*+1ppL674qYkFbgP?DgkcYudtNJXfp+%Pvs}BqT6V4 z#o=Ro<}uAQcM1F_<{S9DHAYZ% zN`El|1WC5$Bndi_0JQ6(ohN+Y6(y+MmTJiC_ba91b3sWfIj~I>wG@#}=&#HpV!Xa* zkSg(195Kn4Ijn9Ty)gPTnI*&XNCb&HjWiQ-Z!s$~>gI<(ZImjzsvC(W6qCGk9FimJ zh}|VIaBLFF+|)Rk-LT!ueLHI2pAEx-ow9Ybh@VI?5G=8Z^#lT8c&ifGe2(Q6J?l)0C@#(;WU^d4w%4=~q%C*L*VlIdlr z+sSUFr@28|Jw;NL1JS8wczrVJe}rI7kiJNd#tyS&cz=laj@KH`>Ge=1nQm6=_xFFI z+5I)z7PzY}+nig!2S){K$4MPX!a^BQlmQ@i1q1O8SpNVRY@RtBuNcQv`7n(?GlZDs zene{%9V2uxjd7ion~XEkikrnXU9#&|Dj3fVFRB_ebze^|iWCJZSD7J;@gpE-QKgcj z1qU_E7J_2&Gh$A&IYpvE2>FQ%8(`g5drWdx=9(*$$LmBEmC|ej{E zpnwTIow1I`R=92)+5{Wg!sgqamp@>lNmwW@-i18LNFixzDbk(F$H0Xx$e_-0at2#D zBe3nASQ=8`UoZ(g{Q7q0fL0z!l+Popzsy*I*d*uJ{{Wx(YitVuQeK#D0+ynhtI~#d zMB-qmPH1}&4$Y@s|{!&Ih_)h+E-`yF&@9rFfP5%II-AsIZSY9Ih#zq;O-~kvQhQ zL1Ec)JCDn@u|2Huvu_{kw&(`Xr5kH?MYrnYTKiNrDNiDxsGb7S4@=BEgo-$}c(;>) zm@9#eTJ()ZLrj-#KV3cDPQ-lMEDh?u-RR3Lx{c|LW>~T(7-C{oni%;OZYh$yijN%`WYz4^4_%BuFq7W2Qhz0{|8vlkeQ*_x!b`_(uHSF_YB(LJ7 ziN8sJe!S)(Z842(<}1%~sM=Rv6*X4b7M@;5_JX>{B}<0O$iF(TxcNBt85qtEvr=w8 zl(ml%KgQ$%78(=hJ#@0h=P-~muRZGb9^cz^6Itb{2BuI_dWJ~^>Yp%NkQfE! z!R*@0Lk{dscefA)hJr*+{I4Ek%qKrAg#)@>;;Qu-QOEFjU5*BFITiOk$DLo& zqFDf+lv*wO0gEy z+z{A}0Z^S<$aY5+RRqdq*K8X>)Q%R=_%dC1c8YD8iTlZ z;YNK-D&jHN407Z!ay#mHW{knDY-QFY3+;1%NaUgf4Hdc?dyT_y3PD*+)Gdmt}5Yv7(?F=x$ ztsOiNky*t-EZFq9An)CWBj>sH)ESCvi@Z8ylX6eXeFx@)+TD~$SS!_Ri9{%4+!EYr zQOW!|`ilTLJ<(gXJ^T+oHN8QAzr=Mcr=6$HKXRf#=DyeNKkX5tNj+O;#i*&JrzT+~ zebHfZKp{a`qL61N$0PLftpmgu*F#!XQUDT4;opcJuU|La*1q#}rKPFdH8DnDxy?JJ4K;|~(z6{}T% z_S!|7OT?HQ$lf)OH(8&FUZurs>eYgZ*|cpN0*7sFne3BUsSPbmBDy-ZilKw5GcuQr z0=xXj(qo?Ou0M}qs@1GTYKF6F09sG{WWa-_hRS$cO)74z>J7+2gS49+Mz;GYpToCU zw?vdxuv~hFQ?PbLrZ~%0T$-Wdgx0y?6*N$Q@^kbha2JXwS2RWyArN{jo~O>POj3g*a>D`$zikI&csZsR#|+tolG0*8on|(;R9Jjg3k}37 zQWdfm%See5NF)Q-vAnIB@cr?Jwt8)7+*X~}OK_>a(^pOSrLoY8&I=UMBXD*pJdnn? zSk^>mRE2;okc;I*B$`$PdU}g}SE4ebUrDbgYtO%7Xr8rvL%&!zRGW>B#@lC>R(o{` ztBuSUPu;u5k~~WzC^&BHFi8UhoKKFsT=W$#k4O*|_1Ab#^ z{x|5XTXy{|C9c(1beHx$Jn;#ps<>0i(9s5z$C&~l&R8xuhV03bq?~#_8{^&=h;gFY zkl|>JZ7>ds-i8B*;VGKMrPTn_ndCMKS$`V`Y1(7E#dv%5%1HP@aI{tgtc(%iSw2`4 zgN#fYAmfYo8p!-*J}*_Jq&34r2n2cW+Tn5-s{BhCSdR=fgHS|+-=CC1(HHB*efsNF zTTnj~)5+_!)X{~JNXK?X02ABFW4=gH<5!gGSHZM0vphx*@@Tm3&HIl*}^YOSeAVqqRvRY>lhBs^ol3_qtb*6~Mxd45l^*BrqNFLn~oQ@>s4LfyF<> zpg|oh4@0;;$CCGM7s424 zu~w|IH7$;c+h@AhAfzR()d@oFCpXCxI!5Hnp2(ztG6y4(uO8yqS5d`1*p{`;Klb6n zDFcxr+mpV*dHypCQv&}02$>wlhp0=ptrS9zdf(c0^IIjJJ~7IWO*^-D42*?}p!X#_ zmL3Lmqh7sgZVU`)bR7u;loP5v0xmQfi*J8$vp%aJb6Uphx%Te#xYi5WRn}acgjDwkro@rP zJK(Qmd|==lc>_JQ)lkD?@KoF2Kx|0_Z}%N_(?zHr9%SmX_V0+D!_vLUV71cRquyIz zZ%8DgqPswNgmwAiS3fXc7{|+%7+iKbbv_@$@me)86&Pt&sv*Uu_RyZcUaPa=e;4r{ z6G_-gL>g`Y8+^nI+1n6wwYx3d(_QVe`t7{$M{iXffpLzODw-M!vHt)r&Hxgpsy?_Z z1_$wADaURHiE!+90m0Kak>j^EQbD|IVEuh%eG|dI>LwEzMwSRQ_1q^uU;%<{m*z4? zn#^8xiN4V4W!A-8M^$rbt2@mbM^9NAG;zqFm62EvJ@OkFA5b+#iQ&}h2MPvxiMXHR zNnVMM;MiPaA4?7eNP=2mkv9ZS)96a*4xaT=-Em6j>n+q%)K*iaBrjJAO-|7g-l5{z z8Gn!fK^Pd%d~1(1tMHaQ;jH7n?H+%1c#V6=e4O0+L$_KY zmuA~2uJK27xJNpYuPRj3Dlsg?01%Q~EcQO!8G5{UD^{@hh^wCv{NyN&n z>VxuQ2Z{QO`|BIqoMk#DvQ{dGskx3pxk~EHA}SXE<-S}Ip2HtPJbf@%0hEtK2_~21W2BX;GFET9`iLerO z5@O?3vKm}N#;QZO6|MJK#mbrsT_r-xM@*B~e6q}92*z0=fBX~s-~usbWFv~6;*ShP zN@KxsdxSW{bQ2>eaQxqvNe}^BZmTFpv>8X-1WCk@*yodk+ zk`4eQ z5IlvMOE><9#(QHUBaqea;i*x1eK8Jq*Wa#(WJw}U$iC%*@mEVzR|CUE0g4GAtdS?#E@L+jlNL_U?W+-(N47% zwo6Txshxz=6pWQdY$~(zZ?;Ybf2O*2h!HgLn)1vd$Un-u_9kxl?=~ogWW4|l`#FN~p1F-Nr z;~6^0+6)ywksK7LW-I@?J&l*X?bACbTWk>~xLD3S?DDoRmVMh7m$ z`{U`Li9)HHlY`IH`A2j4c>O$R7D6Zly^Ab-RN#<%`9IG=vJsM=RUDldWO6wk$KOD3 zHU%~6TNT9Cr6HoIN}{}kPZ?GV{{UBfV14{+7^_UTIB+2lbW**)XQ;Q!E#?~&Zy(u` zER}!q^3QLDhb97dOmhSy90m$NCoD6qce^w*Hb8XPp2OMfva~^%l`Qy&sF!nY3uf=F zkN4Y>&q-YzuU#cvuE?SnS92PUe=43T0-~T%ldA3;QPBDY#FjXNAa8NLiq{`Wpi`{Y z!(P!5(!_Vu{jF4#bBHIFG^l7IP(4LM#Y+zid<=~Kf0nKb+aNk5{+yLYNz&^uvDQ2- zBD=**08d5+^*OPPO9dVK0px#oIM$iS92={(pFeTUWikbVVID-RG!1>p$fR;-%SchvnZ%8yRwQIT1sfiQxtxW;zY784+b5( zIRthG1c8DwbzP0AQkEI-ZO?qLInPfek$^eCDec1l081S`O}dsp+K}OWVNGyk1g3Vfa3Ju`c;~n0{I$2$VoxP3kj(H(rYV$wQcNxn z-#?y^a3V&D#>&uA8y-)LdDPNdh;Dt!f3v|;PkDODZIlp{j@2ybG%|rFCuHnhqm5V8 zbiyz0fhXUNI4mU!rLLv`dyM7{f(%$4fisjFpO}T1OQA`(S5N4m>4w(dzqYHTz1^!G z8n=>`DJb$9tyA}oa_oN!8M*c${CuM}G^mPrX9l*wz!wAy8%HgpPgNlwU~?wF1i;^;+x~J;PFIZ5I05ll<o~ozt1Myb+l_Yu;^$sMOT8W zSuRzd@ixn|QN4WjN*h8$U0WR#2{h{sDopXLhtrkFMk?W!MsUOx8uE{dG1U0C8*NrR zla-+V0F1r5lF%(6MY#(JRyb?`qff!DAnTyhxg$=u+f}BzsqnGXzlScF?g=-Y($!gE zubPt8YN)qd-cdbXWn(08vM3THX($aL1vwu~9I;ybT}HDlPY)?3`-qK9eyZn&(xz(o z40$EOK>{4oJM$cg@>u@>hs!4NvD-!w-?UA;t>Ml3>dm6i3Yc2P(^ie>erG_Mshm~4C;WEamxI(Dxc(VE(7u0onxXd_f zK@b5DNz!ANL*01ZBNE2cp-&Z2)oW8Ga+@9Pw2cbDZY%w9-Pg{f?XSg6Wtyf$wNp%e zNuicPTu6%{b$MZhWtc3S)v%!Dv5m^FZXX8B4RiCK%@(&g9mb1C3j8~%J5`Hp zD^u1`?pZDkH1AmJ6N4Ox10uh03gb%W~CzKZ@3=U&DI~3u4`MosEpa2hU|T z;j%UzufJ8Dj?rkVvs$jV+IZ_}DU~Orwm~q08;KG|@yJdH8Q>!&n~Dsc9FJ{gV{sT< zL&HbR=md~S0`vRWNzzs~(rusb*-?A8=9VcfRMFSQZBZEEjz?0%iZUXFZ=0KD2#JxD zaa=dg#A`JXP?ywn_=e^TZMd{pkQxb+BGRBiBuNSZHXi zcPJ^^W%MIh;+2$w;y^IDB&vo{=0)-d*K@)CGva(QqZ^2->aM3+1A-v9B)waV1^8f8p~8PH`0~0(N0B8G?D@6 zR2WM_U|}c-rCK=>P!!@oR0dOz0mM`kYk0V8HNwW%5+^i^?$Qa=UO`-2nCiEQH}&qZ zg3Y~9Q%sf`dV9;s#tV%_B{D@z@*qC6@v)Lbd@?sO%ZxAx$_}>=;WCyv$HUwL<2U~R z7Lk>uwjv3irqD5{* z{HTBeRC%+&;&6O7`*oaP>@L#XLxk$sKDW8k3#e2kTkoOk%|q$_A2czZo0Z?TR^-=sCQMC46yKlm#>A6r>S6nMC7KtI7 z(u$SpjYQKBqq-zYz^gIGBE$GwvD9%KcMFDNOHO&^9=9nBEltEN*RpyrEEeeE5K{vc zKcOySWlEEg^SA?-d>rGs&bS^S#6K4D;Nx>6nC<#2R?-x}$Ve(hwx~BPi)l%jww>$$0AxZT0w%e_QQVW@%_LGs$jRL1M^aCGcfSpeCr~_MS(c8B zun`uuq=?*|doLDk59!$Bgso7zsS@x`hi%|a!&tltT)VOMy{mlhJ1rwtOGLHv3P|2M zm4lSbt?0&G`!6XtFD4)ketV5}^#1@6dNkXa+fTSwZxlfBaWBft0_Y~j(*o!BUj4`L zF}n7ZDgOY8E*CAmmRO#m{bQCGJyLLpl_8!p^cZuWVXJ!FPNo=xQw~7sr`z7^#2tmA zUglG-93+_NSO zY1CkV9r(yW93TTt!;>%XsdrsMol0Cy) z4I;x$B^%Olm=(#AUJ09&~_ei;3rAm@yF|y`!l5xb2*iaM& z_8B?Goj;24jA<>UZ@1TT%`<_ZK#5r>Hjdca`zC&tN4YC%Y zQ@)E0JRp5`(#k+}fg}Oc_8irX!O*>rOI^I_2;V2LY+J9x^+g%H%vt21-ztq+4N-~nwNob>y zqoy&_FF7Ttky$?v5E86>foA0?T&ZD;d_NUtDx0g*WM$myXJNTEn{xHm{1|)LOT@dZ zCqesi^Iot1ANHMM-#2YlF|FIwHyTQM$aavZrlFvXpqJLcxDin9Wmtl*a7#GkprO^U z#k#f~?x9i~&?Ij>l1JA{Ufy8<*;3CDIHa^u87H3MO9G1 zQ_Rs4oa9fOsdfqoTyjDi11DM|i#~~|M!)81u>(;zfu~(oL4~0AwaxsbbLr2N+f9nW z-g+H-rn6dWt=1jGT@<$8#8y;AYmwlJq)8xnxq*NcM0q*RN$rek)x1i9B>0VqinU#cgtW>iZE%FBYMH+dRi=VgPa`KO6s(~~d?@Z%1G!b%z++9x z{({q4dcV-o%T)~}MarXW7$K*WpjnFxWM0s zkgLE1iOJE3kx9=N0ItD>Xmxi$@-lRbB|(qG)$ph{G5U9vraFrb$hOtpo}S!k>M2Zg z^ifkuE78^v8D5|XC3ylj5a>NZ0p*^|2B;}j#8r3{<0;pe>88Bx_FWx(9vclzn#ATF za(`jvqLb{ae^0l6O6_w~R#sa#mAdIq_`6-kz8AOL7oT=Ybx&P@Ol6(;D}25fmC008 zqf#Aqy1;>PJ#_T@t!y?KxXMp7tmX{FNP`@&Cfy7j)c*jgHan+FdQCpiw%l(p+t#sa zt~3yuTXIs|XK8a!G*t3Dlgg_cXbVXqMzR>s7veRb>iO|vl{d%`2sb)weWGU5JtcJ< zJA%C6U5u|xhMdqqBJwhVb|jGl{DIv;_a&Omz4|@39@jy6tlrjJYQVPJP)A6XDHKU8 z(O|h&1h{1IQTg^D>Nr>USj<7FKx4?c?0-lLCO?JLXAPtr4AW^a2BpqugSd;Hplql6 zli+u8^fPB%cehpTv)-*OEDK8p+}xpMT8R;v5_B|j60ML6sZIbkIb>s?nqXzHj-Gti z2~Lel&iO&odGzJarMoPxzv1^|UafsNyWH(F>^b)>V1?SFamiIlCBM^IW~^$EqtSRG zSy7^XBPzc_b%YUBqrz~Gphvk|29coW(XCC{>^0Eu^yg?$8y~zilzJfpU9{!$d5TZ-6 zv=Vz2E46=T9{avEebU<W4%YAP4b*Fkr-~7upI2aFMq1jHTx!uaqeo}ueG){GhJbM zOqBH%m9jKGj7-KNqCwr83V`w@*;QGy-!3R&u-Z72ZHD&c?{ykfF-{Xy0mw+3bk%Jx zk^DJX7o$7Mlc^T!4XeAVsvs5!<*TEnuawEmO9P763Y;39P;g~*lA(lzqnT0!1)f$u_vPRH1tR_T7=>IMZ3k7l*D#_&xoTT?|%QtO6_K&S;& zXbf)}#?c8RGLq`!)6j=eF3TowrOz$n$ezn-!IefyjH7;f8Gt^M)Ri#ncFTupb@Qk; zU5!CQv*M(!xvdo&&c$WA+`r+#ZwP;nRqd*U;UoJMZO}eeLT9^=%d@# z{kySi>2A|d)QT!9(Fdg*X&I5)p+!$2D3x7IKPxJqe4Op6{i6J?%+MvXB$?O#BHdG` zg`rxQ`NJ>yjQN59Bmv9=)kivS(n@QUr*GP$r#qhYTLcrQj)nrIRz0y`3+4~yXw+MIw^#-jNnU;yc0Smw z+EHC&*_#)9O>CO?bG8W@_i3P{VNVnl2#(Ct$t#E9Ol6r^y9mP`=5BEr9|tM1`Gxf$ zkK*Pw(O_mARiIkY4+KYDK?h(u^Pec**XSQsI^AhneWz!%)7z;fl`1bgdui?Kc>GE# zgn~%~(8>bk*~5J53X>TmD3gshJkty$4y64^i}zUE!AwSRo43ER^izBwS9IFuPg3o> zSASiiVHcxa)F>^HNX*1R9CYZSM-1OG^N|aK#0ZGarphmKY{Caf`~J!dqgJKepy~dH z`d;n9(;bzuR^_-UHcr^GS)seh6fng}d3%j8h=P&|y7}RNtdbzfi;)AD2XL%4F9o%! zIJvU`NG{fFbQiIbJk`z%hGDTdj}7>Mz&8M%;B^C-jz-|FcDY|{JwmnC+Uz%7%_S`c z+2FWit)it^#yY@ z@-$H_uNwsq{{Vzoj7FO=7>FUDGWrwPObbThb=_3tWoLk1V%q(0%k)~#+qx8=zsYfUXR+FBWDr)eRg6!ZQaB4Zn?892!}b@>%lNW+LNpwAJZu-(n0 zOX+oCgQrHbs<61UxI;ytnb4iP=%mxymvnUcbg*3PcPm})jptiLTTgDGr4rMS5?Lsx zlC2seAYYac<fWzq1sm3b3q3wO4N@>@odnnYaIMzCnT!!^wjHZ*rrsdDbr{Lwl_EHeawm5 zlEGU7=1~}ihh#gz7ZxM)9l^Qu3wUh)sBGSbP}E**8)`eXHO7S6O{;UxVvZ@Lg;Gk0 zVUAau)hE^D@;qTglu=& zwlyw&%6BSpAYA;Ua@BZi-<6cW4bjdT$07TBJz?UEshb^9vhVY@ zF~384`z&mC;i!{VQa3}N|n z15U?C^NTG?ILrlnJE?|-RtI@94Y`vX#Pz+`ZSHt9MfPwBljaYPs0Ph63EC_8VvX%qe0ZzfyFy_+3OfMyndeQpigX1HIby3b7#*EJoM*EObQT579&LFYAy zsQ8KIib_aXRDp$jU>#NP+&eKGPOc`i0DFE}@&~sssOA-K8Fn3*YE*E}c4w0Jhicc! z1(T@(z?<_EBudnK(!Q&AZDF2JZhIiJ-7Pyx>1t~vG0ASMp|aISB`Jbm{6%C^c_aFcIj}5G zFPkS?H0xoW&jr8Zq>rdu^{4=tKxeJxL&^SbYyiii5-=BC_#7`H}fEe4%;VC&l!cOA$kiIKHcMK>q-gX{P&mE;AMI z#a3de)#2?72mGLtC-ZA#VQ%F?x}UrHlQsTLueNr|(b_K3i;B?OB6_$gs};RAsHl}h zVmQQtSt3xXV|dm0hb4}X<1~228MUgHG&a$pzM^j=Y0J9oFgzBf8ReK}W-c;qq0&u& zxc>l3O?kCc-)%JZI+-hBhR`6m)1_6mIy$NzQx$ruO34~F!m~J%DT$4cl|dV-9dlSd zHriBtJY-d+c7yq*)@y*Bw05)Vw<>Td%r5X-lH&Fe)(lAIKhk*&6%hp!S zTpdPJ@ajF1NBo7;Xc2F8~ z$cB&iXUiMPKZRyCv(Ba+BpC$GhxT5H!ng$r(^nWl76G8|7LW%aF{d>X+nYbA)@yBi z+n#&2;F8*&qT8rqrm1LNmG}xt_F@}5r!D~fCI1ta-IsUR)>KAk1Ygw+iUA3 zQ5tk9lFai5USqLW?7OnZb-G5g-0pOAF}$)=2&lzFlw7tWiJ3W!78x(dl3TDGOR0jZ zMWR>AYT76RdBYHQrPhQW4Ms)A`5)~Q;ZYLUyM{KqXBkv?LQe9B)u z`7XA{7NuJXcs~#ssgKC;B#6+FxSn2$&A72vfTLVU0>^&Gr&TGo^;U+>4Z5N_%42q# z1%|qsYM7%k9&X|jBQZsl8O)KnJQ+(VIG5z*#|WtARco(KWu!?XY`{d8*av}dVC{O! zEEOxVl_M^9G5|d!oT1#W2b#!Sddh9Iw6zAZg0`Nfj8`O-l?c@o=+it3lBbcApo!ANTU#G4OD#v#-Pc7$1A%ue<$4dowwvmR6$H0Sk6}nG*Sbx_wUSvOt1pMYW#GadZ>m&uXU0sOrw}w_I*e&n&WAY;{ry z(skrjUZf!IvPz^XpO=HFaM{B8p9J7E-$|7#knljtHXTfx{{R!Z?D)_9PU85yGcXu1 zD29k6UDnenI$M2bLKOc1tNljW{buMymfN)|QPEYzV@p6K70NLR6_@6Sjx1EJKk(Ri z7(R{tJ+60#@h!KPW#mn&`Y$!9Jck?3{cr59AGLfp?R!n`in>eP;^%Lrs7i&jR#HMe zR#pxcSk?d)1z2b2Ekp{_=g#Z!+sv27u3WPdAu%*s_N$ExLPd~ z2IEl~p@K>|m8JDzt&RH;G%gHo2s~L?N{|QBS1!WSad9HWbH=7^M|I7;XId_oZwnsr zqO~PqYI8?b3)H+3#Z1d8M;vDi%*t9~-HNDMa(NPQ4vKDKd1R0%1hC#7Xmc7(nt@N{5>Hh#5S#^jdsU(U=Nopk+ zrj3FgN0XILsrvit&*@Nk#EK3C!GjSx!HL~azL{w)n2pFW{*+^LKJRXmRok}>qPCun zxcV-^yb}h-$aAutgpud1x|Pf+YhA$=d8V|VT>Y5IRZatxG zrMFu49bFBsn6fN&3`I-Ku?3K{OP6O1QJK5^j=h)8wQ*QXO?I3{C9f|gCO%l@%yt%7 zs0=uG4H7lBz2$5wuZP{OXxrPy`MW($peU`N(_60>siuObkxbS}P_60^vk2iHkO39= zHzB}_8Wasy7Smt^L|ADCcF>-N_nDG*Y0`>~4xFUHjkGby80JLsQGT0zKU?n&W8M~9 zTsxlLDS}(>2xFaHqn*z>d8LWjQA&h(-xgL>@7Cd zC5B+{dvuFmo|>%I<@i(F8`iohDb~KlM-)*}ei%xT`p_>oc;@67%&j4L963Cll#|&) z!iFyuLAe+Nbp~(B_UN+JrrMP=utn$iJAD>cYy3WS7S~L?u9MYOEkv@lO?5Od34@kq z7(;|Sn4UwDk;HKr2U<_2D^xFgc7Optb2j>^)oWg6kc~CJ*Z{T;-k=)`ZQM4!Z1yWg z=Do;XqTNE!8mjARD#VOq;tN6QHA!Me%uWf*5P1$iUmJkHfXgw)96;BTLEA!hn`;43 zaV9y{B9MRwJvyk3>!C398QrNZmUDTaqF5uEN@x=?gm|G-$|)nlD>ADXos`Pgd_a5KS+FOT|H80oXZs@kp9zJ9YSGn<*YEC)*` zzkEMMdbwJCJBQ)zP)yYqIvR(bsV_1ZiX+Y)hzzBi22vac$Z$XdeuZ&|W0=wTu6mi* z^jPY(^++x{SVRaOobJ3kgKl-+T5Bz{YVJLovuzYrCYD&~&0MI|VU?12q4bxG*fIu< zq#%%tBvu@?Z~aY~bUJ-`UQa9i6?wxJyXB`k+`;p)9-m#7xV7{%;zGv*S6e!Ru<7>% z^3Ja_Qq@TWQ9f9>64Od0mRVTH{MC3e0;T;)F)_p_2NFRetZVN>&0;ibJ+V@l*KV3> ze4~|>u9bW~_0y$Rd-XG1x>vmGZ}q0Sk^wjq15p&aC6#BSbXsSXa=P~2gA2jz8|)g-*VP&9i>}gx6#%9GRZO5bYhV5hp`mFdXv`mi z4Lw+nq2`)zMZb*5U6kZV%6FTKk>Ih0=5;!a<^lAca7yu);hj#QCZi3ETVp#x%g*FR zfPl0YUke-eQezGh~(yt~U44`ZhN4IgUTxDuTi@|ge9;Dmqw(xYTV5?HZR1nfk_KW=wn%Y+_ z;d)v-r3J=GC8n;HAy*x2U%rl5eN_4Rj!Q2oWe!hr58=i2>Q$kj{a#HXO;d#I%b+*KB+b;Rud8WEq>MLm}OrfLnDP)d0 z2;gEya7ma*0&oi4eMBU2%GXsc5F=6sHBW3cKGZx3wMCn%+*^s<&J1vGS6#aHtRB#B0e`83-@Sl&t3?{C9S;AoUK>V{+3d89QW;Y}!xlj#xg%CN%JP{H_=XD%aBUw?SX#FM=IpFdT+EpRurhy#8AxKMLK1_I#@_PyLHx}6VDXS*aY*KM7h zZMWMiZYPjZ-mfaAK$ON-DFkaGg$@VF^GcT+&x$xaj$^}f8UFx|k}U+yjqTZ2_z$E7 zKwHQ_I{E$lh1Vz7+$c6rL291MyQnX+o23 z>!DQmT5ZNT&S(JgAlvkgTCBD2;lpNi2FY{X8{@23>*nMT)xCXo=-V^2R4%;HmFbZf z(>zDKfn^}^4tRhGi};;$dK%zwSorZtttR+?tYOStih_q95|e z@x&tar;1-$d4yLo3`Si@lb&@?iTH(>7g9CYa(+r%e0~=I2s|l9eWn-Y_0NC?8jUv*nZ9j)C_0(IE z^#+Ts5pO$P)|z@sYmJ`M9Ve>{VQE6D&Pv83H0R~vkjNQMT(Fiqh(41=0Ldah%G~-J zj>@kIhHZL<)gBlD{{W2NeaQ2=**!h@dg^aY_6@gdZQiXtijs<`)E1-KR4FUQ;Y6TG z_?8^shFPQyl26-JRk-#pg-`5ZbLQN<2=6zJKn01sIIs~d?m^q6eN;E8e+3(#tCbY= z8=rLDC#PzLt(x^sNp7FkaT~`UtgR$dBO)FthM7iwP@H@8P2vqSJZ}(Z{{V^1Jq^Je z^ePpp)O*Dk`FX&Pps~HWtWtkx2FDg*N4Ym%*0f^^gDv_dfYq8 zI*Xs|_~@*4v{V%;WQIq13z+9Dim>AxMhgSTV+S4=6~wW%UTGFI#^9f%k6$QRc#RAe z9}33MV}pT`;_I2T2mlUym9)Mdz8ALlS^8bFH;CMq^|V`Ol1oP2HB|L9*2q?MlvBKo z0B4ZN^T_HKIaLY*_Qzj{zLh$dNdDyf&XNI4HlVa%A>~E_I$yInulu}aC%N%e@^%5(roNCOVreYGe90kgNF_DgU6;Bn8!<;i} z5CdW^XO)HLt>=>KcxEFC+V6J~V_xT(4}c3l_Q3=b0M3K5#{4#Hd!JZrml-5#U6XXA zs2`0M>oU|!UoB^?iR)&lm85Ebhzh7>5v;1psm)5*RjT@QTZ0tf00i%7m=SB~7T0-D zuU`p+;*Z2qio`j`<|GIa1LfK+GGqvdvc+z_;b7QxduGvihS41j7T>J1L3OxWVfCP< zSZisYGa$@R%ZT9g^5hw2ejuRdhlWtAPl>Vhu?~>=iLL|lENtS$a2fo?O0RL4-F z7{F!(g!dGv^uYF??10R8(kdSpIi-kyEEX4|tpzT+jrC6$^esuE~sV8~UY`5eZFi@sTpBg6sN@z-Zv)aW!hpEo!r zI%|IGlB6o)DtK=hb>%0oSc`ft&FOz%cK-lR`U?dmmhoM;cOK-p;-~O3RMbq7(^5qZ zH7T4R%Q<(Pp=DJ@@BtatZF+U8wZs8C4yHZzU4?EPR|@uFvzNu>-bnzF=?7>X6uez) zF5Z-t74_9Du&pwB^$z4j2_in{_;Sti_{lxBbTJ3~SUbQ~wJ^gmE-CjnR(9u4ZPz+| z(|J`{tYX(4zB##98Y$Ss;*taMvn!x*8;E8`UsPF$XaY?ln6~_0)c?Zfg2Yo!F}*ux!f}v0z&JoYZ)ymQPfx za#>}9M!_!MyFW4_FFMxa-$XW}#J$(B`jfEw{S+~j#}VQ+orhor?{)SPOn?MU&9t3& zG0ok2_^3-&4INIz+U*wJy3@}>)jPb?*VH`mx{1U~5gw3G%Dmg=ZcWFJe9Yo&@dkJ` zDi(+YhT6tstQhw&DzTV$aHqHywZswzu`Sm_1}9A?oL&>q?xEXKP0_zD+kPuELlqSa ziMB1v3=&hch>pf1AVB=%hq%Uh$VtvLnEH4}3OUK>OrCn{>a*c#zO@sGEDiA;mf91p zldw!glfNr4al-Lu|hP0K_M8 zLq%|=f<~U~Y*s~Cj*Xz|+SFZY? zzNl=F0VTILoyp$TfJLEe>x7$6e{9Xiy687O+M%r$n}b$*wo7d_M&W`Hnd)JvKgO~g z2a-1tI~*ADNY>pNO`t<5w+)aEfF$t#7(cJ z_x}Kg4Y^%>-LxB;@k>olaC_C7mU5EIJV6l)dXb_inO~S#-erwjFsp%!JU#)~d~3}! zmTmt4B1Y3aNi$>iS@E1l@!4u(*fI#PE^9~rO^fNyL|MGnduUlYA+okDlE*YVdv)&$ zTW6ED67^^9y(Mn_C7_h3uQ7T!RnD=&3`zV zBMOXagEUQ)VoWSQi?RATn5yq|xSNRmw29uuFT!CR1UN?`4!e*+?djEAr}#zKTXyR$ zeS>4$>|#a#0K%Tf4b>7(EImbP&sC88*$SmoRcxPOkH}SykA+6HbLQRJ=rJ0qf4+UnRsJ1XfL-@eR7K+i!Q!SQmCG zn}rP3cE3?;sk@4bMMah*i_;t$KS(Po2M9n=HQ3@>>=h#VHv?(koa%bcy6UPh)Z2@5 zSnCnEojt&n+jTz%y)mG%&uO=8O}j-$P*39j01<1R>m&FdyLqa_)ZLT}!73keTgJH& z#IZuAXFr_40QBi@psT~d%i059J?0c<@BN>hB)+7u{u<$7fzR#|$R~_OcyLBxQ&~E* zE?EBn3X-^7fC)P-;#G3A7ZP`{f_$&#I_|O#4^&QK40R`N-c!kDY5o$ny}>Njt;I`v zy6svjYPF`bRMyUEEv_dK(};a4)O@uY6nwL;Q#eB0Ox?sB&`TUa_xk%PX9D`bG2yT* zBHKZmd3L(ZNAQ8rIAAF@%c+OuL;@?lbO@-2F{o2kMhBcRAhu3Enj;xexrTEFX2X4U zTW5x1Dh7aNAPbWbwusSuG4x{4V*QJ?D%>drLhh-eRlztMOs$+``3LAp)~!dQ53>nebXvII44%4+8vfJ{H%;) zoO0P@?Kk(hP<|(6&Dyr6+npKWhNhzf{83d6Wu|VZi7G(~r+=4l-Am198e11~8&Jl}t z3Zv<@&>lAg$r@>Jc@d{0qUzqNSw~HJLt9VN+kL-pOHE)4`);0`F}G921W~FXRWiv@ zC#k|SgOA=w#FbQjHjO%G6zak=&8@E5k9w7;Dmx=thz>0}i9LL@6Q>{o)m=LH7u_8} z+m^XE+>&g~sY5{MyLOsbTIDJ^M`+QA;Xox3z_JXyjIo3!FjyYxo-|H#CTuJ(*6NDB zDvO_$w80?^isq?pM~UsEcpLr&5br}TLK@q(x! zNC4$X1O*3GxF3eGRcZ>aZ~|`!*5A76D|}IfZ3j}M*B6l&5IgJkQyrt#{;ApoG;7rT z=TRLhl?H3Xk~5w>S(~3Ml4N6oNCb>vs*&o$1BIhSqr(O_A$iR_L*C*XL7s|vusWI7 z4b{3R>H2Du%^=!#ni(s90Sv!}^qQe(aZx$+;WA1~F=Ad!BM?Z}mwZ!H(|c)B(n&Y8 z?Kb4Qt_x2E6)NLEIzTzP&4$0C+*>E0+uB>rKH%yO=ZkS(V!2CKD^gX(_?oC5lvA}U z)yRp$nUS0r;Xv)OGt)Th*pe72+Am2wXqcHF|FJxx3;_L zc#a3t?R`2%-PFHnOT4Iee^E`wp5HBoqV*k4-g=94@b;2D^Kkup+VatHx?q&0w&%_TT&F$$)W1&u0Pi}j zmh<=Mw{q0or__J_OP4+_H*NQ)8t_uR`*r( z3|AMov?G13z)r>?#`T^NXt)mA5r@&W}@PTK1)QP z;Z9+7EX0fj%lrEdwd-_8w<+c9k19nPpf~`Qc*s$o z1-p00eMoq&aBEv6@&x{iOBKX;ZVm<^;7>P4>b&--UvgGU6|;ZcD-0}wl8T~~^5lWW z8DYbMtPWQoc*r2*ZoM2%8M*6I$~ln;r-{K<2g8FMPw%Iit^3lOj^)^!me%)MwZ?0O z1w}M5SKQfQF7cI4YNLrz*khINf!jLc@xK)C+yyt(t6Ia9pDT4%yf+&|35=my0Ltc) za)($O*uc|i^ItM|R>0~XK{~0n_Wt?XHJiG|YN_hlExkr=G}kI9SJ*&SGpy z1DRd+K*%K@tsRkU9( ze9rPr{eO*>eiwl8tVKWVP%QvQ&5@v5Aj}x)8eRh94ytte!gg0u?;DEoQE%EesUv-} z1w0`oxL2%&*hLd0Y#>3+WN@mvbqoIhhF4bADq!e6pVOXR>6?oI&#t!gR~$*4Qx@j% z?k7o%3~$Yq`J&Mh*@qYo%3MhoHrJY{EYL-36n5w%f;RN1Jn7_Pv(XNj;{w z@wA_adb2zshZOCFjf^f%Pa~AT$zca#>9UNxh&^-@e_cHx5wQ-n=SS&3P>XtUJ zJty_r_Ogg|=V9IMw;jj7C%?yiudlmQONB5b?IG}F_9#hPRDAY{U^gFYB$I}uY8kE&|7{9CZx zOlueAw`D_);(~*iDT#ZG7dv68j=J6hcOaDeMvr^%K8{E0l)WV4HQP=cqruJDSJJ)1vWsM>NTKVHD^Gvu>%#$EqE%UZR9Ap3wbF7#=E+N$0 zN|h&=fHHz?JB8QcvCgRXVjGBf4kVdy8ubo3SX?X}eW&5F%Opz;kEbhFG?7Efrr8YY z6R;ext;Il5^EMP?xz*i11;wk0WeS$Qkf@!;Xi^UGF+v?;GwaI4twr%O)n1=%zM4U8 z*dOq9ZRYoNrJY4+mMbL&O3#aIx6j6Kk7kZ6!dgsU72_n^S7l)>t<+HS(VISk^8P`jA~E zxI(u6bc{%*m(i)1BwSSy%dsp@M%yW3aO|n_k@-dXYk&1+h(8Hdpm2<&l1{`CF$VhU zd7YP4d?MN|woZ-HQdHV!vCz`o?kgRssN|*y464jjo;hDo%0X1(-pAiuXAt5vFitMV zREX+N+E&RF1Kip$G`+g*{H>o~xn9z>t!mr%87n5to}!r*WS59hAsvgHD(ALHP(J$P zD*SoD=)4LP-%y<*K%YDP7RbYAj}oh3Z39hX>U~zZ*pxe~V(gu}Wn)_m6y z>TIPg}bwD0+uOT^8cMK^0{*YksC-D1d_uu@MA{7BbR$pb^=W z{{RsMkGAmc6fmv)EjGgpZ#N>^%$T*0Ev&R_oIOF~5+%AFG(9%h{g=_dhwiu8{v-NF zLAvZ#s(8|+T8iOAB)OJ`sZ0fG^>ikHgX{8 z?{7c4i*IeuS5ws5np@2%wruNBrrR)HZFP?gU7F)G6xDRINgxb}k2HxESqh`9KB}1C z=G<;0E*Md403pWu$tTJq_lR3r7-@k{OWa8|kVoY(H8#In$4O^EM6>OC^3=%?Shqdd zY3ePrm7%FaQO%l}dtxywO&R%AGsh#SD&Xq6xnQYh0(aB+`Yf1??XKp!nQfbA3;t29 z^@y2UDQ)lxeM2=#bN$m@DN+9bry74&W z^06!IJL5l1NvA20qURR~cAcZ`b&{Tzp(wu-P^nK%Kddba@mOt1LqeN=^qtIcmAn;f99e()%{hwcX^2 zpxxG}Xk=Mjdh{2oWHP}uJgt&_H>IZw9!cV98Au%RY`Cs3@$WSv3ke6Y_wRiiE)-y@ zIt+_mEqw^-J954D)BgYw9}Jy0>P5q>-Ak#xQ#EC?a!^Z(D~hEw$@p3^SxDwJeiA&B zN=t-k72`P%+!@ow)N9#GNoP%c{{TG3%dp0)n@qXDZ_)vS&=3Xsh_#mO>t4j#ePGxf zCfj#C!$GqtBD~PlM{XA?Q90p7Byqt2b>lfnJrRUZ8B5~_8mPfl45L`m8G#1o)+YR* z`F#}GNz9{`4uEqK2s+-z{cJXs@q239>$h#%lFDu(l8#9X^Gj1OSYSj#&oc&K30T7r zKZxUs}|SA-|AYKd18Af8sQbD*0LpR`qErD(a(vv~s7QfWww8 zFELKcsLT~sOymrWY%j@(YmYPQHuAaGqV02&4Gxl6-Sy1a?=}+}URP=C-^SM4mT0JI zWk{EgG>O@H0ppf1NFRUk*H>Dv$^hMS{v0@vv3)|V{kgn)U9sTWR25sIVY07;F&yhi+^ zmFCMybpv}*bq1!-ZvCjWn_FvJmepZ31JD(`Ks6P-82qhKC}{~j);~oLgRWyARqi=x z*a)6}{{UXWcDx>gFqB)0tsW!v=+VEPy?c_i-FDuN^EKrwRg&EfYNj#HsFfxqVHf}w z3f;=CM$a>0 zH=?;wu!tD=vYZgiThC+j0gMcNNjio$3$*^3#a(x%%k4 zm*5_Tw(Ib}WT%>{1bb!X=R@e!+LCWZZ(G$IWCR?Qk&kjaWOo2(KNI=9DvSaPc`aIR zV5nPCWK6@O{GH!RXg6ImK$ki=A&%j6TcO~q>BVG{BJb)RBqVY&-~)oV$8KG+bxjj{ zDb#flcC?TE;QdQM^PY>AzAZYJal3U#VDy)0-4?2S$hR18(AcZpDs8TjsY#}2TbCGP zY2|8XJX|O)q;bXW6AtP$YGNE9fg*ZOy;VE$G@XbPo+X_Srw71NcK z(`?#pGs8%hN;qB^X`!bWSe0r^ykQwi@F1Q_?m#4sVWow`RC#qtE`9Z#ZZxqGadWVe zx+*Nhnk=bGm^A!_fYg|^!3G5DU{_;&S9}QA`p36nx^(&M7A??|Eb`Y+TO<@U^sfly zOmQKNCTv9hqDF!FIc$~(S+MxJm@4k2R_zitn`z(Gb9kITipIKwP4?T%kozuBHom9) z8`^FgTYf|MZJSpk-D&BqR|6qlocRHE~tr5tP#W$Db|w zY5J{9JE^o0SU_#fq=TULbh6)n311(QZ>l@Zuc%jBHqwgO9V~XK=pmUJbuMER=}8EX zut?QUD9{8{`MVHBem8}^=ftM(nCm|Mg<*%sP|E_Hg|_R?^Umj4vgr=Ed`4Kl9X9=j z^}6b=)mGcojTIoX)B2N1gpJQ5GcTu7`;s2KNL24VS2e#ZHezRvCCse5^P2-DZhm82T#c-oW*8Lu{&F>jgE9M7S!U2m{HEV_5Uy2jl%vD96~>zzeC zG}R(_>8qxTkn~rSyyJ4QvjWNi{v3ivx$o)tlSjv!M?JZ%{{Y9(FYv(=*m>=@*HJ5b zRc&{ImFg;~)hXdmP*golT7?QToUFM%{l|0TzN>(6)UAPBKjjAepnl7c{w@9{c8$|! z)NEawc)H8FYHAwWbfl7b-jLIAKD$g5w=xk*dR&+xW^x)p3f*C;WoL>3h}OXE5j@ZP zx`j$k6&mV~Y;uVL*O(l)>!pzR2>5ij*sPNE99(U;c`kI%M?*Zz{`ekZ3c$6#26Qm)@?q0_Uu))ifEDFJW@O_ z3hJ&3z58Pr>TGMC;MR#HW2sh~8eH)Jby}AD@v+j)oNe!ax!f$Na;1*G-!02- z+^N#OmBwS95@I~#KF^QSR-e*wo3whWL>JH(4NR z%F5YULZv(~tI1a=$IHrBjwM`oZhkmpUb%|Hef_ z{S;DLY&5e&25^sEQ6!6p9U|1hWXpex^LV`_X7(8{&Rlmo{z7 zbRzLcKf2LO&yYdMB=;V~aRVOOx5m794jq;Z6A7r_HP;;mqNAhehTpSQQ^h?Xmaci} zXQmRy^9uTa8G%AM0UTgp_6h*;ub;jkuQ=y6rR+Y-)OcnNv7#$cw$>mYxH0rwHpx>* zw<#8a(?dyUqW4jS7XMOcbJ#c?T$orGAy$dH1dg1`a}t#H^JMlpr-qTJrleGS&GGJ(K2Hxk0x z(pzKH9S?DBh1P!ax!-P7MFrC9B^=Yo>&F^YH2jx11Q==LKr#sK;EZ_3eOb`>dx_#& z=Tl($b@_n%$I(z$;bM~BA`(L$J-gWzn?9OLC6s|>~GEh=H%iq$_5T{VNNmO5Hn)jiIp+h(nnojOKa}1k@Ve?Ap;c9hp*vc8GeohN zfmfCy4d6&NGHY@Xv9(rzY!ZP?&?k$H78@waZ^WJ}TtAeM8 z!_+Rt(rt0c@*}Zn`+~K!wVg@Zcj&IIdY5(5D*;tVte&*!MhM{KFEs}$LmUy01nZCS zxUDQetzG7$PQU6T`Y!#y{X4`krwZCagU{u0oUJW9{iUD z@mB@HU}-R5D?HV?aSje{ShN5L=Q3Q)s&#iMZ1l7?C~R^VjgskH^{F~7 z5P6=aNfD-JTGvS=RKql6@^9mBP^reT+&=;+wx(bsR)RI$ZKjj1%gu0HB85y&dj9}3 z%>2aPO}PWmLg~e@TP@NnQ~v#EAX7jY_w=WR3p0Q%ee zEBap!;HcV}cmDu4AJnLgqiBB9x$fWij`h1PLL0aL04R0bb&<-H5>deWNyU z2W2FPqa+`FO5YQ@vrP(AspvBUNt&Kg6sYiE*Ar33+C!c76Z9*Vwl`P$x3hjWKl}<@ z`lGn_Cfc6)9XOinR+SGe0f5e^{FfqA8^##M%0sEZJ%+b&Kw|JdD;#OI59P6)1Vydb ztay5@!aekjIjBou+5o(WExgT)jWi)|?}#6aDn5jj+xv2sZYlz6_pS=5*2@VNp!&k4oWfnI69p=c$_tS!{#TvAJi)umSm+3 z9H0O%$XRpt#_9!j!QAU`OBUMQ7UKl8v)i{F2jZzJk&57jBs^{kt1Bxj4&x*e4@A~d z0OpyuNc8kt7`E5NHI&1$figz?z2C9hdUUViD*3dxJtpysVo}iSdKjwcBD7f2dTVl2 zxK`&iM1{n%FFshA{4(GSE~#tbDLXXX#x8Gb*bRDb)os3ua<>oTK{qpZ5pCc``T(~V z{{R{Ld#LqOS~rHlvca|5l0i=xjtaRwLZNZ$7)glnEr&t~Aa~QG{{X_aFu+>hlmi{& zRBCY6IkBC@pZuM-NrJg%#eJKl9YCYp7P;WPwSupb%FI>^ge%+zC-`}w9mvW^19?HM znpKGgo`K&<{f?Z%*5bT7@z__;oUV%yZ>5jDHQ9X=+!c3?`_rzZ%V^z~N^6ZJtJAX8 zQQYK8*$kGtdevq^!J=|%78M!pLpD^97ab~I6?#uKCx3UJr>gP}AMo{RRXki}M^qzC zgv?J^*Iy`59n(*&vcFDnqsU~IZ9=2O~j0|V0k*~Fn{$gi{Y9EC9J9kHo^K3K8k}I@IDua zJepN1F!XWC2Vy0mFcm=yhJ+?{OQmRml|>ZaqPzHSA1n!!`KYH1;YRZc}|CPyYn&Ljw@1&WR(yW_C< zdyn9#QF!B6P;%(tCV7G;$G2m3%X~q?ac+BG!m%Nsm@Oc6f(aU0`wgXUJ(JNZ^nEzD z)LeHC@0)wp$qe=NcYWbiAg760B>XZ)vJo1wRapt=DE;b(D%`cmagT|HILu@xb7O8ofA~w(q<4%93+9r z{^(64d%V6F&U%@?9R^6|}@Ke`R z$yY56PpVax6Dej8$r(l|&x~&o;-E-zlBG&-Xb}gb{_6;$@I#(Kwf5L@5v<=*4eq{I ze0BAQa9#S@Q&#ZS((O^kme*ySnhI%u49ygiFpY<){{S$P5ZO|}SHJ;v(O_`&D$_LS zz%A5^oi?2hUbaR#^)OW01Ef1`CwuP@N6S6QT(`V8#oKf43)RBmSsi_4%4T}1#-@!V zow*h=5)>Xxe7Ba#$vM^a3^h7zU;-mSCf@#=E^`%&sOpbsh&Iq@I>(giMyq~&3Eg*9 z^L^KBJ-fQ6+w)#&q^hTcR?kljO-(#(>a1cQhV;E`G41l;`(vN@f{V>2)~4dp4dapi zW7lQg{13-Ce+a}s`kok7ruY+;jxD~y!$Kxv<~l;@UH7{B+tWGeX*Vt7blV|_x8W!K zr!&*OPDx2s%E{w6EZ>mvt|;TN)Y>Wdrrg)nTqlS8AI8I~U?|dikLDQ~96PjtTjT_- z!SIRkA-FHQp69kV4(Pg7SKK0wOJw!c25=fKMc`FEgF2o-}*d^c3o>0=(wRGORVgzjt7Sy&&uHH)B2Vp z{$EAl--4mFG4IV6-Bq|8?(?7o_X?}|XCtx^I}-b8Hw z0Qsof{6Nq2)=|ZA1N^><2Zz!B0P+1w6&tdyrUHiRGKXFvlprJTkUaU({Z|lw$pZmI z8OT1W)E9+~BM(hM*aiDQZ!}A&U(4_1W4uU*~>I!LVHvM$wTDwIpWTX(r zSviR_j_w;g{0};r$55#3)hWsDRxiQTXogfEcK-lN4OwN|b(=`9xg#mF;Gsc*-0_@-%sfh@DjV0oM$_`bgHM zX6BHxhB>4-eQ)$K513d9b`_YzB13S$(Fp+s;M_H;N90~s#y=uH$6CURLrWUs0qgt9 zwj4_k931vjaUAJWKW2~Ls9y_u8MN%%nfIsdxha+^UA1wjql&6S8p~LaGe8xA2bf{W zSNp|6kV74ME;6@-SqAbwBm?v-j^UU$Vklx98#ZY3Ctn~Bl9$tTnhmMZ8=l~{-`3^7 zsq5(ODM4eX68_J%tWq?!GvHWNCdy_J}%PmqLovF&s6H zXfWXG!5VFCMdtS8wC&Sy?oH3mrsZ|H-8hjOPgzqWpc9-aW+&)-YS6qk#Hwbttz&Dh zljyA#w`F`f*6%-7bG)vXO6{R*Ph839LsJDe;;K;!Vj{GuQ2=#jW@?_{L}Qg!Hlb_* z2QVkl@7$5xO6fRu3H2PxbphAPH-paJQM}tv-uG?aY}FG}K^!!*Wg#>(0})mJ5IG}v z0Qn#jooi5`PO~!8ea5mc_aAj>kK$DTqd;80s5~590S7|Y5FmQ#*cI)w-S1U2b+T2w zl=L+;PO;OpzNCy7jDwMH3z3`*5`B-IVyN0pIT>;d_8gY(75KLSRqYI6hz9O4aU|Y7 zCz9CK+x0firIYcJ%S@9|H5acFs5H$iWj#_)uqVI2%mDg@iNkpGSjOD6&!*Pqv~hI> zd}EDAWow-hbQ@i5zLQN+@bP`x75i(b0`G9GxkB{aHWzteNiFpev$NH-V8`q8G;8Rh zlPe|^J}@lW*HmGpQ$z3QwQ*H4R5Zmg15zLntUG>wdmF9yN7gHz_}rVy)zll)*6mwG zP>u?HiFl;9(4_}8ib<~0{y0wj7@~Sn$W`QKKxO2ERk>+WX>Ab?8j=aqengdo;qea) zsa3x#oM7|i6Q=WRH48&uJ|Z^0!t4I)ud`8Fwr1V7Taud3OHm8WO(YUS6*T_AjmdXc?94%JW5-jagQep* zKqLu^T!xOrKx1W-1;jB;r{NPVXf6^bOU1m%nZ4K0pNG!2P+9t0v3AY!mboUN+Z4}N za=6t*&b20`B3fQD@jQyu({RCJ0TG4dy5)^}97huNVO^Qb0%N%v@21?M>!YiMtkdIE zFdpF&d5OGr2b7aN7C+)g;a8*=x*g}ZdY9BohS<4Y>KUzq;Z$Cd#VoF}$SLVm;hJe< zFCZ*A0@w&gJz3Ml)oWPRk(sBh#q51`=eEnAr+}>N!i#e-+GGK!JH+4C*Id`|*$uDZ zuBrDX&Fa?4y4`(Qs4te(5>kes3>eC_buAEeVv%4fhemIeW+9`KZPg!Ljt>S--pA`F zkkMSX0Zol)s>ZUA0GEDqn~?y?oj>9=ld8jfPyAF`y5YaJ?UwRd{{XP<6_Z>|HH=9^ z`%a~zRallvf?v}N3W|q`Tr0}!7~~Xea9$Tz6^ZaE<;-jjmeh&;H;*K^%ea0I4^I(9 zJ+5dnAC$=k#56=&<6OHJeq{kYQ`tLC-)-L(J)T#o%Ue+xDSMtvMG8Y8jv|z$1dI$L z(p8pb%7$kRoD7(XUxvg~z-+=q+nJCjWvfDkOnwrd6fY;l)v?G#$T2-2Ytr!B&c(Rw z>!!`#J3{9|uv40P$_t$wr=2xYaG&tfI--`IGRu;1Kp4va8&$Y`e}-yO#7<$}4^cXG z1AB$Fh~TcRR-J4hhT6u)H_~$rM4Rm8*}oRw78ZT~0PyKWQM4wSg6VdnbcLl>oq7YpuGs+Dz}g7Vz|;{uu6Bu@UB$%wwh$ux z{xKK7ec<&Mxxdby zqxCNL)cd8bvh^}BwOXj`lr->$5mQoALa{`Mq?`l9yLayH?fva_Wpf0QWT`(yx)F5i z4NZMhR>QaU#k2!*zgHDlV9K*BXc^Phm4cozh8f0516nwoTQIGXB%J`%t-LlCrYX?D z-0TZF`PC$V1e(94EgV>=mPMzAf5h- z#8fnuHyTBYZ^V$w>K3v(gyHFbbd$)Fj1I@X8_#2?cr^3o0_$m*y3D3ooRBt!^E+hj zX!lRXg?%g!Uv079H$1gB8fzs~u{8AR(oZrI&nyoK3FJr|pBUF`fPHGT*!qq#Mfvpl zEO@um!eI?20ce6ifjiiD?etv}w&o!6?_8SeYZzW?@m21-! zpIO;-yNR@j2Ko(#nsQv%@Hy0~YU?il0J-nF%ay{8$rZQoR-00qcq*!86$)Bt;=q-Z zQ;s4=^p}x5IsDr7Y%dcy>ViOF_4JuOi=X1WDcm}vX|T&sYu44uWvQ6EyT5j3Z{j5V z^XK1M)#_HPd^WbrVx1~<#&UICgVFodG+j5a(~5dUbQJ`dqGl&G5;5`EF)T-O+p+s= z$G#wFZavaA3$DO|>H-NQ4Hb{w1c1$lEUG2b8#u&T5;C^E_k>j6}59!8lWv1p(!U0~&}R$#B2F zd!$=yN%SA8(Z3tpnd0bWzM@-Io}-oS7R)Hjl6rL2GQ2Q8?f;&TIK(s*G10JZ3A_slsJOej92aK=H;f=K#j0Cv*`c2Nvy)Ae3se3G>VO*O&V zpVClTIyGQRatVh3p5zgaJ-cT>cHvJT2Pq$4(Q;qKzgPbNIavb0%VzlBgV*lRyhs4=Cldzc#$<*%3f^IR9QcO{zL zxa_9O6-_0&&3c0GSx{~;$8?gNQZqVJyqJUcW+_TAP|jpR>Oz3G^%_6SOo-CUon=E! z*{PpL3RoC7ltZ}-hpk;=NR)4{ArZqB7)e{564l5MKS5$>v zS6U6HOvtLy5f=Uio%H5mZyMDA4w>#Pw)1Q9)-(&R`fIo@H5FWDskl;CUaXY2feqQw zt}dxnQwOa)Ya=LUj!HsN8;oVb1srj%8nZ)d7cfY$E&#^x3GBK&JDNbuAl}A06Sk8- zs?pRvIlkTh0JJB0^%kKNMbic6ubIgb2U^PbnpTCkG_=BR3}>Okh6_ z+0DJJ?iL^EwO@;+R-;FTRGr9@TeU=7Yxb-l+^pm8bKp3j$&NJWrb+u0t2g>mfv?}48!o(G8w|>3t0T&$ynX`8$>d;;dyrBiWp>CduOE+K+qBxMhi&YjvJI`#x=8Em~I`WPtAS(n=NNz zUx;{NafY-4CsV$idHt5=o`x!vB6W(O6~lfZ5cVJv2w-v#(Dv=B&;xE3Pr6%F5=fV zkb>>?i5CN}Gw7gQCb+$$soP576t7P;CE|*rIir3J8!bd+Fk#?~dG^)bAZDcI^9Ss? znsGDB_Y3YHRXUBfx>HBEt8bMMQvLyIYANYz`9k%ad6bR^BM-=-Tq$A>M-kgTVM>## zxHY@4M4(MpHaQ84$Cp34!&`d4Vrzl6R8ZZjs#26z$ltKqiD8Mjl|qxq9p8(qaYbh- zmLPc6319@5bocwL<&J>n5JBrdr~1)Ot=9`3=9VhEWx|TG22#sCEa@zApdFc591t=O zZ29r2mWYW^`NfEZ>NHe`ft8~uQxmXjge? zGUk|=aNDsRpnyi}=FR5OSxwb78nF2vf4cO%56ApUjTd2fn?@pwfdo6{ zd_*6cL;nD{f9_douA^`LjTa5uu$KJ*219t+lB|m&=N#UZ)Utg^92e*@sT!r0sMz=K zlB}h{xGxnm!*Tu@{{V$?2g;y1UDH#{skYSWB_{6W_)A{mrBoc;UM%fN8hwj1V3YJx ze@#u8nols(E1TjRBDW5;T9n<(B|!7^7V`l}B(A26W$S%I*-y#=W8*!B3D$WU=&1la zmP(G(Us@Jar>F_#q?!*+NcsXm1Nj{%9Ief_IJd5gPOdVA8P4HljNI2+U6m5ccc_+@ znrY*vNAzB1l1Uo~s~Rgv**`=$@^Aqnrk@k0{8+-4IkTgP0luWj^9r@RYY0wP9H(Gx zO!7|+Y&E`=uu1B{A_9^C7_cKFu>j!z06knt7FU{yS2?~uSpHNv%SVCWXScs>e?17Y zD|G&CSaG>AYe@sX z{{U5zrVWi~&20?CUQUO50byv1ja9wZymq$a=;uy$?Sj*Cw2C_W^<@Pez(&TF1q|Md zYzdKaYob)2xDj#^c#LfxdvdK?Tmw zbXP@Yh6SBNs3#(LhF2pX;GE+J8TQE5#V6#bAoThbXT&J7r8c$gkO)47dE&R$UF#?X z5=qVw?qx^fvAMuf&5^_mk`L5&)_PA3k?s+Rq)k>hgOp7AK%ZZt-rX?hU8Am>rtM|A z*W9SK?Jd4)nJTQ5Vy0)2C4@&3lavI9c^DJRiewBDbu30K;i;OVQKb9PaX5@G;vD7+ z37$qh3fgb*vC;0BS>oJQs(tq^@`5^P zt;XtpS41E9+wUn*;hr1YP(DcMBlP<%QE%H7bX_A$rApjZhVNBNM?%d;MJP1P%_pTO za%FBvK~5>bg7GiygETq^<}!8i7LL5vYhM)VwFVu|8Cn{2zK41J7dg+=yUjN2s*1}~ zHMS|GiZm3Jvjz2(BDG30w`Y{0W-KrSgauFl9qt;Jgw_gT<3;5)>$?$%d)z-U{e9}T zCrW4PRoAI)Zm?cwzwTOhTg>u)*GBZ>q>fh&>PX7HjP62Y9P%7~ZCCN^Wk2cIiabgK zUkxPpun{pQlDOfalrglN$siw?Yi%~yT`am^VfC2wzv7c~$$YlUw{7;_uT^)q(cGe* zCW?6}=vm`oCwCDwGl7h+sT(jQutzI|z+o_WM_1wJK6q$?4vr*TYGvA;qd=}H;!Zxf z!&g5mCDWvfdRpg51od3e*6zMtdbzu*uNRxOO=UYu(m@pEP%c0O@lX^T0Hfan^VO9c zBfz-%j;o>-@VHuH;0?W%uj(spmn#UaTd)5BH~dRR_OVXmggkPxtlWq>?h4^Z?TqB( zbW(jMWs63=c}MEBhCR5c5;w4!17qejjTf_~lzUo|{{T{(mX5x$<)f>LhMVyVNeopp zQxQ#2Wp3(HMn(XRE%K7!0u9a|6;_2-)MK)dxYT_vxco)}o*}gbCljm!Bu_1EJwXQ7 zSh{q3By!rTVU~twk)9~36vpKr42KQuduvaLQYRGZth;|j(EK}&q~07bwTKUrBY82m z(MYxy>7f+!+3#0MsycXI@f4{Y5UEvu!a_%=j53Nmaz8Er@2ad`4b@_$F@Ev-6>Wp! zlaTGSy?~W(1KU zZS|gTL7%nuI3_-WA57J0V{QSt6L=OAr}M44gW*21#Sd8a{Lox#rdrEo!re&?SxQn` zNYY^tUQ7vP1-OHfTOfA_T)z*eSQ@N}5p&cXI{yF*tK)9NoGw;=X=$4o15?i2^c$(q z#*am|w7VkPcfHnJ>ni2Bt)`NF&wZBhZ=2_Rsc74bCiw7g2@J?ZbM z(L)b}tBa~A&=P$-`YD9lUfr?!W4Lyv-@9CIbd`ImrjmR5(MfOhVx^=&kj9Se!Dclw zG>G9&A&B?KY8+-MrPS(xBncC71nWHfmv_MUJFB*>8n26y0Pfvwa7QCN_JXC~2)_^( zzlMGG_WI;XoxOfVj^#X5#-gr2!mUKABVJ$$UTG0B*$Nqm_9Fv}v6PCUV)fQ(Y_LyP6lMPacPdLf z?6M>FUO_Uh2t0mV(BkXi_;nG8#5tj+-h8jGy`f6ACgE#_WG)9!n2GXW5gp);vIO?x zB(+hy%hdk>#9V+460_Q9&!`X4Y0Ez@%f$H^0D?gjKi7D5Qw*p#&>maZkFs7BLt%$8 z+M})J;T`V2W_%=3tq;Ym#^qU89j1=cX}?$0R8>Y;LWY89gK;On&rrAphJ0j_GwGZ) z!Ps^?qOap2&IXv=kJ8^&(z|+su9m@Xr;>`MIVtI3fz_g7V`Pm~sle<;JA$JhJj8!KAFkSwXej#~q1*Y-7yI=U<$znRCuezgyJUrk=fXT3hQTCY z`wx9(s@CYzPrhqnlb&wy0q^=QrTBE*^miLw-py3-AdQl>4PymBr{s}`A{6l=B7ggV z!5PPtd{u!UGZ7sP{TExqD+f(EC&_MGa?{;WC${=mDnd*~vI_K)Gyecn0G-u=?Z+9& z1mGO&&oT=_z0Pl&?Fi1ahJV8?L{ZfGng0Oh60!7{ugk=ClHe+_1RSlyytF-{MEmNtXwfx`jM=)_{{XKoK-?}M>W^MG z-u>Fu@LWA;=_zDZYP%g-WvhfVn35R*JlPAWV5f-#B~Yr3ZBd}sJ-J_gPUb)4HU{zf ztmhF)jx99cX{GPW-(@7}uI;O=>UP=P`>TG_z4nTUtUdUUz86zqjfJ=&H-7Zn0Y zL(dTs4n(^ST=llhd@$i$(iq`6V#ljY-gzG>HdWuSrTwb@X zCL_efQ!fHOTVJ6BgMN1aXeQ&ID!LQa4db}&^?gL$6xZ5GCIx6HcLhpF#CIrUG{qoO z8opfyRN!_eBP3DIADFs1+uxX8gNOLP1xF10E)xbYp}>sHYg~G2T221|^3y`I+n=Lw zCr6xw%anBW3NwSz1ga*_RXtbO>3&EqqbOxj)L289Al)OmZ`D~ za!AZ&tCSg|lAbsvXyEj@r-OJ$NEq3r@W>9ydG-(A$E_wfzW zcskE#rP{T!UaRPA*E>m|wWG2`k}Vx&EKo@pX5hbsaPnZH07DU+n_Mr#JVK==GZFH5 zj*uisu`)q}aWOw~rB@$HoAb@uBb@i!v~T3SRlP&CT`b#=tF}s-+KNhBM7Ew5?n`Zv zRTWYRdBCqE(P8Dw$;nPKiZPgR?g-uyhw#Y-(i^4uO}^z=a7tNxyIT>tZHfqPQCO+a%O!F=&SXf)@De!Ok0qaif!{jkiDneB)vYEZ z^N+gfalA#8Y6?t(A97@AKJWajcS?2!{OUAOHqhD^y~hKwQB_4q=9Nf2`A*zoUn9%* z);vW9gAX8g{e}LDZsNFVPyG42UtKya+qga)t2%4b8}{no)rm!Pp`-OFHtmu~YNbh? z)gyYkl6@pzY`?mP)RD8Fy}4=SWa{ltU?AW@T+AhrfVt{g=W!64il`T{@F ztj3e#G2~q47UeT@JvH)OCw1AiH2p!gZgF_G+v-x;RcV*khv%t=Qxo=PI8htJ8}SO< zm^XD^$52&pr{SG7RfJ|BfuZ;6H|(!d?d|7HcdD&|`$JO${H<-cQOi*rEYIpju*(@o zNRl(hfkqjZApD@~dbMoSDY5O-uFFx9+Kz*7FJFFo!pKV%=8kH5d1|O6s-8xQCll#0>URocj=UmHr$IfX?d^9Poa9JikJ@qvMyQ)!k9sG!xO+aC<-E6Y$V9-lX!# z(HK<$j}lDYo5rMktCN-h9c^JT4WRIC-139;`{=AGkZDz<@P1%4BG=aBeb>q>^^&5+ zb*iDA4>%mDAxH#!9D8=xqfo5c^uyb_^Q>kPrWUiQIB2&=!kJWptn|T zN?Jzs^T>oNAy9x4d9jKheT(!czT$cl;ns4Z4r6C zw}Ixm!{Se=w;iq3&G|v;#SEgfmVDVI@tU* zKM2;O+X6Yw^*yXUvvX?Wh^YFkoCqcK#|t2O|ZcpNfh<2i3V z{g3E8YJ)71Uvt}Y+9kfyJsYh|l@j_(Fg>JIKnp741Rhz>j{b7K zlUZP8UE%OA$lA3|S8D?C%I3uO5V*^%{aEO(@v~G|;@CAd`>K&Fce+TyuZ}=438|6U zTdaY6K_w~Rk2?SO0)CUe7|GMpnw4Sts${GnY%hkbvHe= zd#JWoG*1tzBUg@Snj-rC~$Z-8F0fow987NyKV2?m1ZvpYEsFZgRvTqe2VDZ zmGLdOI+wRz!E)+0-`N*xy4q^0yPoBvmYzEILO8}MDPl3j60C9dlZP(glBI!@Xp6R- zL~_4v{q7fw6+e zoM#W2v@sww-V1F#An&--vY**3oljZg{kK)Lrhx$UC!>0wT2Y*wgHIZvBO{Xb7zc?X zy+$dHA2t?GFkla{D#o54;zpK_#4_4xL;{j*=p0mAul&;5g1Wz^v8*p#9)a*<)!ocI%R< zDl2MicKIopBc*Fy43!e4I*vazRPw95qzq&rU#@k`;`lxz69gQl#K8hjF=-yB$#YeH z5XaUnc&^qsMu3uf$vU3jvh;85mvr2_W$e@z=qLP9VOv*zxc>T8EzkJlf${TWz!>}c zLEIX+a5PD2-OeGznew-s%E^rQPZw5+rA6XSu5l&W&Y%qrksa5PlW*_!x5sQ-mAaOa zD3$<}ml~c(0^p+)2xcAtJhS!#SgUZpGgQgN89MFt1pDToJ{kCd)bc+Yr~akou=MkB z?XAmly;0WBRV~6Kf=YX>?AOIj!bg15`qZpq^%;*fR^j|70hBQ4nNy358*q;ec1;QV z*VvE*fwt=1yd#fLU}Y>w-tHum{{ZW^tSJS1Z)h##+bp|s=~%27!*sdS!N_C(0M17f zfPJyR4*Aw94C1vO1#-qWm<7kuTDR!oej%jan-as^5`RFwb(D9wXyU!l##a9T5~?k# zJE^9khnZ0}T(hI`3zctAk#56>HXx|(EcUw&T+qv$&0x$<4m>ut9k7o|EO@b|jy@IcpFRdtw!e}6*-jY{O1u%la zIHjkkZY?y@JW(P;K)6dgKk&R>}y8asi>%@nkJt8RW&4Z&GRV>8lxnfmA+8yilk-3DFaoM zjvcqG(tCcl2HiasZD3Kfm{fj z;PPn-H=g`4$FYW?p-gy`oI!l;VE_kMyHJ1StU$~<8ng~3yI)PeJYCloh!+=~@2m*5 zm&>i(Zi%@rOLwi3zUBCd4Mj|{nHpy-S)8%%OA=3h{rmUV()edmeHK28VWbEeM@8rO z#^NZ~eJnwj0|xTE_Peb`HDpcrjtZQJ4ml@-*sp`17&?_&O?ybos?CJO)u&mmH6RJs zO%0>2ic3jTTe>PMuCg;!y(B3t@>J9)a~NphMI4(gg2syw{=HRy;&3$hg<2SYG@EQqEiVj~0+Ib&E`LC+_|HqdEq(e+ULXrk~~&_v7`GGaIN z9!m=+RyRzoG$(Og*)9^tHB@lc%M??*X~AAVtU0==FRZ(D`AI$pJV^2KeoQ{S#vd-aw(g>KulQq95XE^830R)w29oSJzgBg>VI z69>&5N8-N_%2Znou_ylk8H4(D7uI1a^{C;V`mO-zF9h@b&o3pK_?YW<>%DZc$70^U zu<2o}rh@5huBD}TZu3&rM6x8|7GFrDsT!j&Oa@n9lrS%QLXCP4J^%zAX5USH6-GVW z8oP&Lbb;{{U|#`RO*({q?<OuA-xy)s)68 z%1BWff>Z`)1&^ z+pcu;O&s+wh@|Df1uG)}0{~CWjCam6t16g!wJEuvfJ}M?q|PUWrHZFg31|+O0%Z5s z&20N__L|pg{j+7b8cEGN#*zd_!72+OR|Fp54&e9%cL3|3!(b^^#e+$vH`pLU0H%*c$w=H^8HNur-f+^OPCtqCyD|%|91xW;- zZF>Drg*XKoFLgXCWDQ7|^myri))l9f z35HsF`^6ezl}N&}FLUjXeEIT@7zg26CM2I(kFxBz<6P>|8UgQkuaq_5~&l>5-Mm1b_y9y2nw_WVT0jzRX2ztrH|`B32nU z#{1rsHFSHscRk92i_ULt;j=uHUhrE^2hY?oub8(|z^U-Fq&_*_74W>)<-nvP~qD$v?^JVTwZgZi$62~;`ke&xbs4dYK)^-yo@^4<3ClYBScZ})1- z`y|_&a@0dfSw(A>;C(7uMF*5oqc;#^m<$3-U<~-zYr~tJ{u^)d%yjlbsN5%^b>g4DD0PWU5_LB+c4ZO;n{4o4V z-D|!f`goGi(_1XH7q}=S{4XhL38*HW4>xZL@}m%{xe9w92Ssl%=?6^9C5ke8c4r@nqp5OfLAS? zyAIgzj`_#9AOQ%8GrwQ;Wx<~qn`d@cb*8dwjmo3;9aR){R)|_SUPKBNYCjJuMhXb! zAxtwD$Zl*2C|1e1hBlB5r~7u-_StkCD-BY!VYSErkVFX+1RIObJK8{n&K)|tw$AFs ziq#Ml^wp_WVXC>#ctZH(T=ohBdSyz0s=%l|0T?O|8x2ypH*8o9zUR*TmVO~lmK@W= zwWY<`r0*gia{4bXRkl6nrx!{3i)5vFcD2T(nw|*Nq>dtEQ#CZKgoxfXbQ~Ol%5pL@ zs|+3+`kfEMkq`~%mXSK|=&EsCQMe~~k94@ix1QO)o~xpM61u-&>P5oav@Z2>Qp$K$ z*=wYgxl)wo%}pLysN^yMWnc>606;qDs$r|)Tw74vPksIBwyM3jh6?lyjboov+kZ9J zR}Pii?{_tNy3E{E#u}np84gi9rxG1RM+5kjs~mR+16YGxcUAr?hM#|bvhq}P-t~39 z!8JcrZY@sRr=*b+4z1f2DAhM}o>b!Na@|MAE{rk~K)*uimwhr=V z%5D58?&Ih*x9!gzTwOuB+2|>U;q5khYATCl6fNo*3x`%&DrF1A30af?xFC`M%-WeC zv0-jkOH+5Mg#{drPEK}a_URnUqL<#;nEKj9KR4#aMVV(1kBS|0w z)p9`C!{WUc&FrsEUER+uduZ3C?bXuQh7H6Y4eom;M2I)$KAJ}*uWY{xUlF@Dc&CeCZ#r42 z7Fj5T6*J5dQpj5?8yp7WzCjJdb|7SP^>~#xyg$T~HzbgHnLhfgRO#iM_OXusOS`() z*DCG1@cXsDZdz-h+!Zr4)s|h;X_24RnO;VT`JjZ1hmfvtxZ~-8$2`VA7IBOX4h6v6 zf=ot`NWV_2&^{i*Q*-J$)(&li$9n=#Ppqv2v;Hpk-{YEtWo+%O4eq``?fV|kC90^A ze}#-t0A1I)1cQwE8t1VbGYehKekr-~>6>oEm>+&iseTUuhiNYm4UOa2SpK#AM|IO> z*0$E&*Q=G9SaXs>28tK!DwmHlFuz1O;U+bPyYZfBh`jQfRY*55huzD zwn+`mac>@`7NaSCXIe-mBp;d^1h{{Q(qcp|XNPOF?+(*ScMPf@ILSX<;%QB_=S_R5R2QbiQ>;>|&86VueV%0S=<+tZO)cV!_; zHY3r)+0v2nB;=w%FH5c2DH=6z4NL#OwfwKXKRea*G# zV5x*KrL48qK_IU{c%E^C8zlG~q*&whesRIifcU*{h^jS}I8!p69MZuvYlE4?DK;0) z%mo%Qrg9BSb2IyE9Q0YrnEwDCwJ4UmvCKdiD3r%31x^R3^WZT90lQ;9N1bzwcgB_8 z8sJ&XfZtfx?zbVV6P$M^^Z{9tX(8LywKv_hNo#awk_uTXW2r2P0alcvh~aOjjJaHV zt)BYrF#I!()5JCP@smy@jGz*E2>aOdP{Y%9BA{y?W1JtLH$HafYcG^v5IrNU+}&Eg zNwYTfUCy4l+Ttmw0!|SEVrc=5o70D%tHadd*z=MOy-x>XZ_93PLNskBzmR^B41Us;Vz6;aD1@EmdC%A*mS5yuBP z)2W2SmegxVgCVi7Er19*netHlLn`2EVeuBJeTe$s(#N1(FY!xhuyw1bmJP+UceB*& z{liXdRa=(N!K1g`<3bS`3n_`Jp;*wy3_@H23t)|Nyb1hI4~8$|v?8M&Z9Zmy?IufZ zK{waB=Nf+zP1tV|3DWZu8}gl}mgG+#+;+~{n`>Aoqqfc~?E;}LRWnwElDx??G<+c> znASM>gMda$5=KBhm*XoJIqZR&I)V26*GA8WaEzwhJ}RMkX)yvUVD;%(N7l_9@hg4<^O+xL> zuQRcm>I5D{8>~EY3ri1Di2?*f*y#~7=sv6IGSvvD5k}Q?w2>5Z6-BN$7viX%~U{ef^gs!3?rg5?V$-{oT%W(Y?(LRgI?S zzRE*aNJMa!@)RyH@2bW=<`s+RfY2AY5Ykcwh;cFlm&b3{STkmHos_&0;enRxwSE;h z2KnASEt1P@-Fte`Pq*fd-2>Ozr>wX^42out(_tuykY-rZ)lwtiJp8!Rt5Tb4hrOl5 z-XTR}1`SJ^j0lNY^@~DUM%RUb=1XcZy*X z!*6vtd1hIhgWLreFsc)fMoRur($D?$Q`}OP@Ab+x{7(HC2`L{Xeb{ zxbBbVx^3`OOqH>Rm*^^Sx2}8f-p5=w3AiD-=AgGa9V|oeJ0p6>B>iSGwChA ze{A1}TjuSgzu0OvRmzU#HOFh+sU?b~;U#ILsHdxq8J1ZUN}z1UJ02~Z>td^#+?3wg z(g-5c)7_Sj5%8+wOJ2h^8MmAIfxV}ZT5D+5Q`Gd|ukqWh64UJ;_+sAj$yZSwOth84 z>j@MyMGUfZgc-wkc%qxN;a>atBN%OxzeDHp2h z%_>NsWmy%7`MYc4sJ5;T)4^_yt7gd3jCT}veP z{l#aij{pfNFEq|P5AP(0AIrw7T|%o(*j8T<9)4i{p?XQIsHS5QMIe#5=AL$#xF_Yq zCQA}A;2e{Ik=)=Qf&pn+T3T<(Yx>KKbek&sM{&2+B_-PVd7u<2N%L^|cwK8KeBT;}AA?2}%p@rg7cXH=oU{6B}lVxIgc$w}=WC?(KAGp*(ww^=c*z7L91 z!iQ9Ieq*q+Ng7YHh#vcFxi2 zFH5R712tFFdmb66nAh*$ zlF^|?n;(#v1ZqIm4Z2RUNV3|t zm#q*2K~KK;(J)g`6C9RT$T`vfyKi=T2!uNE_Pz9>5X0K2A+ zktzC>Uo|x>K7~CE?ntX4f<7Ta2x<|O00N9-*lU}pE4A6HQIpIA_Y0(M6Nl9V(Q`!W z5D!}$twX*of~MnDcAEKTVN)wlEj16J3<~Y%g*Awk zQ(~}Gs0bCnra#2E5H`@0uIsbD7&etw!uVC(olLUD_zT1B`{c_}T?~<{N`^S1mX#g2 zNFs-l`r$E}xg!k6I5DnyBM%=dqD27Y*LG zO%T|1c5m24?k`gtE#<3UwL13^dKlsSUHRl3WMJpDz8#Hg!>0H3@A@N+8r54cay9_H zqqKczMXo*dYPht*HaP9)$KOJ5R?pbmD(`aXt^WXZ(HNw&SnH{2ZgDi3mLpNjMK=yO z^tnbOX3j%NA8a>j>{T|B9zQbcI42Nx92`AS{kI=Nc07Swt7H5VZrirc*_}wC+*@|z zx9*it)PBu|rhmsILZxFd1oVG-H>esh6kOSe97A{(ulR@+D|dB=8f&Gx}&oIus~10Ch2XvYwf!2 zlUuXyjYO6865Y{187~lFSQWs@iaeGil4X(A!o?a#7`khwLuP!!;(^R_6JS3@ujvA` zp1U4VDi-2jtz zA)@KjXrv{@MY@|=TSd3+6ycgWC$6Zg^p(C-Cm6!9A5f(K05h$?)|U`9g{$K^pcsG* zh0$LO9bfCuUf*i;*JfR)cFxz?RFGUM>S<{i6w=bMC2CwZIsI00zK11A3wPqGNYKVp zp+%3YQL;!o2{zM3vxctsJ&k3cjn7FY{WgxBcb%%__Ai2+t!#$vRZmlI-gD601hb?f zhN-DM~v(yWPyY^j04SInkT+&uaQ5{>q&LvYXCmgbQW#5xzf(LDSTgxf5wX%Dz zLkwL}pt$MeN9eU;67E1A{xwfc-XqHZ(5n(4Dc?=*v)VT;nzEFC&Qe#>&rYFo468aa zcK-Ku10Q`{)dAQ_jObPha@x&s=Dze-Ug;@o>m93Sq^32~A(E~m4LUMDI5WrrbLR)f zTd_C;UpLeNuW)I!pStwgV7ZMj3<0LPbg*9eV+J2qTIkxL$SE(V@T;}~QIL4B#z!n* zc|F0>jpaZoRd&0rBZ&Z+8ZUfZm7FLBq+5LDz6nKKrNEQj5o-=`wU8$ z4j?#4OHqp03 z!Ka7k2Da$3jvN=Z;LHQcFDJZ#&r{armGN9cC_WnIUFIhH z299xa$k}QAv9~I>6Fq`Y#oI00lDd*Qx~qN4SCJ}%lN{wH$#62kxJa`4UZ_&v!>cYI zjHK#;ltx!Ytt098(N^(HE5$tSIhxW5&>e4nT^5Vn)|&2+Z_h&A9Zja~YxO-zqkc^T zf&^h7A27izt?r~BeHBGaL47<_Oo19{srxL#l^i*y{5UxaW_bzHH#*At`_QfHQPqx| zZLQf9{{V$cgass|kpO7t4$CtKFY~EoTy_L;&vH(=mgc(&(8AHg2C|{F`|WS4nbW0N zU-_Di2q0XR4SU=B_1md|IYy2JTJfEsf?{)3=GS{bIOfnyg4B87-y z6;NfF%Xalpki-FkdtpMPI2QJkf+ri zBeVehZoLUrZ}sKFMJu5)dXY+mue!vJu9^+sr~Q-$0Tt`3IMp!;%Vz2IqN1@Ups`ZZ zBS|$iJn&OTENgo0)C|7J_5M62r2enawODsbLOm0VI>t{q$P=TNj3XCYC%p93n6FjhE6RM-4?JB6?^cmUmB9HgO{JV!ZOn z{6~+zKe~IabyJWXl}2-@pR&ZkYl6NWQ^zEqiUf*eofb=CU`3QDL~Y z-pc9!0POa(R@}P3Tel+OX)o5Qgq|4{WQ3R*B#GTywNg)Sz0Wl@R6{8YHJ#;*B67$_jbG*N zs`21)4is%-a5XSEaZorojcpd_vG5)?{CnL-pojuHX@8>Qn*EVkx-Zt7G&yIhs7Sd6 z#{}+VVtufI$@^zZh1Jhf<PZSuP$q>G0^pRC z701d6&OqbrGp|>x!nk%I2I6S~Ok7y<*?CXmaZI&0p5LOxe0kK;U-yR1N`4JZQAv== zk{M-$gg4Hvs(z?6a2OMg~;1*2xyVJOFJ(Slkej{7$hBNhLd3`qr?W&J(sRsy>WoZ@jR6EPUtyDQmT?Fp*$FH$wA4;L6_~E_rQ4^ zET4+ft~5(yY=jAH}5a-LUAmROj&T1$QISYw{0 zt~U8oi_J`GRzz$b>>GlHZvOz?;ty|ejV!Wk63o-2FD$jSl$Qu89**%>HAJ1Ir=&8Z zDo0}@t^%$;Ze9KR<#DNH5i<#wv~CsHR=L_}jFhITEUbqFiH2x3NpRa zUrQjEBFQGF=NvMs)yCz};X5YZpx>wN(wY1gYDFm7YZbu@!$*=@9KCZ@QIM5NfH1sMioMV_xtzyYZK`L z4Uqta@bj;?%dNYwJwaG^1yz5id#R-Stw%XYwsi~5J`EI9q9I-1A^`Kt;fLCrRqp$#D>8@9fF|_Nl zpy*GLU2Y1aju$Z`oqnW!f`DuelUr*(2KT<|O1rET_i8%pg!J_H21-h#qMMB{mL3>z zht+ZO51Rz|8g(kvr214wh9}I&@z|?uY0p$wY)f+O-+9sqJ=PWe4mYP+`UkM9t^2yu zK?HXC%E~(pRkh=HHC1KHNmQ)dxvViZNKmR207)#{2Z%EW{EnwOTpRDVN#?7#o*uR% z66ewUx_8|Ao=aowE|B%-ZdhZpUbc@$ciiE=TgLB1tgciF07>LkEhqqCd2(Poav%(9 z)y3fIoWnbMHs7o*PYV#~@u}t~a%1=RtgDsXEb7g|xH5Dv;m#Npiuy*~PT}#}mp(zT zeB;RX8jCSlQKd?rr}t1eXU*ta-%rtGXXw8Ayii7!9S`_+x7EVjU|`izjz8Y{Y4A>P zJC^PA)SHgOG{|*B-v0oqe}$|}wwVNflT>Sw7J9)x{o za(OAn{n%YW>IGDHn)vM2db&u3B^|%^1b11ICXh{1>`lR-e^HeOq}<67CwR#$YU$$W z;r>PfK_JY)w@k9PUq$r~h|#oO$4J=u&(&+K<+gX0)u!3Ao}g9j>+>YZU38M&TU$Jj zPZ~VtI$ufEgy|hIl4({)nd4R-lt80jyBf!|hBQ05fjvDsO076|HlcHlQ35nO_3t~! zlI0!wbJ_h>yuD`P>zpQ@o}yHz6Kz>zl~JZcE39CK`#Eo!B@?Rv^*rWY0c)O(>;I(kM=#-XXGsEQ<>Qm7($;EqVu=ABiWjA4?f)u~aU zqa?>73EIN(-?v-Z96ca>Hn?2anHG{JO}6^;(@ph1q}xK%xNIrY?f(Exx-A!~qe~gP zz}BjoCN33Te^&|UFl>p{xQ-GA3B+fA4_c*0e|@mw%H!WfTULl=Otjr2Z+7+3Zc3en zu&nzSSt<7x(A`_ob4x_iT(^TItuoT)wwh4TfS)g>@KgZNu#QDOoBY(oRef<+DGk2Y z?0-TG>~E#(u~jKyMGp|hu_8X?p3!5l8uQ~_hSW=49YqzAQZ#|lAzWc!!TmJxZ^^aq82H!)umMyz(w@9;9Qrhgc3QBv8-bBP=Dsqs61vp_K zmU%g3g0ZpgMus29#19t`WNl{2=X|mo)M{oqiw5wTbt-sNDUIZkNN?5)x@aV3T)Wl3 ziaP$HZSBWzx^4P9hUeUL4QohesQ&hu z<-09csnk_&D`Hd9U1escGeullNZE=UW;%9sj~G_u#FNM3F|hGj^)i4+jXifd`E)m3 z&JTk>#daCc9TFY+t`FrG15pHt{{Z7<%l#ecw@Y@vQ1{(GQ*N}?Hkvv*NNtr5T~lt7 zx*DvXTk!EmB!q|=Lm^@#ljT09yS@uU36G{~)^stq+gr!^4fH>0TtCE4$KYxjSZ056 z!P#^pb8(>_?6AEWxL(zF9^2{7hNE>`4fWy|iW_xhMb76+0sK8br62B<9b#s3+++zY zLWfm%1+nxnu5~wDNxih`z5b%fc-65jrCPBdfFw@hH1Ch zsi3N`*{bf%S5Zk_O!#(+iWJWmM~Y>LBcw$L1B-yQ48T>#R}}CR%=8c=tmv)(0IE8U z75@N4@>fM1u-4 zRKiri)HE?Rb2SpQDc2a53Y3m!oeIFJG_)-lj3mY&neE#IpU`>F+f~mwoLm<3Kxl%o zmiLO~N|hAwEEJrYM391Hm%p5N0N@|4J87}i8Df1ub&R!+h#spiLDFm2Ss;&VZK_|| zJBoXXB^@HFr!K&|JD=f1jhWe)@c~KtYE7+{pmVG*=#^Fn(zf5a`a94chuHoVc4Y?1 zu+vlSZOggY<-1>;2r1*0AeW4sh%Ra3UsX{+^%%UaR0D;ld4CnC;V{PO@6}l0sj~*z zcqPU@;@p8gaq79-p^;qoS3&yGw=I;?(^Xz2j^!#=5-REMVR26c7(Bjurl1isVVjhh z&m5cl8D%`VHEcmT`|0GbalA40+g7DW&hAI$2Ukv?m8~XEFkx`6^xZeDz-Xqs7-EusS z9lw#)W*Ou0H9M@&YlA^MsW#QCnu@RSRO`;BoUG9T3Hjq;B8++NP!8W+bS`I!Ma6+RI?DA9Bq&r!#V}phgT}#6ZbOR$^R6zN z=+}E3bUsVbu;f*u&>21bCSXr_3oXuCsM4SbX`z)>W=go0DGKq&rUHdMh7Jh%dl22V zreA4WA%gAKw?D7*$$PC7^Tw)Hm8oG!L}>wxO(9{}zpAcq7-!`xpM3Ymq%!hYohS1< z^!gPD>XzDzb~f4D^ThQg@wjNDnG1#GPXui&?g$Feg^gRkZsl>^wU&)P5~Esq{RX~) zZ&0h?GObW!D@=DJ05vlw^_9mxWZmu8p07(T-leLm+qQU(s?kjv7m`YNJ4q;0<2-zy zV5IrRqlhM}@;6s~w)!ro4~K6I!Uoqj{LcRX)Nkgzy(-w-s+)HI0L0tcIBktb9MD*- zRHO*##Ea?4RWSsXn4>&s9gBSIN` zoCU2uIP9Zt)a5d&bKi*R$?ES);9O% zu(ycS!ZRSdZ}q(W*I#@NU!bk{d9zu>*2)Xzw!W&>b*2?91wpDwLy3Yn%f>PUj4_{ zwn-sJU^A+0&Rbbn(XGAv>D6A9D(PvYhL}L}a3-A22#oj7&4635$vknK05y;j-Bbw< zzMTE(>*l-_GTmN{R*tSHp{XO0s(`i>C?ufslk{Vd54JE+sOHI245mntByv9fiQu^U zMmcICrxjkOqy%ufa$+(*Zv1nAex0yL?WkrNkfi1h$_bAD0HXH`yw3qO5tJtwYH8U< za=k1ZoiD#u+2u^dF#*2-^pUC_l2)v*b?`36>-|F zf+VZ_EH6;VtWqH>qDEMRU<)n_sBDps85q%4tPW^2>Q(;Re>1fE#=4!3i(h<1bixma zewS_9eXV(|irKj8X{rr6i_PvJp_^ADK!nf=#1$#Z+1s){#|l&4-1r?RPH$NH109LH(?4I&NST$X2QhT7T2Tsx&&+ra;q9yjrdxAX6dNQJFxWfZ z_0zrO1=7J?CA#rx3sFZ>zC@-nNFerPV8t0oA(e(1eSGUhnEXflE?1?UY0_J*l7nzte-!)zu;WmpmKd*OV+`JKL8k=OtLC%G$w z@b*!u;*oLpSG-po{7DUnX!@$^WjvP7nC_EEr}1^vt8a)e)^epS1#EMiM zI|KGq*eo!wU*@m?ljyM@9QE;1b(+^kBwt>WluruxF(?YC57QxX2h(0Lgbsclr0%_E z0z)X$8xSMWa~{}IW>r0aC-l{pEc~*v;lUPJx!>^@As!DD9nLZjzO))L)1GT^i6AYL zMbX+_&G7xbH|>4wTBo#ELk*(X#S~qhBNJ7Q{{S&D$2?>O?U3GZaj}JNSBTsnDbs!R z(@(7iKM`K0EMX}&SlDxqsUKtJw#W8w-XVvp*Gp8ag>E()l|(qp$qdj;0PKJIezrjJ zGwrQRO9^myBl;Qp1*^vaZ7NP1Iz2%H>kH`9QNb)y(KiX{ToOztwo88r?}6LseX)&0 zC>AAhVb1*VeyL@!Q$}j3<4L2QaFRTRLJXbGIFR7v9{$6>xb3Ck#`jSb3Awl)`7bpd z)ilfaXPV(qi7Az3teDFx=On7XvJ8a_kCY4!+C`3$DT<-8L|@*X`mbAA>OB@%Y9^;R zWsRgxTo{l+$?`tl{yS-g5RVb1Vrwjyr?|-=xYGU=SRi{4LB;_9 zf{1m7P?&Q-1W$SXKXql^`xO;SEfpogR^qXWdyJ4YgfI*_dMsn&p_miMF#rr?krs=~ zf}4wG8*bv?d#bu^y34$fq!;?jLW$N{QrB4oFFGp%sQ#rqjl_k)P*k2wIT4ID$ON^w zAwlLwpGo~=-!*=cf~+M>RdY#OP8^nzW&&4Sb zhf)uM>A7{J_7)1th`>IRS&5+H<0Cs?26^SnmwhMBRoidGp3J{oV4Z#?oR$VFr#Us@5c_rq^ghaAD z$_5ypONcDTT^<7!RrJLm0WG(ux%2gS*Ztx32FB`=zEKK*-B#H z+dipTqTV}dWmCkmU#N}`(Ej(a{PkXN)wRfd6V4iMK8N;AO}sYM(nW@kbZz>!U_W;S z@{&S(_W4A=T_c68HDUBm#crRW{gzC?k_?$dk~eSMRiuN?a0e`Yn9enT(tPMvY4-~I z($rHGmZF|$g7ys2vIhDBThG67+s>dt7dAk1U7?ldgVYNWtw@y@kt)SioOd7)pn?Z% zV;LTDe5mG{^~WVuHb9n0!+>!UvWCWdTM)iO|-hxI6OI%kWap<{9A6{NmTRFTP+mz4y9e7w^GL= zf$w0bCh>ge{s z-qm$go0nm2o8?_dLuxojyVE+qLO;JqB-{{vjt$JQU0Gv*C5ShvKiJL%}U1 znXrf?ojLyf)_SyCQmAuq>;wEpY;z-A(2dfNmGi7+TVu?UzSP?jKWzc>;tDe_2*+A3f{N6;J3<2vP*>A8^We*IJ z8z19uv}M=T28gNRIfT1on2q-%TWQN>G~V3++f@}-`_}l} zb-S-|Q&7i4X|-nX4^zwcGX9ACrTsQ(pf9FFHh_$E^|FR_ETn#1Y}&OR$6{x zhw#c?T*lp_@7(Iw8}S7?;nb+n4QY>~^fJ1WI|HjD{tWGxLwbuP~#MhXnG~so`qo zZ_FJMNp`Ut9ZyiXx-Z9Jn%vK8n?EQcPd!_1_O|e_-wgd6>AiG&nvZc-+Io>C+FDBL zOYHVZ?QcsG#^{AwSrySS2n>*t6`Tevr?t)=z8aN328*OOPrpuk{b5t_IyjtNPadlw z$57KY&}lwb=DJ$ZS<`NvS3y%tO|o|Ipm}L2WVTd9WD6>pTjs=JeL@(pC9**7NdsF3 zuw%0aHE};+)3vWx>wfCl_HLp|u+G!lDPsMq z@WzT{f~``e+C%6B;-se*Nd9F6gVAu#DE=K)wa?7m+t0tue5|xFTs`#~Sk@8$0Fl$m zT0ND+eMaf*T{}xubr4)B<*gGqr?28?RbB;TWgjx5av&B5B^w8^10NaURXCO);tN2~ zTX;`};F*J@D7n+tBVNl??|xR@mvd%xPsI9hs1hnWL}XrUp@=Q#99Jg|liN6_!@Sk3 z2IBt!va+nkvYeBth2+{%B$Nu!OCX9tf*kTu^}xU<_3`!6bb|zFrfvY&^jnXjR(<@t z(%nzein!>v;>v0*wH1vXFo?#WNb==Mm;-_cB#zknMYRJT;y*wP$8KMujFCvRG#w^) zxc4IKv^TFwx{Aw}dw);2gGXyL z$n}f2I7vHGLsGQnM`i`uGg3G(BrgOb96%eC@r-nq5P89$^t+sA6X2xQc|SYnR=8^u zw)t;p*O{I^_=M>@?7pJhmg{b~*)CTwwenHiqe!KT);y2Oj^iAa$UKQ7$Oj;7Q{z~c z)rw$cZH2Y(%~aFiJTDtb)td6+F#e+8uW;XEh!tu7K^vA}>t%n;!* zYb~kp6Vc6=)lQ&Y=r?VKmhEPtw8?NVO(c+`OtZj|2V`_Er`2)kmI}m-gN22Fx=XN|Qi{)Iptr|vii(bwl9n`r3JMs&{5(N; zq9>-S!9w=pzvqo}jycY1hJNautt8)izHcU5Sjh1Ui-Pwu4c+;_nsV!=#>? zkA0UZd|~yK_Km^%d$i;9FO^pL9`AamV1|N*LJQNu+y!S?l)Ro56e?t#u2Yi@OvT)7 z<;Z@%oad|H_)%9bGZFb`v^{Zr^h;kHux&vmoS9qy7k zVp-hNhe^~Aa%tt6!0nSBJdusZQX!d@U4NWgWq127=w`K1?g~4No(b(~O&x7D_M+Ob z)YN z-`y3rSNtaVo{End5Yt%bjKE-j46Glwe|XNhw!8rl50}5PxMfT`S^dfYp09j*Nc*g% z9h#=vjZs^CxZjL%kRq=%v8ch%E)hc#^X=HN!24%doMc>CVlQbh#s<$U$I45bW1w2< zM!>s=kVuB3xujQDm6BVDTJ>e6YeC97<>w!<+$GjTbQI4l&Yx z=PY}=ktO?i%p^A*x3=xn?Gb;+Q|@`0RDwe*hoKxm1G@rOJ&)H-&7wp}pP~9s*&@K$s+a!~h0R3=aLyusNAcfxo|1u)yaw zXVtME$C}7iUMcNz`f|YyG6qzK_wkQcC$=JA;ZfZ3Zr=U12mr(=v`C$NiTd^A6i=@& zwv(l|s{PkRPkFIgBZlQ!K!q5z2~i9Bp@9rI0AvAA&%~+Z4-;v_%UN7az5Ny<*VH)~ zBQ=RKHZl)RbE5gd@%e7JRD4QWcWn$Ua<-8Znx+zBDde75VUvks_{=fB0Kj9!j^G~4 zG_xTplA~`;@nLVQ{TC0Uup`^;7UmSm%dBPf3aA{B&E-;Y(vdeBT`nwp?kdKN(4NmZ51QWGzz^ zbtxfakbiVMfRcqAQ{gBk}oIl3~WA{ z<+1dt)Wk{rr`h_Y!SLbr-r^^6<35)ccJb8S#d5yVzS4f)yVqVsm6caG+KyQf*;*Lt z8x<30xPRRTi_<^6l=@$3f*SET1 z@eel0=uY3S+%!hrb+=N}Qe5bwnlzS)W`QN7kz!&Gr7x=rsO`a}D&!O+U7i>FbUt8V zp?Q^B46R+x7ilES7%+D0_lquk++B6)ruve$_hqa7k6x8>Lw2D)n^CO3s;R7{aNLbE zmge1$41>0!~&e z6IVR)dfdfKvd<$236GZwLi^_*PTJJV;8lBx{{WAm0b-zk?q5=&{TVO?u%z{Mxqb zoh7=SRjrOl%{&C8kW|AD8RKD+ptVy(k%58f%#Gyt$jTIJQxzE^e*X4cHChIPhiGW)6_f+ld4EC#}P=BvP_`(MpAH2G&_e?)ua%# zp8S)Xd3Cqc5(M*=?WeA2DmM2j*F#@Wu<>}8l}1Mp>Z9dO{FstR1$c!Zcqj-ogDMi`V2 zk&*K^Wdm7pJUy<%3{4wz3VtWf`&c-Q>?YCnQ_4x8c#yzZ=p~J1j!32r85kHUKs><& z9z!7Kxz4#`4Y4;{S8)>=xn6-y&mQaXY7SfvRO@0=WCJ;44Vae;sibYwb$ zo^nhP2eK({s7g|Xx@T;h$sA#Olaa_|;NbZLb{^T(AdM7*fj=+`+%$DwlyVuOhlUJ~ z6b3UkG2gK`2OcsV_S@?N5*sq)R!JY(tRgYvT_PzH#0q>_5T1%hjypK-t(=R8D-k{ z$RCg^QByn?^^foS(n;IIGarnm+^wi%tckTA?jS!xGK%tNRVUFN^59j1*K}5!j&{NVZqCVv0mi~Do z{PfaZDQl9R2bGZq2PIX3ozV9`Ha|>bADQ!{NYtrnRyO5!h%+k%dbGnKc4*K(K5R0R z+l~)|jE>rgFn}be+?V8~xWHPP`7BjTkV#l*OGOf}W?5LdQp!P8{t5fMHtcrqV$08O`V4R|i;d`E7kN{(nGB{Ha4xb`E>l++g zB-r(zE)xF_h27Ny3ryhW)1+9s8ft*ijp&eN$$GGm9M&)j$rwyw&m&X zP3dNQ|;<4!)lCP$ACw z49B0`Lf3nzf9>0SY;e(8H`eQ@^&}BVwyj>hJt0^^V~i-FB9y9voJS(ASd};h8YZwM zuMLi53I70JWZhM`ceSn{PjmbIN}t<$MJ>+5Et;)f%JtMu11~x1UZ3VxVG)u}K|?5T z%)|~rD#kLRbX@v%g-`(_n6RPZMKkvYS}I zK_X{P%^p`$i#Nk3PV8u_`z~tcQdy&|mz++fSCoTJsF0uDJ04s)cF15!Cya9(>lYLL zqg{NZa?Ep@A*KgG0Z$^?bn{%|sS4{9OUKh>Kn6Q02L+eqVx$5G94;~2P;DqF_>jHS zyJC`-p{Ifv;i*tjCJ}=qL;nCH5P1Ip=>UCmjZD%}E}d2*cWqh={jTM<8}Tzf;G>$~ zDWs+iBw|hxwL@owf4ee9{mw~Wlr|e1SbyxiRPyy&Sb!>1EYo@I_4j?3$=&C0k8JM? z%_Dv;=Br;ke~*~2;wqVCc+9f$$>!X0Nn_o->!5Bg@d90A?5(Oi4z)(MqZ}O|71Mn; z_%PdDedxB%z3vL@otp1iS1r~_E%eb;%#?1vlvLPZ@|ReWe4bt9I6@mEP~#2}<&=Ot z&Gq%$O_g>d1p2O-jJi)P{rO7Ke-<4Yi{a<03uN1q)VAHLwo_No{ymbSe&M2-UHC3r z)`~{#6k*o@05!2k7vhP~?yb0Y4y9I;+f+$u*5X0B+<)1*w?^mQJDYG_=p?DDu~XBV zb$k-E3rj6R)I}l{LKa4Nv;1noLgxVM4l=w`hFWALis9_S)L?1UOm;i{7kP?xR21>$vSbH0tHuZnrus zMK!|FQ%-BHaw1d0(aldb9hua8$sC|}?AYu^b%C{pAeO$;1bzPik41UL@J{?IO))u4 zz}5&N*4kwBmDtCH^-BSiv+D!|N3J{#m! z;&rkx^qV>D9VGpu_2{`eJTDho2!IIx05V&@lbm_LfOjQo{r&OpB^pu3WZM?|b2F_J zcP+t8)fIEi#TY6@5(E-3Xy4O9P8o18Mz#D(WS;_@opcAz_5F}H`AO8UFF%!@` zDEpTmxmO_G`|h7?+&8~dsIIo_Rj-7Vw6&AL1y$;Hs9C6}Odg|4M5Ouw(bWf{C1+ML z@)^LY!d+Yl0{4^9e(`APMC~{56`0&V5B%=@rU+|V1UbV@$5gOSz$vIR5IKibwl@d4`Jqh)m|@3PNs7FLe!Sw~q< z0eYpDpYbnGBE%V045dpE+BK2M!m5(NhEK)j5cBj(o*TxfDbpYm&cJsz3K`Ko>+uuO zn+k2)UrTE5H1pOqaGv9{>m+&P^wuWFAsgVw8iEIK7afLkTU=mkkSho$L-zwu)pf#` z3vDpk*nyY}xrNcKq!1&f<9(Lw+CLRte5S3Uq`mYG`F*U67^-E4({Q0PoaJALg`tgr zz|IIDW43dxO58sTWz^s04);9;l|C=}Z6?ki5>H5z>mGM2ulAMVzjtlg3hSQRxox`H zqXuhL&Ek?+82MH)o-Nz_dyIkyHt^Eo8*mk1b6N8>!1|Bg7J2RNcnW%|x=2^M$4*sM z{{Z`s5_9xwtmUR@2oN53^wS+xxy7-S86t@Mla z=CmHwy>5$E_UZMnbJW|d^l3CTjWxxBrwB_&AL5uga%cotL}nav0rEz*UTMCQ%`i^Z z{WY;!7;6JcjZgsA_Vw+z)o+vFRrbUNvCSp0;n%%5JaR)C!7MP7j&`+ZJCGi8*ntqXV(eJg>uj3>M z9UU`Ml;t`Vkjp2`#bb|%VlmwCQS&g?hYG@+RatQPS|q@qF6*ME9n z*59V5XzIQzZ_V#dyEi>m&a!H%x|x`TsjL}h?~=#4!!ad^?nx&k>!HQh#A6*K2DDf- z9RSgF97l-or(!0UHW^w-umg}9eb!z-y;d7^_;~<7;QBqUMNe4JtJ@T@Hu6~76hp6l=TQ^pnHTMf0 zY)df}9Z`lL{{SmaQ`9M_m4O989y{k&?rF*aP-ReG60;O{FGggP_C)>TV*?;}{d)~* zK9*sWYODoD=vMQaYHr=f)Y}fkzuPJ;u-NR>iRnxOFYMkTLog#Dy;hUc81I${d#M`5 zMUHy|n{wiPd3kH~-BMNJSZa88RHSbwUCH0D=lZUJ>jzD$F55+}P}NNLni(RdXA%~c zrd%41F3f yrJha2P~J3JrHO=(&`D2SEmTE(Z^Y1?7+Yr`?w)Q`SpQYyHesN{-BZ z8h%IscVi>qe9A);%{`AS06`k8#o#b3u3d|>t#P5{`z+ssZB{n5F>kG`q8Is|+hx4d zDlDsUNDwAV7|KkgSxE1K10m0zUs0>fZF2fSjs#^}96pbSTxB|}uTE=rrIger@~@8H z1;UDCr7|HZ&Nye0UjG2Y$PU=#aob*XiKU3dx^SX$5kFPj)x}c7wwS3%U3H+pTw2z@y{1=G+CC+PFKsN-%_C9Mh zvSL`TlfnSSJyQYLc;%7(HD8Z$G()+M(R4U+Nqs&=b|1qX@=873OSgY$J-(B0+$iCC z$Yv2qO!3Mc9yVoV=H(JTnUHIWaiLeQjYleM;CGj&6;x>g|^0 zY(sG2#oCki0#{>gZMgI{TYV)S;HbRA3=zj2bzI)O)k%QghuP=EVByC zb-!gv9bsWCQi=1}#uzG}zhF<>A7P+p)ku~Pl!!?@Q$xw0)dp9|Mg9`RW53t1>;T7; zt`p;2L$Le~xtPrj^(u7olW4M!U+Pkxw544IO+`ATG{qGU&f-}(r~r=~L$UCxGTnjC z&zu(r<5TekKnQUVVs71UZi{Z5x)bSS3AZWin_fWB%RD=y z@iR>`F<~k+v}b@w)wwP|@fZa@m|kb@8n`w#NCznCbNUEX8Nhv=pKBbjIe=u(a|4>q zZC;*IZCXOKwRIIi;zW3wq1u^QS&t~u*`FsNOGzWK2)Q{dO-(@QzcswqI1HrNY0uSV z=c6tBN(uW6ef6qYbug^51LPkXSz$Tqtu!m_c`@yhH5e*VcUC0AG-xmsoD8@m{kwKO z^Q3H?tZbLtV$`iW+$kfO&OI4s3eA(m4*2rjvGwhs3DHXMy@gCD6atNo1BP+{9lQH~ zu7qk;veK4S%LMJnm%$&?zJEPL$WpSiOqEec!f8b5$+)?5%~KtL96%%=f2ZZ#6QNE- zFHa6U*b|n=@iAfJ*k`xta=H8&5!MKaAiXPmGuat?9xxE-79PI2vxW3jz4*k6Sea@r|2ueAkm5%(3@J9=)5TCsd zk%8Z~G5H-L0ns6)k}XtH$083xQxhu6?F(ZW$pB*+@O+Rp5ge06pk7NR*70HZ)$zaoRWo@*L>-TMyea1ZeI$77^g0kQ?Gyh>>I4Ku|- zQ*S7!V|0!v>SI!HNM#H&gT=V~xfsv3o>F#%4r|vY-=j%Y<5?8*ELCK1Uy;elRt1ND z2jw^e7yxP}n37T5Twyd=Nb2N*2nKM~2Py#mKjO&o-#&5QKx`cm1Cl9Lu{%WONXQ_8 z#EyPIIT;5((;CPOXoA^K`1cby9Nao`%SH09ZsR#t&yPRT#-E6ENVE{DnyPg}PZX{U zWlnuY;!pl#lH5)RAo&>{ba9DT4FI&8q~@00G}#k-yu_5&F0tTkDdqmNa?G0qL1 z{q-y5_r&*77pc8pxiu@Hvsi8n*xY=C-v{u!6kymayhrP=eA`hV4W2ILA0QWJ6{HD}vx?LQt`~78dc)I5k zhpGOcJNo7y*e6%gg5) z&id78i9eTPuEIXPSK3v*Y8Wh5CnN(=x8!+)*OBQHVQZfW>u!^-)KT5SJ*sPM(Ps}N zafRhb_#xzURXGC$vi***)27PIG~d6zVH{J$bqJ@dx1T%c3HlY>w(ZB!Ews;>_O+Uc zP^31CXr@LPA2Z4*+G%Hzunt&&G5jaFHl~gourbudxx4RjPuOx?Yq(}UrRB%05$IkR z2b7YqTUV-D*svI(?bwzJ1#0AuRMu!L@ zK(uNG@vMCoz~FTs9xK~&H93UsA)&1U%<|oHpIiFLZ>`^S6n4F{X`qhFU0YEV4HHds zmbSWHG1XK{I08zXv?>=02N>5Z!vGG?R-fVNG=}eap0ck$4?_gs8x>fR;4bK70d}-B zOjz7suv*J~^@5_^bDq)E3&!H6xvHe{TQ8{dEz8b+2$dt`vBrJJxP$FbJ+JPmWGg-=_F z;M*nj#Ce~vQ>#s4Q#-tVBZ?K*CmX{VKC3jP37KKj=KF8^(+yo zcroSsg|hzu;@!_I6G?Z5z-osW;EIx(Y{W~2^-IYr84wl+fK}y;1|;jAtHkiNOumoQ zPtjVp1C)Ph&J){TDIR+)Fum8sa*{i*?CPp&SO+@#ON{ihF()j>m7Mx9fN}FmS^EL< zp44?KFua;zfv}Zi$}TJb>;C|xMC}GHdk7odYfHbyAhSh%sd=qeWwbnWQd=xB&nSkX zSAGpuD~zI)5pdwRW@!K{Lav!Ex61?Wwi|+IBRPrOkv>uNo}AQ@4!MDRS~_c0(yG%F zw3iFKBpM1ribSwH>C8tm6B+cT^wgGYHzXmkwxG!;(|`1_)uB%?Y>dQPUw7$v`eW0o z_Wi}U(zcTGcB!|dNhKcMwNO%5Pb{eUXKp4(Jl0TK=a14v9D?VYLZkj{fZJZb=q!SZ z*x#4{bR?1lbhnVPlY5IVHuCCy43?OrpxN80q!(&B7#c{RjjrTP%6bZZRY>`0;w6c~ z@l5{lP8!>Vcy6o+bnEZmNm|v|_WY)+K#8>4bUH@Ae@~zNU)(z%tpX}gs;G)s=T2q_^XY|GWaUF@#0u?15wQL zzP^h`?%Q4d>$WGjt3e$Rj*07S)pC(3k!56nDz{~g+NH@*#C(j!xp}T>Yfe!+!H-`t z3wIR9k>f|p^4Rklc@l5xw{OBeAgGK_0g%%=K9%p{XzG69|AwZv`JDz%>Hwwvi|VFvo>3>dr%j&aiq@t5&W za_W8ZD=alpHLi_TFZpUSMv^N30DI6b<}&VHLX7N3Bm|PWx5Gd1cyGgD#82iwrUaS6Umy$o?+2}9mxn@byc~Qdv!GnKMtR#{y7aZ!8>by7`$Ujw|p1GA6 z7W3GhRt8G!>f*~`oV{y3Ebce&Y#AI7X zs9S?=Z%XP)3r+s4$t_gz$gogX1PCTPRhT4-p&zk15wYy2RaovEag6`uH|}*6J-qKG?p}T+)H?7CHQ<%45$ndGDm!}2G*J80)^V|w6&8U6|{hZjxtHW zAO8TH0sVC<*k`a#Q}43RgW}j)j+0bRQy+L+^QFHK!=%FbTXvzU+|^a4jyfr7Yn39W z5Xmqev$9C$6={*UpdgsAMh--Xqv8xoj0OS-L%Zk?wTcgM7efrnmaiJ5*A|0A@D@L69Cc zRLQ}RVTP$VmMab#(Bu8VXd8i~@*_^sU{&7;uaB(vQlU@82hb8Z^7bWQejxglvm0zu zbn~W`r~QC#t8}^EWg)8Wvcnsq85jY{SJXUEVH2=X*pp7m^{Qs^U9>{(2M2EtYb#Xw zs<_3p1E-i5)Zen>?x9@&0BPuP?E(69V0aX!QLZ%CrLd>BG zz9WGwp9$GIG&B$Y0On5S>a~>``0-pw=R0rPVb`M5+oryYb#6P2O^(w`W}=iC#lD54 zT3UW6IeLD)uHjAz`JA5k9>Z2G29rUkdUg5*uTk{e4LT&p(#tiouP{Svrlw?&PLr<* z7>+zx;iC)N&th|){rh{<#V~R(>h$X}kmP$`to%Zlg^t zHAEF2l<>Mw9Lw0Giowx`ns?GVZgMDFQ@$&zteS3Y{9?oGE>sgT_k#n zn4^>rMo8J!l(Fx{RRBH@e0z8Fx>(=D(rIY8+uv2>c$_=wRWu^v2kq*$?&71YxnKHw zQ$esTL;)pivBGk(nurCbOhIfKw45_ni!Rt-`8dlD9dtlh9H5d+G5e2eE@V z8yvj<07Yqn#5V=vVg(@Q00VPe12-{nOhkI9uSo3I%5I@n?b&N8Q5|p5WbX*W$J7 zf8S$E#6yEaP0U^d5z0h^1Q}aa=4q&)%-NBTV4#3c^Txd@sB1;n2-zmf)wQhEa>%tZ zdbE)FRPbN(`)i!U)TV6Eu4o5=B&m$c$uZmwQ#ozQ$J9aeC;4Z#v5|F@NnTS5qMpIQ z7$QZ;AokP<=AF%#o+@Z4>5>>=jtHY1Rv2ScMIOK?00H@FK-E5~#{tdQ3_Bc>2Xoku z@FaexSl}r_LZv`K9sn2tMgaV=r`1YE$yz5?Zc0^w@AlM5gu$DuWcT^B=Vd7gK*;${ zJNxK5B19lSBp)Dn7|=wUp;@R%WZ-3xg+}b5`1fpnM?UVJ<9F#x)#IpLFi0;2kXTk1qpBi5<)e}1_l?`(WQl1KVkd@@Kv!Eb%0C5e- z=f7|O`srpML|Gpxxz!~wFf6GpIEf?-AB2*-H=hTHKf{jW$LXZoSrQGFLMrw3Pbzj* zPRlPoMB^Db_VPUHVa+8+DyS=QFod_Hu6UUV*vRPE*SV|XCwNqwv&ZQVdCJ0^wsx#duO0&cdC*> z1s2bSW_~Tmk!(;nll&yHP!H6NXRPeiTmk9&E<%+O{H$)J-~Rw5^XuVf;phJV!$$d) zuOZWFSp+Y3XwL?yX8!=gqeJI1aB|E)hBb5iOuE{sSTVVV`hNcR?7EI8h;^{j zpxpcZSJLY1-AyDDi(R-h(7HtwRT2tXRZM>plng>30YYI|frZ91s=)9JxUO8VwV{pE z)W`4osI3;~>L=|P6|I&jsACGNEi=Aq9DvNj_n*5N1q!evau1R_YY&b``0BPxX=rl~ zPuWYw>ZDV`m9taO*5JDW-jXt|IWn1sO67ng0s$lFb(1rQ(P9k*oU(sUMakbA^bNT> zMN4vzano)CW4WiurZ=gAI-v2ls^~y(-qWK00O7}j+aDp$#RB6{1ER6OMJnQ35)JMJ zx_O<-v+&PBZ{EKP^?Nwn?JX_d;d7Q+O8R-KjU#3w4NzFlB9r9AWr}z13wKs{nue2r z1ZnzT*+x2l7vp3$h#-MF+hRvOXQJnhhjfzv0M;wz)`rP71-w$l4P|Xr#SDTd8eq6c z!jSS8#}G=W;!7|911!y=TT${rk!wlrbPC%ai+u*LQvkW#=E5YKYi+0YT|;O1XPSzM zr>W~jT?I69pIVlKY*WeU#LU7r(Pn`ppt(t8sixyIify@IieTr6X9Q5lv4$wlLNWQJk%tgfR=n}dONlvK9lw<} z@VX5GS_$T7(^2*stkk;#d7-sqabG=X5fXa33)GhB>yIy)rZm2fV&t6Q;C!o$4M1^x zQ%Q6S@(`c&+%!g5^8WyO58ZihT`9EP(!257eusDpNmf;%ztL1&nUx~K!yDF2R2CRh zP>S`uco+HJ7X zM$)nV_A;`3r4)c0kU&WU@fFU+z2;mcOyKAXI!Wqg+xEZTbvCl@tF_LIEnRIT9ZMeY zQC9vWM!m3vGAfqk+qMADZ0cg8oFM7%Wr^5YOt`0~F&=U+9sY|KeA)Ds&m{BH&2=Av z{3KS%y(p=b9O0oU9AvUE{v{=p0f0N}8K;zjJ@i>vOGE-1C#mz2b^icr;@Fza0TlH$ zwKX*g=@mS;SmFca!Dx>I!GI$Ni6fHak2+uwWXVm>FOXtC^q;N7`mK4qHbvKOZR?Fe zsG_Gvf*J}6L}_ZIju_dT%{5G)JoPdX0c;!u2QJ4VHA$S&1j@}qp>ZPQ4bJ8{YzHO6 zJwM&m9UAL1*Kb&x_ASDs(p24Nx5ZHs@MUP{NZc6xN_GlxL3LkIlolg4Y-z1b3S>wc zYZI@pHJ+oJQdr@x*Ax23y%&6)zqafaivhVxH)HcR8Y!#dpn+imHgv9zm>6L#nIrw@ z9%I!E>;Uap_KI#H#x{>-Yp^<|Y@iNtI?jaL?0Q-P)_0m(?e9?Z4FNVAvQe?RK}i&p z^!3ocDg94cwGrlQ%8DS592s0RxETYf!+D9^-gJ$C^Xa^-jt^tbSe>n)>jHY;PK&{O z>y@g-W0wB_dD)j*y}h(6=q?p;TOTlbbWV{#)X6s()Il_nhKd5DGPB4Pc%+vc9<)|y zF4P`V``v0|u+-ellYM(mq{MPRnr&fq^Sga*ZR^vG#l3$88&~aG3#DWYSy>>ifYmxI zl17v8M3Sv(ih8_2$VVh&8t*Dp@t>L7^o7fu_-B@~@iXiDEJe3%ZSCFD+vUb%aQ9OIE=bnU=M!z>t)96Ono z-~whpe=U#MZ<^IGxSDlI&*7cyFL80}8$!@^Pg7l0E6Q40mpq$3SnFlES_EjcE58$q ztmo91R3=YVZV~BJDpVwZcmQM&f6qq&zyIn1-LR{#It?IgJ^J!Tv0LPPA#Z zO6qadjW(Aa{mQeoA&YQs>ovZZSuSXqGEg3LB(^@pqq%h? zS$00%vejL;MQqPSM@>tHH3mW%bCZP$h9!;wT(KZ2I;g3KEUs|{(Ayr-Z?EvW+&>ql z-Wu#3KyzFU#y-S;%e6W+(mtMaV%pH&FC(iP(hH>a_;&3H{{ZDNR={EpByc$8R2Ae^ z6Uu=Yr^_6km~C@hOAzwx^qLw!BIr&HdQ~&@6wsjmA3?vscz&o9Mhwi&9PZq-P zX8s9uB}>4i4hrHVP5YsFoAtt^tsJ<4|`Wh|uOBUqId zG8cv$u`F4)-9fEunkL3QCjMZKs)GlL#N%TVS<>ej0`N2dLF7T0wu_jz1FV~d;K~mc zsB!}zZbuo{Plpjjqo7`E#SG)?6aN4s_gSf|NhOXNvHRH-8RmFKLk!_gJ9ZfEaqph~ zb*S3M#4XTmKVRWCQ7)&L-#1t_KL}%n zx@!7mnx;_r%Bsm6bn&1W#XFOnhBP&@8dW(EARV%=K;f87OI++mBF=oc-_fI(i<3Nt zpsq=@bv~wr)g&$>@Nui^+$oQ{bzHpaPE>t>_=^V7j;K! zx6g9u)OK3hi;b$7yzxp;CYGKWc-bX$p9~+>$r(PXBz>WEr@*IJHd^mapzIqx$U!ZARCh~dlAy%F;*KL6(j=%y{Ko~2 z-UTcX7b})oNaH>-Car39T0`JNi1)YGRcXRnDO4fOf^_%p>$Kp!P$W}R9ucfABV?zI zh>U<6w-7#{CypsyNk)-?jH<6DPU9<_?eN@H zDmeDi#S$4+k7a~{=L-jP8qY;#hQoNYp2pbQme=!*eEF_ z6&C7v0(Qxj+@HR9uB*lrKI?hdmRO6aZI1T$h*{=^BLMLQNx}YluB}P5&5hR64ra_R zT=;L{8T*l~7g(&I5LP}%QZgAx{{YHC&YJKC++!ZOccUohl1tiR`1)uI!BpL$#@d!MLY2ZLP7rk>PE^l_Q>!0YEx}f zg>&$+ODj+KX#G}{EoS3G9bw98BS9m9bhkFnB&!kG|UyBXr zCdlX&=E+GypR{fiH1^=lH#DcES4dt&AwZFj7}NlMQ2e|MosdOJzc}7?8(+@qy8%h2 zqX~6{+BGB?onUL+tY^Wc0w0H6zf)tYRIYoaeD_s}pkG#~OTfb;yi&5Nz$x40P{a|2 z0Qa6Pu4BXt5F_7p3{#7-FU)QT=clOa&qdIb(aj9fGrW}y$C5_TuNcMvAQcKuP6^I& zj@TWwqz5&JRdOns<9OV{l13ena6Gv$Z=3i>4*AcK+vJDHwGNdFN(pIMG=S+6((_(JurCqPJEj4s< z`cu}VbPWYlyUEGw9zwWzy*6RQ5_yF`I}K!_D!KDbnTUhTz_;4pL@~_57P~PQ=V>RE zz3VDH@KH3izYbeQsz#xLD`nE-RV>vNv&JE4>PyKhEMyFXTmo}|JKz(o&Lc>iNMmnd z3Kc4`{v}e<0k+#ni|wtsu50M$SGs$*y4Ag`TZhxT?LEs~_-l2lw_C!eE$CYl?}ybxV-?L z`BMc{g&irL;%1qfk0fSDc!mW*$oW$Q?qBrZBHGzsUYw=eXK-=4Ld$r7sGxX`SHC$Dspj zo0|UU7-C8ucVPwgv%9yIi!lt}H%2eEYrwoW-H zz|>t1x!G*erQtR-T&LAbj_9n}7rQkLB@H#TmRRL_i*z#^oPaCH%ZCCak0p%Ezqtt> zN|s$@!>iySp-#xB-&43AE^}_j(tLg zK4@ow$MAY?N;5L}VaIn9LAaLq!ufe==hwQ&;t7U2IrAey2Ksio?5OtQ!BbmN1vHM6 z&nhH_+XIEARYI{l$;lm9D`G)`^C)E^F{(&wKma0U)f^9*9)MnFpRLq0svA200KB&5 z;}^Jp{9mrL)yC0V9+ql}(p(Wr2$zIyB#?y?BD)rmNo=nb-ogI>ZxqKoKYNhOO2oxXUxinresiSjzK9#U)loZ zqDp^OnreE5Sz#K7$*Z4{+SXi5G~sc_-77;{O1NkB58L!@pE6TVmqo;ZF!!t98Xx zg}70md_mq|#bJZlP|Uh>oC8Zu?fsqqoQVxT$BjySoQy{{Rr< zg*P*nD-3X=4n+9Xeh!JE91m|#-Eri~zZbor zj|6H+IggZsGu9(Tw`AW`TeGBnHuUZEaLr{(>I(TFj0T=(oXX8FY`-;l&wTh`Fgt6V z#L;~mOS zzta8}a#f`}G`wadNk9)TC2`zj9FNoV*JX!xY7H*6myz*WULO#w);fM;f2rr8vXegF zyIo*~SL8R1?UbXV3Uq&X-S(;cAVTh5SND6%~0qDaZwnfIFYl^2U!8 z5ruoY5#)M(7H%9#tkzg>rm?cDrL3t56m2ZBH_DNzB$Mm_*IGzulDwBvvzudeZf>34O>K(ja~GUmo&)Lch^X|$JNdGxpqwQT`P9fvR&e;x&F_% zq-}7XZ$_FpV5E(BMHitJJS!QwgtN`D+`mOd-tmp(ocbL$0 z*RNZyHs9A>;kWk|=S#hqP}Ni3=aK4BIjtRGnoeGv@t;mi;lMd%V4#fP9dEmcKA`}R zPSz7|f4Z-&PHH*s7dI*qwKr|wY3`Z}^`_@hY`js_Emb|j1|mpiQ^{N(u78*$d+NHV z@c}Nppcpc~?R+Zrv;P2yK8aX&olPP`b)Dv;x=>L@1Qhj<;bdS5$VVI`RT;;s2Yxx% zpJM0=ScfoaW8_y)gsy8-f^Ib=o2{KI-9&~!VHD-cs;K!;XXRs%d3Nkqu+MOHs$Fs# zEUa?VKPmV7EEiLDEgt^ZcWX7u2$~ATRW$_*JT5p zGmNW`ZZPQG2F(VU{%?g3JP%&a`=Ig^}$ znKPE-^wo82;lC={qmwYqrM7#mJJQCHs8#R>+g$BNk*d4^8?}3+kW1UxdjqXP0+6z> z)anDu^dR{`e{OPtMCny zL1CX`fsI78qcR_aA+yL2xzUuTnJdwQlkN4+jHs9j)Rb(alu@LTgV-~1AI}H;G>c;D zQm!IMu_$L8$oYyMz~jC%?Wb|6M1rifDjxZK=gx7Zmex*64HA^%0M2`sC$RftOR6rd ztVahd6c2Il{`+Zwr7DB~;fV#Y{e1m&vdK18Q2g=#8aPDL&A zDj^)CVk#IbH6az21fsADl0A)}{8N27}_xq0>^taIjO7l-|psc!5)l@)| zR?>QnPf#*_E^EQcoZ~E@1CV=m7}ArZqAx2-{95#q`_=uaX`|Zq8lA^>q%~$}>E=M` zMq*PUfaOCoI6$fnbKo5IofMiqW)n5J@dCmjq>HU&Es}%ltu?03O-+jUX$Wz5Ldl2irX(p|R-z-^`mG z7cg|!bMB9WzOwF1W%dh=+ozLF=v}JqR+^8)#OWH8s#cK{A&kt3l<4`5gixM3DKdI(BLvR1`pUA9C*ju-&6z;OrROK zRvKW6UR6j-FdSuWzys`i{{S!x6@f^+Mui=e^f{&W?FG5GD_Xd zrFce)Rj=@MaO`LfaBn-D#CmVg@>IBrt!Z;zE^*KXT4L8O=g^JrO|icW9VY7!M7nWv z+FOFxwD%>tzF8-V#XjjU8g-QnbyVyYmTGp6QI0@3#y(aVI(Y1E4--^6o1E7-c#wTc z*1^%l)1p~coV4}_(#Ksd7dAU`?^J#Tx`$J|tE+Z*OfD9Uvga^cDz{y><4_#uD-$G& z&bh`H4E$HS6RWyBV-4YkzO1{RQa?pf>=WBk>~U{v{mlHva&+MBj-@=cjv3bQ2?km5iEb%9zLS5F~CucP9X9m-;R+ z7=h}pU5uv(k=%bjvcc^hxpW_=mmSAdwR($DS5tkse$$>k(QdiVMNdD|~KE?DlVF*--w z{rr{N7g)Mqcc`eSP1j|lf?OCamyV%aQgF@cEQX{jG+eOCP$aS{<0FX*L|uW!Fj|>D zLqVikd+8_@8cm)@{{S6M+UP&h)g5TIbqlB$s#?yM)mkehvrYKQTCJ(RsRVY3Wn40q zc8*7p<5vbpl0_)Q4kw!HV+Pt(8h;cEL##n*GB&;R*JC`?aSngWm5w=X4UC?nNa$9j zw*LTU2U)9Qbk?0v#(I)QzIdRZyyoX16Is(W=jbv)E6)XO&)5gZgL5E64? z*ec}K*W-k>!izE0HZQEVu&X_H0 z+qBWmPi~=zrdiZ}?kLpys~A#Qo;6X*Q(wHbOV;w{iNcL9KhdHjv}q+Drr5=U&S*CBdz1vHrsU0FEhXD`TFDsjaTj zQ#yf}p>_;vCr2E;N`7ue48-|+@q4petJy^B9k$?VWLPF+#hD4rF!DnjW4IzPOBO5!CYLy7 z0Oin6&`)TUV}mVo$;$==+C4e-T!GOW#a`~}-A%UjSv~h}n`PeTHKy$;tfiIUqLt%k zic-MwAzL2&Msfxa z7>K{(0x@aU6Q7i{U^q-3Qpb+op*p$3)pMeZ#|s?(4BKTeo!dRJ*8!Kkt zN!2EVm1shmbXKm%L)Gn-QMu@%xoxQLR84fGol7LtzPbsNk9?tRW2yNHlSGv<>&H#4 zyJE?;?>37~O{FT}o;t;qxkXmOwyhwofbu+Hl_6-t5T#m{LxLGuvazAmgW6|rrM++H zQBoODv%k>a(%z~S)BA`|#!yI433$q*?zzwOKhspaMx2J#8jE_a$Kjk;gmNsZsADK4G|mfnguJ*-)((Qrt5rkC#M#Rw?Jm0yKTU18{H(hO=F$EcLly^k{SwP zdvR!JVWeE(Fpx9<02WE+aTuozX{bNK-6vD^w?(ms!?E<;nCtp}`>&n*tNSwd@#^m5 z+dDqG+jO*BKLt}AZQ7^s(ycX8$k8;4s@%$$WsS^v?u39dfzZ|C6lhRoYK=cO!U_9@ zRO}s35V5~oFQgv~T?v=rucZ_lIxCGe)}!$f+$$=a6j!O2h<{0Qks7KZuP>PKEODMA zjdmioDyys1W?8Tsz~|KNuW*=gNryDa))w4&e-PBqTp$KHL&M1UY-6^3p8hp2nZSsJ zw_zcx)iq>P;JKO@vEkkDJnJlUSi?!w6paNQ>{qnbQNddUPGg=4g2@}8Wi82AcNq)q z`D%1(8gG_ru+?dz&k}4j@3Pd*%1joK*nj2hHRvW)W{Lj*3!LIU{{UAy!gNHhGec8u ziP{HZe1H@Ys;anV>nnbqDa{#5dsgO=q$^cZhR=YQ)l=zm3eArW3Ry*0Pf(+bp~u&j zwTlYKWqZ9eC$Ik&z?;QBa@uKjY?5+BE$s}ZZ<4A+Lmt=)V{_xS=J0&T}aqZ*A zlx`E0jTY|s`1(T7-oRGc$0ABipjnttBE|0*!Bip%d zTu6-_YNB?`eRWek~LOpo_T5!OtnOuku5PIMbB)rF=b=! z3omZ?@83{1H!!3ih*=7F-kB0Pe;G3`b1hWm?6C zDt3ELu58`03hpjhA2^{TNmfNa{hf*mLmgC6y~|^B05{WuQSs~ zT4v{2)#F)ltG3xXZD_N+iqUP$ja5nYONVLNDynovjJxH`EV7PGArcUD#Y`MQYp15& zAe)bHv7f{--`Nt;I+2*(#OgG*n`*W8>DpU|f85O5qo8%yNaicfr)PCcLmbXoSQASm zk*WFBTRcI^sqcVwvqq&BT9tU^nUnQ`wJN^3n?0PsG7pd~pQ?gi{xY_f*ot~PHu&mY z9qyKSpq|aSEc6?aI$2P+Bzl*TXJs-e856q<lW> z6S!3qrf)0$%VC)M&ypGc0PF|R!0FP->|feRZ=F;2$4#nenL*5!TZAvmK7L8!4x{pZ zSLT=p*Exl=m+_MWy138IkW1ClhP5OQ;zj{U*X{)1GR%oIPU(IWHZ{?*;5@qf@u z>87`?%Krd_xiG}_)=N}W@G}k^+EDz420?XF!A5c8QLVx8Z5f40JJe${aS!X?HSOM}=1VL(A{M+X_eB(YsY@w`JwBm?XF ztb>LSB-Ml1C?#*e1QdIcp6|9dHNwF~!Q`ffdT~*Cj%CS=MKVbYBsLh9kj6ky?*a~{ z-Z!3^6=})(M^SU>{^BqdsZ|c6Q%%+fd3+yrp7kXyHQ%WxanQ!EP{!$Ut@L7*SmTPZ zk%!2rc{-p|kVxam&75ZoPIA#B$-lyprHvqFb^QJNvfSM`vR^i)){0&K0C$ehxM?Y2 zhOX)ROy20HiH{n8##2-d63$AbEBI$=T=ou%2sJh9QN>ovL8ZXn3t~G)+uq$bTlD-| zbf&S(9L~K-v>tMQWwh)&&VsV#ZjK7WQ8@;t582Q~6lSJHD5{Gbhn$8Y?A_ndMJ3OJ ztpd!G7XA+Z0HUzVZ3pr1*OJgX%d0#7i>XlU9mlpW_e(uY0Ie>-xVltB6Uc?6krVL* zPYGoKW|9w;(6S+Hi+VU*JxT_qaMC~J9!BwF%KCcO)y8;L0BDIZBv0wjaT=aWd2fxo zx2?9?*f`xNL86kbF>a=-xJnQXazDs8i6r6aj6QksWy=8iq+o&rUFvNo^!j-%-x0y3 z?mhnijqR_vS9YG@+7}xICC2q&yW1*iOqDW2`#Qa-M5rT-$Rd&$!h`86My`YZ00mio zWmakUROz^k`gI-kY>%qI8Y(w4NFz;$-u`>rWi;HI8sEO`k7=rwMFWZdbkP|g0&Ky z$yDr*Q0tOCIUPY}10aq}a8K7KSs8P6w}i?o2pWj}ZT^=Wd>_!#)%;OyN-D4g4P_Z+i$k2?ZM!e9V!a6P|GQa0kthovo~ z!cM_zZnAZ@ewf_0othi2*tFa)Ra2Up`@PaTbXNLU)Duty(hpFA!zipBv4y~HOLfEW z-Zp0mk;~ndt}39U(q1zT;^(fGk4X}~VRibN(JxfDkL(EH{{V*SD(0!TR8mfr6wD76 znIf7Z(YQ$;{{W`!6gsYQy0^s9G#<*EoqPWPE5G2F)?@HBa1MBPhS>*CmzVz2VbF~s zXltxS;UuxLm5_kw&D$dyv!Z-32+?rdN}0yJ^xPrF3rXBU=&pwJvu9ZT9`|PD-LzFx z?;YK0xl!#H;YcSm(NjY5Pg&_1JwS|Nk`pOWz-Nat`B-8e>eYodm}^KR&hsF8$3ynz zu=sZ6@g6{#01$6uaC9-Rc;>l2OmgkmduriSn42ZglC20{n{0lqWMeq*oQ-3sa9Qk+FO!ZI`|rrx`LsgsD=Lk ziZ@bK)Z^)bHG>mD%?_hbL0h;SOIcE$A%;ba^gqIv+3q23lETfDsD!Q$xnAS?a@RFp znKXljtt-^2VnD?JO`Ids_qxJdsf~8zxYgE2HANjWshiT`tQW9R?ezBVfKT66RGpI! z##10T=(uhxNV|wuodNoPr6-$eQqa~#TSpjz1Y%}_0VNOG@I?|Q5-@SifW`>~79PYN z+OGUd%S#?)oeqcSKSi|6Gbw;uVZXlJR9Ac4C@L$=6ciCrq(=?u$HB9VacmL}JNE;> zzI9`Pr&X-YRpgV_f19fAAnGkX6(+{#(?yRLS6T!}--ASR8x}sIeK?W%p4!;(L3t!= z>E^I_@kBMck5Sv|w!cE}H1}Sjn5Q#GM|ic>S*qifLnF-_!H2^I{xW`HkZ?fqahj}9 zb`qG&2P=W(E@PgXb5^vRF^=&J%w@lAcJp1W@Wb$x(H+Iq-SnvaO?rruvylx9T-rY1G}L zWZPbr{Ge*RnYcFHtI&sV+9MJ{L2ZOI#tOW}0nQF?9Ls^{ zb3Er+^ZP4W*ftjCra(Pp1N%?CR})^kxk=NjW$F#pw(GVueNL4qE3A)gtA)1pji(dT zNo$f%l3GfLYRlXwW}Q!G*N}fE9v^IaF`$f2M`W;_tzs%l`zcJYTr`; z$tT|HwWGrv#tiRhXxvHth1Qw8d~QQ#>rJlZafZXSWVl#ov|Q%7U1}ssb%LR4>D|^C z8N=dgv{VR783srLy{l+Cz7#c$KPj}^UwpTfUy8%f!d7KW@(l7900F6wQ`=S9n+vF$ zYpGQ7U3PBoweEXtd}ERARdGxpW(1E^0nJ?Fuzn)|;CanJG|tLtW}o5>A;2k14Z_XD6=N#wILOtFK3 z?dKZRCvu3o@Xb<5ARR!uRKVuE?I}IU$LFXLo{HN{p^BFbM{eEosFMLnA)B^zNQ5M6 zfOC)Pbfq{-XW~gDe=QQE0tS5hj^D0{=A1%PP%(~Ve!6KTE(j;@sP#?^A?h5AsVnc_ zPE*xec_ib2265w2(E%y-5EdmFus{U%&$fN>`f4WngzT-E@Ni@1IbpakJWswxe@}mH z76+0wSN&u>fPb6;j440i{#tt?3KM#qSP%ds$?^WDPzVG{UrW@Bfoy^2gYYDI{vbjB z0C>?SRW7MwQaGZjD93hDh5lcjbP}DDA$U=Orbc;x5d@#i=}J>7+-!)YV}dxoW^=?G z<%uNw_s?_r=eD5%HDY=pR>CHpa~z+<7NMi!26M!LpC>0L2e;*@5Kih@xh7g@>0dBI z6j<+=zyZ(H;{=}M=ju+JatVXY8KjW}tqgF-AOwYQLg(8)Pv?ywZ7L?}nVpy+k(Bo; zcmu~B{qv6BaJq;NV~tk#T@Zwsp5d7VJ5^pZ&yo8>+h8KAY~wfO^m9 zR<4WTH*Q}p63|!w0QfYmu2|f(md&Yfwp8FgOFR%(Onu4wC~fciJ1w_2SuGo~+h{G4%}r>nkyzvr{{V||aoYrU{{TWZ8OEwK z$zeWi{{Z?^{+(O?L+YZJuk6~~w6M9hZ~Fzoxpt1_OH)P2W3l9|GLGKIzin)@kBOJk zBe4heSdR|G185`BM(h6ov$v@);#;F9vHlgRPwemNg#L>guF|J60>M`GEc|=+1jSCn?l5twyN+RmKyf{X?x4&b zB;3=FFcw~q`#87k1j}E%cC=sv#bA!%RM{u~g{E8&e|&zL#O^yp=}q53`mCRU#Qy-q zdZ-oW;7hFbYlTwBwJG-$F_Mwj+wN3T#~}XztrkfmmmgR4Kr=Wu)W(d#ksy8>nT4U)4s1-?{jykdllX7boB}un+lN8OU!Wxvq;^Qk6=cV z>rur66HMz5*}oTC8+;U}sv6=iR|{Ia0#8bG942T?QbwhIRtW3J z5!mr%{MWWMP-%goR(Xu-qR_`*wriT6hQ(7;X)rTR^!GNXnWa_&F&!BT6j7DKNJB^5 zfU*3UF(rYp;%BwJMf(r3jJrMb_uhBw-)xmG?G4pW~`f(&r;~h^zefbi;&EU zk)x8|y~AU%i4Achm)Q<%YoYoMw@XE7r@dVyn%PP%vBc9Y6qLr68DTDfR5CDDGAlPI z%OrtVqbLi&9YnOXNJE{i`@)=nBVQ%zj8s!RX;C$8OERDT049XT2x6o#8ydIXqIB_Rzf?RUXsf)OHU?A z^yQIAPUH?wq=S)<(EV~XlG><3iSOGIZY`&{XzAgNC#$4vtV#THDC7YFMotuf$G?9d zXGppQmTF|vaB|^qh3FQC;?Bm4xvZ>>NmGr$c+!a zt9OT093vG^7e$gAAO}BEjeUjg6tQPBur*w|0j;dc$ zI75a<90aj|-~w^ka!A#?G1X~P45R^bg{ETPUdq$rZ@}VS%J@p4?`R|gu@?iZ?{2HA zubm9qHYUDZw--`(uIAiT6k?8gn~v$6sexRDN|lO~@}`a7lPl*X2n+LI>Cxg?+O-=@ zhA>Q6ZhNjij|&2$U*a2f=P)ic^j|D5P^C4_stEX%idR6%oDdj+jDT^EsMn#ga)~RD z#pM;8*0um7eM*z;y}3tm*}L}XRZf)>+by*1P0CdUDP*mI3x)NO+X!SC2`Y|XGOksF zEPIH_ptTxSTZ+Cbq6xYOTJe)HIJt?mY}EuN}6i0aI=@YM%S zz!E-a*nL%lDg3kVt`)5n9a5WwT!rb?u@0v~g<*4J>FyQF)YP$Vfjsk6(^F4QvLv+F zE(u?iu--=?2^kssjbXzFoIX~7NHKo*`YG{ugN+qh=niNymv7NmO>ds6+gZY*2gs$5 zIg=~o4&amAVEqoKUF>VaDmKS{OIC-77+*}>a^Lh`{j0Ss*Bzg~>#w!nvu^ggRXtsv zo=E~dT|-w>!trq_cxnpx;`GpvXlTX>O0@` z*>^urJ}`QF({7_%4fg3S-?|yM3>V-2R_2fzpTSQ>P`-~dA#cI2B3GZOQ7g6q$uSr@ zxU4%}N6hkDH%9dY?rz>%YZr-0D4!OCL`6F3a2&+f@+1T;aW3 z%?P|orb9(R3{%C*cUp+zsG1fEt`aCq0V8WJ2MX*PbJZU^tRnC^`|??_F8o8oDT&`v z>0`c~1kR#9UiCAqo8PQA_Pp<1&vM*X9KRVWrzK$x{7W2T2^ydJPyzPWM#^ksax_^` zRIO3x<~nVl9zxyusL;M#RSGS2N}(7kCTwGYOk+RvlE0B7#-)|Klm%LVKyme6Gb0~! z{PiUQ;&m(NxAr{lRZYRv&Aa%DWT~vAp}4~naWl#2$tph;BoQx#Ei5{{0dxdGk-Wc)@{{HLfOVnKAszs-cj;fIV02EIlhE*Q?Tjo|d$6^=HopWd9 z{{S1VmB0}*e_zB3%Z5-s(C1MappqpUQ0gQT`Q!__aXH4>#lvyMwLe2x#_BR{D6>s^_$ RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README.md b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README.md new file mode 100644 index 00000000..d56aa416 --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README.md @@ -0,0 +1,39 @@ +# Faster RCNN model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get The Faster RCNN Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/faster_rcnn_r50_fpn_1x_coco.tar +``` + +### Start the service +``` +tar xf faster_rcnn_r50_fpn_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +This model support TensorRT, if you want a faster inference, please use `--use_trt`. But you need to do some extra work. +Please reference to https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/c%2B%2B/paddle-trt/trt_dynamic_shape_test.cc#L40 + + +### Perform prediction +``` +python3 test_client.py 000000570688.jpg +``` + +## 3. Result analysis +

+    
+ +    
+

+This is the input picture +   +

+    
+ +    
+

+ +This is the picture after adding bbox. You can see that the client has done post-processing for the picture. In addition, the output/bbox.json also has the number and coordinate information of each box. diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README_CN.md b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README_CN.md new file mode 100644 index 00000000..f8475daf --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/README_CN.md @@ -0,0 +1,37 @@ +# 使用Paddle Serving部署Faster RCNN模型 + +(简体中文|[English](./README.md)) + +## 获得Faster RCNN模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/faster_rcnn_r50_fpn_1x_coco.tar +``` + + +### 启动服务 +``` +tar xf faster_rcnn_r50_fpn_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项,但此时需要额外设置子图的TRT变长最大最小最优shape. +请参考https://github.com/PaddlePaddle/Paddle-Inference-Demo/blob/master/c%2B%2B/paddle-trt/trt_dynamic_shape_test.cc#L40 + +### 执行预测 +``` +python3 test_client.py 000000570688.jpg +``` + +## 3. 结果分析 +

+
+ +
+

+这是输入图片 + +

+
+ +
+

+这是实现添加了bbox之后的图片,可以看到客户端已经为图片做好了后处理,此外在output/bbox.json也有各个框的编号和坐标信息。 diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/label_list.txt b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/test_client.py b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/test_client.py new file mode 100644 index 00000000..b6b2c534 --- /dev/null +++ b/examples/Cpp/PaddleDetection/faster_rcnn_r50_fpn_1x_coco/test_client.py @@ -0,0 +1,46 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True), + DetectionResize( + (800, 1333), True, interpolation=cv2.INTER_LINEAR), + DetectionTranspose((2,0,1)), + DetectionPadStride(128) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/000000014439.jpg b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/000000014439.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0abbdab06eb5950b93908cc91adfa640e8a3ac78 GIT binary patch literal 195229 zcmbTd1ymf(_UPNg;O+r}Gq?nIcXtmyIKdr)ySuwPgkZrXI0Tmj3mTk2a0u}D{%5Uo z&bw>f`=n-8uixz2)q8hUb@lG5nwRe{n*gS~w45{m0)YV8*AMWrjjAgrAz`elt|Bd` zDD|2F0I0HxHV%$3m;hk!;O3$(BTlZXr%#SB1;7AE06f430H#n^CnXJOP2e@jNlB2q zzAF90|4BDX!0VX+V4hi4m7M%P^8Z(a1$A<90|1cft2T$Zg)8)xLtpuWr<>D1^7B{5 zHM9GNVPOAZmsba0ncyF``WG|(kIuhX^dC02cQAj|`NwA`b9?iDc<_}YJ=`r`8Larq z;T|>?p0B*{%8(E4_BOA4_sY2T7N)KM0E_yM+|2@N{mQJbjOwDPF7e8O0Dy>U^B-sn_;|@>Ej&M1xVbT_nnLYNUChZP9POP<9lQbH zU)TIkDFFMQx+Q=#U{ip1I zWRArEzzkBED>B(Ya z0cH88LjRrq9~J(s`M-z%vd8j|y?@soxuk`qsrv^v@_#B7>iEIY-G$uM$rNfq&iuc2 z;{V?T|I4la@`Fj;!qURU!r|4F_G>S*aj<%AZU=K4HycL>avO*LT?_yJEcRbM{Dc4M z*ROz6`V8P2vjCXWxB&Qc5`e`)0l)_NuQ{N9x0@o8Ht^4#r$e^?uYUi^ulfIT{J$Mw z5?+78xY}5e|09-A*CdC!yLkM=ulK}12RHy3zyNRoLVy&Y0_Xr{fF0lg1OQP$3Xlg> z08Ky-Fan@}HDC|80G_}{AP5KtVt_;-4af!xfKs3es0Tg+Z9o^$4-5knzznbmtOA?B z9&ikt12@3q>p+G8LIdG|2ti~ZY7irc9mER~21$VwLFynqkO{~N#t_B|#u>&3 zCKM(fCKIL@rWU3ZrXOYkW)Wr+<{0K041iI<_+Sb!Gnf}F0agL)gDt@>V1IBlI2~LJ zt_OF3N5J#oP4Ef$9u^)J2bLU`8CC#R7FG)u3hNB(4;u@c4O4*Lv; z21g9X2*(d62d4{X1?LGD4wnvB4%Y%V1h)vc2X_Mx504K|3(o^D3$F)n3-1db3!ewy z0N)2c3%>(@jevkah`@*-grI_8ir|J2j*x{=i_nWOhp>lmhlqkmhRBX6ji`_4fEbLJ zj#!P@gE)t{kNAj$iA0UWkEDWRj^vG$fK-aqfi#V@hxCYyg-nYqgsh2diyVZUiCm97 zguI4)iGqSciNc4XhGK&fh?0r&31t*z3*{aa8#;66~+oJ2+q* zDjW$MC{74YDb5hi9xgmCEv_7{Ep7~M9qttFIUY71C!RK*7hVotH{K>b7@r1T4*vsw z0{&w7yrdyzgr{|@&qtBzCVSr)aVz6e&VVGuwVdQ4CVa#KkWrAbkV{%|B zW?E)OWfo)hV6I`_V!>xoWC>x>Vd8hv_>D|b?XI3uO53HrEt8Cb8@@&Cu9c+Kt z8Q7uhIqVA@XdKcU0UTdAE;t!EEjaTzzjNVmDRD(`4RAei^KiRx*K;58KzK}ea(R|{ zad}mFV|hpU;P}M(0{FW4?)ka--S|KA{}x~tuoI{jI1r>2v=A&6+!3M_G8HNk+7u=i zHW4lq-V~t_F%>Bm*%qY|H5V-x-4~-5vlXiqI}>LWcM)$9zm?#Z@RR711WU?DMoUgf zVM}RAWlL>HQ%YM&*GQksaLM?}^vS}>D##|uF3XX~LFKCC&gFUJ{p1G~P!%*3vK6)! z85CUd;!mI^FujM#3iB=E7Fiw!rq*PQ|Xm?&X8d zhX#8@dlUP12W$sBhe1bDM=!@&Cq}1mr%h*m=QQVY7X_DcSCFfr>lZiN*I;VWoz6YX zeal1GBgf;;Q`@u23(L#FYtoy+JIZ_CN7|>%7uFZ*JMfX>W6;MfKQX@|e~`bK|3Cm$ zKxn{TpiE$85OR=R(6?aL;N;+|5S@^YP?FHV(48=uu$pl6aF_7q2!V)#NZ3f5$f+of zsH~{xX!Gdt7}l8dn7^^m*zq{FxXiehc+2>y1nz|VMEFF9#HA#Wq{?KhWS``n6s45b zRPxm5)T=b(w6S!~^nwiJ4EK!9OvTJES&*#6tiRdT*^4>iISskQxly^ddFFX@`J(yt z1tbMA1rLQbh2M*0idu_liqlKrOFT+`m1>ucl<}5Tl@pc6ls{ECRBTqNR}NP3R8>_I zS0~iK)VS9i)*95#)JfKTsb{V)YQS%Z`2>7&|8&%7(zx_l;qyQfZ&Q6Ub#rbDPD^wv zsMWjmyv@38^NZe>*>?H%fewL=mQI$=iY|(-oNm1CgdXIc(4LoGpWf>}r@oVZtNxt< zi4)3XOJ+@sG8S^NzPoa8I;Oa!s~;-DTua%*y1V|#T6x^ukiy8Cx8^cUK%^nJ4Zssr|eu0!d= znWOhdd&f@4k0;@$Sf{yXbZ5=KMSoA8>z?mjxLmyaiM=GethnO58n{-y-ng;9dAyCj zBfP7;=e-|!(0SN@^!$tPH}i@9spDDUdF{pi<>h4+kO06iuMbuj@N0s7{lX!_!NJ19 zAtNBbBcdXsqM{(9prD~+W1^vBp`)N+;$vdr;Ns!op<=utz{e%P#>K<^=OiHTYZ+KL zBse%ETr?Ck-2cz%r4PVD1f{|RfFBC1$r3-NM2(axYzLEKYXd`0fY!3 zy=Kc{0x&S3e>{hQ1;fL^02m+`Ff0}vHU$9BhC?ZafUCxCiik($EFP4E&!Jw_cn&e^ zpWSk~K%$n=2!6xqnp{jk!^JK2k0sFmY6%8-y{K1Pi2q{=3jo2uz8Zmr`^Ov@gam@Y z0>Bh(u-Ia1aHh^UltD>F=kSgFv$*WyTNema>Ud@@9Kp%>kmAn+a~jZX#5dFuoFOSM zD*!4O^m>6{EIu#Krj@)(m9pISk2 z^gFppY!zCt$}}n4B41(sEHxag;`>wdonB)u5>S-5gD-+hY)Vky*nW}ZCp0rI%Q?ow zD_?^%q=pfw)*R4Uz zCl9T+S+e1a>2TbeaWxo+2xNyNisqAV)IV;E@#~_JjbjvD8P&Z_o_xAo{YI}o;PtC1 zB_-&T4HO&P1-;y_o`+PKc1n6b&xpIgxzvomdyqMw4$z#ploN<9rVhuadbHKH82x}@ z$2}(l7Ac^uriCp_=fFAg52j%x_t)5a9O$e#M0lh+Xs!8)%jpd(O_OMIDQA<4?n+iI zEApg!u|OLd>^m>hu*BGaHF~Ex?AmZspWxZjnLZV@@y54AZ@xzSR6%*BT*|`(Ik1WE z55aTdNXQ6m2r;{2g!+D2n0|w@M|2Y#N#B@OUzCvixK#Q}sbbQfGk-GjgMKg&XTtcExN%uPAKY6pXNsn=q4tJA`EUWrL|jqQEai zzF@Z_pOgpbmQ`bi_|CfBFloWc@4I9ndEW^ymfR*4QzJ6Lk4uQ9D{ra~^So6 zm*}XZD>9GGX1`J2`0Wx5?R#p!JCfs_#GSL)!bNUfUOI<^pkImKhUZ(awpqy+OXvDw zzW|QrQ?-^ZjrHe+d}c@^o38oItd}r-ii@6wOg7ft9?HdSZY?v`Uj@Fu7cS+hmTa(E z*m3^4OKk5rf`AbJsqs&5`wG)jvBjIhsCA95h6T<_?mYdqqoHKqa9jq#0M+o7imTj< zVXvcdG9X!thYxJ6H_90u@%X+K5y+Mb5DMIMXUclH-byOZmWpjl2&PjWyT zWvK8zKRplih6JK{l`i}1wh+L2@cx_NbT^$qA_GB+K8uuc=D2#ES#a~yCyGtxisBYH z8+1T6VGKIw6Lju7_vzdIG0#TvoH+D>a_g3!>0;W{Gz|}5OVwMNB7{}s&&X*mdb@WF zlQeYGjIs#*n8whx?YF9~oeEmDhv~a7bYpRW!aMyhK-b-oAp5V0JZ5V>Cg}=^B{(}b zOpn;FcP=US1@o@j`f4wL_y(1>s=n;5RuZ2uyk}y-&2htBvh5zUX+p1(C`omzryP~3 z4AlO2hx?g+Q`R@5Z6~@zhgLa}ec+AhbK{Cr@Au2g=R9{2WJUe+OT~ewEtdx=gCPZB zGUF9$k+3*yW}{o@F=p*HA_*hx9H`r^K)wVxnR^#{JDuyUuswEZfkc-qOUqV}fLc3t+Sj^01=IpRI>nWRK4#HE1 zxiNcYd--5dWBp%%UZc)%eJyHOEK}l+5kDy%uPNcuqbr`zBl=-E?{Fv6f2|GSBK9MN z1Bsqc@_SlAlTByNNem&_{~qv( z?~l)(Gr<;%?TiEW1~iRvisdez+ZU<^aq;=p63*mh*UlBP1v3}HE!SsKz5@&B zuqq8hg#_q6ltkgPxsC2|VivOk+3Ht)MnqJVv%O3wUQn8{r)dy*th?4nb^TNv%DMpm zdojjNuR0qddqW8YuU+l%h4)FjHcw?;^cLDl?T4juv+DOAPvVmX;^2v8hKsJUVx;OZbMc zXKcE3Ijp__M$OdUrr+@eA#fGXSI^34Dv){NMVXs@UZG$|f8&f;8kFpPH_R$~OlOu_ zN50X3-CbA0QX+UU=7ankjjFp~ex)~kK*KIH9W*v2B1l>}HG%};m!lPfN3<@njdS6n z)Q`)gmKGfk9R5Z!Es_hb+=3+Q{} zrhSbd%~bya2?}KOBH_hl#u%PY4IAN1TM0e;rG!>T2wrq*qJ54 zO#`?f+3V;cGcmCd3ig$1XckVe?LNym>#v+mkgtK{SQVVT6+o^`42w)8*c0WYGKGMG zoi5f~k%EMB=SF@el&UZTvBS*k-~KY(vcy$E!WkRO3D;>3}PnN{T~4d0`BiH(hfFf%Np&ZyrK$5JN!{l-!qrDFuoZza}_rl&1sCw6ILHpzTmc96uH>969hFN3f+mTm4yOi47SHzbgiwA*a zO@1p37Zn>m1g#j4yN^HAHxwx}$e~rWv@YUKR8E#<(_2JNq)G}e*oZz!JX25kc*T?P zmlcUt+QWz~B<;L0WH7EuvAgiJ%&YR0ZmhKt@Kc!fqsc}*!HWu9lVf-R<`8U?2EwW0 ziwN$K)gY^>*kIju7RA#YjfHiL@z+PoYRAgURwd zg3ub{$h1_U4r}*AY?P4e2zMcz4*wEAmU+%&p^6$$Tz00mt0(pPRQAvEyOS3aMjctI z^0Gj3k=L-3gvY@ol8N7+5H3O@2EUqhl3QkGqSlO(zK0P9*+u_f!i(_%t!#sK+ZM8X ziNRBT66q!=uG1R+327esCa(~~>^1^BwK0R{!&``QAf07 z(n4qTf{js=4Bt;mhA~pYg}@&#KssL3gEQRJv$pgq|p_%i7QSgGx7_y6rXpDU`vOP!G5x#}M6>EQ{V z)u4ac+dLy+CyH(sZ>MSh-G+A3EH;|Wv=yRfrxF`gU#B8VR*4WfA zJwNZ=e9wCNQP-e&_gK~MOb+31Uy?#jwAFT)n;pP>M}+E^Zzdby{6`M4Co>083*8aU zsNR10WPRK4W1i+cWAFU6qy;EJq&60vmly-qYD8nN2Id0ih#bwj-&3@xYHq%?hy>SX ziCM3u%T}Az(!^9X#3Y`*aJSWC-)RjO5=>_jg?dqRBgKr*xQt#Vp}OoQdXSXOV^(8R zVEYh8qzj1&em`yn3w+EkVm8xK3&_e^98bc%EQzMd#0kbLkbLy{wjcajF+$(gQjVAMT^@w|xbzti zKVu=Kdn=pE0lb*WI$DdYEkJ&oFnkXh44r_Pj zRQI~?x@}M=xCJ_O7iqRlwp}PZHCzM+VrU-a7-`Z9K9iJwYgO&s91S9Ex1&rPO^jnp znhAb%8o4=7C95>@AO7n41L`M{fLh*8tuAuy!iAI8l)vLL^Se%F3vU&5Yn619`*#z( zP16icHsttjp_SP3vFw%fy2u)^>b4ma%SMEZx>z&SZev;}%K(mm{Ab*-K=6b8mq#xL zpN=fikS>lyScE#;8S8A8Jct(MBBVK|7Rhch2K8&wm(#0#SZq!3p7NROkty|=J^_&o zXJ|M-k$nuwZ0X@Nb25{*AM)HcH9Yp@P8q{=NlU{rtTu44*VK<-(CuY7h76mDP&xNeHz=bKHQ($ae;c@$3ewLtRBN90l-ropGf zA1*U-pVA$4dtue8;$$tY%8~2+N|O@BrV)g6Gnma63mV2&C>Z3>bKE$u!kG^C)y^hX z6p11}=)}xpl|8v?a9-6_;)VE}67qfkvcx(?NE{UTEO-_2DxaHUQ(?0PvA+hmUq!9! zG}{@S5^m3RJ|6mKR2k6dX#E~1MR);HM%lt{Utc}@!2QQu1XYDe-(RN{x;`Med`{2K zIB3w9?1RBwAtCc)d@8iH0Tl_so(|LIy*F-7{-g@Zk2Cp_Dag znqgz{m`-nUHb=ph+aAjJvN+}cO+tPge% z2JAG#1X08Z`RsyZmtXaHbN4V#QsVlEDs@90UZLK_x9fuL_6gbd_vu{ zxw0AAx{@&)2a55TQqK0F=80azK77WJ>GGDve_J9aTaYUg*sg*f5f0~WnV!3=>%^(E zCIlD@*%@1BR9}Z|(341f4I_bhDW2BmUIt;Tp|6@nXO)6DHlAIUK9}WYDj)BZH&wwy zem#q=#W)UHtezZ-vgsT7>vS7SJ+tK0#-z89*+y-?7a%eqV-xszE#}%+w=Ez!VSVZm ziXs#}Tgn3)!%^hM*yOh1$ouUZrrGO+F>rZ%8GwT*&o06jdJ*xtp4x zXt`DAM^ufeLBeFN5$?hH@q0;?1(jOE*$vEZMmZ!fT``{yulvU| zp5LSbx=^t73P8#`t(AZSGF+iu;z+GZc>#{ReXC+SznHXD%#{SF`KClt2U#XXhhd(V z!YQIl!+%W4y+2}$SNu~t!8Kp2Cx#)rz&utuw(2)TjP)bFmQB0?V$SByZlTX4EVi02 zH%dTawWatqWQbY5QelaHdx2C}WbY=rZ~n?&k;%OVg4b`rmB(8Y7ZF!qtIRem>^yDc zQ#B!G)qZRJ8GGxLaAb~Ud8YR1{ckkkD^(a{i0o7*|$vQE&kUgVh@2XRdZ8va&H2Ui^|w3=36zIiqT}`RH^)d;l=*x`AeuTW>V6bCEsho%ojkjAl5IKosqVc7q`2RIHaA!q>BA=ZG$AjcNc&M~J!7=`Smw7;PNu3kT&_N}Ab=)+f%TV&;ymrH6-_IIZl<{mw ze%;j2<^s=<@lAAiWfdXOT=Rt)`iBA5Y8&}jcq;~#R*DCrjw z%U?$$Q%%vT%%ERM<>W?8+CzV12lr!7my9+yzNv@yWPegL*>~X4ixs0?z-%g+_dP18!UYbj<9ip(|6v953*rC|Y#R++=BqodR zz=+hdm7~eZIMBe^bCLdO73+Fejo7PZI~(QUSDt~Kj*8sq={ed*?1CV&w`_MF+cOPY zCh$w`3XoDw)-IpzQMr!MIgdB<@~y_MfdpzLQmD!ired>;(B525>%9PPO4yRG|Nd0@ z#Zrczd8HtsO)!`N32k(EYYpi^$0a6pQX%o)%*gl?cpfb~$07W;g6kWTd`nTCn0=wN zo{#`bR~TcwhlL977}YuGxOLMnGgnoFTjQ}$F}X1CGo2#BHJK>CLliQK+)-Ek`1#Nw z-VHhi=}F4i{c+=+gKZ;Hb}=2|!x9Hu)VR2QW0IfR{I6%7;tj0cRq@Y*<`SoIG2l@$ zgg*fU$5mNuEGtVe@M)ot@mlC7?EFIKU|tqX&j#8V@^2v>^j<4mRUgi>NAm!k1@P0FL(iFf zk-thO6>)yGEFoZKMh%gsXNlr+_`7iRl_c8Iw$~?-Xj4{BikuSkM{a}+cz*Jr!o~|x zTx}7_3@pU~-;#YWm~-?vt*Y{2Gi<+U*)XW0bzy~U0&Hh+a+{=eCeFzfQIYbwfft0Z z9D`ET$wt3zQ%ye^?lqE_)t#(&D0+*Oy5`1ulh{>8x!`{0q@BYChvUaQR}?b(O>*Yy zdh3~FsK$4mp_agDqy+Mi!R}l23%OM0<7g3yaq799ee14}5YEyRyU~Gg5jGTQuC))w zvktbwb+hiTX=2Ka=ruVfFBxPHW|_5Jzis=_e{~;c$hTQ$WZ8mS-MeIAAgM#ORtdjG zvFSQSTZfJjEq`HFe-*B;Ao+VH{#)D6UIoioHDC9V7G{Na94A2hhU`CYW>o}wx`?$Du9KtieLq-=DX+0FXd*}|bs$47Rbj=ZaRn&!^dR@@1S zk-KQh49ET-1yptD)Ug@Csby=Wyd>6w-zeQCzDXyTeLuCam@O(QJ50aoNGu*gEPqa| zA{YgTV{=_x^W}E(yTk~>Ci7MmU6eNJ{qA)oW8~AMV>!B>Gmf7+wUuNP7dw*~iQ>Mv zdDeOCC^BWORU@o!+S9HKjqQgK9?$R^<9_|dM?0Ya!QNu}X8gesFN2mDR!cblyHWpd zL%U}G!hY`f?Ce@I1uPksk+Cb|fVfg@Z7H*&u3(P1dPwO7Dm$AOPA0AB@2Q+PvGWL7 zbpr;f-beytxrYW9CADO`HanfH)A`Cz2;&5ohr9JBMH3iyIElcq!q$D&potzRGjV$6 z$#jgo`CVJ5^zVhK$tA8w?Vzd^BEtFR$Wb-O4HX8zgIaE2?cn7ZQ;DFvLXikvJMt--e_og_`8 z4!jtHigN1I$yrg(3uyd7+6!($E*WSD9**{h^zRL4-I1Y0_CM?>1)5l^n9Ot+a?SHT zv;Y3^2~mVZB6eE?Q;kc~GvxPsvXbj?g&)NNjUTM@@>YFLHx7H%Cpla6+{&`Y6XVcu zuZ}9p+4aurzyDFdiFaMRKP(tzQ!m}huYzr~^i6(0{zQ%(jQ#7P;EDEkw~X!_WQLQ3 z-o{h&c5i{vAekPHnY|^j4ssHp0q5ZsFYJlkBYNx^Z8{s0nQKG|Ed=OnW#@-?4}HHj zX0ABCX(;VzExPJFn)bNKL*HI1t*VkhZ&Sa@_`#&OCFv>{CLeA;n6h(qSs-NQ%tFh9 z6_^(Lm8mogH@7sXL*)|tlO!TNr^4cQ=f+0D~PokooD%(1O@GKsnkh%*X6e=fuCy&q%^q2AEw30IJywOsn%l+66&}*jE5$T#HK;S7-x2yuZxuGjkfv` zH*?#;Y0xs8&i+d5=7q;vW8v4SwV&N}^@l$3jjCFYY)nC%3^YR)DDCEYcz83|p=So9 z=ollqcPf!=e#Hj7P9k(~ZGoS%Tu7mwsj~aJ7cyoyr^+wD@2Q`sHK^A%)9)HQy!ztB zqvNRTojVb%hn@F&oR`a;nN0gl7De8BCC`k3S>b7gYY$dfd#`EV&y`eEEL7Dl6_p>f zQ0dM!C&T-qChmWS`P#O^_9W4Fv8V{o{b8d|30GZ?Ha-7dls+bjH0xBPJX<>BM+bh2 zl~@@|k$SANioIJUY}hWS%+jB*6m`U|zzIx7+aNgfQ7$@*%Tgn>-PZacqj!AfUa7Ep zJ)v~ETtR)>*80@bL3ry*la7sMz5lE0K(Z(5{*zDWN3mGApa6`9(=zhaj#;(er?iKj z^M|H6s-i3TtpwDoI|=W5&zUB<)?%>lQIgAAuAuDf?Wf?L@qSP zACh@Z9{LI8Q9n2;sLpXIF^st0qK$@n?yOoeASV$-qO*O8`<4v4#dICfkJ+wL9c0l% zKAB@SvsVx@r6v@G=W2P-{B-29G|wEMC>n8k!W26)1}odMl`_@`B)bT@!}idWIrWaz z3NSLFtrrarhV5Ec-SSvzIo1gktkRW}2oL9RttRfUYW{#FN+^mlcfvMc|7HOK^;lrgjBFELKoxspQb7>X zB*U3h(hP5C)SRznLr`hhc>9oZ<=bR&BINI|KHst~pkJlCUc+%q(S*z?;p>oaI@2T0 zGuqEbR#B5IOsDu`Of=nAv_lCAY98_@a-tSfCP_rM;feo2V0C@$YQODW3(Kxu2IpQA z^SE|sA{Bc|Vu5uZ>SJ_<$TsYL4R5^=zv6Wv`DeLGbov<){Q=Rlzzwd1&X7Zos8xQ) zb?%Znq8Gpw21mF|U;dF)Qymer27W~sMj8wa=9o2krXmgG>GeVA~;t z;QnmwY4B6ck^X%gy<&m<8pI5htLU}J)+*^EQCjGsh*uj!8mR}p0BoOw*&#@|L3gnjdBN@0v1k*${SwJ)W1;}^-VtK_i#oieicWJTsp;WDgDAl}we^MTNozUh+ zq&2Dql7n26WVa#?N}9X42y;Y540`cRr&|~L=6D5-Gd7?mi&1@JedF^)-B#kqyF^>I zW?00XS3a;L#msX?nXF!$%wF7LF(#Z%%r??AdVn*++T=1JJ|{ex0Ory^55H8QrpZZ#ATWs4=3qRzGVk?-cH?za|6#nttN%>=d!ky=y?r`A&9J@y1xer$z@JU;0M;q+-%#dH?3zoUedAoPaRerqOi<0GPpwO z&MWc}+CPc@y`G)U`7X;*j(%Wg&|VRKZkJ76Nv-MYebpekNk zDKaEX6ce*#ryhYUE{EH$N)z7>G)_JWnzU7#Dn~ZNkK3k-D{?xRYpAp3e5>gjY2}12 z8~~jk?{lWFtzu6%){ayhQ^{cUFQ&Xc`(9ROy<91e$&{uK@v4(xmF{2hi}i+e;kZA< ziP}n;t5y7*ZZ@KZnidwUZh}#+qVc6CLyWO6*o3HV)Z>CJE)abXv_r*r8T;40Gnz)4 zEE2aWi~Nq^EoO#6#v2j3#H!K}X+k)8%ED2T{!#Ux2rAg*rFHUXM_A;EA3W0qg*j!0K0H8jFu~!#NVI0P`yVz z*f40cR*Zm`f%6NH1HKqZ$nW|#Q*4J6$*R_1`Wf25Q~>AN{Kq-?<7Ps9t_5ue`3}}I zo#RtaM4^p_^qdOwn0*Ev2r&{$5g^zjGSQ%L$1W|`RG|wX#662MeB=8??psH3>Ug;5 zzwiL9mXarYtM=$stKdKQzHA){o1rA+i4(!I*_$?BMP3Du_ryhUU<-l`8;HiF4eLG zq|~%PYuCdAc%D8@3#*JBk$;nrC4S(P*I24v&?BwIhsLs>#u4iB4X^(oc6b5u5rp}} zG|DP2>5D~At!-ZbZ)%EzL8ie_>_V1h+OaWp*L>cc{qhWUJr7OsGOSV^cY7D2o82$g z1{ILQLpe{^FKN=OdaTki1fx^JKHV$Li(w2-C~sJ(g%ccW(djf z^TQua0vdEmw`U=iYPVZ3d(y$2rzkopvf<2JS2?(54KPe*3l=(HLh3+1s$>~bpFaJ) zNi|)K&Y^)FS(;z%Ce>YtA0zoMiE@8IRC)F=$JuzJt19}B|(G-}p0@yrBy)$8BPYU$Pyhf+Oh}dQiX#~Cq zp&E*(CQJJ494zItJW7R4kG(o*Gj*~RWi*1GJ) zK$31b*M^2F=S%g;Pph5z@Tv^FvJ}zGb-Z&WRbd*N_UG3Ss73Dxj+u4)IpL|>F}kD| zVttRa6T7>we;)oS!t*FYZ+fdPu#HaXqz6+uh7hH55ziLiF^NyrxNS7F>+cI?7D`K*K|C`&N)j^UNChfhK1bg0EkxTSf_VU#_t_gsFJAz6H( zp()~wI>o+g`rFFbf%c>1n!-zppzLZpwowZKqu1MpyLg#-Q=!g?ce@&RlVIY+5 zM+rk>UXq3KRcf$TvL=FZ!fO1=s{0!+fb3QOQr%i6XH$v2K@~Uh{z%fW$n@oMc2;KD z8+sPLfl2hnbielt*S=&L-eM!gkKo$TGw`QHXQ5r0Njw9GR@UOh+1b)Vg&uG2Np zyf5rg#W9rIpR~i`DTQQRe3!N<$eOni%0OB*MxON46+lF$Gd|gU{Wzc z@RaEm@1zP+?je|7Xe(1E^ZSWOMp`v=R7C6A-gYpXCTVT4%-*pL>nh^YJOZ=c`;Ul& zPD4n3pTXfW#z`qBxikj3)j1JDLyN8aSBIsddNQ2W1p^j)1;%If>z0}IC1uU$%TZ~5 zIKyy=?T#@Jx?;sEi z;_i@Y@?>f=ANniMwH&x@Aa{M*c0JgLGH&*LY;Qg$8NzSjd=O5ua3?4Wke+dO?O^U>i}Pft{6NZ) zFsw3UW=VmairLSg%f#*=cWTUp_E zWAl}r=bcV??A~Ef$Q3CZyCq6zbb-uDm)Lu^5)^`!PZk>1V!5oXM+hc^bRL@GCYpD1 zt687E+>aP03?8X}%Jdd}d-_?F$TcKmy(%W*{IK}o!jEa@MDYm!I!A{@$b<;Oo;fSJ zdw~mG-!J&Rgz#2>F%A;44(OiFyO{2U?m=tSA2&{wkjcuqXwoU55@%7B`pNWQ4jIE8 z$*e#@MoH-F8kY*eF%*vc-Gz)?^3SQd1+r4fLNPghf@V+GgKUr9Yp!hR7`+7n?`oU$ zC+j#Z^Ekw@00uQf={aSCb6FCfWyCv?2xt%KS2GJdOTu(lRbHCdC1)3V-EG>7`#XPX z4g@YLI(nq>Y3+8JlPl}O05r|3t)D(08hq$rNxE*zvWJ)0bn~6+u+;rlq30E3mHQ2X zcd1OKpMkSa^p((Swv}@@wdfVdpNvm(W+CP;X1B|nCSX?kzeMf3Kp#X zZT{ji{UFV65g>X=NhXjaJ6D|Dk(!prMaWjwl#V!L~s8^W*S}!j|b5|g^4+l z{k!|L^->4~&0msh)1Byc=4+Wom5^%9jkRBZD2MY0ts1>K&fhl(dNWXO#)Sm+IqRdg z4d!T-de!r2-D-}lNCNv+p9kNqg3!xN2qQ^|IKC)L(Z=qH818y=EYkNh2B>_dCgX>? zGUC!+y5Z)8?aQP3#3jnpv%5uKW94-1OdEb2W`4Xef>onWa1<(eQLj6-%&+I1QL*og z^q`DyEP>;1)0gNlOLCC=q(7#I*jfQGDm9ma{DSMNaM#`ogj|L=D%}*`h~!O5hB5YQ ztitf3m&=^(UN$zGdt+iuDto|cif@-vwh43Qede`t##-~$QgmLolmlil-$`G;SyIOL zxwId-#8%)Dk@z0V90B(9(!xd`jnigZ7%<|uN2qRe#=@!g?%Zc_>^>>O-9LSF1F^9Q ztHiF$Efj6 zSQ(s^spZ`=6MJ25VJ<818AsAds15~F=A#B%eL76CebgC*WIxG*eLiOqglL8w-bBWZ zdBn=7EkNddOOCYLJ!FRq*3d9kCva-Noi5bKcJ}ofA5z@y2VE`~mEf`Xlc9u3{1Ro^ zc`92SrX=T&zbNfp_=aqULF|)k-qb0>gh47Jh(8hw8r>N^=UB#O^=gLT`^Uj$2@I6{ z_CsgWov2c?2zS)Oo7H49(#$RQ5+S~S>PVv>vJUYJMX=7+rabkNn1RbfDp@*YjJXK6 zF<()+sxbWf*P`!!H~?J3&icLG%mz^;qrPx3*i2K(lw|)WKiAohj;xT(1nQMdVTCjsR^FUtav|iZ&RN7(L)3hb zgLw!iFucJ6;Z7n02qQ+N=8CG|W?@Sj_3$LkPHLaL=RcfWaWsz)M_vh7h}>ud7e%4N~8H{%x}s#F=20TLa@(QV>Ct<9V4e`qtL-L zUr#dSbiQ{sNt3(0KipB}%L0KO#5I*ZG6WJED%hZK&A3sX6~@%&zKRXv_@Vj@rIq}m z3jQBxXbdXu>U;#IdF$h7k!%yF`+fT)GE@=8>cMdxgTp3Lq+QR>8JWMOu8rtxZ>=1U z-njd5yYVCsWSY^fwh~t~(GMgfmReP@-H8m7!~HJ0?Sf5VVyY054X|WhQ4aEyZm^K? zzDXfuRQerGTsFW%B;ZFYln(-m%u(# zK*Fb;55k#cWM4OfF&Z(7I==`L;U&osGS6H%c6pvoQ)@if9f`|f5;ug z<2^7Fkc_YRaIj*OLbf1;Iagw6H+(6^n$9Ir;J?5pg6t&-&An!M7qZ3Xs>S8{wXz$% zny&!2V_ON2Hl$PL*Z%&j0+1z32P0WL5&P{^ z#VNYg7)9!{I3r2>cfXv%@I=oJ6()*CrWFnr+|AZS_P;yCcM$01Qqs1UcX;*vQ{jAc z3X|Gj2|v?3-%r8?N}kI(U66=HD#z8Ey$C6)*B6Z-zI|BpYr!5W`YaBFT9^x6PuHA& zkuF;KQ=@M)-P-fMa{_aGBgIb*g60Xi?TOIG*H9qdfdjp?Ybg8$=)fEvmpy~SneAyb zn|D;pQIFSNuF;zB>MBu6+9QCyAV{Ho+;xv`zoXR8H|9-LQu#%h-^-iduF~AXkTxq^ zB*-;bf11Dg$(+_Uq($+|-IE^S^ON0{^A`g|YHF_UShvwBS~NE9mZYF(Cj^g;d77E+ z1cfs~fnZ*Xs|_2@l!{Xd_&0WJ%t=#QujBpuE(!wYm2b)G+k5%XY|=i7^5Ud9fv8%K zHDa>@InovIO?5{;a^VYgMC$X;r|9D0mS0)sSP@co?~XR;<;2kSSxjBpCod!)k_yoR zjBA90gyJ-b>_}qpi}dSzG7&?AcZn75D9?+qeD`fjgU@hP>?QZkP;Xj3XCoXqeHqxL}?i%qv1ot zz|q|?fBXLazW2WFcJ4XPd7kGTrx)fF!L5F}n)yXa_5`e&RFRJtP74)We%|ln=O&l zUaI=4FXHFLWWIh&FW}Bk`YQg=t(dV;@(P&mGdZM{AO`C#ndqqR(HKl@Z~d6|ZMWcA zrN8n=Drp(4#cjQvfJBBEgr`wKPiIf zrXm!)3udJ@n4#{%`PGA6W%?1DEZ-T#yx=5Wbz2g|Ao0byvTiu!4AcX-4?R4K|8Vt(3t$D1okhe?kaQP@ken;Jo zux#-P2oCzwJ0v2{Lkn_BZ&au3EXd7FEcd(k`2)_-*Qo6v1#**kom8}E)Eh%VZMPXV zs+xjS=(8*Go^W_96=F33AGBs*WJn}=J;Pvrm)`oMQTx591jg&k535Rqp+{GX#-=`| zeABy6dGWqUbr9(B2BACkV(Zs$#`)00Z$UR5_Hh}Q_hRf6E0M{b>U3LuZDv}H5&i23 z&RD7`=KObk8oEpKoH;5u)Xm?n!ANmZ-PR~tQMG?BI*f){IKk>4j)Vy4vVK+|L%o)@ z57+^gj|yov*M=yM$rS&z3(OrcE~epAm-KE)XWETuvx&3meoOIw!v|@=QcRRa9@S`i zD`ZVr*cJB=P;$XidJb&eoU(5*k2($cRX(}*>6A@6L&l!BJ8)rCmf-%TB~j5q-5}Pb zStaU6R8Z)7XzxA~Z{XR!gmDUQH$O`2T@|&~P%N)TcixCsrW6+(#^k-F)iw#xH!?Tj zf5WPNFPwJ&@CH%jGJo+)_s7GZ9l&P;Sd#X@pr4?0}Zc6H7GVfkbS&xg|l+HXi2pLy#W{fj%GM%)cl(5Pi zWZyv7=sah)=Od9Z!V%7&mXFw`<38v%(&wJ5{cQJJ?WKU6pU!%2lxAR+%UJi*+S0H& zGP^y#NH|vY?TobI#}5%1V_%-OR&WZ+gsBBRwt8395F&UWSnls~0gkW5L2az7E}8th z!!{4Bxkd1!pFU{{9KtaJ`$>CQi7m4J45^(_vhtd2Dt+92c&`(=?Ot>C#Vku{pUGe8 z;EAQoOUJg_(zvzyMv##3K3>u|OV=qpJYQijGsi&TFm0st7eI*b!2mHqUg)v;4K0^V zZ_#_$a$cSPyYxT!Cbx1n8j8gC;_TwnQXIHX#)>UXWIBt;pq!_CIel27Rz5T+|N5^s zNFzjbD}%&bEi}tzhnTsTe7im$Z*-G@h|xP#7irj)PC&0IXN*vxd_WDke|r6u<)gt* zF#KCa#bVRh!AR=L)Sh_^{MYaILh@>qik>2yMi1X`aUAC-dfU@5uj5{u7Q)gvf)}Cs zx!-J2)Nl3!l=9nV;rvO`N?j?v{n)efc$@cZg|B43WW452?wIW2RvnezwYMo>yRxxo zPfj((FLFkYsCf2hSaN|CaxZ49b?-Ul>gGDNU&hJQZI{+)wsV&vwSyj82K_a3!p+N4 z)*@{{!^N427~T1&k*R&5 zXAYm_ezQG$8kB;W;)q~Ydp$r<)4{>1muyTBan?|~@sZNUE546|DmjK{R_Qzu(+>XS zr|Pu#DQof%>j#M_)H}`m`!2>y_pHI&-w0as<+A+Gw4 zOGO;4PYWSgKb0sR>y#byXq`bE!h+IhhY;rNS|#s&w(HzfB>_$U0Fplocu=w@4<8bv z(5KS`y;ng{P5|&0HS+)xM{paj28K9|d|1Ajc&S@=U%8|?*UatrH>*_pK^)b6<$JM4 zl26U4JR+=bYXN{z9pS{MYn~HFpR)u>>5{iTwn}u)Q>97z&p|#bAj~@|{hr?o9oUWC zK5FH0$)ujZ^^+^jQ%CssV^fss4WiCThyXBDQ=O`BuQga(*OkhA{j@la5r#JrOT*)e&OB~1OirG%46AP`aY%%C{e>`6vX*nscX`KFAgY zW;-{kILEW@t;TMx%4%PfkAs&EpyjCLXYC#Pq%J+pe*_Gukzm6hwJY9Hn!bD$T7)E% zgRSFnwC)$dN3j~I$p=QBe&Yw|1Gaj^3w?!LvuoArD*qur)O+NM(s_$W2PWR6?G`yr zrLSoglqw{wCCNcegH30(W^+dm)px_zzQaA9W!qZ|rFPM>KT`{FS$=H6W@JNF_CVo= zNPy09{P1gT@IQdT;qIV;s)4h>K+DTdTkn7GFxCsV&9{qo5iKN;oo~Z~G)j(QQuwuo z^hGv3SB{@MH`^D6q~Go6kqW;1D{*%7Blm1YXHxfb(|Xn7EJy0^d&oB@(;5}H&bSo3 zZJ9|;RHVY90*~KY9&;r7F!-9o6fRrB|B0*VdUp9nrJ|22*8Jcc;Qz*RMUu6n&_xdk zsar5NR~xTVav+~5${4;iSLQ#08VF0PiHjT3I6N@@&|9%S&S{ksrQ>M|b>n9^AXVR< z0qy@SRqE6wy?Mo4yzD*a%+^xAmBSKayAb5vM9~fOfIFgV-5sg=SvCfulA+x!cSY_q z&Xs21cTO(lJ_5wWw*hCp4ESNt01FnyxtCRSWGVzrHO1ZYlGAOx=F@(RD zW{r)VsI_d$d3B=86HCxY>~jz*sq`P=`VFOGA4R+FxtmOtFgP z5{p3A**es>CXb)Vu``cB*TG}|;UpV5r*XO!d8f55zhJemr(fDtmM_&@>=~DEONinZ zJdI;)dfYLYA1Xbww&)R$KITsOBE(tzgPYfP%(vRbvs=VLfN9ep!GHxz{xYU8kla{@U1B*xiA~`)Hu=>A3sy6JBs$kA>a07Q3Ek6DRsl zVdPRM2skM1nDD=@%OPIBaA^hT-n5rU&XDlJcC>lP0pVSOSJ&~BiWSE?NX(+hRfi}4R+GZ(+xk#Xr1&jGx;MC&Wr&B7zERY@1Y#LuhNJ0X*?`+;qsK0FDxqOlDBdd z$ER6D|D$RXFdjU+piX``j=9CvqO&hy2#F_<<}3xZM#JYk@z=MGx=gLr&V$B%_4B#( z_jo_s#RBL}`UART6z%rhRG%SQ=6QCu?qQVRYg1`0k#4+ zXUyxbesgDb{3YP#1gCAe?hWbt)~cgjZyRny5jW87@dPl>?VrOE{(8tiz+^+t;-9Zf zeODsTSs4B4@$I>*W*=S&f5egEKLB}!>iLJ54_%fdkQG_4aT3!+WHs0j`R>Z6XeXZY z>#f2)hv+_I!qvd>c$wkRJE0gJ^=Q>Qv8~TS8Rs(mq-bY6`MbO8Q`FrLk(`m=O2e1Y z84^z7f@|njko+H;wM8KddVitoQ^f7@7>UmdlWlVSr+gGjcVNE=9ga*sarT8~QOzXC zFetx-^ozo{fR{fE1()JTB<$=M+aYbu0SHwfd|Di^i+l8_TCmu;j-lS|kD}b~ zZz(qo2%>(ksZ14l9uoMB$Ui`hw6->w_leVuAGXu@Z5BH*`ZmQbFl{dz0Lce~j>uS-s{q})7It^TR?UeVq7zbK& zCIm0KJ=?&QkV(Jt76L9VmQ%mGV)j@FaH2H9*1I3*aMPx1#81+*ZbI7X(Mp|KVqX)j1N z?xq(LwxPD9Um9*Ll}Ybw3WvT55jZEOL}KVIvz#S-{)Qg4tAFYJJRj1@R^h%fu^1t~ z9tEO1hIyn+VsfXsM!NkbApV~+>1XP1f!Opw|v2> zP%eF07%kiwJHt4DMjj1xGke{hS^F?xMuGpkN_C&JkoIDB+(p`r`x-Xz4*r~&1(AwtDt0~JO@`P%)CNN7aO`Yc`!uuI%Rc30)0BA5`6Mr*b*ARDr{@Yip{)8U&uS7 zBa02w!u86=AcvT;eNNy^@Y={`o-O*UyqSZ%TroQGNWDR5>Hg?033|vR;VfjPin@rN zuihnS9nT+3QFC93M-$@hn8Cvy$`grLg(I-{v~Dl6`LDYigi3DY{;Oi{E>y8b-4@$e zbP&tBBVh~0`xsG2Fti!s@@w_w4bj;?O~geDb!!G|DIJm}0jwfC&S=b15-Duy*_53I z)NFTr&s`|^U0ii#4h14gz8)MrMqO@E$HDoV4tprRSsv3C-9OwTpKmpQF*P zj>%87o?BRQ6AwM-pA*B;-Vzod31hu`JL+x?X5RY$$!m_^Z7z|8>vsS zydXHO8d6md_&J^7?F7-URgJ+H1r$-5dN<1d%^M>uGeXG4DlNp7DRWhbMXv=?ePED= zogWw-^CkhiZ1A*JSF=Dzy5Gki8os2ZMN$SJNb}V{z~_WeX+_`h8x&l^<=0x~4dg!` z_T_R9lfDA}sGm7DqTSDb+ComZ+XMdr{)SvB(SM3I!M!fmXYeAIcZOUA=bhpU{}7FX*Nrp=Tl-Z#6I#15nXh6=c6Qy9;uSP~9(T8{BRc7K3LUvUigMISQavkf zUP~VmD_{o;`*kDtMD8dSitb*m-Hb@MGzE|f7RklGF$~dQ0w{Y;6{DC2yFWmVDGVN? zxj;Bil^|&Uy0>3Q;gDF&r~)s3d$-3~Rx_Pz2lhC(J)Ip#8D*4@FDDWoEybM7m!e}L>jIUY!#Vs(?VwqE;0^ssv=Wy^aGrq z1bp;M(a4MGk4TOi?f))8sU%{gO-k%;)T|CHg>=?89SWxyqDV{$*E(KFFXmS1;;TgX z!WPO#!)|3hH;^nY!GdJqbu>}FCkX*qHb9Pc-3y5Q+Ib>OZ)~k6TcF+%b}yBG^$UwM zxGmMM;{7AyO6ay4^u^E`hGY&t=M~P*vE_B(`39XQl5()7^16SqZ;Jg*t1dtT)H6wX zpEi(^LoDJss`|acHeVE#9}&vw&iT$!^7|Gzg-Rb+EzyKI-mv~>V47+?(L!NvY%{^x z>L;>r^hU;>eiQ(KQ*>>WpuOmzH=3Z~eTMAn;5+x%aZ+JT+XSs+g5@Z4ZX$R3_ey-) zjMOe!=Iklye3D9F0?N2YR#Z>zR`I4Ie+z$7SBHN+yHznyj;7^dzO%l!-HNrjeB8$G zvea(!x{38tSFVa|k%Hjnr)?5|S-LnDAwddne5Nl2rS$dZc|w7!fNq?Feke&e85tSj z*+op3SYvJ826khyK|hkX5|lsM2i~tXNxBvfk;iVSI*sjr$!mEm6WJc{b`d8d_L<^KpezGI9j9wK6Z5Pyv5J;XeOu(h@qJU0D z`|tP2$QkepMX#@<`Jzn2-4C@Rl~D7Bqz~*oulv{R@4VHB(Aa-~RDB}u! zzdSvk);S7<<=eFTrhAkUHYNI-t^w5pI=y{4+4Ayul7E0_Tvo)mv>vxfe7S#4;+czk z&IWuq30{~&o4Oh0+EJ0nakla3@505$<|I)`wF5mGy@JgdN*=zSsf4LLhfv%NTe#}I zUbp)Fg;foedHK^6WJ5mh8_imO!59Fgx)dGiaOSJ9hQ=V^&E=)j%x|v`>q7eV3EhNQ zZ519ibXj@_QtVbAyx0-|+VUmg$go8W7mkiGSrr@4KNi#J0VL> zYYtsLfG}dPf!qH8Q`6PtAE4>NEVFe#27SzGz?6OTg4@m=u>V2sQD&-?>i+QxR%4S}nc0jx-nD>!{0%4yH;SRj zecVctQRMT3A}a=>qlRY&UYF{h=2A__cUjIDW|6+cw#-WqHW< zt?xtcI2)^;uKI|P2TvtxH^^nvu!!9;2O?98;+}i)qY(uH*=x{kQl=Ar#g+UJ+}%pI zEsWUN;GHJz5 z_Gxph(u#alHmO{stjILCnKE_HxBS;D5_(NKx1y9^1(^hxBS@>B!vqbeh>Hb(4z$4- zc^itvlm`UdE>b556RpCb9yiz}A)$OQ3CJr$)?2+BvN@R{CKmi;F|5lK>@z7V7EHV7 zDWoQw(XWPsso&iqb=3mQyTz*4IRsg{*VI9gSHSRmX}_p_5~n384uyW z^s~k|J~KDN_9*1hvL?z;Qm+|*-=U2cvF|uC7>9wB1dUty)4N(pX2s50F>+nySXDz z>xp(XW)#UdZN~|}eHLE7qZ z)A^^$e*Q_1w^ie&b)<}22S4rVn zuoy1C^b1#gGvW9~+P+WZHzz5E%rJstz~0K|YUk$^{d;bsK9!R6XTk#c-hm5UgGWC9 z06K-9ESAzrqnm7r`6euE37G<`c-K-$CT1%)!em2vHE&zc_}`mIiDRinX>h?!qR!H! z)1L~cU@A+?ALA!Tg7Vf>d)G`Nzt`Q2loF2WYF+X1S+9+rRkXLCI!zfrbnVzy7@fKQ zq0*9o4&YEcDe-DeImWHhq_(~3gfvoK=&6_=-%o^BK3MT#@X6c1UeDX)kbQF`PxbRV)lt!a- zTVR#eqPB`%xxC);iF-Y}n7!1Z<6RoNkCgRoQc?}+TpLA&J@h(;-3JBtJY}y{+rVJYr`qSoA00xO$|5C;=%rp_@>>uTMg*Onla^h~*s(lG|2ZZ8k z1d+JTg-24X&Pykg8dZwhUNfnJK+bI)+w8Dy{PC{ zct->RVg`_MqP;WH(ICEVLjr;@BFNcxFLA(iJ_jHggOogl&7Cz7yQfUb+C@-0V(5Uk zXPb&ogV}kZOO-5FAmE}SF4&^VM#e6qNDTYsKBr-D+nOMZIpF?AL7`C9+)0x$nhQ+4 z0o}gFQ6d-0M+8aG9rZR>yu||xCs0P{c0S^zH9A5bx{B!t!jbf1pRNjsS+*a~GRlQ!B<;E{ zik?9jVb_@Q5jN9ZW>eUrJJBf&a(TVoORNEV5oj?)FhA_g}$UZ_@g=J93 znqP7?F-Z~x4;<(xKAjZ+YaE@@@H*K*QnsvaOQbd9PH}`2=W_{@J@DdW^B<=C^q|>A z)t6I74~p?r%VLM%!W=OaERHCP@?Obc>8Z9;g7hZ0H~H;yb@Zl9!amd-V%jL_Cf^l* zT%7m3!PNP+dT(1)^So#)-K9mx7uq~qw670Cf*1j!c{Sab6ikh~On9$$YPCj1N#wg? z^M)oq+12zk4-e)IKf|H;5cxKJy$uPl!ZlN1px)Dfq~q@Jv`qGtD0)H)6r)vW5M{yG zSe*$!-cW)S^*;dg5~(RBgEJ7sgGHg}?m{7QB!;rS^(OQKT*>4RT;l|xn@g=CaHpt- zt^E|CouiJoTpS}Jh&qH_Gyfu5Ymu$|^}n5UW}k8YJRVxm2yB?S^I5vDWBq~ zr5zO7Ics9<{nZFuau-Il;e!ngQqU`|z^>~Ff@GN=5~Ynh%n+6Mes`dEhw47YMLNtR z4Y+?8Yg}GZ~w;J=rUh@ zXSPy|ykU@AtpV{SxK!R4vq%ZdZ)rHisHNoauhmNZ&e`gz=8*JOuWKg=xQHEJ9&JDS z2iUH2-(sj~tJyK!O@Y*|B`9aN7L-GZWTOFT3F4ASOSkwwvR9khc<{5!&IBtP#aBH~ ztW{ThFx#Xzu=$2d@|?%h4H|T3N9L~sV~fVK6g_nTn}%2HXu9L+gXi&7e>YzPo@X_? z9+`=HQ5$jUGv=PT1e#1dy79|vE5Fc5DfjCr5Ohx8Q6U`>H;pmopQs*8i+y3ywAShf z!%yP$G~DDC6rJ_Zv22a*575Fgz5FX~WEz2GvKfHU+ond+_fv48i6By7=_)ui32 zbP|TCWzIaI!Bp7dhk;H}Ln>2Q&bKw)ZjzrE5b!)#vjW~QeneOrtfBJ}A8UNhCS2qH zV{Lyp=tI)fOv}(rrG@i*!)$xr0SN*&%HNM3_jyLL!Z20TTqI6vDK8Bn>2pk5W;eu_ zu2nf-zNx*S%R@>-s@+3U>gHx|l{DIY)xQ0$yLU)Yyh$jj^g1$XXa^+)6&e0c1a)7X zMOj}ZY!vl%BIf$GbBy|D-zLQL0(>SNF^qQ{e~lcvSi_bM=>7p@??RVIOq;o{Myl}$ zxebu*M2IfnO(>*QH~&dedp{kHP%p3YpaIj3U3%t4X8p+8r+f1|$n%l{7s?T8Bb4(! z`9oG8FUdBne_|nLTRw?vYYtt?P%rzd5yWM_&jg5CeQh>j&x6zf>XN1?`jz4;2{ z4mce^LsG7;uuJ^6N{TsITm({dEXOIw_nl14ZiVQ-nc^7{6|CPEh5IQ`cb$_Zh9pjk zlqY!6{ej2^ZxRglm#`jXHgdUQ&igL^`MfEvOVtr%^J`5^ys1D&%{B>I`9D-33v(|G z_{FN)-%~*3iT9Hh6n;ET(=7IaKC1Maw@>t(tSuV*OY%+X*ilrvdOI;OPjB!l;_wue z4;NUqMfeK&OOlZXj>_Lf=t^xn#zqSZS3LeM%`8-6dkZ_f-gbE3)8Y5jKuMjy!>0lEqDrT^l} zU5Bl#D8dgi!}=n5lRQ94Jvxa5PcJO={>Qr=YKzKE^0CRwj+Jj5i^0Ko+=yzPl2IWj~G*if#>9cKUA`y;jd2Z~_=a zXCh_)*EE*APV`U2t5 zGR|OJkg%17l7NUawetucGUes@*v0I7?y>Oihf0}r8wfvDl%m%pUXg0GWc3s5qFDkT zzuq9dbyLhE*aC#^dV3UX1xZ(Qa%*4E%b=YwlplGBZ%1*6!X+6yqOe@0FxJK%C3%}5BT*a+4z~&e5DjCJK>yuBgnAwi$}}!j>^*tuQm;goHf-~X7^G~ezPua? zxMrtFmTrsb*Fs1%4IeHQmA!DZ<*v?5Ky+3wbXFdwIy(vtGQ~V-GYfMYB_=>X2eC`8 z0xrYpZj6$z4cAL)KhN6x8%2$=#d~qM^pT}=q`dR7rKf)$8Ge5=k`uQlUrN*o|L|5$ ziPD;&xCob~=L@KHYG3fCH;V;Ebe9J+tiz!=R?)E@~D<#~%( zfus8&a)SMMDzU>r38!}{(&QMuR`0dZag@h%wchDb;!I__`n?ELxuKoL$$3|!u-khGih+R-@ z*KDi4IP~Z>-eY?Y^s#Y{0v9GUr#2;*&SfYYlZvQcV3)kF4mbp9;w)JrM4tz#q}oTZ za?@DTV~+9uy9{kG8mk>!FxHmUe)b=g$~nytf|PiG4~~_++BJ#tYPRyhk5&K6#xe9D zuuaSa92p{&wY}o~573-@!&%T`oheOejF?Q7(E*s{SkS43`zIDu4w6x{)_^&VA3kSd z8PYIZlCP*(>Rsj_4|`*JMs=@_Z33}mDug|DTAFnxSX84sMS!K(Z+)e1dxauVK}Mfd zs@%@aXE^H3-szSyqHOS=roI#Ydfjtt)@FUYny|sas;u}!E>wG$P(N8B7CL_;Ub;YD zPNT0h3m;B< z!rRLk#;8a0B7!wg179#^YS(z&-Qt%{(OT`>>Wmo^RQsgf{@%dAqJL=M?zp5){nb+* z;@5&E4s~kCT*I~`s$Lgh+U?J`;Ka9`8t|6lQXA)U+K1fh78|Qf#g9@+*l`%E4Wd!NdyeZG;>6o>BxU@ZgOP+0}ZkgUp`v{;|*nnX;E78tjtztek3? zOJ=FN{GvO12uBchEKp^9ZZ3os28^6XC0X7 zRH6(c@`-(f{Z0=KcD(!H^J&<(hlIk34UG-&_ zwazmQl? zt4&s?VRI-;+pBoj)!XAwId6aa?D+jWJexJJRvF2tl{V5;TbJw$%Ov8IpOIRXcNpiH2lzt#rq{)LCt_mct^yfwq= zbKNBqt&2~7J3LFYOU5&n{z8;W3VaWq|nvBp{x?xKhY?N zW@ypU0W)@j*F|`Cj@_(RF^V=-q%I*fz=~WRxKLXQ?LD#AH0EcrtGuVEtr;8wo>RUo*mDO_Du)SXN#tG3|T}nNTv9kjh zW=L|dfWPf?dLGgo^z2>{?!igG`rv}`4t)lL{{xJ8&6wr!=B>R`i)>Pxp|d;;6PL51 zOEwGPd=NM=Fo?ar!zq82UYMy83VsxNriNR(-<#jB5hO z61MW|>nr&{98^Hy`tpk>v$t0Y?DR^G^;7C7&H|t3X{^=3{G?WW$q2h2o@$8#*C>FC z3jsU5MylD^rFM0tC$f$&(d61RE~y!KNo5L2kcG)hogNPWndth|Ihu&gN*Nq{ zW>#8ds=yP?ycu7d@?Vi*;*iuiB^=Y$eHn~}-(fIiyjdpVF?*AQ-8ITDeFPT`UM*KB z&VTlHKhij04^L7fBo|F88H)Ln9hev#yxJ~yNJSI6K7Ux-FjV->ftn^7*x3R@1KW_8 z$`tn6%8Db1X^v#@Osw6fdHh$8Iq6fvl=iJel$ZghC~O{OZ^fKaDE+#gQ`4IW$8v|? z+pNlh_|D>#R+#5@Qbb(ylHDvkS`)Y3b~5;I@CRicf$7%Kz;t0GDpCNa^~ZwQfnLaQXfX@ke{h+2WlH2nMa-k zR?N6eDN9c8^#BQHW9qqSv6ASzfD&D8gl9|BnQlxib+RozK_(d$__Xt1zp`X9Y zCm^fvkb1iT4GpU`y|d-rO(>V?@ZG9#i$+w`QYT%E9oY;WqYS5P(?N za7>a;AVj^!eCq(x1aWB|A_|ER^uWNl@1<}P( zpf%{b*!04;i5KW-N!L^;Fb#vazTP6cRvf1M^T4p}ao38+uGw50rzEq=>l42Oc;KZi z!Rd64Gc|Vvwv(GB!Z!1qce+~1(t!OLJ4bQ&y1lb7hK}e0doL1WM3`n#;7uFT-&FRO z!gxq<(GGbp@%$Re=(FK?oS!qPSPD40W_T`r&J-zraftTh0zuA>g3%R26EEsn-oSnR zIkRK~v=xlCqWa9NAcTzh>c{<(vd0tDl!eMuA1_OunU4H^-!R}e8#v4UFkWp`jRlS- z0Io>N`Iu2`#||j34HkB25|*;2KeK<*ct8Yf#Q-6j69Y}qP`zuimtdH?T5*Cg`v62^ zfPfpxOaTt^;&D?0@#yW%+kcG)xrrG2>Ao*mWG4)kLP9c5lM)I(D{`}?oJkW-s^Smp z5SyXCj;nM2HRwKFP1eN#a4kYDd!9L939XG5LoQ=yKp(rl7z_T!NkU+ER~I4KY1;h{ zFYbu3btBvDW=-Y_QybVA-}mo=-!brvey{xhO<$CLJaFBbo;_Ddcj1!lt$@=}$U>&8 z9hQz+6)AhB`q<{^KB73W$h1MGYnOn(BvXWveEgOI1>B){CA7o2PShwKoisJodjHd_ z=ePVw;t#pVO}{kUwC@N4_HbWXwbMA0|Czs>F@bncZL0h=1CrzuUytfYViMq(B-jxz zOV1t+qx-^CNp?g^|I>%(#6#g|J{WK(_)2QWZZ$EVQB9DE;lXB-{I}R^~^3VOdCDu1eTwgIQH0=tY68%^1=TYsUTbAP>~}vgVmX2(R=cp&IS;5qm>q zCPvDb2!s=fdUiaI%85~7wG{@v@%8v=!xc4XKA6q;D?dM_?w$u`Feye+-mpW~PmZaP z)p5KO6>~RldU(`cFY-o~3>$;rTTPXw*E_`TM@o6FGhbu9k=ncQWQXM8{%uoQ-jF;2 zD#>T8m@HW%<8YKjB&ME24qpw|^6yuhWwCC^6)3<+k;#VrJl#kj&$pzfeM!k?O1Wt9 z<0zyF=`tx3N!@EHeXF=}dhkJ@dxJ6XYMV@2p5_ws_`lvJzp45@nn<{m(WQ!F1-+um z0SSolO4hOPPUayr9mL6~%_b)0;?rR7b`<#3HjK2(Ry))F z%(~>f#O#Zg-O}>}{E&r4q68q=C#kXqk2TDR3U{+5DAg#s?KVS2zXK}BX`dSZ2CA@RqlK%NpvF2sNPSHVP zNIAdUh#m;1Nr7@pE8sNoq~9qb?*Uouk;Nh7l{d+WN}29aWqngQ(KLNA%yjW zr{Hz@QjDbaW2z}Bd^SyFvy~eWBZYq&rlRZt<=B6Zkf356lE+mHt_hT}f`pt_xH6Qt z?*&-Xkr8vTMVU~VVSRWVMfGB=%@-Lla)Kl?Wr41t<%_%SV^rC_`k_)xy2+{Np(n3E z+Mi5I<8a*mREvg2*LjNP!`$G%7sV{PJMkB)T4-}=R*T2k`{-R>|VTgl196H-t z8W1d3yWy!h-hUtPy!fN!u~MSU9mUV1u>Pns^`NQ9tg}MXVfvI^I3|;jv^3r@i9OMX zZ4|Q9|NXhTRKLy+mmsYuuaY+zV2gYC$h?aUM20HlQ~v0{3Q=B7cDcj95(Cxd9MrF1!kTV={Zn|7u0*Kzs1@(rzz{sh&u(+d|pRat7lNOd);0U?WilG+7OXQW{A{?15y<4?Ue z^%kIcBAk%C0X}{cyA_PkXuoZ6{Ra>d-&$$R;Me4hI(3*e;WSL<22B|4m`u+Da=Z46=w)y*v!t_EH%wkEJ^K(TFR7Vv~EKKf5}r_>-1%?FRiMEZPS`4bj_jH8Yj~2j?o;l7|YC@(mHo1zn?t6hO(lOTrS%M-kCAW*lc$t)ig) zjCGhzpDx`nnh_eyNR|)SE?p}d;YigjV0POi$k-=`yx%owNDbj_WDWT$u!C!67<6C6 zWO3n6>cZYz;t;uf6?>e07}w6bAp)K-zS-IjB-U_tPFabwZw;=SI`jZCk&@6l7=Y}Y z)PA$A@bP!1BqzTtKf#J0_!bvYpW(BymAgvRNdJnKgv z;>)l`{`|=>O)0Q23Uk*VRN}*)br_IDL@o?*B)~E8*!I5q;=ds*AkN=xKM{1IC{+OPJsBger+!ZBXCl-d&t-&I1 zebLmP>H@x9lqW~*4Td?(-Sajl_y7Givy79w&@-z)+8|3oaz!5Jr&oTD*Io9YCZl}C zrta!O%e>g|rUkrVFY>ecwz~_^o?O6CiRYbdr~kdU&U{b4YNP;ubFfr|NXUxStFC7D3URzAu*?FD4gC4 z;r#9@RD}X?B8k*q9(tH;^TwD+n^Q_3^y#!P($nVa@2rG+UZLmg-1I0tKd2zI58_~* zovQXFbfA@QEtiA8&&n}hbi?OF_5;p;V*)ft#3wuui_ z80)`2oizA*TI~TW)07?3&t^_+HE_JcBElu>s(T!yGUbr1?F` zT4R;V4q4A!Ee0=u*(5RT{!n9Cmq}KkC!w|f7I5w0Q`+$5fgthT7Xp`>iX`3 z&D+ZNCK$Z?+mk4L2ClDqR1*<>_k#=5>LW0+*_wDm{JF<*bg4o@B0k9guA0DLIck8p z7mwzF=3Rmi37eo`K@rOWyFfEq2vYI=YLsXrVfA`D6i+bAl0H?6~vq^u0H{ zlWX^YdA-LN9M#r~rKyB27)Fw&no$&Q+*~Q{^J`U-5kuOBNjSd0JKO242w$pGvx#i> z(^zIt6>VNKdEz~HH7IL~fpL{_lWizEDFr>4b4~NuPRuTwA+$?@0hyt47R_5@{?B`)fD42fA41~rhT_d^}+E{?|vkgnwt~x z2RCHj^BaAmQ6u&4J4X0XT!Mqo*2sP*Fq@i`v-5p7GPXBb{2C_uB7lflCvXs@pLCEs z@`_cdfyAZWfaL+m)l2@EGO0aj;jzI{q&{o+qc)J+o zgF^ns5;gkP9;tWgjU_mf4Cq1`VJG)1*+7b``2EPmcLuka=TKuveN2tSf5diSyhSmK z!T2K&gW=b^W8W?Lj^@;@cHf!CS@n%f;=Opce+JVEk=*|=aWA)TU-zYjXM5~Mv=KzP z%Zx;Fy>|>+WlTt!eH16EwH+bb89( zpT*Jj3MeaOk?q%KrZ?~lW0ue$6z0~K!{s$6wLVi_X^9tKNeT_WA1*#K2X;Yj5OW`Z z4n>T>(DPW5C#TLLkCh|7#=tnjC0zsh12?d;nB%D){Rz{!;EY(%*b!a9z^Gp2Dgt$J zjKUFNRP4Ctl%Do-sph`?5WV@Cf8-AfS!giS8hIb|xj|pIi69eHxc|loM6>p-zH8#y zJYV6`0GHHJ0IrVHopUG%-y5O&Ay6rb<8J4bB>pNR9p~)txuQd-s(8VWT0*~#JEO#v z$Sn4%#6gCco8Qs-`Xfz7wYDDaLOwt)RFY6|@VVfcVe-bitbL0AWNFL&%8G5;t9JI* z9-4v2DeJqq*aa`|e7%oIvmXJ~gn5%yZy^=6cGkDHrqYbjAi+h ziiQM&PP=h2P)t+rTWcD&Qi90t4Khc9)8i>bB#(|21WFVp($>|Alf+XS3PGDiqcd^< zsb574y9V+6t_c$`FyLG#NyewJUj-kjoQ`Ha?!_$s%ivJw$VEH)PADodI;JG7u3inS zULTK*B)4!=fj!f>IEpNh?k+yxeSD3LFPa26l5M#N_~%%#E1=sC#9cHvBh<7;q3-?L z85Nt^8VOd<<|2Y{QswyZb-D2VTLtO{ ziddVBVIRAZ_w!m(YB;Bk&Ac&5eQCw^MK|Flx`X_$tRo!(aG^4ZGF)%Ts-60$jLA2S z*vY!fGf?tJzmR6Hr|44{+zJl?k+mk{sb`_HNLi-x6)FeO!oDzk;zNPSAK&xwO>z{H$z$vF zg2+Ta7K=16hq8!~vChyo;2sC>@%^*V3^KsXp%2-Z`fV0Bo6|I)u<{cTbG44ZcMw73 zjE+V;^U(}3IzwdM2~9FYn8?gyjFwQ&;SjOpk{Ev8e1CqNVbqfFf+17r>ndfSEH>aS z@cZ&|Kps5f$LIIzLn+0+u!s;gucT;thMQuZpwwd1?ALfM8SX^_7@bOx<**mef_NOB ztV)!w)g6fMKk@9qOiD^i*`o*k6MmM(+mt)9>~_6-zjGFvEuG5}MuDBe5DLlz>;^?U zTO4)MarG+_sdB{_A2Uy+MIjx>-|ZfO{z7Hk+r5ziy-IqDq?}}y0dw=5;B)(9lTHyt zxcNn)Dm>- z@(ye{BcsLv+0=WFx^(Sg3sg0oN9-&8^lRuaNPQN}u5uSFql^-GXW*W?CCb9#d-A|b z(uemkrkrLc5{#Iok_Bohwt#xW{pDx2wd(%>VPCmoiW#Iy9VxSSTW~5V^Buu7nD7*bA>}#68(w%omePX?B5qqOZc<%agOZPI$vqko*BL{4c z>?0>0GFQ(*E?lYjg-n>5_G;yA{OK99q?sv7kY1wIc=T7-{?MDczMb2z6~xhORli#7 zHg!vBS{lSmQIz7^u6-mS-d6VTq>SE%YngasMqiBq<@3nhUnF(b@ z(&9+>WBd+eBzg0Jjz>ZGJT(HARCy!;;7NEs%$OdJ+qT9^6IGu83U-3;Q=9@?HzSS@ z9x?s8uBlQ|d!x_xF!?C$5({!cFRN5(v%9i0OkhIU$;ZA?k&&De$DchxF-uUd)9BDSSTKNLs~iGAVMzUN z_l{H*317F3VHC&GRkpJnC6bK z+Eg@YmHeJh_B><%08XM&AW*b1Ob<4jF@NYt13H1Z)pAOafKEn*09%r4R~>o$`{$BioJKoSuKr z&*!H~K{ODW7Z#BnTQQO!crBkJc>e$iX4-%2kH=>` z)vS7A#DNf$=0-TiG5T@`gVY5oU<5Nm^XY08B6U*L*^~!TjIGWv3I6;HdHwnx#$cmc zuY@^FC2K)CDw7R}fDN=SsHB7P!-g68&jfyYKFw)0_xFZq=t!o7#L}3{57iNLl01$N z1CO6M0|UoMB}s*p!(y~WiaB3PAEVI;fDe;_@ISEQp(t4;?eCNz40qLmrHund_OM81 zj0RN59)D0AV?R7+$3_EC-`|M(!?Xp;BYgNe?L7k zkXeC*5YR(tu*WM%!c4L*==T%@8P3Jz0(kNGALhnV&ve7&2C>STO2nor=@!))2(P!( zBn*-J{*nG?{Dbi71hsyi?G6$(5KGgr!a@>jQfJjwX@CSA0uO*jJ_`PSeuTc zV`3`k94|Xx-Jii3Cy?skl~2tKtDGSc~oJMO6__wyq2lB zSwE&BwuGvZ8;@}~!SkG-#yW*Kd_q!6^73Ln{{Xx*Lgk7}W!$|qRbjbU6~^V{ z<32d*(Lr06PmezsVj(fbVyN{6`sG57e&hfL#t!Tg#y>tfLQ0W!k2pX_C4g!YERT63 z0m{1t^<-8DC;Wfw@G+cxbs>}&Qopa(45qh(6HF7SRKCn`8weW?_&jaT!6%R3Bcl8^ zVM(7m`N3rbQUy&0%f~E{`n!W|1cUAeIVu6GY{Ohn7mk$o0x&00Ob90CSXV001YU z#U@;}%8@Lvm*!6|deS1pVWtctEV7qggt@PYX4pi(@NuCwk=mW*+B)Q(mb2SE!6Y^z zCwAS)6yu-L&l{Zi&+boExQ-THBN5u@K#Le=UKu3*U`Rhdyl-=96!y%GGP=eKIrQ0f zFN~9n00{Xx#~otK;pi>_`N8B59GkYuEGr^hd^oPv#_eLxc!@yLdL$T~pPMbClZKilI=v z4Zsf{-}|1Y{1^e9$G&iRL@_UDIYa*djjbVa09fu3CoRZ3TjbiLkDy=a}WmkeoTi2Fgedaj4H^YetzBuEH?h3B^pSiGDt_LpTb@_FHy6JsyosU%0jY;D(B6_I*fWo&^}NvNIF3H?11( z!76>jmFnjX;b)0W62fPSkegWPRl_vjP_caLNJ6z`@2m;|H!tAqZAu^^TdU&|^@l%ejUM z{$&+l93_yW)KV0MLy|BLkAd^oIWq|^Qi$;D8$~_bz-<=SYO_pXuFWf`1*8t~Y+Mb* zvq%RVa7GVMoH(*a%za`sxrFL9rJTltQx4Zz+6v$AP6CBHPD#KS@^QfY^&;dIYkp74 z@L6ca2GhGPSk)~wx1w;n%QbKgJ=qy&0QmfIk@*Lz!vNyv%lCoE1&j$#N|yA_$54U6 z3aKZmCf*3i{W&d+d}sdv(j8S#56q&=`up(ph1mcc!BTxB()IYG{$rxlybv*2Y{yii zoQw{q7+QaD`PK+!NbZQ1si9L@B9XOORaKNU?4mRO0G2W~k~4wielgIe2!xQLzk5P+ zpo#~0E{kL8mt;#bB=zNREXMY68v#3zPp5`lgU;S^qmiDjOG*+6dTU>^5d5OdrwLU( zv^U+f57Qpv*SpV8s`vYH>^2_unGBLgEp5?mX%XDNr~?AQh;6>14ac|=OuoLTWUH<@|yiYPn zn2-&k>T1nR78RoufFM|978JFzhg0KIc59xhH64nNw_N`T(2Ail8p^#GC(j-0D-x&f$$DN zA01Lw9e=1Wa4C{|h8w?{YtwA!M1es%HT#xYbHy=JR`h4|c@MuZQhw~6w zS`#fOEJW57?8hW+#BJ%w<$*llC>}QOG2_QVaA;qA65~oAr@f)F#|DAE;%l!k6H7dagB;A6*+ z1FDm7i3(t!Uw)7Q4q=AVbjue>_D3Kab{n`PwlEZL&U|?UWM}b~I2mP5-oL-zA0UGt zOQi!F3?1iK)yC^_%CVed2iu?Rj&cumi7EPub_i;@ z5;6T=+%W`TU@mi(&yI(&4Cb3K_u&tfpnWq>X0nofz1V{Du#XLsoCZ!g&H(_Pc+VXO zl>Y#y(i|oh+IB29=$)`cgZho`7#RIN-#O%rjy^iBtU1qbe<%`%FxI6ls+OazB3+(c z%IFrmHsCy`Jb4+wANq8cD1((l-;4^Aq$V1+B0y}&M2WZ$QWlB-03#SAAIBdjsE!{s zThNFe&I*PlqZF}6HEF`g6bR-egJ2v5WdrBOCyqSy!agb5kun9USLd2Z61o7wm{{YBz z1up1#Y@$A{vPAP~Zwor5yl2{&fs|JBPj}g?fU$w4iZ`tbe0f@i`Hn+V7xJ9 z2^=>*06+B~Jy+}~;U$K`kOd6_{{S_fMOBVg1^_c8LB>hJ$R{5Iz$YFLS}MmX!%ndM zqNBF8d0Hh#4tFSP6&agb%+Q+a#PQY{^ZH7Npo7^zK@K*rm8UFxYi}8*FCb0R5taj$H zYS3hr+E~dU;*}ADXU1|e#{dp|VDw7HOgBF$cQ89mb>a;SLwNy5&IWn*@Cn<;?bK#^ z$nJ{3lBg;N74CYbqoT#ZBRBvYjEo%TgW&lcN|lV+vf2+ZFh-lGEs2^_UBu=_40i;{ z-Q>2=NA~{M>fE{DmumHISTPdD^^5MYnt_=H=**G_$;rk%5BPyO!O6}u)zr^a%4N3Y z;y`wV3mUBPkd>9jRKKGHe2w3$fJgZpc=+m6%$%xa@&Xk}tPN$Nk5LT5HI)G+VF3vn zkKph|ehL2o+?GNX`ohvBDUCj*IcJJSxu{1jMMxMVWaMN@_#t>ao=+d1r$LkkU|m}e ztVX2~YeJ{h^JCMJjbSN4n&!chG=D4O1;_W>`RSL5N>!Cf53~D!NKX33L-ohAyNABg zc%YD?N&y35Z=6$`AS~5K=@Wgw zuIs&@*;+n>pmwZ`x<;8^rDbag5_?g1_$=8can5teJZGxoiK8$p2f%O6EzX!oJ&3GV zKAv`;dv+((e&p|+Utgr@Ek*=@10#l03kGZ`C=@8#yns(6^*$quE@%ZP%G9pf zeGEq;SdfB}T$-M`{Nqyp0B9{(VB%X2(f+(3Dpa4-w4P3WPmFl#kKsz0h`Q@S-I1GH}EJ`d0Q`jAi0RRIPJ5PrfBw-up|WQBdnB!rv;!9q#h`Tqcy z$5w)+fHKx3a&HCEl_ZTwwvRdAv(rTba08r$;1iHP)brG+SR#h729fjz$dhYih$#G+KNO|mC`>{{Vph0IIg1bf-k4EN-i|ZBu(V zCmXVeMhEUk{QC57^hw18mh(PT205hh1ce5B`!|nqc9&!KC)3W;?fn;Di%1&E*Hn2b zMkIp7Nt9V*bqZMR3JBomcID3}&ao0EVb_vkSo_pRVw_4Qj_H4UK{|(UOQV=YsPxo0 z+xGj)08^D-)bUe$P_nj&SLmkiB;?kq?c0|Xoqk>KR?s6R7S9pD*t0JY0Q zt$o6>IiI&9DSy(ssu!2^oz);p*LWvfd8<6*0i(amuVAe;sp6^wA`Mo{#s zsA_3IRBB^K@BMOx&fnBKPq+0nSU;D(nuZcVmNc$ojR5(`RnMIG!2UILA$6Mu@<8 z1NNg$qAG5~ULHtkX8Is60Dx@`XdICD)Qsu~(4+EnSoa+LE+w8L)7 zp>-f~J)eN5h0Zh1I&7(M6ZZN*yOxg|{Yw5cwRk&@?w{J#-$&Cb%Jqe)+`Wkma*!YT zfx>tLZaicY;~gxF478vqmp+k%ach{OMH3ls)L!7ydxx`hJJdBA_HNlP>%k}sJ!goG z%;*LcBr*+{JnekrZ#E?1PiS7zJlslDfCb~zf51ky9;ezp*fo36!!>EEAc#cP9inBE zE>%Fe`*1BbJBBIqQyD*kZ5?DW`St4Rn zoUU9xILW|12hLeLclqLJ`g}VsSh)eq6C^6kN6rZ#k-I)Kuxcj#n+6fUyAZGoHF+r2hb=u6mN$jWsQ9wfRLv&dom}O@u@J zZ`W$+{{Tlj>rr`T`l!w@b7S*!b&~;&cB1x)7ZP+nCdmjIzNxpOkuT9eC7>Z>?;F-5SFUA5jeodo`2J$Gr=STx4nRdFL>k{rFVB!k``%WAf!>UsTs}* z3I~z%=Od^FAudNPzi0yrv8+iIoWV1qle}UV;~Dqh@y0Qek~99PScL=K`5%5dK<1=& z&ZTZz@=q-BM+`u-O(NnT?{Daw0b4iBc&VOh44a2J4i$7d^oO8_enOYA5IzEO`i9;5#NM0mzm zqJJGd-KXkH5?9eR9XL2ys^w_Rr-H0)FB?eUlB6qRJYe-C&KV>nrII{;@bdAqkLCdS zN2PlkzdLX0PKf%}gDr=FXE51;+)Xuk!iH$sloi{C_OkHcWDa=bv6yj%n~;OP?mnL0 zHYH3<#O6#{q`M}ISXq(fOiQ&k&{+s1kT>s7YT%5q;Ah4$)iS=zyj*|V^Ktw{goc7* zNUR}|wP@l;L@l}mReT-^P!xVg2b^aksQ^K#SOcf=4B$h->BTRnUgbtsCD_Xt*iYvk z;u~-IpPc7~+DS=ZvG3~(GgcQBj@wA1o?GmemB27TRbq#o*$PQ;&V9U)2LnHzjT5jf zolCDE-*8L;UVubD^GF_WVR@Y#5Wma{n6d~sR11UW#&P)bo~fKnuhUV^(BV|GLS&v> zD<`31wP^j!t6S5~zzOGY+qCdMZ20L3!9%*u$)RQ@@a>jKqlj2{Q!pPr@(NOItKpPd97 zyf)Fr1d_um!z7H$=t5wYQb`%Zdyemt2=IC580gcL@~DT>=ii4|RD?q$ptMT$VToLT z9gJBd?ZE{}B(WT4`<|r<{VoTm(iNe-PgR3Y(x-$H7BzciLO~+xe%g5q`Jz{klSTMa;3I_%1YpamN|czQi?fF#Z|tJ%D{pc zDG$%;##v4Ve;q=+Fj;Z){$NPn36eSs3Qlzfk#_Gf&4SH=f>$Hkl0JFB@y|qXs3Fg< zxF0RbNhQmc{@X~$9ytF1T=nNbW~5MI3H$gMKLSF|9t15pni?-IJtT9rj^RFsX&xZsXY#&h}S zgU?nE5uEvipgiH!wHOt9mc)1|A+D{JECVw$6O*`}e{7GBjyj0r<_i}0tO`j~3^glS zlay62A?2e`{{REdJmVkz_{UK8lcx{n7>yxSX0#=Z7J-q%Z)L_uOlO`LasFTB(o&}&RV4ZSp{ijpYtH);DQw7#AP!FVjx&>y z=j0Rr0KY-nPa=p^ET$P6>#}Z9B%}^xSc`5ygPibx;r{@yQX+0Ct1OQQY^2l}b#-eM z@SkX{BP%#YiMKEZB>a41{{W7hD-=Ke(eg0NsA@jtwMOxhSW=@EC1jP>0T?F(+Qb}Z z$DW-E$0=E*%RW$&GM9LAe(!q~#FE%VK&>DtI)Ff8rNLG?8Q^0$>gbom78yxC_k$=} ztYO%$TCk$3(6e$x8#duLfOF#~$M^pD>O{)LuufNl?3UFq=AR_D^;-IMWr|DEx}riY z2X<}P84(iS2lIfZ@x;l(Vy3Mq2&r${-r5^3M^Q8tiI1$mR5g#LJ*5KnOcCljWn=#U z5$2q8iejcMDv;fn za7Q{Z{oeH2FpUrD$J8IKI;qpB++7DvP14!BUOf6LP7c=p0E;IIpp0iZ9G<%bszjQE zx##ci9KvSe@v6#J!&cMl&{OLkuKIEH2enCm1mP?~mRM;+qwxu!`+|o@arW7uHs_aM$)tn~{oj!MDknMh+S2i5XK|2>NRHCYckDk*EzhBZs&_3TMr48I zj3^T3B!se@=O-B8_2hW3hw#&uxspIlOHsA=aUW*kIE?d$kZ}riEU@%h{JbGbB5 zJrMTM^>)?!$dP(}+DU^&Km>hQ8AN|q9{Sjm})OvWI1#4d;2R4r2) zWz7;c(}R;8h!3Y_AIWmc7_b2TpBxVv>rPQ)Q56B%Jv3=EDz+7L*VEKR!{uSELQ9YYM7mlI3eo{FdCr4CE+% z%AlWNz;Dz6z~icOrDGHM<+BBlb5yQu1#r`hUS-)~mbB8$|q_L4M^M7;3LfZTKKz&?L- z(VQ+KYJ;$STAn(<=c5uH9(_wr(~;Htii#-ylQec@D+^?hjsF1V&N;!s83X5-j}FBm zfR6`(GZLGaFGQU?-msfSv~JRc9p24&<((l^AzTu<+mc7Oh9ux*1J$8{#3^|V$0P2$ zZwH(88$?o1qYD*R`NZ^QvlCo`T{cS)Sa`t-9yvWo$t8v`8_yj00*n?aSqn+av1cQl z;y%#_x=d#?_Sa$P9o-(W+x@{VjocK@B-AygYq&NJGV1K%rG4ZBlHb3ctjtC{_g65h zs87-&0$M9CyAqm^7xcTDCb#t_)#x>f$b(AzSW+7aCJb!I3vNxyI0xN;GoCt)60s7Q zNqCfk4OH>xAF01Zd-Uo*b*OeM*Sm5EWmeU+PfA$PV{Pv|W)|G4s;44F;BUwUbJtOa zE9`+#W3dP9-cTx;nQU#=HDBSI>R(~#UrO#)i&4~)=+zo)XHkx80@Tin{aF1tf=3>~ zlCn8rv6!4=tPUZA#Lt{o8p4mW`qy|NH92oVyls{H^S9Cku+}2DmShpto)#oZ$MmWO zT(H3LkCJ-MMh<#Me0uw&N)-CUi28}!GtQJ^vqHuAwxsj~6Ev{0vB)fncHxI7;Nv;Z zR{sDDumK=_V8Vv*b)N6hYEKMSwRm*fCD{T)K^2et^|0F-Iz^Xp*DIBzs97ameH2#(KzHiTRl!#*Yz|J)jrvcmqpWH7a%8 z6tAgP!Q4(U{XE8ZH#p8e%j2x|;kbz`2mo{WQ2in@OIkeh{7QXUzooTa+o`C{3ekYP z_L)PqiP^uW31$O6m?X9r894Gf^k0W~bjdP*5j^*e2T$MS7}&YTIF>3kk12O|b=uZ# zlzClYh;2w!$r;XaLGng^dGr0c>n1FkMRXtv#6Fp)Thwe!X~R6?2wu#hviqZnN4?wd z25^5l!0M`&l-$Ln%Tm86w0j%)CWlne^xa-**1Vc-uLN^bg*VABs|<{WM%p%j1CfL7 zJC_^|xb8WKmn|tNkTIl81&p7(`!zU%-?45$CAFgOjZ&Yh9!nS9(I$QpPo56 zc=A=5hl|oA?M!`RR(tj2Wv5Q4V9cc@kgy<}w%|ORjtgTyj(V><7!;F~0DNE1_l2F{ zW2}%Rg>=g69D#(=p^^5C9tVsNNXQ>PPf#Zof`aJ-d%&5S!_s#RN_C`?YFcy_6LD5p zWKuymRVNGy;l4=z-1L=j~k zS{TeQsC9tgnIouSRaOZLOwGW+7{FbmkBoT9@&{8V7KH~Odj9|o4i-(|#?{qP3f2&? z7)OdmCmG6+PsbR?i~*bz)N91Cc5fek?**P1lFPoH%#uja`hmn=w8Trd^#$AQCz5$T z*nIUeF#{uJ^)>Q_%po>49q=q6H;9<2WHJmDB!li81D-}e=Z~JGUNJdxec=^7Ad32= zaqNa#@;(46=_25Ku>giYJ_+;CryLR8Ao_mrLSqPS-n?Y1_TO!~EzAe65-vIRg$ScL zJe-rBMgTlb{;KK92b+B$yI4hj;?yL8+1eb;yIwI`DN5uIa3xL;_c#Qvo}2wyV(sKU z&^@Vp!!Y+Cr)8Q*A(h>6B8aQRtOB2DD!d;#&+5)PkvvQ|&0i=&X7Kc#*3~0n62_pG zc13bq1Y|0n4g%wVe4mbp@nAcM9=|S7`ObnqwXNphmcwr<3}j~jH=Vd6AP>$n!Oxzd zR}fxzCIqaK@$}l&DMbGOaSSpZBX7EzHzB~w5J2z`0|$~h`5hnnf~!wacs|xRy3Igh ziUnw97{hPgpaMTg+<&+I4+E#RChv8 z0AOU`3}@pc`02+O0C(>N+8E@PsX3Z;v0w>ZnZ&ZleNe!L$=&`VkbXICsZ8SX%8MHK zz~)oMTTRrVSjVlU+d;!b@-j)hR|ZjLZMn(vNeF?2%!d4V~j8-K5_BS`E(^I6v}-e&mj!m zQY<(C)<%#Zjzw+691d`Ke~bnH06!fgQrS#1!k&0t0G=4~Tr(e7#M}&SB$7G6_#eMQ zScXy_2Ae=m$R(B)nH4fgC3LFuBJ_NXD&) zW*P*o0)W6euWZ3Yt zl=~vr({)WkNHw|w;Y%Kwzn7mlR%VT3A%XTDBP3(a2Ua^QV$+&@u;ZiI}$oB~@(XDE94abvk=;#$2?4u!z(~sxJU( zy_u-$38rhhcW&!F){il18kU+ZuBB!WH_Ko#$pv3-08}n8Fh@j$&nab~UzxU$NeLDY z?(k$9_K~PtTGq7aXh&V28Wy*4ATi@=#u+34lN&}bizek`gN%@6S~F281I&B#f=bc_ zRT3Ki0De@}Z`L$BW<4u?)_5*yP(v%q!AWI?Rxb*xj5i1mIL1#*rKS6*1K*TH4sBu- zYdTF`FHW(jX$EGf%^%E&h<+7J&oAaT%{smWk`V3HYBF*~OBy=wY( zc&>J5Z0h7XRJ;*f$y&j{d$zFhi)Qm>R#x(x`cZMWxe`z>AIyB=XWyrFTtq2hsl7dBQ zA_rfsrA4M)rKk3V9UD{rlF^ewuUtTqA=-t*%QA*Y_}rLj2m!+JmR}IUB=?pFi2K7K zee9_*YV0aKtJ@k)r`F7oz_H6+DC&X@Qk2oNHphv>C!=kM0fgVv9~k2VoMr_?=9r#@ zkD+&jyh2h7e2>|oKU90uvu5l|o#EQLg!&ex5{UHeBEN4}qcYuRiDb2Dkv1s`j3e|& z1S@VWla90D!G*`;fRa*j0-`n87TL&-Uyktug~G5=%`ku|L8)`0AQ&I9d#Ss-v%7mx zpJ4T)d90*k2wpd6&M;3N%;4ko0oS5T1v3WW2JgsmKeDTeKy_{{{X6xKVhD= zFpEMv$9CxB>uAB^X_+xym@G1q+mL>a=fkXB{)Tt|0BN74`a^doWT$vo)2;o2OtK(!0+k;x8w{u*^~3yXsTe6~#?K_AkQfb1^w_^qtaLvPW5P#b5#A416dgWI zs4mot?|FX{T3>4EX&-EM?uTZ+(^57PbUhY6-tCUl zGV40VpHvZE#-QYg+-{NBTqgP>F&CF zB0C0B%$uD-7!0JG3}?;Z^TTNP#i1+O`Dg5SG&vV zUYGS6#-C65PxE?OL?%DDvoVL)Q=doDjO6i#Ld*tNZUDzVY4K+kk%JP9nf{kx^9R5 z*J<$Y6q}C3sS^`G9mDVZ#&#lpa1zZPQPLWzonKL~h8a+E`p?g`bMi6&06x2*0e~c> zG=%6E>QTN#ROYbA?u54hjB%gz=_G`j2t+ADu|1>Sj^%4~Ra&&_tvz^|1d7w6dj<}C zrr<}90Oz40D`cp&I4VKRG>=(WZd?fZ%hc3u?zN+86Kzt>>Q6H`9H@Pn0I&=IILPA!W2RTcJV2_8Zvp2} zesDdlZ3fo4Pg$O5-j$}U2#!jzK~`leh{R>3Ktcy9pkyxMJd@|9S02YO37JvIeLisg zrebLef)3r%mKzc1F)ejXvCSTwk|yQOaK4}C9R942Jo6Can5DL5pEe$+>jowZkpkY; zbiGL^=&z);?H^Ai>LqBHCgKY_?An2FS&xu&`;M1aXhjaz^vVI3(lXeDzEHZgDw5KKylwyGN;rYA5OQNiF(x^pf+J z-DxS2Gb^DE;r4@)7=!0H8R?hBxP*z07HOgOS|KVzhKyq<{uZjz?4jS3q!usfm_{mY@rs3wk@q(6Ty*MT9fu7n-Uh}>{b2f@fbeD!)x zK6;awf=9m?F*!e$2(7N^Ix9kgUu#R59i~+oCoD^z0V8$*1d=)F*NdLAu)1P4y4EmhHy7w^yAOeZj`jBQk9{#y0H09Chm)K4D%SQjhqLlw~O{N!By#7Q;!j zd&ng6GyY_Cq@rFN2-5z7Yc({^=#stn3kIQI?aN5Jl(=P)0X*SJO}WP#y2{0*tsspf zUjn41L>*(=A4NN2%hQ)hp`=>9WWfIbZw(lO`UJ9^xf}@a0B_%JIT-7e#^H`NIR#bj z@uNKnM50XqjgCK~9r+Y(ejd}kIatJwqiW7b7-8uQyB-L~2Ok8Sb&9SDiviMxjEuv0 zhm*GZvb9l1AdFEt=3;O^~%O=ut;26pG9DoiE8C(|?EhM=c(h|>R9NHk| z?|nKQJvCc3C84Lt%!zctiqa5p$|ZH!NWkDR{>Q9|yeAbYK}Z>gm&|+C7%UL_LMr#h zhSw+EH=|)=-784r)KH)W^#S30fHwi~IL}nh3l@`{r_?{KJs^e583%Rfv$BMkJiq`5 zl?KqGaXf-EjoEMV_&q>n;!6Q9W{N$bi`Rbg+ zVu$9Je|F#9VXFqFr9yJ;B-Qt;Y)6ifCN%_mOAjl?bAiW?*cCcr04hy+kAHY(FK8`p zP>=v7hycFn3VKC2<8I<`JRIZy0Em@|2v%a6^!Y-oygBO8k{4*~$8?|`^RdGZ-1|Vt z`Qym^b0oZOV$&s&*Vu!G(^#hUoy2g*CPLuIp<@k?E?bkyBhNifnaL_7d-qsphQ_-} znnxQd)w0ZXpN$sz`Pi?VR-jP0z>KGyS!j1$0z>) zFu~;GIpe_U*ith0QqAw(;!s0F4{DrWaV)kgLslq*&d(u0xhu{GC;;5YBz)r}08lA@ zzNC;X@5UIY2z9Jgjb?g3ZGAmp$!0m<(V2V)S3Ka3KsW?^1IJA{X+o3(7ChRNhNOJj zooJznXPyd+Bj;l}MeV^O1e}q_&+qSV=*gUwWx)!=l0Z1~<0t1I z9VJi|1~8mQVMyf;CPi$3L}B+5yq;GeV2}oWGv~nS1sj7w@87n9ctYQSZy1%Uw45t0 z(||GxC_mySl1TA`oOJ?U^Ef`Ro)lygBM8ztMgyNs3hi7I&w@sLgP$koqCh6i0}df& zRvbtH$E9I%W~?&*v1(=yD$Q ztqpq+Y39sqM#NdM?ik>F9z5`Q$;VEfA&i$*OeA%9MsXq>rS%$(%KImpStQE;07|TR zicABy8}Z|j`+oj=rBg;Xyl`5)T6(p0x0b#$w4tl$8;) z4fkR0ks@Z5(c)J}?k?ZfqpN7!lF5QCkm@qAY_3l+>;VRO@#7?ZdZ&xUaSR;XgphWn zEALn(tP9d4>Gvj^r`e9{T$Zhh#5%hAj^mN;BoM541m`|Hbqua8#4`m2m+<|ddqjZ{ zdTq|$(=PheBlK)WWLV{=9H`C*p%uO ztkbdS)}k6{A*-xRs~oM2um_Qb3V894o}*V8#v~V-uRoL)Pz$6n5Jsinde)~_K>DIb zeOWi!nf~o$KneX08DwB^RIuRkG0~1YjdxVl9~Ro`hpD z65OnoI=-J+B~Byq!@5^{JW#tyNm@vX?%K?V>z@I6WApyK1j)r$zgPs$AXXl`-BQTW z%UX(hD7hOa+=rjiSAs|R@PE&$qIGLS&EeHCM8XqVy$oSZO6iihf>c+5kY$R2#v74? z{-dZ&@V6wtx<~fc(EYHIw zU_L_rVUL%}G+*JbO?iHp=?kS)8iko;u_V?Ddmv*o5Fg;M_BJ`jMtb@|OG#NE(lg|x zW=a_~Zwtn+W|#7+?-(s&(HNS>%!LH|loB(NJfHr0G_mg(B_yOU@iFKB0OEBXUeTn* zppmQJNsMgDWGKqXkh#tj?d19Y03+3uEFc*l$W=B$OY>0zaw zjAOnG*nfUH3)k$^FdPem?F++4)r<*`!BZBqXL zEq?GNWj*MC`ahu9i?`oc)Kk;dHQC!xvaCrctWT#OJmFLG{{Rr{?hX%v7(5)gWL1Od zqpD7{?uSO&)XrOhh zl_q{#Y0lGuj{qX^@yYAdeh!%^8OTxZ)5^bCr8z|;5gugG<)vQGmFEB;44^JZK5z$K zppu;;dbLDJ9Y(!ve#x&xd~z_AJys)w{{Y|qeKA*hA1jK%(03~7Qd+Sj20Jk{b5}3{ zfZ>BEC*XTe`ksMcEhQ?1mjpC>BENOi*3fED?bGR6j87C+hpmw!`iPrzle9L_JpTZ% zUpV6>b{Lh)6=Ho1O6)5iO{&|APbw$3S^|h)(!w@IGF%^U{>8p|uj&-2$^@Deu0Up*_F3962kZFZ zMmWG6V?RAhC>e=ls@i*`2`!{Ods(72SgcPb9IR$K?j?a-lDM9rd3 zEn-RN`g6#+jhV__ykU`4pU&m>@xj6Uk5Hr)8dPuZ)Op0YsSU-hT(JYRFQ!H7or!Nx zvMhR_Dfk{h+l{$7Cm%gbsePK8T|o`+#6xz96^M9ygSoD1_G=`%)rk=Vf)>+ZjZov3 z2Vha;57nNoE3p#7)Dk>j)9TPU)}qyjtp>MleLU8$La6X+wv-`?GEhAZHqPPtd%B0C6N&d8OJ{T`&C)LK78XG^ulcUZ7?mvu=`$u z3pfRUh3WIrhTXrg*X%{`}P;jC%@&Bhv%-=N)@b0-rw-gGBs6a;oX{ zh5!pjHne4xhzi@4aztyAG4gT99FDqtrJfdH8VAyT+Oes3PKwgif3~qV;Hah0IhLS)W%RJsXn9_lPDqHB_;kQJHt$~r^i+e zCjEv%09kA9vdRhE##dir;DP#Ci9G&#wI}0=im8y66d}u#%TL-MQf3ATReD1m-~2)M zKXX?UX3(hWRc9WKqXqb)wGD{3mRRIRi)w%ZfJewDBa9NhGhE;Q0I~+)mj}=h?8A_~ z3{~__@Uu@&ioI{A{jH@}npotT37|5-l12iFVyh!f9_^pgRz%#O9zfv4uZxNi{{TfT z)l7W(QR~U!(wTsUq+VP2neTlzS*F%w(685=g|aH?3+qY&J9Cmt0Dail$Id@JJfDsg zHjBcctnNVdw~abM8B=A~Kd0{!_5T2heL~sN?CM>qpx9?JO9VEMfZLUJvNq4@kW7ap z6Nez+jF3MYJjPZTIY&RM5qF8ROalJ^KfFilpTxGaZtYsh^w+kQgV<=Lib$H*s;!N_ zA=J$qJF$(rl0*z{HbHxddl8Ttg7Y1aeP3=lX6PNgzrIeSPT$R*=Eo zFSNd+{U+`$F)!&Fjr~5vg%;hrtl^+22FX1I8xlDPaLN827!Lr_$NW8q#L6KwR)<01 z&sY;QC|5|EZ7Ws#Dw1isvfHm<`q5jUraxIE1eT55D(%NOK0xv0b>dS1!s1sVYFMPU ztork-YXae^18G`Ea7gjilUCJc+QFxj(b?*NPGfD)vB%E!Ae`rpnrNXrzVHh<$Rs>>MM!Egxk=Z^=#&p@0&(ygpXov#j5?YnjEPbG~hSq#Uf<>-D!^7(iC=P=a*1w7q47WUy24((5#*6>k`1XsbwuGSEoTDD=^fy;}p4 zpnx)Z^Y4oAf9aD_i2wvFIR5}Ab|LOY)wDp8>T?>!yQ=^y(b!QQLlirXovYTj z->fUJ+Yaw< z!7a}`=RXJItvqH66@kn6sd--Cv}UA*S`0NphhMd2DJO^avHWwN$60x`%?BNhwDxe& zBN>YknMqvnjyOFwWP-%gm0_z8z00nrX7>H9TU+~D6wyp*u{$@fAO!3RS8*qfcmQWT zZgAWR_@*H^d^3}&It|Tj^N1F%%v3qkoOxrvKCAx#`o`8_o?SkzIgk|F3KJIG=PCv^ zpM&v$I`@1J4U@y9nR3g$Nu~YTC6E^Rl^%uq8>A$EPv}cdc-+}}CIV*0*DsBs7bQoq z9&x)QkBs=|#ZzC1s4XN00@nauv^V?3sp(=Ey(2(XjKs@+KT1Vxq=Cst0Q2Mnk^B60 z$C7Ae)*yZ1$*Dy&fKszWA!YlQNdqt(6Tv@>^ZojC6(|0vJiYxP$as%fXQO0P`?~&{ zyDVSUW_+G!VM?vgaXFC8&Tjr`zWmxULVw*&)02oLef=_ zPOOSc7>q2+{C|kEXZxJ|^#V8s7g-b(}s>7pGh(|SO>BL!@G^`YnpYZ#* z#tF_2dKIlx)N=!v^M5)*cq+c3rs{O!pVu#4hE{Ea72xs*F>r9n5TVd?rVQbyKh6(?N+%8>Qe5jJ&KGVnl3{;WIILcR6BxwaN5x{-sG_z z%_c2QiCWVvYa&WU(9%NV)Ih8_APoFx=`0Mz%NggmNwMecuNWAlqEbH(Aa{YNH4Jvx z^Bys!&-I5-?kFUZ*0HDRaDnZPPT+zo?&9J6~1M?Pyh`)1;p1h5$6W^3GI;QVZIj7z%Q68j^fuWb_z}N+d~HNh(to z9Q;3?R)s4KGHR0P2?eb0;^qAS-j5nhZ39ozDh)qRj*`U~WlwCmy-PyvjXc?wt&3i@ z`DDNeS{`r!;|zXr@CRPU@OQ#)Q!MVpT@edOJ08HWYC+f_f`5Fk` zH2Pq(1Vu&oTz-%|0s8^h(%?tQ^QIOKVqIg}!LT?44F3Fo@6@rL^k^;&FOD$B{JJp} z*UkxaN#l5AjU|p%DCr`HS5h!lf#8GSgVT`Vj6#x7prn=}w4)KIIuX24^=%HH9?&w+%XzAeKL>AKR-m;K4*xYFW2 zjrcR;Rb%q-&LqF?kIJiOt@JIbR`ME0+ z)ajw??Ddaq%v2(U^&_;;aCUa7ruwg9%|Q3zkJ8;Fk}9{cn6KczG4qbPt^>q|3mS>4 z03}S5um@4nm(nZD4jgG7IHOJ~(%727F+jfPm&qU!7!Tj`{f}Qkq}H%uP9U96U5oFL z>%km&jX-IA&Bu=)<J$Z z5OYwV)#Q>ou^bQUNirDTKo1+kfw*un{{Sx?WOkE52`8f$ZjEnm0T0kgBdCETuXz}N z+hY+nGx`&2frZD~c))r<+jz98y*@j2P z2S1LDG_U~b{{X!NGsgy?@dYLubt95MjAZ+tT4A0@8!!jJ4Um65Nt74LK`o(6dB5=n z3A9M+I;2_^a}vvJRCI85g2M!ILXdZ0o;W!F0GCwcrBjsYXXf6=SAtP$KovW7174Ti zz1>ICKBa4Vot0;dW7-A+90Txww~jisI~cN~lmyX;0JqoQoJJBa6S2*H-`vM?7^RJy zY6;?vqjBUgQIc`^IOK3T&odC5szLI18Z*)-N{OL{L)oW6AWE>p3*n4$#S; zpOMZEdNDL9Ma%i0pT7uBVOC|7LbcxQ^HLH$^$NrUhwwIFj1Dq7kt#_pw1OZ>F93ZlR?q`%@5i@qfs|h367sqymER{*N!8Z2t0n43`3H%I>tt13k zKCXInuUG=7i1|B{Q)>woLr(oiMv4gj-wKKjFs+@$XP$5~&pk@1Qp$h0;EsOB%)uo_ zF1?G|+Q-zs;j5wPJ+NO;m2%G{?kmF>AiR>lAtP5f&$-C~S0|3H@ZJ-O;uE_pF>!KD z02cmR`H(0Y5d-~g{sg|BKY83*+MU@oxhk=}ZD)ug+-zc4>+n%f@v!G0id%7$Th6Y0nBliJ;hq?-DahgrEaZv~mkdQn-8&$%8vkXPp! zBomN+I_xmGX;^e+0p9PdXU?3t$_i0#p6eI7A3^?{)XK%6Rnpi?>;2Va+{-2iEJL#v z$UO7N10$@iCBZPb_JxY$m4*qE zN1e`iLbE7}RwVI>a(@60ykCp_0mUV}+&YZW&im+pXqg;FOvPo+m+Id-dc||NJ5N&6 zb-Ai)+H+Bwvjv$o8nRY+qruyR0FQ%%`d9)(5!aLAWX{1&RGGk~L+8(tt&!j|`1#`}@_!X_reFa{ufA}cq_~fz)a+ieVr@wv*(`EItq5kH z4ZF}JHsia1SZraFf-}*{M5$`dW#$!dN%}X;h%Ciacs6r$TGk${QBNJ4c2C(-rzfc* z%E02abjwJ@bAnm82Q7|8)M5Vs7e6i*T~Fx_Lq9jxm*)&ierVdeSLm*X*?LSJ#q~0^ zeNET{PeE%4waegdW@Tj)G2k<9^cReJ?~Hp_0Qfdsp`REtFKUpUyPjQKh^;<&mK^){ zy}Fohx<0XMboBY#w2q0|HRU3?T^mbS4Oo02NggfoIU!fnWk8^uCpqiXF#H>b;M3fY z18Ty(T7YtM%+fG182RNTNn3Q&qlYE+U^Wq!_h)`OUXN4Lsonmg18%j8k#6;gJKYJ5 zM$`KK3X_bGLF?uZh^27#aXG)~(|e?o`DvNSIa^1!jC6Q;t5l?^X=AZ9@#o4R^;Ola zn{%e5E*Vi3Xuzongn%$z*?`Ug;FFvjj=5Q8SqTaZcXE9IiPcbR9(w*LbvtsuXK9*t zojrBA6#oFyC0Na2-Zb`r2RPa?f8x&>=hJ=ubKm}Ftj(iOHJ$VPkk`XJ2=Rgji32+#jeHt@J$VBgMotFoM*}FhbfUX_ho_Rf04@2J)*|2dTVhD6I{JoyIP4=A%iOU#{qd6KmA0G zGsb*@m6!yekUV|(dclQ&T)>H{>d&cON0Kw8T~NN2r)Z*uNW*)8&nGzm=N#uCbs{9l z$bgzDI_hh;?Fg+zouWHUyK2Pq)>f}lSeIlA6^B-ty}#2gQO?{C@iMm@dFtwuDJd&a zEO`oZYE}FqEXCRn{&>(MSGQiw+v1WLB=v(bBMg5<*baAX_h8`uzCYnGXm zA}xPHw3@w`oyR?$JX5EtY65!c3zABD_87$e;m@~-H#-WB(;T1x1cYJ3)PI}_ehRmF%huus6 z01;5k4-9C%!KqC(@3+t@$6P*RXzU?oT>k)!Z2&L;9CCbgIE*Bq5KPiZ8(XDqeW4~} zn?;JBal95LSyGjF0wTaESr6)b?GK{2?tA_f-!fRd{9mz(SmN?CPHz(#2NiZ*K5CvPGlFzrrj_W4-k)J+0VF`h{eIg<6#) zwDzXn8*0XbJAhp0-~++WUqgILg_e~ zmqH^Mkr+!NC?tEAlfljoem}QfI5>VSODIgG6>I^Fw4A}jM_BF{wEM49P}j709u(YS zI+Q6Y4nZ#-{0|=|kDiTuBN%|=4zPdXTh9Gy5$8(3DF!^>{73hTUG93Ce0M8a6yjg^ zHWFCOkCrDZkZ_@XetPylgYahwf?UO=l(l%U4fA-UQWrR==o{)|5s%S!4Kp7^J8zLV z$@AyHK05B4I~dUdl#35!eN5GR8p)qexh6z`mb{ET89qO#0Ll2rKOA+FkKx#EAt=hk zrN^k~bb@&F-_swemHw_{O_E5oZAu6pc8%4fgpt89mpieNJ*51BlkwvGXMvs$uGJ?r zwHDZoShq?M1C*#nhoW|)w39~Ove-reY`>(8%l`n8LCEv_=dMRnia+qNWo2$~OAjZXoafI}6^_b>%Twd&5+xO^W*=59Xt8VhJOfm#J>*L( zEL)7bLo{b4z}t)~j03?3AQ9JX!SL9`;g>X^gsUqXXnx{7Yx;RN3Y=`@ViW_VgYF1E zf+;_1q)xAc3}R3>?T{ic1bG?3^PY3#t(48hOBqs4ddI&jhVc2#F-b|YR1ZgiwQuC> zQb;13PETJ6wG3d$H!epWe1FTSu;&q()b#5a{8=~&cy{grt2S5gXwWCuHCnnpfSOlp zS=S|!qE968$kHDnJ-(W=a>Kzq5<%-z;qC>(c#5$HiO(|GOpxI>a^=B#QN3#)7V)HG znQM8uhoPu%i0LPy_aT9T5lF6a^d*{+M01zboy{pzJkm(b{ zUU%X_B87)*5I5w8ImUR-bN%|TC&^IEseqBl)%K$es?fy>5JZs7(lgqBxL}JLgePlw z&I0)(1oAQe04}1=n+iafTpDckr)yDFc^yVQvF#D5@HXcpc=*WaiiE`FdTU>QI8_yd zXmmAs*d1y}OFWUUs}B95CTtdOQyIdX;Ga1Bb!jIIx#&coa+6nYr|kxZ1QQ$Q)-7vF z?|p8QYdUQ^_H^ezYAisq8e?(U8Uv6vuHOSYv-8*5m^>`G5`?r4?HFl5&+ka(u~R!~ z-J<^hHEXR)w?Xrd9{&Is8pKz1{@0C9{vJ9LfTNID%rZ~^0HPQChB`c7Aj4qmh{AGS=;td0VMo&%^9eauKA()#+j6*OU^DK zjX|CVW!M15cx?Xuf6J?c>S8%TuXy%|vevXir|mJf6Nx z#7Hvni9?FjtV>HEis{Cma@ClHJnvICx`!@yU@H`+t`kCB2$2k<)TM0niW z2rmSJI2k<~MRs)`=b1H7F{@>(;RqlFcn#;gQ`=JxE9h&775ZSn^x1 zjsF0sUk9IuvFXKOl0=Eb<)`IVsp(f7pJ@9V;Z7@x;=D04F_OwACWXNnfU<+=e1UPJ z!4+Xu&}YN%8<7{{WXgc|xV-{{X5}_4JO#t4Q&;@dVZ>eN*ll z%@RQyT6-{hN$JPwN}-nvfJr3sPm`1L*Uu@VO68<;LY`8@H}TtfQ>X8d}VxuK%k<~^Y_=KESbFi#R!De zsD&D_HOS|ddv5|`i4%Xga4 z74hRZ{EvgvfRK#9)O)yr));|oiv+%!8bwW|pu=Qi0g2t@W5CV_Jbapp3PUf?`1?bL zdq;IiY-!~rq<4Q%22Hb0Llem!m}CC{eh)(=B4{a@^dB}5EPY$+Ld-KS6;x&HtTazAo&kHP2?5W^{{ zg4KCyu02ijU^6Q}4 zgF;H|{{ZPjoRP;F81tTzfl$l|e|rA_Fu=8A)L%&Ziigrp&=sk+i&p)y728v4fyC3l zrWxF@W!nrQSfN~=Si66VC+YtHh4?hQFAbDZ-y#~nv9P*~XS5+f7Y3WpniA1KfUiwD*| z!g^XINHmRaOpM#oG}@3!Ot8*cx-_!3H?H6ig;gO)#v89R_`iUsiQ!3X(^L6WNG0~L zq4~4M-V%0ncLO$z-W5KP=c()Jvd?5!g5(gvJ6E|KkZGk^2L)zl+Nj)qlZMVuJazM0 zICdm0QkH^}C|<*ndU?i=Y!n3V{`XfZy(<@f)p7)j`7v4)8zhy=? z7<7oZ1@qvQ3%>_Gn&Eo)4~M=Fk;2btzs!944Y`~0ic_(vN9FG;(0%>dGJf*zi@n9E zNvT}2Zrz?=>sg(0`S3BffUBGZ7*XT%*QF&XKnX}-EIs`0V+L%)Fu5*bzk9i>X?N;H z>nq4&c5wTG%bpk>3Be3`AEb@?7o9K+wgNR)2p zUgCMR4Hm3hFGP~Gp(Ax=VVn}o2yF3;9Ao3Iw=qd6YL1c9g@PPw6kn-*$sApasp;=o zpx#$>ak4AOqD5kIIL-!m`55Y4I+VG9X%z7*0$CBD{R5>QoAma+rw*S3HoJCvam4Sx z?PFFjD*MO}feB)9l27A~ywl>Ty{`}`b_hrs)$6A2!a3!uGMq-VH6fUvddRMz7D2Rs ze5k=6xfta2z!ViYA)+eBJxbw0kt+h@0>nf+{@57F9)5X09WyN1`Wg@BAFMlL?bTx* z!z+?~>dm_&Iobx_kJ$WllbD0c-R}bRg+Q4MlDNS+2nNvWgYM(c;~se9sLdFr3DO|1q%!v0AMDj?krbXC2u874k(iSstA+u98*)E> zd}HWLKf`!+p(K)yL-%+!ae0zEi2#V4?O&%KPAhgSou{owZlvie*wXdDO!lfxC<088 zfMa5+#xgb@cn1szi+mx3$6@<9NM?HK`}66vXRCn$z^bhFUxVBEly>T*}LAEqK#BlzIL zg$kI7`e)r*2WI_A?cGUWt28vV7_7CuO1jG&AxXv}A(g;5Vp&h=;B`9C6+>uJmQY+! zwfXyK^wz!nPj~OvNoI)Yw)?BMBX2A79i6H>9+b4{sGq1%18YRp$- z?hR58{80fJM0MDIQbb@$Dxj`aNh2BP1{}=qI0JHE*NRNA5<{IBd;Ozb{uy=M7fu?K zdOdk&hFPGcs@T*B4hy@A))AKmIE;lNbZmgn8)xyt{9VFPi@_X3g%Y_{ZPHj0Em3}) zpykb+SrZdOwOHs5?{2Z_8LB~Ec_KTce+-U1u+JIi#y`+?^Ww7t+eD8UZ`L2L)PA1m z_jG!dXP>%9+Q|cODpps-h1j2bu2gMR7*V*APXn)0_)p=v7`bO3j2V*s(Pv`Bo?8yF zQf$R6_Gs}w59iNLvEK?n?b|;d>+cDRISthSWIaozqWOE~|Y7P_@B=Pck^|i^A z!~}*sqfZSncxK9?8(nE0jQTGgjr9YtW3#MnsV0>awXI!*ud6F$$g)ZsDnN~uGlkvB z=j+wka9ofnb7Q_nlVQQ6m2HrbdKgIk*3Uet!VE+Jce_O-)m($HMNuU-anjJRG zwd1LpfH^NJqZa^SS+^2^=Kx^xan*SoMPd_}XqIAWe{w(w;W2 z(ll?TkZM|gb6xDN&e5%R4y|e%I(_Goir-X(viepdKviLpV|Fb07?1!?ao2yqLa`hp z6^=4fFr2v(Xv(XeZJ^qq$Di?Eh%x*}7b;A(c5V)0k)Y=Ef16Oo%U}3P`jJiQ%Li%Q z^kITHVWw_VF+{31BmUA}0~1XZS%y^ByuBJWu+S8J5yC?4Vn1NZ9B8Q{3S6T)zFv0dEin2^Qn zK@}C;&_-4t5+-9ON@55JEN`z~TEPDRe=PMr+GKjNdU*g9lV{4PApB!L>(`w2VJps( z;rWN&HlITrr32}(Op6V#O_80I-};5e?0C*|o_Oe%p)`V`JS_+~h>a6ipt_Ip&syr* zo>B_gunQMCIf!8H8P5RY_xTs6Ntk8!qzs^FK6`l9B7Go+b<(zNLlTBEi`k&TGjUrwtKRx!WS^$EZM7m{!| zBhOkK6Am$${5+Xu$y$6X?D7?~GS!hKXG-}(dzW2ndYy@xi#deOcMZ*!!2|Q2NBsKx zR#_TZpx9up(D4qiU0O85n*dICb=c<^}Ot7wJ)DN^i6opM7>^%wl z!heN6*oRV|xV5`fp3D&>R99#P*<6z{u1+~ogPt*g{wyCE_{)gP!r{{^J1IrSgmpql zRHkPH{D+nTl*Cw`}Ny!+;94h4pt<7un*tW<2*_r zSI4YxTK@pmTY5*(e%qf(o*6YumDf$0%0NVw1V~Z+$AZqQjQ-~wgN`mw43eLS=VB%% z$qG)-K>qdV7S{8SB?Ci!+iw%-BLdLqY8~mXB`Wc>)^0xCCBYIXwtp0F6Xzv;MHn1u#P0VkL8SVy|MV?wW>=~T4(%A&nUmKDIpa0XBJJfHLH z)KHKB05p7okHt*IPF(qiyrN84pinc%{{U~tQ-K)EFApI1C;D`888k5TYH}4pEPMbt zKjqOeh>qp}lUYgRk}Wv~p(-7Y==*ELe-AbYBz&p|Z`gG@BrR-NqrKo?1#wI+t+OKZ4q$21Z+^lGx~s$1YBAhXzi#_jz70D*eYmmnlQ*E@A3 zo71U}d*NRSa6g7pF*68K!2bZLF}zAehp#q>?%ib(_zbuF1Tu47%}KOb;>PZ5!V zkg~kW%bmNm8=W1j`ZefpaA+x|_Y6sL+O?@Sg;F6h`$<-Kz&n{&Yjcgizh4aExK9wk zNX>g_syLVwV5>i4)y4nYYEnyA^wh>HDruwsV;nP2r9ppam1Fe_%0U=ipr|;< z$Q%RDKoD|fNKsFxkM9S1L$#(ql$^aZGb5X6Y3hwXMl34Uq?3xPEY_$t{D7@%^#UcJn_UqBGVq6r^QhQGbU*^oH- zeaz*6AA^oh`E-sTtenF!J5jkX4doAzX%My&-iRjj*)HkL7T5@%CD@N~I1R=J4ZFsA zzJo6i*{HBnY}P#kJgEuloV9n z92RA7g#>+R!B76mNpMa?vt65Ax$PN~hHb#~`FxCJ9q-vX9ZPzCpQU$Rj?&bx6gqyJ zsX%ihLj{PS!v`VpB*B3(=P~1P!tLnOEmSPt{lA1{nUa!ng*emHbm{YeJ4d(dc20)c zRMySqhRnt%b|HN;wPOK){FXwNWCt7B&V9$JWFbv* zGTF8jfvpr<#f!Ily4HyzSkdd#(*#+OZCjOW&bc@wG=N1J za{UFdXXq-u-llr(-24IS^mud4plElWiF$r>Z5Em2Ru))5Vb_c4Z5WPC~!zPI1Zp z{s&BQ2*Xs*^QT|DR`m@`Pdi4DnW6)Hg&S%}<12tj_JBY?K68&9ah!MJ947;l+DL!}1j(?08ixIB zMlu(`0f_(;)h-=@#BnKtUL6GPO@}woduWiT0@}qpwEndAmv`%9OVcmR_oplN&}ub) z+}Jo6MPlVk`QeBpfCh8c?la+TBZZgRr~;9ErQ4e`w?~Gki$1y9l>6^ZxuI)149}<7 zlx>zt)BgYuCxnzZIgRpI1_1H65W^#^Yy|v95_)D}<_z{`HRR1vXAjY$M5Rvc9(wMW zG%myK_!mO%OLwbSl4#N7jbX7PBPk_gAF494F4+pIwtczxW7%+$akz(GGEhM_Voe)e zk0{%dH!Ql|GV2=s%~toQ=hH-e@9H>}-MJZdBL{+b00I5_=~0J56P7B?nx)b`IrKy7 zziwFVIJ8TW=(;weNzx4_wTLHZZU$#}kJU1}EAMQEVYe&?8RO2l@582Qm5D-$Bv#s5 z&7~QuxQII>+pSh8f_4@z<9L3nZpk zdyq&SKUdN!7Su$WG_CgjjYDb@p4nlIOD=y&ZankxpC{*zvcf^k>SFecpd6U|z+vn{3Mr&%or9^?&^v!!)vd~cRh<&ee^dI<(@M_G zF+uuTNhOUCfN~MB^ViTn(>x+kho6W^{NyFJYKnNhV>1+>rDYcb#l6r(uC3e_Da!-J z>Rh8al%(-kg@#OpixxO7ki%?fGQ95R$GIlXId8YR#zfLmSp7HmO&}T?{fnC1(3fI8 zLiyv`j2CYsoac6P{{WPD>D;h*qnw$AKG}pseNlp8tyZ2U5yO6zP8dPzGP*NHz&0|t z*tzkI!_QwY{{T`X_8ef%DWt@t=~fN&>SL(E7nTFXWo*jt6ms8~vN>}M6;)NT2_WPX zw*$xbJ$Vp0K`BV_F`*IG#blaBl4XECV+MIYr;GwX2OCJo$3Ah?$SWa$cC7_}coGD5 zmAAE41&-V@1mkJ~i?{*{5uE&S$?@~kEg4inNgZq9v@nkjYn`nQqpfP1FJw^HHOe}4 zCd9JY)4;bBcvCA(kh7{NZUM>2+u-rn))Mn6hNdp#dn`FoO1pzoPd%#@?%nK-ce^E$ zJqt*=tjw{QnkotR4u}W^m@gr6!;%M(Iw9UHFBKF@L+J(TKTo@dP2COd-PWr#O|`_7 zr1qb|!uP>!~y?&%9S!m`Gs3@OP2^nu`K9b$2bi#REhJ3^9> z?he&&8!(Bbpd{r>0(FU9W3)9N;p^%GN2u0aSGRQtq=lNRv5wU@;#jl64xMlub>^7wg>uiEGY+7%xhY5|GZRY&r(G)nI1~U=Q>$suUwg-c zKZu=9-2VVpHU9v*j8tz@HAr@qAp}aPxE}{^k=LVqHiXIHQW7>V*D-jhhaqmEx%z(5 znaIuhq$V_C*=7gEKl^{LT`>`*$~_DGImI@Yp=w%{o77-}7K+7c4Su>kmRS@sNgFo* z07N5h4pgS~UUIlRA0NO>;v^#sf~8az1duc#t4)8}{bNFQ6;iPO0Ek%uG`Ska+kd9^t!;1|x6;VB;CbURWh= zLup^O@zN6w$zr^6BZ~H29FS1PeL^$j4C9~9d;|ORvMW^&I(z!Uf?67uBxRbMvsNm^ z#B!yS^S6u@KiKseSCK(L>+gS9c6db{C2Ln$E6{3{p<+@Ml(Jyp_&kx5@<)%)MK)<# z%)+N9lrvHchTCbnHmD#g3(HZelvv7SyDFY>&QP|0zk}DL{{T+%ua6+Etd)_}53|N! z6H!JG<+&hvn5p*#oZ0RTp6J4ew}bxx3Bbrae1FTYtCM7d9J{$tyT%Lk?ETMc>9X#~ zhH#)~Bix6dKY%)|i~j(l?-c(4s=fH1 zQv1G5bZNSFl`N1&UF&I4v~jSEZ46Yi9mHcNJmbLYX>xG5aG6*%WlBRZ_wUv!NKDj% zW?Yx_7V>_i$2E@RtE_z})3jNIiyEa3MP8d5B*g`H5}8m%z{|+U!171CoE&wXh?GRZ ziFz{;&F>l*U^_}(qfP!7dm*f966>=o7~n#&6XAwRgZ^$EhyMV(>%HI@aW4+6NBNc? z@fY(`5Bp=yzoO`cdvSUMsaNJ)O#HR;>Ms=%A zhUC}*sW1%mMkgB6X9~Iei9hWIg}=#O5X4t)>ruwKENNd(+qE@IP>~r=1XqKNW()pu9-wx*c6E(_2$5okfP$)Gf*C zSYh}Lz(xN6%7It*>nd#3&HU%UTgpCp;{05ypm8}X2mZngsI}uQP4P(mx09iZU?u+$qzNf5fdd9un zx;>>=wSG{rT&S_1P6gTnBDGcu#BCed_&=!mKg2vbUMmYX0J6YPQ~uz7N34Boz<8p# zjvh}CBQcme-|a7yfx9Sc`dT9Y0E-P7biI4Fo*HpgsU;~=6CT~ND#^Gu6rYD4eEI$Q z^3Q48-Q(%gTX34zg)+}7*mYlljRHLBy|<1fM}nz2v{vce?MkD zYp810q1515@6x)%9;Iin(Par6Sz{}^ap%dv=gv9#m|^7vs)e*5J$8FjqsEz}Ia0kh z)Fhg;GE!?1uyY)&*b9;rDL7&=oD30+^b1ndGOC~#0lvRe4M-`p`%*vEyfVqu(iVBD`qr} zPdQ_i&Q5%j`RZAPSwK=l?^o$|ZwO!ki3Qdq0mDiY(qXg!a)*vs4>`c&`yQ)yLrs0s z4a-Aqd5}h?ShukPF*H7pB>t0;x%v71&jYE70)q<*manhU7!vh{tY3P)g`ysXR)KUpV25VXy%F{0>HX zkurkiw6qeS_Nek|Lvw}0e@D4Y^NJ59x=l6sd z7#hU{)j*f-Y>3y~vc||VG6IpDkT~Z!cdxIcJ3*Bj?%F$v49-wDqr5upR^#*@0SDlMK>T%G zeaDta=VMXM{v%j%c#&ust4Pt;a2-825k-X{j!O?DWPbU_A3XvTu&N(lNOA;RQ$?Y# z_WuCWwAA~K-k2cNWw}NVxD^ViJ8WqJFgze;)vMMlK3X>)^KRJRLY?HCdw;Co6F&IcTSZnGw-QciTK z#5!3+DHVcf_hy`SG}M+!RDZl!!C=6As}Kjr93S7FrkBNKf!_uj@a}9PeLLc7tFoDRnm=uBYzt7*4LM52RXz3Vhw5b3q zm)eqWa}RlLM;kUO;L>Cy|Uddzjdmvp-W!D}Y^lYQwyn(R z^XUlHr?E^zt6J^2CSsx*j6#GM%!)TDbM6@*C5b9lky zmWe3|mX;d`I*hG$B!<)vQYhH}08wmaM1vDO5$nFY^EdcUJ@6K2gw z$$yFg+nUd8_WfN>I@%VeS{n;i>O7LInM;Dw&g`MaL!#k9RSE}yG3>t#VkJ(L1{PjY zfC8=FcOcT6h|ESDj7glUkkqpRNN{xzLmofg_3RzbwUM_6icrJ$A%W-i!T$iKUXC}7 zoT4}W*8U+ov$}gT{hPO`(yw}<7Axx$q-kPpgY?TQDc)6b0^pO7aky{m9#;s#;ieg~ zWrULCw?C&VMVUo`OGaBN{pP7^UClg)FD-|_EPQ02@BW=>!gvyWIpU8p1;c)X1oA&8 zKc6`N0A7v&h+<`ED_E2M+2Pa z&m{FtQgas;9uUB^efJ=}P}TAZC=6E{kC5R0k+}E+KLh)bK7lUB3*wl z*X8519o)M6_C}!=q4ueDq(_9+GMJR$hTpqs%7R!N4B(HDdasSeCkY`_h<0tYq*uXU zm5RiKyExeC5Yqig)Vr@l((mfYr_rwsyCo8pM+&M+DN`%R#h3bO-T}}0b@MmIylH%A z5R5ls2WBZ!Zr*;8(<=xtQwl&v?| zp~8g$>EYDD0`PPijp)^65m=R<06dTf-snM58nZE045MiO04$D@RHP`WDsOwYnI9*I zv;(Ba8|habdNI#rIb?aOMxN4r$7=g`56NNp=RHcfp(?$9~&&xk~Wc+6r4!P03Z#-07>Kz(}T}nT;O~2Ens~}gW^vrNkiO^Kz{M9 zX}?xAF5lE2RntC-_THOtsaLf^wTRe;IUwzS&NKV`b+!0OdCI~|`}b(&yJZB4V%{gF zvCBWkk91d;QHI}ZXr{3UBCg)LHDUn|?%lcf9(~>panY!WW}vX=`$GerIZe+m-|Au~ zO4oJ&0IRwv)if^7sj1w9T!IZkrkzFXpR|$|eb2m{4a)grj2*w{jWsgoW++8z*I(K$ z%EK;ENm-?9&W*l~V$0jVOunCYhO4VbeyiE;3O1&%ZmbfrDM)2#<9POa8FnIPX*kA6 z`RmQTEtAK1QcgPrq4;x30O`}c$nU)=6JT+Y$Px+fUiazt@{6{g^pCc5n-Nb}Nsg6@ z@4hMGmBi?G3@~i&$OD7_0At5y@$7ye6wI7d4Z&u%){S>JF*iPir&?u>%u(HSR%H8x zX&OEV$S3=pA0w=^;wL54gO<+Jey}>jSFh;ZnL;Z%)#TFjvnMtl5II~H*uGiDLjm*g z^Vdnh_(m^|;&RD3K>W&k55B@8ojnqf{o1{QIX)5Rj`r`*q#B2I>N>&EZ1-F!>Jhb8 zv!}~*+CeO^xe=n_Kmm&$JagB&aLxz*o}S8PFqvr-0U#IVOT~0dniok_>+4UIVkf#j zxM+ILl|sIO*d49fi>J=B($sW{2DYgTs~@$V;>gB9y9W%u?Y{>(-BM%( z(y+2>9h!spi&l^It{O>l?{D`_+PbH5)hVx1imY|T>kg;Y4yZjgjz(evDuBLlIbqar zOji%VpsNspo!k}#xVJ&m#xOYCo+FJ~aQJnVOKTFqKa-xm5v6wT(66a|soHghpWQvJ z+d$VCp)6?C z5e_eg&yb|ekhfSrr&hUdn5e7L@n7zK>+OvmSflPM*CG)*dX%+o7FcABA%970N~*z@ zOhtwZ$PT=MbJvbwIDR_~i87@qCRz#ae~>pVdW%MmNplW)sC5>m#8tlLJEi{s8@e?l zt2U$b`?s~<)TE2;NF#S{9BBYQZM#0R-n0(l2yBS zG+!zA=Wcg-hgs0+SB8h&$rW*Thnpt1W94WQmHTO(1r4-NR>h{Jizz z(`AGlp+NIvPkvEk7(G--k|V;bgaFARg#;1)tbRYws=@|D}wg7g?@QM#UKj;2aB@&2rEWW^W-WPbBh5Ovp7D4V4vxNKtA?m01c;-N#JL%K=>O0jh)5iPQijQ7g5tGa7T!6 zH{{Vz9oZZ@`&&1zp0SH}WszC68hUNVy)@F6FJy*xUD-eG)C`lK9)3Fe6i6W;nDb=f zT$yPv?~wPTWIs`A_Xl!z{knDZOESY)8o*rIWd$KV?;6-? z!?a42Sa|fWoMH)9)9JUYSEVHJR4DUVSefI6S+*%+I2mFT7V>!Vdghd+AtgXZStS8x zzV(3LTeYc5klU2Jae@~iPy_k)fyu!A`l^|(SjDNREb$|xX|}bS2}XjMuFlGlMx+ma zoSg6#RZ9|afC(gHtCFQmoV3Z5mr{*7#B!0HZEkxA_b<{O*KH@XG{`GYr%hd;j>v+A zk!n?6O$1_RQGh@Il>^CP*QrSZB4s1;pahD&zU9x1e8KU*5=K9Y%*5qVMG`Ym0Gd#4 zeSsPR)p*Vs7=Llquo^tn%nGrA?p^ybkw+M@ZdE2I1MSEJ0`A}7jAxd|-~d>G)biz- zg@kl`2Y_QfA;o?h3K$BhNAjd@euCxzxpKCI$t{T`zpCBLP{Ra&*0F*KiWu|kjBrj) z1~*8=;B~DoT4g6Opcg*weTEKW>Rc`tgZvf4)By=d4y7N=v(LuBP*7B~CNA2wt4|%x zd(xan!RzU8KdDZ$4-Dkv*N}h2!)pHkg?@UeHxyKonREvGpDj5L7mot?m*c!w8d9+M zXO$;wDP2yVGssdW%Rb`7lIN01&hE40%qT=DU0h)MPmY=df+LvQ&N4sbdS+;Q$C^Ki z?#_ZvG4NchQ$On>?vay)K8Qjnu%Q1wsjW81y};wnxSei=WR z1;<6-{{WJGVuSTJQJcK}i}psgvC7}cr=LN$B%T^YNWwqhZdlhp+piAbauLIL&NB!s zwpw~QaqAxUG?|G+!>IMY-Z9xg`*7QdaK|VHeVcQf{=|Qw>(NaGBC>AL^$U+y+%_PP ztdW(GSw=Y+BOm5E1D0SYR=*<>5Z8~ulgN>rP{ zmL>#$R>~dMi~(06Yof`!@y0XGasGM7&qR=s`G=qL3LI*SV!L{=EZ`C(R#nRu&T>8m z2lgQT-2f-^B(yt1XQ?dp+7UePpbXK=P2*Qg08Vla7o2Aw9CakF%pB?u$iJ)!6k{B% zr`T%sqx-XSWQ{5-4_G%CE4VMf$2iV&_{UN$K$4V(>GpzcW0A=`uRL;Gh+#_uA~&c8 zd0%MxJ~DHR^$t|10tLD;^ViY|q1YJA{{V236C&;cG*Pe|9G$Jg{s|oM(0*R&9{ukO z+QNiv%OPh)$GSo3;F2-UbI<1^@Hz?)e*L^63`Wn}dVQM7Et=JCGE5z1ng?gxcnk;U z;N)}uc1(W&%iwA_UKAGMgxa?F(JOA9RUs z>6IZcqEw(3C|S`0Dn_a|JGz0D1Ro`iI_<=ePGc1gP?rUh?%R_RmVWnDk(gHz4aB8j zu*^44Hg^25z~$+m2g#1Y~$p(3!m}IK@y2XVx9G%GCI;mJ>8A8?yJ@d-iq zM#KjnxbSd#AYe;~dcSa6g@+MYi+Ey;pQw)kv5by?w;d*i3nB|FMM3r9jD5r7{6yp^{{X4~0NbcmSQdhCW86KDdQE$=v|UDd zq_Ou^1kV~*M`n2Pk}<%^8B@oR`RnIyErDjWSJc>^7>~ zpp|!(wF}h`Gm@urqlXF`pC8|nG1h8k%a#fjl>?!67o{1`@vJcfmk?zdG~ks@7pqmH zC1i@6Xr?z-#y4){;O@v>oMSm19K?eyE10rL>*>GF1*=F3eJUTnR<(9n3P`xBP|CRH z1R+)A5HZQY93F;Ribhm{S~wN2kEI`7;h1Y0htnu)!KQbRv8w6TVUFcpB`HH9*sxt; zGfg8#IcUL|S1P0f8=b@tchi3Z;8nx$Mp}pFIk`|Z{B`?4@kFLnxpMUv>T7QZ=An8i zW_r~$``(mn!6p=CSR)|gZs0St^M(pIAQ9K7Az|{9SmahoER>e5Sht_mqcHlN1h8oj zC6uQek0KQ?7I_$Q0o-s1+tMMd}rk2_xJ3N0Z&?tn8 z)u~bzu;~FH63oTWuF_lJWM@Agj=oLe$kV?mx+$(ad`FRrBa{_rS?&k|sj~1NW6Kn7Nn#Xxq~0(F zK0o5{$D@`q_p;P$ew1%07;eS4o+hbtO_tKiqhrO7Ptybd2ygKyA0z|8>LjHj`-xK@ zuhbnI${pjtIz83{n^@jdepB4y&0sK&lGMq!28T{vv_#-xCDX7z!}F-{87bl@;(-uCSztU zk#{+&!=pwtyfneY4AJ>W8#9gdbEJA+ool2jv_@LtLaRdg8;Kt7JP$bMJRZJFn5kl* z*Pkst(l?mFZxxwxpK~GfUm;2Mof)3&&m7`@7CyZc-mkEA=?qxR8dgK8L|hcLvjBABh<4Jk@;X!qD^3NWK_12E0!^k z+mQGmd>{1Z`}GBlAja{#eKY#SKCRoG#h~{EntFlMnzZR2p&zRtmH@^nB6jygQB0}q zWgBH9uA2dgO6Grf)LWm>#!fvGdm?3@zk#^gJqxe>SkeBreI%)%eNcF2)U;?@PLEfX z&8N8xr9r7>S9w_-hE$mW7>+<#2}TWgSwTevvR(9~Rhy495HSP{;5N5lZOyz3ml5Fw zFD1Dk^wwJmxfx(x-VO;E@;LthPPtjC5}X|)Zd!_x6{KE%iQCt7{{X2Syt-$v7X3yq zR7M!4)9rHD_}a(k#(zC>zYs4Dcx?XE{*u+#M&|a52oFOZ+=gnzlFr9=LXZa5#yojA z1OEU{zI7pb4}Osi8WOt9yQ7ssX$DZlkGmMo0VnVP=O5drG68g(Z||HiEof+3S!_w^ zmcy_L$W9x8LC!FE{PbA}NPQup*sj=`(6Q>7B$0_@#z`IyF^`YO&rYTn7K9!F)~xE< z&utA2wOJ@>@iCPW1!Nwh3>RVHhyVajjDFbbx#0f*7I6**C$PabQb{h5Po3j88^fgI zSWhH@pd=2htYxRNblpDe(dvEZ$v7Yt*kNdaU-1wKBb@&Lk^JMX%zse0?Bsp=kPCy4I49!-b+?50zlh>UPBj1| z-Kcz^PYshNy(9B;tX2DC>BU>2Ba3xy+OpMV?nFnbAGUGnv8ONTq zF~1PYN=U;bt9PUFr`j|m34tK4@augL?f59oHD2ud{X#elu+xsHi|${Lsy7^_I45^F z1dooe#VETm;g2msCxf;#pTsUUYnJfq^NlGIdlD1}(n!-{LSSRVIqQ9&Je6v?U151~?d zcBvV`l1Ve{jd{uBk^-nC@oriS)7|m+spaDv{{RnsF~mL~#r_^c1PZBbM2>vgz&uA? znCT?cr5ftm?ZjEw1GjpDK%QbUBCehk5B`+}i#J+94rHie^3v z1Ht1u`pMY~+uy@(l}|&b+i9fg_oA~#RlmDbvl~j!>Uv^k!Vm%6=nmd84gvYQ;nZV} zAzVX-X|>4|Gmt)$l6=<$Z# zA;8EuZiMmj~wC0&@!c(m1rQ`FJ#**9j< z>&TU@>V~}5E7NBxyJV0I2FVyqhCb2cjN!||PoFQgDLDZSrf>n*$|h2RTbxDedY9Qs zi#5s?8*x;!h~ZxzPSb`5IN<(9c9+vKN%nQ zj;pD~L=Z0y2-wFTse<5dbqsa}oY147u2qdzz>sw@&5p~ zMv+z?u$~=JBykB%f{J5eU7doi4oM0@{`_<-31B_*FyzAInm3Cbp`H`z%*h;~SgeQBXUGUYAoIb;?f4%(HdY6hoGj7VD$gJFF*pq0?-`IG z1bD#kF`j?1=>-OAdc)obp`+>srHe3BO7x@{ZAQeA!32XK@iUOSfEmIPPvgkzPEHPd z^yUGR&VYIU05Bwh1T7sOPmr53%d0agmV%;$jYd2frd`K8aItyt*(0d}Fmgl8m{vp4 zG#-CCL*`MmGU1+qc2VGSiRx>yz^|o1IDEVOf6zryNM2{{UeDBb7b=#uWi#s8o*(MDX50f6KHxKqw~(NIb47TL)kR84uRmJv??`;FXqWq4 zP9EL2sEBJC73EZ(X&NOV%AJ8!ux3&T&d@+O85!W^Ag)@LhG0g|SJL`jn|&U@!_DkW z@;k22&u+E$#k4IRKH~ae+v^SeI<>t+SefUcN)uLNE5w^7dlDnEz_5ml9mhGBXvrjX z^hd#%9Bu+c)Z)?tR6!N1k!Kn+X-L4u%}6OqDofIYQtotbtU_7si&ke%Pq?kw)b&#s z-(tK?6mae!m4q^=jxn4Ksu{eN&yP`-#xYE_E4?zOr?wsu9cx1S;HxbfvDQKv(qLv* z9Dn&W;n@5J-T2_=tq$l63_xX-T_T=7&sgQk8G%i;HL5~=kT~4f1IY{R1Y`7$0OOP4 zB_ZLI2p#GVeh>}DhDb(Zk!m9l4&jLi;~%)-`5*kclr0gE_0kK_^ueg>73x*2H3=PL zDNUtxS<1sCo|$xIa2TK&QV%{r=d28EWK2%rk1*d@(!xth@e+cn96w9@-XZC0N4)!M zP1b96{CY97{X2CYIaadC85kAikQq6R*K~6dRP7+LxW~)i5ODc89FrwFLWvD_BVu%I zFU~y+h+(DS<^-U-hiyilx<@I`4Q4RZb%m>qn?e~8oxHOK2P`<_aL?ziOe~}YtY6=k zhe*k24$hk^Fm-8F_l6#c^w*Mj36MeZbCdr7r$|go+uxKZVnupWrrQdOBa^mw+TL=$ z2e|(LkQ^L%<+BAj0MZ+*9}H6zmfOJ5G-SBk#fuU=gN^_s`+tAOOipGZu;5Z5`?Et{ z^X;uqL$uO*x|Lb0MJp{PHg?JJHSQ zZI(AzXxMlmxm511nyk703Y?~jUdHgixgyq)N)IV zhYOs7IOFrvg$Nw5gr?48YycE{K^f=&0AG%i!f2VH0jj_a``ip};{XnE{#^;INE05< z`Wtvd^sl!IQZm>?o;c+Qo75W;@))o_2p`+~_2AzVIpTAY2oII~gjP`R7}6xvAhgk< z%>=QZ_bWPX#z(u{Msf~EoRP=K>yrs0jN8HxB-bEID6vym(H)3b=I5R=IV5Kp03I`p zbY$l_zJ?rHI+}%zHe{X$Fd&%=thO8xx1Mw3Z}<86=;adNgXGYN);xXnSGg_rkJT(` zdX$y*4H9D->Q$Tx7RxHhJ1c-PrQOtg72uCOeLcaapTkO;JEVv6{j{_!Ss0Z$6!+|H z5PF~2pQu{xa@TvqQO(e!_~ zgqjwx+Kua4t%>cSF-h1fkzbX+o2xdp!6;>vyZC(KF(oeKJP||qZ0;Fw%T{ReRZz+m3C?^5z!=Bz0B(vnRd8{%_zR2=^Xq})-w_@smRom6tMWE& z-VBf|BSNL5T&N`yl&r6ZSt3W_w&Ac2103!E{ti6z*CR4?wXp&EwY2H)NNPjkeOcv= zVJgw=$Vj9J%*Qw$4hBEWW1t9;sIN!&^@Q<){cQS0uJ^{Z2CJrMu|aiH)3RRD?VVI% z9FNEz-QErdS)H#LtN#EFUGXc*^J&q-K*&~= zaVPAge}DP)*Z%H=4a=Vn znEu{aV~wPRmvXimGC2T%SDc1XkDjaXKaQnh@N1JUQqr|GTnaw!{*g#wfS8iOglKwK zY1gI_R)UOjL`aH6qLI9L9_0s&1Na&8NA~iG*wxJLf}#!k#DllL7|;eKH0?QSM(q`P zu(9Svg+hUxgWz-X1C_<2dM) zq5uij1_zKyS~%4J{k}drMvBNmcy|y?&`By|aRpZmh|1@1`3>hI=Z>NZ2{!gRL&9gD0Ztllc$M74H!gsr&ET^*z@z^cJ!L`)ld$cP zKm#1HA3jGuI*w-$#H#ZTpV&h%h!3a@qjaOJrE{T@3WoyK-1}$Pkwl6+;Iq}ZV z-yLf3bkE|PLRKA1QAs`O{*hDm>O@AQk}{^|8~QEuGey#L3Ffs$ENhyDV@7M%aWh9F zDOs8<@fh_TkTUW_SN5c8 zR2~GgC>VDu{_Y`xjCfJcLcEw%W;f7p`+Uu}9_hun&kXo00Gt*H01^39tN#F!w^6w! z-bpk4xu$=y@H%O;NxE0{Y*>(olFWc$Je**VI0G0^Z~z@*%v$EFGRv6xhluf9PZq=+ zMlDXGrh||k$<`%h)uyy_JWxt=%OqhOkH%LY^y)BLG8B+Q3Lk#=kCqs$k|2CHpH4yn z{{SQ4^&lok4c(e2Bl*1oK2>a^WBk;frRf6Rl>s#3smljRLFhGV4v0M)~+bxHe1XWjn*L@8^UwViLb z1T%|I>s-=nPaHy5JeP)CGNUo%#=~hOkW`+$&*CqI4-itZI28mD!Ch<@Je-6rt6r`po3Xzxjs%TznZVlcyLY2qU* z&PS*>D-R5M`FD*<;=CIX*2xv|#ukgVCoFlx1K8QK%es_961?8rOP#d+vVn?9FGj+-O=~ZCI$fd^#?h zP{h?kHtq2!U<(WaJ*OT=J$AExE}Xd^hLeX%QbSmmA0hk0Dn!Zd6kgOCF?}nvWYxP} zWQY@}8RV6TFDV6y#!0~*Khzu_!Rv@#EQ9$Ov>yKecp#Q761}hoZ+9IVnwloNqQu_) z7R-2xYz%vyNIuif54DdC?Id+R7Zrz>H8Up33S#D@IQMOvSa3pO)!)6(ruR;x6#8a| zL$#rTFGNSCSBe2MZYO+-p3M0k(cpaXi+pQ{;dq4PoGgHZfZWeA%qgeND@&A6<^BEQ zxec^Tvo0nJ>By!)3S@#a$p?eR56_e1u5h56TH-AN1bz1{LR!9tJw6n(6(@H*fuDo4 z@#6=h04Ne~@02`AcJ`G&bl;9RL?)*2E#BJm#Z?%b$m|GS0VfQ@IKd-5Ucz8zVkQ7{ z0QD_ltN1|X0`YI}T{E%tU2+8NUg6Yr8YxykUQrx!&G#A00VWa^Tm`^WCpo|%b+^SZ zTq6rP2Msu=02~UJ>usz{7l?sUlvq+AAilqQ6@4#EkMHD?I`K(0bAEY?94aR9uoh$f z7?*A<95>>c z0mxhp*udoA>W_m6mzh)DLqv!2cCWj}h8KZKROCv;%`$?&Qj*9AOw3e3CXc3}oWwqh zcj=X_Dz9(NXIIQ_*JqN&dQ_*9!eS#4Gd2?n*x0ScG2}N^q;NhQQ;^JAPNTY-^|p9bo|SWRfNT5B$4H&mD0Xf9lMsGmM;kuv=8UIjEAP^$Bw99pjBh z!79Wjw3f1z==FVo6h0?P#$ViBsjTQxJlFJz<)#k7YM?U5kBse70XX@_IsA3%oIB!< z8^xuGn0c4b(2u1#9rlh}AMoBk0-}YZFx@rrYmX7*1ARHx4wK!~b;|Lz=ya(C>1)Ef z6_Gh*Vo4Za2t4@D2gg%maWYdObII<2ON!73q+{XGxif(Rqfbu{bcz;_PPUsYOB+fH zst-zO%-)(IEU~LN4AI6}wga34kL~hr5#kg0g39KTlu&f&>ZmljpLW2rL|}zO9Or1|v5+=^Pv^!uY~ZLdZl~Y9VS-F| z`F#3?Xi`V8%vIt7MGCGkPTwRSCxMU8QfDBB`ual3^@WO;$XijFCfvy*k&Fh)e))rXtPuHKNS9=4zEy}S^CXcAiC5l$c5DxNLqhrVpj9Gm9mkc;3 z9_{e&7nQ`Y$pH7z08rL}fgFwb7X~H)gjFf_Ua_auf$V9sKyBBK+#*QXOt4A2(~t~! zY!Wl%VEDo7qZpZMBqczxBI4rX!X!dTtV>z#X;N18UPX;Us)U4+fB60J(FM|(+q*l37emF73D^XOrL@fDU8RuUA%kOrL~ zjCdnlHZ@H{P_|NY_f{mc?vI~ymKngtaKn!tdiq-qluANS8h{TV&>2c$y0OhdB#=jv zRkDrUCP1CmUDXZ*<> zaeo%gOs*F&8>oQ(E`0zWI*gVAfW?<|u`6yQ3={bP z4;kykyCqKU%Sj}AwLgo*qEyy$lHESAZQU1J(ftYaN_X_=XK4jz)al7tC1HTvvMXQ~ z2cL{`M^R3~&5%N8%PBnR_Xd}NRJDK>Y+kaXPopwV1%V0lHR`bimw2)i5kEjl(7dnakH5`<*iefN(2@52JGQRIKasB;BIhE0HNcA!^oM#2I zoDVJmI=WBd_Wlte%sp8Q4Op zCnJzK=g0jzS({73FvU{VS))r4h@-;@S`DtRoHp-wAmH!_`SH~2RzMthzwH9=cyTE_ z^(TT`Yh*-Es2J=}cMZAP+0H&V{{Wvu+A#`9XZNUM1o}hN>p*2w1V3<3vuJj}K6p7F zllu(g&p=eOLr;GC!s!b!Ix&lE8-!}gpzhvC&I2D9=lA0$9Yo;wt9Vs`EKOoJtn+P# zCdTO-XdM1Q@(<^M`}HzXgP01RAAep@&R~|AB81HRvVz{EQQ-LfSOcH^bNT8vDpNr` z4N?e=NnI94jy5NIl2OKP67)|5viv4DiT4hBAW z2S4-a`zee~gfoa@!w2`cb_s{x?Yn@gNX9&J2>JI9@6!j<+4tcI%=!92Fu& zMl7tEW*}hXjNy3CAD_=o5)Cva1>h*&No*lB=Ycko$uUx?{)f-{@Oqell%DWC9tFuU zll?)S-+6sa?cUL^7&Wxenzf}F0p@ZARddIJ%GexX$@tG+`~5HAsGo>9>4C*>{wcry zN@2_hqm9R>hG8f135UBWCBNi;)NWw!8^lsYqEe??tY*Z&?y5kowWZj+v2XCN_?^!K zcgY|hsZfKIh2BS-RPglLsYPw{SNkntjjhA4_8~m>+{UDp4r9z{^(5 zwInc6@L)6m63h%;v~4a88j!7DdwYzMO)<=q$bVFlAC^Dz@Hic0Oqi*PDp{|;bdQy> z*xCF-da)RVI*+Fz%jRlp1zOY~(%=>?Sc;q;Jz3-khxP=Xf3WAKNG5_Q%8cda|4{)^?8b1MmkQ##K^;wC=Lrl`++q zRn!3xeVrV62^^QC1N^oi{{TlFSQth%FX{LCN1e-`1=6W^REpvi<9`fX)=~OK1ooWzyAQ32LtDZfb)-!9YTIA!4J@{H2uUQG?P&N zKX@(=;zzRYIyR}6{oo~M=ZPYszur6;OM9$=V?ZXXRaJlSbb8>J`d z7M(Y`exCh8dc#ZpYc8=~HZ@aEuWl=~17H@6l3_$7e~kKP!vZ?b<9NS@arjd!iY{8^ znlS{czyKBx{6|>1!ag1t$;BKm3<8wSQZf!jNAitt;3DJn`?B?p<&qs9)o|;+G!%M}?(_fxNh4Cx>mJ7b6T4Hg^oefwlxwfda8{s^%n`F-Y#1r)mf(Ao z57>F@lbta#RA!J^umDuPfENx)r5J8lJaF^yxC!%wo*OMqy33QfAWZ9hgt7>c%=RyZStbDRQz5`Qi8@yA_G3l3x+)^B-ytesdJsP3~;%o!jE(ncCw zq;^upH9DUQ0kHF|W&OweJ?WbEt#49`UDPz`r;((ZDByw7w*$KchCyumkGq_lbJkjT zRH2yXCjPY*2TNPQnj^+=`8c_~p&4DBkC|pQH@tU8{uw(c){;B-yN2AZ<=RBITyD>h zN1@O8{ysX_m4V@Fs?xXQq3KWOXs0uT%0(rBf909|2p)zj-Rt}?b{>_d-L($2-Y+6l zl5e%I_Hww1HkM)Sj20e1&pSx@>PeVh5hQ>L!K$nkK+mY&CcykYoLs>yDldbg};c+FmBK&*A?7w|l**RkQVHQMlEZ z%LI3H5d>%lBM4X`Ch;bJ{{UvNkx%(Ho;JL5xUYrr*icrfPB|$m z`F*3hukcOW!K4~Tb7&g9cLldxscNIM5^zaVD(45!?sx;HPY=Q30agTBo0}R zUMcZk9TLj;W*oT%l%ZqDRElfNR-ggB!|`NY_Um8bIg2m6mPfW}@%1ei0L&t{xrhNyc z+r7VcThnBC9=pdI*0K^wFpi#b`xo10Odd^!O;BYXe9pJjahh^Y7XtzG1Q53fhk+0 z{{V>r_j`lTmIFwT?q97PhxIRQoo>Z_JGztzms+={xUYIJ2=p}&q@H*QVMDtA0E}a+ z%2Fnb%A&X5{$F~X;*^Xe{uxXeCQtZgst@@}BnB6B5)-OU^({Z@UX|D}rM(YFl9K95 z7iIZU3g|~0*VB>YnE@@fO{l@3ItWe2_RRux0J_HP}t;AZif8#EF zA4;=F`E**6Xf=}|3e`;>_?+X*eokXlCI0zP@c;v7O& zE?JVbQ9#q*)-)t=+yW#jUL5z8s);9%t-2=lk5^Erk6tyYgB0LQWyS*r0f!%q9tU46 zVhNVM$eVuN_xVShEcR+S?i@El$Jh3YCYPs42#!eVG{HaJKFqj3klsi6c*rN@hrh5QYNNkv?wy3sQ{L$l0yy4HEVdonSzywS9m2yP5pfuGtF!GThOme z(rH@U+H}X-65MHM0yDsWWAIPp^z%4Wq8Sr1@;2wUqD){-;c`@S1d#shU*{D0{{V$< z?~hW9RI#L6jh7#DCGSEtCxh*H%MAIz-PKR@d_t9zGFx|VHzM658gC9#KPi6$@(=Tg z3I70wYkCavN3QplnH19xQW!M4b}mgObC4S`DvWWH;Ai{wZg&L3;j*U@h#8b95R#|# zZl^FB#oQMLpNj=aNy;uuCA{4DF@kiTr9V$A$dT&Z!Q7S#{<$HF7%NP91RqUgkg4Eq z3_J{edao$(1gj*~smJPW>+)>HpH^b@Bvv{k{3D70Ehz_d<}TddC4 zE}5X{x}{i9scX8W`GSv~%F+R!*o@=j9(1Ow3<;ful_g2JIhRhaW6JulYU$zr8^eMV zh(gk@_@ciz>uzys><+}zHORjD&(r?dZ8B8?A45uwo`3jEYT=71CzoxZK+afk)`tv4 z$-vLV;nESK16x%fl1MtJfD#60A>zLk;oLI^{fR}EF6_hpMIbR6BsnIG3|Mu4q8+oY z>Egbl^w+Z`4(3;mO&+b(-Ok*G0B{aCU(Oq<)6Obfz^pW(DAuV~Z<56~0X6>sD8drB zc4EY+XyY%9kE!Y-JhSwd=$@&s%}2fdjA-#{(W=C^DAQ+#R8;{spk-tLU;)Sj5J{`CP*8i^y~{$K!HSY5;Z_Pxg}z`h^oeOdgrDKtRQJ{FF3l=@ zdbZ|`&+ng5em*nE^VQj$cMwnh(qxc7{iMl>J!(Mm&0S)T;1)mXAy3I5{JyOb*8c#5 zZ=i%_yC1Y!M*#l-Ik$j6Y){uei1?R|N+c$B5B~r)fBD48;pkP-Gyeb|+9EA~3LnGu zGw$rJ*bU?q*6w7V*nPk`>lSatKNBRJio+;!U*2Gef72xkg^r>w9g+MseKpZ*y6OFk zH7z-dI@YgiRFxf$Ga@Id$fWU?z$YI#>O3zIer1nS22}nSyDX3Y0MRts;EW%;)h$>*=o4 zmH_befe6B<^Adaq)WH@%g?_`Dm540%hLb!J#>pjUmSQAU7%F$ojzJ@l@_M=d0H*lF zzwaK*DK!FG3%-o0vsfPj-0cPxhIRn>pP&&#wfq%*EUJA9{{Ta~X8MtnGZ>XqAK@4% z#Qy+)_3Na=OyhD>mTZMhP`bNGZQub%kpM=twD9$zmpd;kh0ixRy*#3)ss8{3orfb9 zPvQGSt}<}ZYW4zwpZ@?i6yvHmjCaH+1fz#|_PL4hN}e?a6M@YkOU4p*$(PiI^o;rb zhIVh$p5eW3O8P5#Y^+{_i1bZW;f-=P{{UWT-WdVFAZ)N zB&oBE`-+?#dqBw;I9z(=tdS@sNfa!x$*86*H7Pz3m;R=?>+BQ?LC~=e&$~|oBQEdn zsvXVsHfWn!vMw|ZUaBN(S_qVbl^|sMu)MJ(;CywNjK|EzkgP$qwQbtZ%-)wV%wjQ9 zCwD~!+ueP4-YRXU{k?*PPVpL*1Z4aj#ODNHap&WoJ!fZhx%c*p6%>a;$f1B~1G<5Y zxFihZkbZDakBolZMh>t~NO>)+L0w&$r3FZ=%G*a6$T<1_6!845b^E zAoJ(W4o4%7I)tRSXedXmSiDUc*b*hlR;AJf$QCNKF2z zD)}JtGyY%S=bz6=ep(u|G&8E)XRjR9Buh}X*wx7|v?&7tSDXRh=Y!w@(aTGzrno-$ z_Rydt*DF%9MjMhsnxjdPg*a^F$B&c3pFCtAj;HJtq^WX&$~tm*7Z7bb)Pl`&vwE>h z9>XDBrd1~(F$czQe_}Y#P$@G~do@#+zh)kng8u-Sr6IY@K>$Snuw`;`N3+IB=f}V! zs06hr_itYh9#BBEe6qEcB0HsJQVVava@hSKc=-+a0pj;#7ttV2|+U&mZ*YLchpD zkE_#~D1AamY!~$k+x`08h_73X}?%d;Q_s5|KP5*vbH1sy(3ZBk}q8zKcJ&A}3fAYl zg{1^7Jkn(Cjv%{_`GKBCl1KLHc~X^$T2U&hQ2-4|C7@p|OlChqs>^I&?>$C2Ce*dd z4{|7ThQoT1R*gyUb}gqTz*Sc8I{U-n4h)VP!x1h}{L~-uMIXgPo%D}C_|{e{h)TkI zKZ6f4Y0k5tNUNym1qq&~pw5|Q21bwUeF>O4+2 z1;fTk%K=~FDz7a(Nb!$R!(s3oDp8k!l$4}@h+*QZp9hTRxIc+L=+z~Y`DH2^EN78E z4a-0O02G5@KiN9s@gElk%Y~NT@^k2t2dRw!sfsS(4_`AG?yKH?$=%YeU0Yw(HF+h@ zDK&>>AFzoqKmK01{6`()Se0d$FsG7xzx^N>r!suGAgXfd%+PfvgWVwgFX;aOb=U=~ z_T`!c$Lf#1+fRCD8-S3hJo&&l`Nl_3$l-iTh)iOV=T%eG)--+@!jFq4O-Bfrg_%v6 zlo&mop88R=i(ZTL6H(RTkz2Sln%CAa&qL9$&l}_P$aa9gjldQB5)OLbk?@WoY0W-h z9UT3=Bh>J})9I6ByvgYc7ZsuN57nZT-d|4jzRI8f0LMCPwIFkZy$~;2WB&k>QOEfl zH|^Isj^MbA0L?f!+*Ek%c^_EgIF|s$@N(F+u+aXWKcN7{f74*4aIy^G`?5#lJ#)bX z+AzYBfl?o+i?`Dsr1m@h)7Y9xG~Eib1+{#{%y;m8IERLObCc~+%X|Zg#5jU*iO81B zeIwC+7WhhUAD!B+l7;He$UmuK+5%}Fq0l>LPwibXG|ewhO**(6o-(DHbKpqwU>O_# z05Jy}fKUemhM6^UR97&U=O0jT{u_khazvaO0#Y{K<=m3}OVPyP0Zu+j}XQ|`+V z@0wR?6xsROibt&D;BI^;AO39qPIx{ki8Cgt2{cVSP5l^oymh{+=1K2wB(QS{{Z8yDRZRa#%wym{{Z4aZ!1QC1wWWa+EtTb zY&!)D8*SV^ap$MQPVGX?7*d?CPF~s+^aK=vtXK5SLJR%JtX;7*aaFEirx}sd2FB-c zhT!r>dd?f`Ae0ClO|XtO3b3b@&ewG=DXTFG;dp}6B~6Z zT%HI_YzSmYSRp4k{X2T$ao^jXu!G%l$9`d>(@rlFHd1EfIfw*~WC!(vsOwSFDd}l7 zq?5-1-#_031J*j^75-(G@DYtYTtaZ~IPi@xw%fkbZ1L2Ww(HG|*tK74xF7IDsv94S zu=Cb@%u;wy{WXwRUg;tK0PZhtLOA)$ku;Png|?3W09e;_jYClybSrY!p?i=20BN{? z-XER^ALKlB$MHOG6vUuR#7$Y2t2&lbN){y7oM0|gkh75~9Do%1#H}dp>QXYn`cP%$ zV}(!dddt9Ysr*GsOp!!~Q8Y?Mc-_H z{{V$hak)X{vA{VP&t9XzIDE_^%=xMBvjE}7@3G}mdqtUl5@C2+%)mQIf`9_Rbw6mz zbnO#P(k3?{k;Ji~CP|_Xmd86!;CR3Q>Kt+sUB9SjBF1T z#_;v$!p$k=r-+KR&!z37++JOl1KYUF|&O+RMN9n7M)w-Ne8CH^O28$d~G@9 ze|&YtaZ*7OWh=x$Vt8zXx8;H|PNLKG3Gk{zW~3@F?&@sA^~ zH^*Tm;uPz=a2UP~hnX=`DjdBF^`U>9SeNP+qCu%>Y{Wy@e6@`40d zJTne~QhZO|IZNvD>2BbP?n&BODU3~@^&>y!)}IVi?jA{&6S{NpPTh2hGg z@hM5zl%JbJ);_w~^h9(fTFk)z09I)lMsJ=lyH6iD{{SrY(2g;UN(v>=?rMB&9Bxxx zYgo%tcnp>Q0Pb-qS0K&jQ{-YMZ>=}h31Pk5H72e`=_=czl19VNAjEUyu3^@VvDJOIs*vlCXRj#ATnYJ-=eXhWBddcLZk)@WC#g@6HAq89)P% z_cc4{{RvbPM$G~GvbUKlBD7B6Zt+xkN#o&%n3Jr_7SxeiF;R3 zNdW>nf6p3vu0hER8ZT3B2Ou%?&mCD4IAYc&Ck&+JF2!RjbM8Npil^gA$ptyd2V98? z>KS=o!UpbtuN~#w_TFk;#dkoXu@W68K#CeLMprwxOsdl{Cjh8q9?|E(zcb=2VNO&8 z%iAbs9EC5bF8u%z%+BK&OpPK#tNf-M<@$bKN^^oV&*ERb^uYvC_jS8*DlfLoFi*L* zjEu;Iyywdk$55U%#HF%C%)oAteBIxyU<_(X%9Siv!{kI#b>HKa^~?INZ}&EvM_4*- znJY!Ay+5n+K}i$>S0^K_oM#Khacm+c%#$qV0D=L`o4BD*S2=}fHIBcA zV(^J&6`6avbe}?bY1RR$^-sGsD@`Vuq*RkgBPpp(T3bl0061r*EUHE^;1Ap{T+03% zz{o)D-Oo1i3IP2hy^_2X#JHO0ksnxIjr>bo(EE;Roy$s<{WK_1Hilg!jj^1lu*1|C z$S6WEE63o}#r!3Om>&$HgU`G@EPP1bEl=S80E?0i8e=PC?vd+0((XM;G}=~lSl+0! z2$dY^Nga}{;IZ1o=kgeX@JQn-ENRi$oKjnoV_Ij0g-ZP4R(-k#OR?McaD>s8)DKZ6s5eZ}J)S6p_ zx88LX7=#t&)M8M718i&?pTP6gxft#)k(D!4P&9Io-}aQ2=z7FUnJ6Cd58(oz;ufH@ z6>56bIqy7+3~=f7?AV@GVii#URwR>v0601E)|9+&7MirCLO@v{2F&M>B}9&Zw<2N_ zh>|E(@5(bzss8}}5PsYGeXC8|mvvozbr{eajiG6g%J7q)=?0oWt0o3Z57UqU&m+9x z*giRo8Rtyw(&SR^C|fg-f7}@82C;Vuh`@zsnlm+qo-L;>Vu;`V7OfVF?4#P9|4K`_E&;J12`o!3bW&uUz$^icW$NvD|`a(OO{{X`C zulClde@b7bx^c5kSs{P9*JY5SuNzL<<0Kvl&OaS#VHGxPp)uSVj-N9bQ&)r}Wq(g% zBmSHJ0Qg6Buc)2Ft0k|ey`4%%h)B~$)=aXyHq_nExOpF*N9U{#G9+MS3Bp2DN#;44 zjbK02=E?y%)ZKq*(XD-WtMvy*eLi^a=#4TcmVGl>vtpwuIB4aDQdlTlmQ`ZBVCTnP zUBoddohXTEQWQf`WkIzBDb2MC715~|k&cmz9h~(PzMu>9W<6=+8Sb?uEf(@bZ0VZf zh@>%Grz`Dv*!vm5+q8k;epfjlbAYKLRT9b-7BxK!9+Vn9U{6YAETt+6<{%h?PZ?O7(Ce}A+mh}OQ)SaT2b$X&kW3(j+p4}*^f8NmIzpR)=b?|$~Q3$>v!!kKh>_9m86 z2%DKVdrm`tu1ETO^&wYwga+{PhG7Fuqb8$bH8z=CG2~0L4f=3b$B)NECz(ksnsn0l zh6$`1DvF`ESZAGoPW3q8kH^XUkK3p-l^Q0V{!mRFxU8_tG%&4;L@pcxfDNZ`0Qn!M z&Rg4`C!#`it&Xv(@5U-1GwuN*hQ#~ykjpoI{?{h_Z| z8E73&8BoYsG6;&n07wtCl^OAXG6C_;fk6}8g*dtBBXmsjxEO- z9^JV7?gdH69P&p-xvQ9a-hW>z!WM?6)8n&i*NZ{3EPyCC4$bVj!sWBU2ikubl|_KSB4LA zfN%&a=Q$n+7|whikGN7))qVZj_Jje1So@}#0-dT2<6Sr!vHvkR}bNSCZzw6_u*zZq%+7vNc zQ1xD5(aRV+gFBotCn0gpNdR&@bMw(EUQij2y8Gn{9g1l_+$<%;E_S$L4nY|NF!>lf zf(YdB4<%H){Jj|a(iP({`r~5ep`_@&pQp|vzui{Wrq>&q8puOSA;7>~;C|pRCyu={ z;2sbDt;GRI{H#1xuYz4i(k8>o6K5qVJ<(Ej1K*etW9@(C+8&VF)Xp^hI_!q7mkCnN zwPTGSf+(W^w30fYa;OO;ug5)o^CJ$42@<7>AOYYtC*RT>%R(lv7NoM~H&6%VKDv^)b%SZdfacM-I)w)3T>Lrcu6H;UKt`|!H|ILSmW9hbsWikp&5+@w63K6ElNK8 zR}lDL{c{*6@oA4KKbBfa1FF?`NiQ{wh9vv#Uj6I<1XZJstbG3XbAkQ(c|Qu_5I?-NDDQ86 zFh>n7Nda!Je7^BvKR|m=?OkipwAKMuNi1KL(SZK|3n(k?ZwCh;9FG|4@BW_Qpf_jg zufNhOV(^B1h02n$g%Lw`Jqv^6evrH0RrEikvO%KhosV-&yyyw7P)7p4=WNTp=O6jG z&sZ4g_q+$$ojhxtbFf3;Ep%Mu?qZtBQXY#nP-s+qEh^+v@;L!2iyJK z7xLS5t>~JJlO%9hwIVciC1Md~X%wqQR1(K3H)Cnwo`;9=tR606M71$GxFEicDd!ts z4*V;}z8>RPY+nz>i9`_UOQhv@DJd=#4YHC)D7NeReATsMrCrjWxTB6UVkzs;j%lKZ zxJ|Q08Fn!sfMX;!(n78eUC^2kkY*lFYL5NfppKlG@yQ z2;_aULU~Dk)xT_frK*nTPCwza<#^zD@!<6W=g63Xm9ZSh+AHEet6$TpNI(1JuaHE= z`ekVPe#O&+<$Etef-g*$xpPjY=?)0z(uaGo=Re_IIXK|*d}kAe;rLZgk%H}2uuTUw zQSyyg6VmY)1pcM`0r3_${XY)0N>Q?=p)!(mWT|w`uu%l)=8^Sk@KdasCvMx5O@gdP z?rcEO%&>16#AGPM@)BJ5*tu+ef!B=uJMiWs;w)*z;z3NHT}86FzEp;%{{U!VtbG(~18!%Cadq&SN>U`LVxTi^ zs}P}m0UF*tk=`F!`!D!^?9B^G(^@@VHGo4_D%PW9jy3-P^44Ws`fAKiziG=8-~va? zI35R%;)t0)4J@rP!>Elb`lw5nC6eUUtR6gzhw%Jo#d!I+iOb66)TVF=ut=ts4?sL4 z9_}CFlYcp zW-Gj@X_!S_nA2L-{{Ze0&f`7-orXzY48)#_qyGThDdvzPWYDDTUghnFyP@Bb_L^0d ze%{NeMqeqnhgJlEwYeGb&s?r26*C8fRD{h~DHIvl(WuRs)U`=XTs`B?F$aiYab1=v z0V@Yok2kR##?g@X&tSboSVG4ng}(CE_(R)?T>k*N4duOyoDrUQ$vo!Zh9Yddn1qK6 zr7-V;UWa-Bq7Acd@!fFlB)Prp%s(j6CADh`mUzVUS>jj{R<~9;Ej!wEd4>k|J69i& zfdTP@pPcmgfJEQzg2`Yhx2EyYqluzh=TP_ZjSK1j0Cm;u{bBFTXGoGm9@P7Yn!`lF zf!>%t)4&2LClA4SfXP0LL)IwHOoB3{$mT&Kp}2~7)NkTQ=#a@@ zP_+VB_OR1yI!7*8fV;+Wqurlz$r&L|IS%dHx~v~lAHaRbR9j57n^;~e$S;CN(?9G60CVoN_x zoP%?W3|A4Ii0+cZVL|)&#a1fmI5MP?EJaBQtQ2Dz#(oGG{Q3R*)KZFjq*vJTjI6}R z*6OWxo7Rn_+sOmk0M32c91Q$>=w5FGoIs<0XO{mB{_99-NEB^a4hT1)=Nkq-S~lt~fd4(HMB_J48S({G68 zwFIF=u`U(VfK}A_+R8(I*~iCUOkiH-?KO=`6B!NdyDF*?$AI2{eu(hQEWlAVQb<4TA86%I5cdZjH_ zR1?^(W;kb&VO5sY42RP)k&W$?Y_Z06f_ce4aq-S87l6Z~2`B{0nC?ITl9C7oyzKFm ziH8$2G{q7|^%0^&Qh8-qwurqY3VmWD%I(Nrc=3UO`(rul#OO`xYwY}C zIc6-ek6|yCJ90oc3xEfbd~x&eXh>V7H}}u?gjB1%4$ntifVZbHSligL0)&tUy9b6I zF_Fi|QUNy(rg2{%2o)UEFzszRjcWU$4$Bx^L&G|gf#i?XoDV)T^Nyoj*{fH3U3C6F zuz&&#%GZRx;PGucz=Sa>zB7@5pKttu&pkv5Cok9EKUg?sx&?#Pouox&3tTWIqb5)B zD&uepe3Op=l1Ek@ET9;lr{x+bQi1_av7Jw< zK~CFG5AQwN|B)7{fSCBt9i1Apt*tv#mdv&>!hs|FmgK5>kEgVfV7Ntl9ykjIdUg<&Phk7!qtwe30Q zr!63LAT3uYpVMex`jMjWJ;TFo;{}wSybB*KI7#y)k@-t_a@&+b zVy9XdG`jRwyk$G4 zcvIU$g|?A+`gJ5dhgR$>rwJ@iXie)fZY382BzzH&8!dt4k_o}<7l`79F<^x_1HsMW z0!oXR)Vq7XBh)TW6^bt{YZpCrmT1Dv6}N?5%fO5mIZ=?sRDXnZ$zuXhElEffF8b3> zPW~`}Q@M-HeMKrgAnIk)Vlz4=H~Vegq1<+mr0qY`AP{f>1J7Kq;yXpkx5$NtCsx&nlo)*Kjh?FEiD^vP`DP@rN?Ke7G3F~^RDAcZ(E z&m1@7hDSy|p>}Z5oyR;d$G4CMaxssOJvd2G&O|%3Gd7=Ab0egW8%C+VS>+*=9I+|} zF_Jz!=lAMFOjrOGZa{SR(j2wmS~VbwX;dV$2@4(5ZZ3rX0EI`D@D9>WGI8grCajS{ zDYH~=clPii3b3Y9V{{}ER!pla5^xADoR1&Bj-W|y^ZdS0@$yOPM7zOMEOWg93C>18 zZ`&UO@H$3>feIS24LYuuEXu^TVOvrL=Wzg_0FlqNbB=O90}=xw=3uuBYZKX7^!q^#vh>+OUhW13_YWhylFR*}f|#hymogM-I8 z&-orYOYKxzXTKPFM`WD9k^-?aNMsc-o-m5G?|n}C zo7`Hp4^3%Ojy(dc>47!lfVSH%m?53tbE<{Mwo+KG0qgA#=~n_)2MQ;YcgT0xs6UuU z0k9M^n{wF2k()=CO6Y;z8&onL@RhhJW1GiAWKkP@~g` zDu4#!ah|>IeCb$OCS>IVp*!2^Nj@edTGKANpEL3e(S%{0_w}b*?>hD>z~{I7e4UL7 zOcqJk;7us_KmKiSzx`c#j}`c)Vw7dzd!to;s_GBv@N>D+DE5k-`KUJce{_o%(y!r* zxIUzI-lM9)+j`yFh6&@-Drx#`th3nJlzCl|V_3KC8$)IJ@S`V^z;R9pg&Dk08h}F# zpp_{2ASj<28o7%}kWu}>hc4h7Z(q04Jt^DYLcXDQE|)`8r`Y6f z0kx+D00;qb@HihGdj9~bp9;wt6^JeXe6rL-@}PeR)0~AaVJHNHtu4*V!h3`1k9PKT zX0xpJzOANIh-K|bSV;tb9_b=3sy}wX>uUk=@55YCK@u^k1y&1rXQQkHzbxG%iitt* z0wNL;2qj98M({J9Jn(#eIUIG}7uE`}WqXsNeS01z)%5%GY7oolO=H!DXWD=yDIhY3 zjG_&JT|whK?mc?O3SKT`po~IDP^EUe)7NudW6L<-^t0m+ig7>cSR|%owInuaiAsY| zhBkJ4^3pD&x+4rg(KY8I{{YSDq4DGJ{B?ZcrgHO+Nq^BVj?!4*)BgbdP=2uVy4=na z(XBNWI3inqn2|qqiCOaB{_|)bA^dbw@T*@>AAVku=wAwd{62AvW+5|vBU)t07eW=D zV!1dOP!6P$b`T76#S!$@MqIPV?K2q~XLGsTnB==L&gSDkumE+ei6UB92>auQ@a#Ve z!pp&6<%CL>0#cEn9=!E|b&lrKyK&YnPg9|#J(UWP>N2ceux>d{-0D)?VT6-Y*OxdBkl>H zksyx%hf2{YFr4im@4@mHBXIFQjrdOvlm;`g?3AL+k_K~k$_Wp;sm;qoM;pd7CSC?w zWuNydpjN%r7uks}C__A2^e*KZc9*9;o1Uhnb|~exl0)qifrljYTj@&T<<5vOcmVh72Q%$tJeLn5YSL%+m)iidR)p&}n%}U(M1qy?o z)~Zyy{D_8Kh~$ix89YOY$iXD4Vyf0E34fFOXS8yhYvK$i29!W!Ge85E=1Z{j7NsNE zovW#6A5J?`9S1=F0P&Ej37Mll`DG_BEb@VcW^9rMNEiTM4!oG+r|}Y_EiMhnaYxlb zh!18i)~!!~&y|Vd__bp3C5pUXS-QmUHs~VKid&L-$y;gQ98*c;wg#f-WoSfkN0zk)2+*n}1?*9JpM3@q$ ztn!VAPmoUG%#&^m7?JH!oO_h`KaxQF^&*mlrr`VWroT84Oc5){(aQ58He1!s04z_* zIQI=Hai3d>&2kY(7i0~Ctl9izu zciZkMdYiz;OZCUF=y&I1>bL&dvTM3+b+=aNL+ThK++=`YfB_x@ZrVr2bJtz)zZRQ; z$09kfi6SlX$GKBWC^+`<6O=;crNlS)$cwGOB^@GD1Yk z21w3OO27V>9dRER$W9}J%vrh$R1Vc+=zSspGR{dH$Di@*9+`9>Xv<=}mW-3e1H~&w z?GP*+1ptCi4Y=fupmW#HNK~OlVk-XtNYbn|LfrQx7~dFawyRGErV5458-@guQ=DM< z<2*8@Au8^X=JkKr{Nd{bLuTFfpCMkvj${%vh$JuMqZe_Jw6{Ooo(LnA1b4mtzHlx{ zfyJ$ru(SKwKc?)wCUfC_OMLu}I*6s!QBR-o4h$)*Ag=8r8!(VUB8C8*j43!cC-MIP zKA0rt4MXqc1QkeJ)5TpQf))0_>=ZBsGvH-O!5KUcA2{*SMq+cDpML)Um`Wjf?0(yd3RS}Wm|c+tjdv@wY{M8_w$e|6#F9zpKQnw$ggAaL zh)!ePAw!~oAb3RbCTEri_Qj%Xtjg@kwj|hhEUEf|#uT?6MnCV*DhL!YJT5ITNYO~} zqB3P!WKymMamV~X5Jwo~^edQ93SZyS2nbyCWSS&)tfE@;H}wcR(;x=_0ONt3SX}kap|9~;9oHfz|D85Srjx`KtIwIYU0I-CQvx{N3z$T=hA z^(tm0cS*b0a`N(H0LBchW=i!XcH3>r?GwrkfQ0Zc82fq7Fmk_+qR#7LE*Y&)+6+h1 zG%{Hbt=5>hW??L3Au2JugTMs&KatNpMx5a;Qo@$`b%hKY(8+n>`tPTM1IlNi!_X5Q$-pQMSa2prY{E zz+eDCFmaBhGbS#%oQ?kgaqHs@(e|PhqKGUqrIaBi5`tmNF)qPIF_E_*k;p%ufy4K| zcNWqWsRGHV(R*;ztzKo6Gd!~-rK2QxC^nC17zZajany>J{h+;hx3TNt4XZ&7K9#0Y zlVZ4(TyHEL$MsbXiiUCPUr}OoJXO7&8dQ-YhErTs` z!w5M?VUVwkU~}?!W6n-`46JgLw{l&pxkr-lN&Qo2Y6P9=&@O3s9($Meli~ z^3m<#cCPb}+zfNaS@7=+M-$>QE_i06FA-f=gZ>;m#E)GtHiY>QSi!@1k1efzicJ zN>$lQAC`k=6n>89pQv}}U+~NI2l%$`X?13>Dd`Y6uXDJsz)g5D=Dk={k5$*^H6d60 zZ@A$6^YKT^V}M^!6U6%k0msc$i5pWjcW(eLl4f5Yd{U*UkkX6>CG zUgv=`{NuWA!!^*^88JkCu=yNC8u=L~&t5M-8O6BN!z~F?%h4$W*GEcR+x&qqV;aFS zWQP=uHb3Go>Adz9A>Nv6GLUlbAXELAu0Q9|FX3N^P&-B7=P>^O_ESInAkm1Fx+LBl z`Z?TMF16dU>DoT8Lsc3*+d6p^Cs{&9lQ*O=2{`oHK74h<;<$DvhtE`uLJAZKU}#9Y zv0~MsBhImLCp5IEvoliEqdxSgi}>1&&$0gizB*)_v@}ejbp|C0L2H>{X4R| z`mLQVyj3XcH5$uRhXG@mCEFoYAEjS>X8>bxe0d|UvOlC;XBCaWPrzaerdCpeuu)Jc z9Dz%LVB`t_1{A~za|#n`db{{iolIm3*aV**IQjYcGMxD7lmcq;r-I@*o*gr_!!Ie< zW7KOED88iV@}%g}Ppw#m`IAhf%U;qI8)OY8#X@M%DGVtbGf> zxZ3!(6f8(rXed}w??o02b|t{`f#>>zdR@y)NvTOomJ(jD_8f!%0Fph5KYw{2w^Ed1 zW-|burTquqI*}(CGen>^sCJi1jtQRn^HGH06$x9G@T40f-qRmOgry z@QPpkNrd!a_dc;W;n}M?YL&<`N2P!HL~OmAq|nsd$$d}aDNg108uyx!}y=T;^%k4Ww3CA z{wHsMm9DG%S!KeEP zD^aPd4vt^z8%Jq>4Vp%WcI}Sk)o*tbCTDn}h|r?jxy+IwXEFW;=*N&j9ChSV{w~B$ zmcGVO008CORMNtar7x(wW@ElG;uxg%QW{t^-A&_9M~xdspnHy$STx-_4I4nFxPm%r zAQC1|`>=o*<3E)f-^n=YwgZJu;tKpuEjf+qbbVTExRd6^>46+)uq5&^+ux4_9$fyY#M!c>U>E{<(qI@fVv zDI0tMq^@aAmzSkSAG0^6Hd#6Q-5t~$5W zo2vko^!*8a@aa&$wq^vCmS^MCW!i9~C=ZOV4c4+|tw~Y^5?TJ&o2x;)6%fRJC1WHRoSQ?%H|4 zm?;H*2-t*{!8qJJk<7%=$nv{XmZ4Ppm#|nNc}S|^-Qq}F#P^o*`dW}DvQO&&V@97L}4Iq&%LeF-~ zGB!Pt0H@uL0B+6?Cy&?Hq1J6l1jIQk-Tul0<%g+>Ie+K)Z`_ zsv9}{{{ZXP)%6M@B9yGc1yEv>-l2vD(77ajfA9NrqH08qN5pnXW!xikl5xNo$Nc)4 z7BO9JNNBWu6V#>CKBsoHiRv?dGp`sCF6UtGBf^i8ck%tlS(yAk;_x%1GnFKP)QWn; ztvOC&9joOY>$z4c>oQ%5V6_}YRi<$p#>s%k!3BmGa7Q`$&tE12LW)2;c=W%Y(l3!# zgC)5Qv0Y$`cKM8Pr9xbVRa8aZOS1(z%8#Ev9Z4}}X#A{puc15X=?w7^X1>XZk=-Jc zsCRV?3uK)C0OdRZ`*HocjVDH^c#Ov)n&mr2^%s#Xv#+Azb1IXk<4PB#FxFQx*=1K)W;=Hi#yI}~&5kkW z9D&5bV%!5=sSFzN=4 z6oKgf09b(&Z>?iAwNX`_)fYR78^5;%4zx-{T1ui*>9=9o@6Pwq^h&ZU7A{K2Y{)kx z5rr($kU83*AMf$cSo~9oO5s>l;-^_YrPu+?m_)q@Z_> z%CPi+;tV2@9|_qyhnVsUPSa6agvVH;PGS(Q|Ve_dE)uwpU*ZoFsugTqtWNyj5l60cGZ zfTutrTon?eKBWA;^^1m)s_FWi@>q}hPhHU`tr7_RBm}-reDRKQd2k6n2anD~)Df6d zPI`Rz+B8x`7?&YdjLQ%bm~)vuMjMH2w%|`b2OqE?Zaq{}uELh~{{X}oG01LK*qf$c zBq2&jUkv1s3GvQBAe@Yh;De5sc8MyZ)8CXU-V-jPzNYHcT4#1soE!t5P7gbLWDNZL z_z@|T%TqVMJ)pBgGRNyQJ3$Oa@3xX9c!}KHvho`kCms(6sb#FoB<-%cd#^YG9u8VG z)-ABK=+Z)DmEu=1*CF2x?&XPHtCBEIFizq`>nJD$RO|Mqu?edPr%0fgkFOieA(wN7 zB0>lSRAlg_RPmBI1pX?iN&zcs3t!L0;lR9d?RAZYWs=nMpHpOkVvlw}z#N7jtAzt@ z1`h|RLXx4L*S4R`0R$LNr#v7^vz5d}go07-8-NTlLmVkm2aBPgvp!w+xz7AxdNf7fIM5(Wd8tjka!${@#m)nKoAXmKaQ~P1Vvp^D3T;f$e^fH zZKnhrFCIb9j|V@$KvrCmNk06cK~W9!&lxJy$ibs5Nn`QtKOPVI=cox}g;)r9=v#{v za>paQ<%HnOJ;bXJ11a(b);#=Y&qtjhRkxpyt3qdn(ww&D-yCUdGJvKsd>m(=j(lKo zjt+U~vpHcy??@Oxh9-PVA@$Zm2z(s!akwAP2f_H~o|`g&bc#2&_q{0y2ZdFuTnMFT z+2afpfS?yu&mJ+8hB(GQIqCC~Sx4D|Xk^3d1&T#fs^xaZzpYn3SPobbw4ca1*wR&>ir&4Gm6_Ue1(^m?Out)(hm)yj;tAnyI9Me~7Su4Y4I{3trSwOmoYqDoHvf zByEs_pudyM&E%d>Uia{B9TKo}3KGshr6>el11yxbr1}Jb^FDF1LvCMJB3T{F0Cux+ z`+og*Wg}>g@lCZm>Hh##bx%#&8yBh7)S{j_3d*Nvp!je>9KwY2^VLb%940sg$W<19#->-ND2~i2j^>D~Mld_)LvPLgpbq_=RO2Pz#)}pV~7`bL&=>tm>97+1E7=?A0YXmcH%vC~LsUIN!05Jv-b)*2&cTTKa z-R>(;qhY?^N()9Y$o~Kme^BT5bJK}SKb>Ady=r1W5`yA6r}k!*r5SI{6lzczCb>Rj zkwD~<=PZ2j&yoiu^yXZ&RfCO9esE}VLJ%rw!v6rgGbB#dM6<^#+qg%gMNr8&KmbGt zxg>?bV~hgC6UR;`OO%r`VQ2Ou-}rVThkOaaJ8nBYGGDx+qpAHV6(oQff~DfyrTsa* zav0^jYw2vjV!0l?zy6R{RA1i=-{sb1&M2onnrY5HbNG}00OCqisisfEcs|h}{&}RN zANZj??uA5jhc&$t-i+cpb}Cx4T|HY8ul^0H!;J9m?tz$$C?pbCpB(kg@gIwDydlsc-TkfxdcLJwy6i{X*m4)EQG|;y7SLq!u$0qm@ek02HM`$w;b*BmmAqXr;?) z8?eh}+~3J60HO%(#L>?rMZL_6!I81Mkl(0`o;udUaqI^akg*GI){u$udnW{zrue$8AT$8B@000TDq?(mI_$B-!hEi6vl9d}dbK}hG9?Je5 zJG(*ejTUWFNpf{K<56cznRi*Klfc-&??WGOboP)rAmnx6hl0=Hc!E|l9WJMP0FcE> zHy{=O5Tj83f5dohCx!sQKt8`5xRkIqR)@z=Z4>_hP&C58jQ;Oyg=YkwN2EC%H_7mN z#!}}@Kb(iVHF?kn9z3E|@s1gX?kZwwrT*~5UFo3LSnXcDscIF17LGdc&9Tb(Lm~YO zpC=p);~x_uM6z?vSvgy}*W>Q zS6!33?AE(#)7pCRvTSk`LmG1;#S$nG!k~LSq}EvakQllgsLyLi;)ofIzBZ`4$OJ<>0@*a8^+BPnB&yP zw{A%UDf#kG9SF(V9OFacbob+=D(M}ucF(A1`?X^~wmBMAUF=kxg##quV1;EUT|+vy3R(;Rf$GBAqTu~f+pS(hrn5#RzCdFLK*G1I9k za*{1^Z)P5lxsg2trC|%#ELg(vlvB9iFCg&Va(Ez&etG~_4q-wy@P9}q7KSt$)O}$j zRV$+tupPoibSwc;j!)`QwU2;*9ZNLKAcZeS)K}eJ&=lG~KRcp{(sgUqcLHnAEIYi9 zY>YTQK0Z47-v=LA&sL(*f~Aq8)2ue}xzy+J zlYlY)y+~+-6@_L9Z%m&S(nTd0GP;#G+C~m?IRt)siO2wmo?vj%?!Tv<`+vE+14+Gg z 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

MDHhbQR%S#ky+YMQ9#@WTu3(ar@=}P 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 E*$X~lF#rGn literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README.md b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README.md new file mode 100644 index 00000000..58d13e53 --- /dev/null +++ b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README.md @@ -0,0 +1,20 @@ +# FCOS model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/fcos_dcn_r50_fpn_1x_coco.tar +``` + +### Start the service +``` +tar xf fcos_dcn_r50_fpn_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` +This model support TensorRT, if you want a faster inference, please use `--use_trt`. + +### Perform prediction +``` +python3 test_client.py 000000014439.jpg +``` diff --git a/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README_CN.md b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README_CN.md new file mode 100644 index 00000000..af2fd875 --- /dev/null +++ b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/README_CN.md @@ -0,0 +1,22 @@ +# 使用Paddle Serving部署FCOS模型 + +(简体中文|[English](./README.md)) + +## 获得模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/fcos_dcn_r50_fpn_1x_coco.tar +``` + + +### 启动服务 +``` +tar xf fcos_dcn_r50_fpn_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项。 + +### 执行预测 +``` +python3 test_client.py 000000014439.jpg +``` diff --git a/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/label_list.txt b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/test_client.py b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/test_client.py new file mode 100644 index 00000000..7ad59d75 --- /dev/null +++ b/examples/Cpp/PaddleDetection/fcos_dcn_r50_fpn_1x_coco/test_client.py @@ -0,0 +1,46 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True), + DetectionResize( + (800, 1333), True, interpolation=cv2.INTER_LINEAR), + DetectionTranspose((2,0,1)), + DetectionPadStride(128) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +print(fetch_map) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/000000570688.jpg b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README.md b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README.md new file mode 100644 index 00000000..8060e087 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README.md @@ -0,0 +1,21 @@ +# PP-YOLO model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get The Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/ppyolo_r50vd_dcn_1x_coco.tar +``` + +### Start the service +``` +tar xf ppyolo_r50vd_dcn_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +This model support TensorRT, if you want a faster inference, please use `--use_trt`. + +### Perform prediction +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README_CN.md b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README_CN.md new file mode 100644 index 00000000..3071db7b --- /dev/null +++ b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/README_CN.md @@ -0,0 +1,22 @@ +# 使用Paddle Serving部署PP-YOLO模型 + +(简体中文|[English](./README.md)) + +## 获得模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/ppyolo_r50vd_dcn_1x_coco.tar +``` + + +### 启动服务 +``` +tar xf ppyolo_r50vd_dcn_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项。 + +### 执行预测 +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/label_list.txt b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/test_client.py b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/test_client.py new file mode 100644 index 00000000..f40f2d5c --- /dev/null +++ b/examples/Cpp/PaddleDetection/ppyolo_r50vd_dcn_1x_coco/test_client.py @@ -0,0 +1,45 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True), + DetectionResize( + (608, 608), False, interpolation=2), + DetectionTranspose((2,0,1)) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/000000014439.jpg b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/000000014439.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0abbdab06eb5950b93908cc91adfa640e8a3ac78 GIT binary patch literal 195229 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 z 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

MDHhbQR%S#ky+YMQ9#@WTu3(ar@=}P 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 E*$X~lF#rGn literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README.md b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README.md new file mode 100644 index 00000000..8a9a766c --- /dev/null +++ b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README.md @@ -0,0 +1,20 @@ +# SSD model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/ssd_vgg16_300_240e_voc.tar +``` + +### Start the service +``` +tar xf ssd_vgg16_300_240e_voc.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` +This model support TensorRT, if you want a faster inference, please use `--use_trt`. + +### Perform prediction +``` +python3 test_client.py 000000014439.jpg +``` diff --git a/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README_CN.md b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README_CN.md new file mode 100644 index 00000000..d3df37d7 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/README_CN.md @@ -0,0 +1,22 @@ +# 使用Paddle Serving部署SSD模型 + +(简体中文|[English](./README.md)) + +## 获得模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/ssd_vgg16_300_240e_voc.tar +``` + + +### 启动服务 +``` +tar xf ssd_vgg16_300_240e_voc.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项。 + +### 执行预测 +``` +python3 test_client.py 000000014439.jpg +``` diff --git a/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/label_list.txt b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/label_list.txt new file mode 100644 index 00000000..8420ab35 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/label_list.txt @@ -0,0 +1,20 @@ +aeroplane +bicycle +bird +boat +bottle +bus +car +cat +chair +cow +diningtable +dog +horse +motorbike +person +pottedplant +sheep +sofa +train +tvmonitor diff --git a/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/test_client.py b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/test_client.py new file mode 100644 index 00000000..1df635c8 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ssd_vgg16_300_240e_voc/test_client.py @@ -0,0 +1,46 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionResize( + (300, 300), False, interpolation=cv2.INTER_LINEAR), + DetectionNormalize([104.0, 117.0, 123.0], [1.0, 1.0, 1.0], False), + DetectionTranspose((2,0,1)), +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +print(fetch_map) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/000000570688.jpg b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J zQ3B+5Nzz8o>IrZI=OKyY_KRclugA;>%_m8^P9y3xel>f8+G_)~A37u`17+&3>WVC^ z@<{ZaFCiTo6R+}|$P%VIsj%58Oj#~%8l4Z_-06c&mnbV*Ztc2E&0`KwD&05DS);hCa*uEINta>et%jseD4aMPl0|g2?kdCNY|Dd0xHe@;g!&`(>1Kqe za_EGUO4v{B?KY+UZ(aUnG8fhk;V~+Ha@T?zoqRnW6FNN*3 zeo6AT8{iULNc$R<_a1WshT>6)A6u&R?VHX4XrBMakN<(n@SFZI-K;HPEi=b!dm%T- z$mpuwv~bMVO3_7wD8I<8ZJXY_s`_+q3RmSG=IJW?MIJUwN8tQy4-m9Ul~~lP{2|_Y zKRwaL_lgv^l`WE}d&%lnQ%jMu7!Pu;r!3(J782buO9?bBh3~nck%^t|HFEkD^Y2NE zyfUHEmv2qSp{!D~b(86wsfH0XY&*RIqf>A@9$M6~UOnk$w zcYIHJ61BKUde>*!4qc+Cr+V94J&QXGD8B2D=dT=(*3`!1O2j5Jr8EED>T$j0>10sI z9W<8)e&MAJnS%&$xmQ#0VsyoWEhQpRO7)&~&*pmQJaH1-^o|-OTzU=m;`wYlZ(QsS zD5YuRxkMynFe))4`ee*um6&vAKMsYJna)@L@M1Sbh_2~1ZPnw+{u?5JP}Vd}TtC~G zTknNQS0-(#F}jXz28|%y38s>ml_}4LCBt#F5TTfEuwT*d zRkkikxn(J&JDV~=nKwjbLd{??Ab{W^&5wo>3HvN3_l{FQO6-I~S1Iwc8k- z0QT;rdaXUqLnsPMr=4}IUvUmxC#@=an8R2NcF6Li+0I2JR^O3)?wDnpnj-IprR+&n z1*|aCFzH2{#1OuS2ReYxDHZBHgc0+ltvk1WU_PI0{JUEc=k_4Z@$4<;J=UGjwIK~F z3ez5Ez@3f3>mU0QDC zL!!6f^T$=}q63B&1e}AB|5T3`=cT2^gvE;+t09;29`e*<)kX|QtLLSDT2Lz;PuTz4 z)M-Iznj@D(<975_n>&5#%ztM)0fy6SK{E||1yYG(z^NuGKX)vpHc~8I;vTm{vt$WJ z5ye-AHmnX@AJ5cjnMX4zx4s;rnx)dIGkQ-V4R&xlFj?*wZ))0RG>vMxRCX>(e3J~T zP5T-CIj`KLKyKcw&x)n3GWQesnDdqs+*xKN73tX<7}J*bZto8BWq-6;GX2%DglMJK zH^WtRLswzALp2@#K!t=-Kt+gK)t*J6yn*|ub!zMg z>W<3nTxLoEeWjK2qWK@FM6Xz=abR@&pC%{R#POFBGZA<*y?!nV7G31G zcwu3}PrzV!AyW~Z0f3z81{uDO#Et=ogb6_DkCIeJwAv8yqTYjQ7vhkXqX#l^sl|xI zB6IXd0A}ZOf~_bX82QS=DgnpAs3j<&5I{125&{TrfQYAWow{3g0C*-j%4DttyZ)q# zX{x;b$&`*M)H>skC8rny_=-Gh^eXoYSt=CtMn8B(aYgC`tbo4|%Gj@tDbokC0%RC5 z;fT~%lnlIG~&zhb8~Na>-lRz@+1rji)EnO8m*gbp|?a_$*uzs!2J)T*F<&lhQ>Ds3jX@$9& zWidGd_Kl;I4Qk{vWcn?_p*QVT*|}_8fB2nOo_b%=N$}~#re~V z*R|Kp8uSx-pKw<Tr6ERcW)7 zML{jZAyelBj^~^WZD=zB2VkYxHr=+3=r2;jP%Otxi6Nh)CM`rb`o7R$I34UkiW=%@ z%YT%gyEMD7AgC}uY*YP4?1fj(R*Z{6T=7^qEKEr!cxB}Ycn&x@S&vZvar93Q-h zdT>y1%Ba&j%OMs~^u_YHNq_f5z-~Lw83fdpF?{1m3+T;4SI;Y}shsS3HQd-8o0?f* zm|7{0#XtCrF_ZJxDOjHorC;(iep{F$C`IkB+OxbAAem%(@ttYdJ?Ed^r)ML^r0<2N z+fc`+mnCO^!)9koCWyX6B64A@NFw*NNB7{mwWlz4sl<4;jgUawE+FD(cj{;Ke73D- zR{u+$p6}g0q>_MRXqTIX52+*>^)#*y_JFu_v$U{h-k(CoSW3w<2Li9R4w~yQuX;x9 ze;I(EN;RK))Kpi-v2UPE(lE0O@zc_!OTNoWxk>tk--PiYp4Ib2R5F0>s0TH}} z=yEKgC>C=jyQaR|Z}#wRXig1_w%4~%E;5+4&ChrxIj~ALMIMyrXI4GzELvsIq?H&A zGRq2M)d%md=8}F6LHm7@f;(4Ys0-UT>W{bAZ5F%FphcNN&q5g1%Iq8D%pXVz6Xf>g z%Xtj<_ImZ^&Eije)dw~Fd#0qN#R=P831`xLn4}K*pi&xjT60uU!l9RR+mZSG@2i`eVj$%&8T^t z6N?jBa&xbd&oV25nn`7vC80ZNP^R{9qW)c#h~}$w zSFau2cs?Pbsv}vEaTBzkQG3-3sNi}(_2Ubj=shEfERa$;)k`x_Ref^BRVw*ce%<&) z>A2xBy=PHbkvjT(u3(?a{(GMOa~`$43o6=gsT)W#f7uu+y`bLb)4i$jZ$GFn08pi&~AiiWt2e0*o1yW5pR+4bTB~2w{MVKN8rxc(b zHxXnXb4il@=fO=`jyFhCx-@oZI|!~jj;Kf{Vk(5lL?4rgN)HBKdV2CwOM-6+#Yv>V zXM3w~%`;ON&8Bl1NG(@&h$0eWNRFl6;$AdLDNvQ%lEaV}u9yD9Xj-}X%SYsKetI%& zIDRGpaK&ZhNG9eV?S4qCm(?{E-h%pY;+E7U$ESQ9CO;!doW88LJ%pwnL9PfI*d=p{h2n^QhjJKPsh; z^O4*RXgL1anrY_*ITCzX)Qiw?+Q@(KDlGKAZkb>1R==-3XXrp40Y^xhBU4J4PKD$a zWY9zSo-=rNoBP`+1%}3#9ezY`ChekNlYPJH?Ah{%RMl3z7gI-r%d?Fq*(ocPi*k}i zWT2^Fc5~zTSej7?O%2^-h==}em`tz3caECD;J`t;I2Ojl{JITUrrjvic3Fj7f)2|zrA-Hd3BO|VOiJW?0+*q=o%FCp3@3W-9FZjC1hG~1Y`$b`&)&X? zVuGuw6tP+LtBeI)y&Nxwa;M9sSpZ?xoDti-aR$~v^r0kP=o4DS`1i&ST&Jr?RH>DO z^O|IFP8se?$gr#-K!98D413pnUw_B?$bSLIh7lo(cXK}+>ium*)OxDA|1jOjkr(4I z4RErPeyNgSM9?%z>}#AHQQrOP{9Cb-)tj&-kl;Yihi4vf-Ya-9~sium(Am&iJuVv_w=V3_hKt~5WOU038FXjvzBQhSxMIh zj9(}a1CzSjt0RXs-nZ|Pq9+@tuOMY=D{6yMrm>$9vFOg6ws!vD6jy%wtl2;+ITRAy zIP!scN6X(=Enz4FkIBk{d@DvnWHjtvLFUzjb@OIKw{loG6zKUb6pQyWu+NF^3;x{%OsSIu3(kUwhlwzKm#q4 z12KtbV?EQ)a=zhcgk^{L+C)5J;GuZX~rlzO(C?l_z(WG{!L-* z_4rbo+`j&8G;QUgu1o?Z5EI{I-#cCab&P zpEx@B`Tb^$iftSHE;=Z>g{&p6T9P~AJQ2ZX46= zc0JS{%^uP$)KM$R$!H!zL!`UGXf6=E;00J$iv|-*)DpT-)(1WSQ|!PY21hXdw^$j5 zh6ixhgrJhMULcGpnY>s@x^yO*@WDcSdR97_(~WAqrD!S&!TxRrx;pViSNZ0m)kX_yc^&w^Vhr9?eG z1ms4^Ya)@0!e+$@9RyICfDB9m0ZjZ>6k!Lfvy-u16pJV2ixT`79MXm00m6s>QFL1ogBq1m`^6dAVxAqG&wQZcMsz&DGVdk3vrwX!MxO4J1a0>CnMD7ffY=of* z6hdra>wN1R=nP<66?e?1c9j7}R`iyyn!WTsHnZs^*^GZV&$M_B-ooK-q%6ma1(1B?H@4VMUE|(Z0G#Nk>mN#m3{iwB7^&ROP(Hj;#$rhXnEB6^YU`adLDMpR=UvV5^#D84K|p$Gpdh|4!AM)ZxNT zan75jpXjy_l|pL|6P4|(+D4V^ya6V-wQW(>EUlt6%M44c!Ck|KH*gn{xs*XG+lE(? z%U1B)snp>~)q$>K&Xzf2MrmQNV?zJzx((cEU12M2CDl4kIFT&7l*Hb-gkY*H@3-(A zX?!MojJ3A?UzAO1v1as}(OS&cSS^GBi5e{({e_Om{FAi*vfjY&K~n&D!(+a<8}eT+7FC z*YdNlpzTheRmtIO%YoCQm+x#eE2f`%L|UVi!u$nU_3IQKeqQt;`Zt_WVifmPf8k*k z2bwz6sFl{YYsb7LO}1KOJGP}y(|ka-dQ@fRoiVOy(y@E1vi6kIpz7p=FEvpK-i#5L;ww9tKNSI}PasNgi`Nz2+`qY`Dz=KNPwn8-M$FQ&XBlPu{d zxMC50QA-ZZ%FEwetK(u+^$)C3#L^~kU?Yv+nx+VNE=0&tY?k|R6L79zytBjUbT^B^A}B&4AiV2$XS_#r(p#V<^3@%{?Pve(YftJ4gG0}bEydD?w+du zV5jU8&u?I&F#WACa~16Y{?U(PuRbr?pd!|S;g2h>`j?y>I8B%Ezyu4w?KF~~bMJ12 zPn=*evpUhZr|3sHm$C#Rif3l!@oUozU-| zd`*LUR@5-0h`CWDql0s+A{@gYzd#@~DqgoBbS2~ecTv)k5mB|__@G&7(GngYhUinO z+zrMi z+HE6nU;(+#@KG3|>DW5rI#-`x9EGLf_`_gmO`%*JTnf2M0nC+@h55834v07`bBc+- z|G*>*DHF@k8s^B0UsdJqp68%JMxFG+Aay4s2I-LUPTM_VPBcAq)SqFn-`n3;88=hG ze%1KUv;!Brr&?wxe3u|DY3K~m+OWgTu5-em&gM#w>9T!Mm|u4{qvW5%63l7xB1zvw zZ=`cqDCVKM|XN^v#)GZxzEO!A~&4V#SZ?79B(0(4AQqYrRR~5yriw-NAvN} zIql{kSgiKyY55-rXPbDC1ARqSz6nk0=4KQVdF)LDuIXr6ofw3dbXkK9ekP+PE~&}S zCo+`+;6dYyi{|-_FX^^Dac}LpC6sFYE z9sOyMS+y=R5bW46@tqP}e)uv~(XkG$BK0cvdF4+Nx&N&^L#ka2M_N%+G{IL5IYj1j z$Pi(F{gJE^qd1nXOGtl(K*B`gnjP)4l*#J7ltmyG`*a9rxxdwa1;5D36C&EwPa|F% zVhT6{>K4=Ggw~6?wR&U&d9ArAHKkDM4AumX&q^j8~-$34qqCw#3{Jzl5P)~ zEIM}d49sMqRGnO`{vSxn)}leduFE0s+^#db>a4g^21&J3yowAS+yAUAz#F;ls!xFu z#&Gv~VbI%wCj8y^-#qR2B`P;ChL)b-iA#?J2^xZ#b$RmVGy+@^&}C9!<^_%jJPYW8 zvlc23zvd+i3r26!zpEyJpD|2gV!ROM{As*T}&Z zQRBS5r?z!y^$}We=!Ikvc{u&^?u=JWJ$9O8D>Z3Rp4QD7ROL&9G=boVKrZs915J*; z;$6YxvN=PRm2za^?>v;YVrQt^{v^ z@o0S9Y=xdz`JINw2#bDlXVNi7-K>Z!iEc|Id!RZ3NCx7#F-6xGq%OFRs$_GW5DTk-8R@(iwS)h zC15+h0Fn^~r70F-JlT#B=0U4yNKDHw(;rvo^05-#+CDrgUJ1wQn+wO z#eea}c0|*!)Hb{gisw_!o+t)FdnG;u3>KxN#abE*EK%0epFf$_$uWyE4AQodz7M(N zO6FAZXn^?EM0*_@DMw|d9A4;f6I(s1-5f4|wy9?4_nx?J;*o1s+&Z25%xj!)dIlZ~Z`Yu(bqV(qUq$;=I|SEj~snA~qa z2;p_>Y_2Zx;FA)#Sc>S!^Gf>QX6yqcJzC<6!b&2(mNLtO){-T{&AdTG?~KJOg40kM zH6pQTs*T*C3!Z&_ZEs&61HB^ECj8=wo%$*yvgljo z?O{kg8>n9@QtcC!RWz3?3%!{xrT2ixyhwu}#_UtCsar@${9wo9Vz+GS+WV|QjtK1i zk&{fvoH@C5&z+KtU%RG)hE-XfNe;%6inL`CpcHc z;(~+KfP^C-82syK#On0Fl+OM%rqC#VE9uAj6!qXqiTNk zWz3P_{)=~{A zIR`2LX3?m7y}tdfH0K+(pIzeArLs{qDdSmH6DyX?g-dIll3EOU8ywThxYCzQ{z;kJ zJZb2frK^8eR_zjc4rkh*RDyXW}mn=C}6ecgO0DXiL zGS>0ZYqk|$+psFD!D?AY{5#pf%(owIN8%8_bG4fm&u&wWct!i&e(#}x^Yb(9rk+~G z4rUeeeU01?M4fZR|U%kTnj5+~D}mMuZK{(@vK$FaluvjoG<@4XlCbe< zxy4#gm~-Fy7aw{(ogo7~9ljz$X&z74Ac#oKrcNbC{*srs7mIn23=7o50P%u;vno}O zfJ@$2D5=@IqY9e+?r&kSBx<7ZzeTWS{|6ea-?7eN{E_od@t_J)6@1dDJNv8A3{qTG zlMZ3ka!E!vu8`J+nnG?tIi>D^i*=P2A>{`>k|36P&?Rz`c^s^g;qvd4^$4E9)>rxl zK0te~@7n(Piu+P&T2`KxrYg%*F5Hzb`<(zsohr+cU9zwS)q}AQ!F5R2^xxM4-!`w! zC;QJ3pP1?MO)Zw=_7$MWjJ7>$9+&|JCo%Ef9})Yq6C>ZqlbGqmu^l+L3u}C7_#>Fc zv@MLUH~p`XdKDJ{9%FH7V7JRTr03HevKeP#FV5G1Ri%!-!Juz}a>hcf0?Pa3XN4Cd zmxT11AI}A6b&r3JP-nKfTBU^%%^((KRe5!I7GIpyZaq|3lp}QvC>T=uT>`t~LvD+f zD;$4~p0yILu}Qpd*>q`XIJL#(4d`v3)mL_@j4UXt3!a&$EL$&=qK}`-yHQGiqhKv5 zwI>Lo(#gq;VwNT0<~C$*^zicakR-B5e($zx`$4)UV^Ug`xAue63xxsCLr0g(gbee4 zpn)QFurbP)C3pSRcV%66`O4OfGsB0q4bP_N!4BKY<<~RXlFDerI;oox6YA>tV;UO` z1n2~zo#B+)z(3quVpO^F5VaTUg zZfq1PHy%l2#3t8%Q9GH$wjSYO63&tuprmoif<_Ry$pj2)8ZV$yL$@Yl~C}9Qq{t~AboJTyyNT6hQW>mNgN}A{UNP96&$LkDN1Ee;Waj9z zdZrU6u!0D0`RO>B+JiTRc7ak@k-Tz}@aq?R;}ZR4s(s6OxBr1q$B8hJ4XLWSQ#x2U z^a?^}+n-dnhV9l=nwKH99Wr9lCX9<7w2Of<;bPrC4;wBJppWhlrgib_sCOCI8U=!^ zLkMGB;~cm}IRYr`8Pthzhnvf5v->p+Yf-3w#a89Jds&aW=FOV0hQbLmU>y3b{=TA$ z8sV%NYH6bc!5A*obq@jft$|m0lNaQ_Do9IydJ*n3wneSuT3Rr!uhpt?)EsyJ2dO|- zzbQOjqQig#GX1j5q#jw--Wr>*_Bq6fRagG;X?9JkOHp;Be5FPeMi6h?`dce0s$sZUCq0h1Dd?0Pr#-a z2q$~S+n?P?Sof=(>x)TkztBsfo4 z8)heeU_#J)gU)BfdU{8`WksvEVpZ`J)KS=N)34#DS{i&Wr|K*4Vh<@)ght~d6UY;s zU<+z=T);tgW7O+!L4HC!){E*j+BOGobMIu;-klwWhSzYk3Tlo^T-8Bj^?d^x1xyJU z0{L$07#TC1FbW4|E_EY1k3Uavg9GzfO17oC7pEo}EJnuC2nVk45cY#|wf%1Y0NiPFdI&dM@U25M%fSC+t0~Y6CdTY#BPNc%uFLY|GNp^zMd1^`usoHce z0D&r9QADVTAWRP2L2sOUE_|5`P7?1z!p?_aGOrQ zNK<>muF(s}Ur`-gDN>oqo(63w-q{_e38H{D|h*20R( zSgw_J+NVlNx1;=0ig{&?c{iqANyopH9y^?4-&pD~uWiJp2^ubhib=Pp;kFH?c;k+? zvNC2%e3HoZocP4Q^61i%{70(51$h-fAG!=^X_o>sH~mLnpcjjsR_ol>w3BkOcD=#V zKAl~!J1+Io>VB#2sBVQ#-oEKI4J{(AJaNrTBBo-}2&5Azo7BUQvU%;RM^t4BUL`{S zZSU=}(=5tht!2Nf=&33b_Ga9nvewr}0xdPF2Y3+1oN^kXNnDvu8JCt1kTBiq=+rpJ z_>M5f&gT7X8gu8=Sw-xy)_uunmW;g6LnYZ`VKkG!;iH{Qgpq{=94R9hQ;c!(gFH

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0Dj0R=8R;O(Bt`ob{31o8NVX&NCXXbtdbITXZ(MiKL{8o;MNFK~7l^^2v>dB_)d& zW_IL4g#*WJci_mVYcxqDT$`I}3>yIe0TN`C2Msh)+4ptR)Oe(L#D6mSeuAz6@&*Q1 zI30oZ)st{kU=R%VKFWb{nJavB$}_n3eO3B<%{&#eNhLi+(&of9G$>;c#TrJ;WFYaE z4vM)10!S>rf5n_IxRzmAOqPp=w?a(GB!L1xTM}&ui|kA!sVnG5>Cd)ylQ6GNzMVKqt!#{ zz?Oi~P}5RU(ecdF^XE_<&mxga%b8pb%8EfCgPfDAmwdH6O0Ff_4I2W|TM!R2NR6Vw zVQ7POhqqejn!eLD-uH2|M=_OUxKu`2!YE;g(>cjFUpVjNc-H+|wF4?Pg(kd+hK{kR z`sqE>1WataH#Ss(ziKT_WdllPhN?AK<*Z}ayGqK$fsVuIbB^Sk^rXA{5Z3_&T!!?3 zN3WEiw{X0abaxxQ7p-gC#%g+H;%0^xk(B*ehBALYr{}ECeJT&jTC^8zNCU_xav%kQ zmep4VJz8mC1%j5AGN2RnBx`t8rtiw&dld!xjH{>+H8?!8B+7$``sdHvwy}$qCC*Q;0UcAO|(E^3B{#kOq^nCqOmTQE?v?tTgD^#@WB(H+OI}9M46& zYqwWOcU?W>X!QQSdP{w-+mSWGzKVs~w(~<#Sr4vNT1d;Zd^kEJK&Y4G4H%RikBV_T zN}WJ>)4VpAhU@_(2-mFd&0yg8P8`}*DR9CamC)iOl6AR@%Z5w9f(yc9XcJAul!qbf2eyg8$h2VTpg%0$kR zwn^%a)n20=gm1Ke@qoAf)cuTH`u_liyKC{wtP`s=ywcJEuvS3cwy%xZBZs8 z2{)!rRTZ7eGJ;C-M&yM~rF>H`%r9{kPymuGs^Cr6)HU7JRnhKh`s;<#NSR@;sE^c^ zpZBderglOZqgG+TnEvbm%({*zll)_=hd!Z#2H&dL6!M4$>J5Fo*>`_VYHT&Nm2%fw zB#ujDFA_K5ou+Y6kTNJ?47}8`$a~5Az|P7QdvAw$u;JL6Ppa?jn>)8ZEmkVDY2q9+ ziGn-EixFe!HR&oNjTqH^(?%h8a@>gl~ueA~ecQw^+WY!*AMqS`D!kWj^MqrS#)1JseS8D3Msd163bs z0Vf`mgh-?N!~iv`!|+&|bp|1{^RR9VJIY`>JdaXWnqs)K_`V~@tX$dBU74r2H~#?L z>al$m+|*Ov2)a^1xgw6&B{eHn@>+{yBgDwa%0ouVv5=*a`xYJ4>gN~+D++%NQb0d2 zHawxgi4(2B*;?^RuN*a|se&R4c7tL+mD8IO<5JCK>GjKM?+dj>r*-UFfc6{BA)2PH z??oy!RgeiJWj~4$NbIGV0d<9f{_7g@ZY{#9;eWkJgfZT6>Fxru;rPGCVVL)ypM9sO zpRZNTmwv6^HjVo2Y1`L&m|(a;6tyzgu8bPFipwNkwBUwDBBk1Dby)s*lo8vJ90_yQ?zdz+21RzUvcL)!VhM#Fn~x%+pm!w}qy`gmCVM#N|z(r*v4iQP_R5rE=!sFUoGt3|7)_%&vhVd+42EoOI zFR*?c_~(NBM~5GeEu~qyhZyq)K_l(B3vj06zwAH3Ro-pV(u&xG)ORXI93@s&a8!eX z+0^4B$jH|W>@FJ{nw1vT;?x@xYT1DNNaXC5z%lQQ{jxSd+5^*c?NR} zI@Sd4C!DDdR5~Zq&xknct=mq)MYd|LuBewPCwgNe$CRQ=F}Md0`VMY!;QjIeSRoOsi}?0Fe6F1?a^`%T{X=4pG<%^=(*E(-RNMfcw$y4u9HJUP8@S==d`R#E=Lw_Kg7xi$05hI z!nN;cE;r}=eWyY7qIHdz)LwynFm$`&^JmyDeO|q6O8VJt=6b1jdx@AzNcEtjhG$r# zNQg+wta8aCXC(&&8OvH-upaw;943>zTNHnE=u^8-+dUnbt^lzFHcNlRHlIW$W?Z4n1vmhvlmk_$%Zg{O!V)`br>E3_R%%*;I*4x2VQrrhH&Hy-v-CM>ZM)F74?KwP4( zeLx5#0oxuit*{IbR7na|XxtBQiWHV8r2Go;iX>2>VdTtL&M;lci$=inu-0-C!Vf%>?>DGnmgsXwl#_j%yit+;+Q4r6n!OSSp8lcP zsE+Nr!7XIV_(ZFushU-WAk)*+1ppL674qYkFbgP?DgkcYudtNJXfp+%Pvs}BqT6V4 z#o=Ro<}uAQcM1F_<{S9DHAYZ% zN`El|1WC5$Bndi_0JQ6(ohN+Y6(y+MmTJiC_ba91b3sWfIj~I>wG@#}=&#HpV!Xa* zkSg(195Kn4Ijn9Ty)gPTnI*&XNCb&HjWiQ-Z!s$~>gI<(ZImjzsvC(W6qCGk9FimJ zh}|VIaBLFF+|)Rk-LT!ueLHI2pAEx-ow9Ybh@VI?5G=8Z^#lT8c&ifGe2(Q6J?l)0C@#(;WU^d4w%4=~q%C*L*VlIdlr z+sSUFr@28|Jw;NL1JS8wczrVJe}rI7kiJNd#tyS&cz=laj@KH`>Ge=1nQm6=_xFFI z+5I)z7PzY}+nig!2S){K$4MPX!a^BQlmQ@i1q1O8SpNVRY@RtBuNcQv`7n(?GlZDs zene{%9V2uxjd7ion~XEkikrnXU9#&|Dj3fVFRB_ebze^|iWCJZSD7J;@gpE-QKgcj z1qU_E7J_2&Gh$A&IYpvE2>FQ%8(`g5drWdx=9(*$$LmBEmC|ej{E zpnwTIow1I`R=92)+5{Wg!sgqamp@>lNmwW@-i18LNFixzDbk(F$H0Xx$e_-0at2#D zBe3nASQ=8`UoZ(g{Q7q0fL0z!l+Popzsy*I*d*uJ{{Wx(YitVuQeK#D0+ynhtI~#d zMB-qmPH1}&4$Y@s|{!&Ih_)h+E-`yF&@9rFfP5%II-AsIZSY9Ih#zq;O-~kvQhQ zL1Ec)JCDn@u|2Huvu_{kw&(`Xr5kH?MYrnYTKiNrDNiDxsGb7S4@=BEgo-$}c(;>) zm@9#eTJ()ZLrj-#KV3cDPQ-lMEDh?u-RR3Lx{c|LW>~T(7-C{oni%;OZYh$yijN%`WYz4^4_%BuFq7W2Qhz0{|8vlkeQ*_x!b`_(uHSF_YB(LJ7 ziN8sJe!S)(Z842(<}1%~sM=Rv6*X4b7M@;5_JX>{B}<0O$iF(TxcNBt85qtEvr=w8 zl(ml%KgQ$%78(=hJ#@0h=P-~muRZGb9^cz^6Itb{2BuI_dWJ~^>Yp%NkQfE! z!R*@0Lk{dscefA)hJr*+{I4Ek%qKrAg#)@>;;Qu-QOEFjU5*BFITiOk$DLo& zqFDf+lv*wO0gEy z+z{A}0Z^S<$aY5+RRqdq*K8X>)Q%R=_%dC1c8YD8iTlZ z;YNK-D&jHN407Z!ay#mHW{knDY-QFY3+;1%NaUgf4Hdc?dyT_y3PD*+)Gdmt}5Yv7(?F=x$ ztsOiNky*t-EZFq9An)CWBj>sH)ESCvi@Z8ylX6eXeFx@)+TD~$SS!_Ri9{%4+!EYr zQOW!|`ilTLJ<(gXJ^T+oHN8QAzr=Mcr=6$HKXRf#=DyeNKkX5tNj+O;#i*&JrzT+~ zebHfZKp{a`qL61N$0PLftpmgu*F#!XQUDT4;opcJuU|La*1q#}rKPFdH8DnDxy?JJ4K;|~(z6{}T% z_S!|7OT?HQ$lf)OH(8&FUZurs>eYgZ*|cpN0*7sFne3BUsSPbmBDy-ZilKw5GcuQr z0=xXj(qo?Ou0M}qs@1GTYKF6F09sG{WWa-_hRS$cO)74z>J7+2gS49+Mz;GYpToCU zw?vdxuv~hFQ?PbLrZ~%0T$-Wdgx0y?6*N$Q@^kbha2JXwS2RWyArN{jo~O>POj3g*a>D`$zikI&csZsR#|+tolG0*8on|(;R9Jjg3k}37 zQWdfm%See5NF)Q-vAnIB@cr?Jwt8)7+*X~}OK_>a(^pOSrLoY8&I=UMBXD*pJdnn? zSk^>mRE2;okc;I*B$`$PdU}g}SE4ebUrDbgYtO%7Xr8rvL%&!zRGW>B#@lC>R(o{` ztBuSUPu;u5k~~WzC^&BHFi8UhoKKFsT=W$#k4O*|_1Ab#^ z{x|5XTXy{|C9c(1beHx$Jn;#ps<>0i(9s5z$C&~l&R8xuhV03bq?~#_8{^&=h;gFY zkl|>JZ7>ds-i8B*;VGKMrPTn_ndCMKS$`V`Y1(7E#dv%5%1HP@aI{tgtc(%iSw2`4 zgN#fYAmfYo8p!-*J}*_Jq&34r2n2cW+Tn5-s{BhCSdR=fgHS|+-=CC1(HHB*efsNF zTTnj~)5+_!)X{~JNXK?X02ABFW4=gH<5!gGSHZM0vphx*@@Tm3&HIl*}^YOSeAVqqRvRY>lhBs^ol3_qtb*6~Mxd45l^*BrqNFLn~oQ@>s4LfyF<> zpg|oh4@0;;$CCGM7s424 zu~w|IH7$;c+h@AhAfzR()d@oFCpXCxI!5Hnp2(ztG6y4(uO8yqS5d`1*p{`;Klb6n zDFcxr+mpV*dHypCQv&}02$>wlhp0=ptrS9zdf(c0^IIjJJ~7IWO*^-D42*?}p!X#_ zmL3Lmqh7sgZVU`)bR7u;loP5v0xmQfi*J8$vp%aJb6Uphx%Te#xYi5WRn}acgjDwkro@rP zJK(Qmd|==lc>_JQ)lkD?@KoF2Kx|0_Z}%N_(?zHr9%SmX_V0+D!_vLUV71cRquyIz zZ%8DgqPswNgmwAiS3fXc7{|+%7+iKbbv_@$@me)86&Pt&sv*Uu_RyZcUaPa=e;4r{ z6G_-gL>g`Y8+^nI+1n6wwYx3d(_QVe`t7{$M{iXffpLzODw-M!vHt)r&Hxgpsy?_Z z1_$wADaURHiE!+90m0Kak>j^EQbD|IVEuh%eG|dI>LwEzMwSRQ_1q^uU;%<{m*z4? zn#^8xiN4V4W!A-8M^$rbt2@mbM^9NAG;zqFm62EvJ@OkFA5b+#iQ&}h2MPvxiMXHR zNnVMM;MiPaA4?7eNP=2mkv9ZS)96a*4xaT=-Em6j>n+q%)K*iaBrjJAO-|7g-l5{z z8Gn!fK^Pd%d~1(1tMHaQ;jH7n?H+%1c#V6=e4O0+L$_KY zmuA~2uJK27xJNpYuPRj3Dlsg?01%Q~EcQO!8G5{UD^{@hh^wCv{NyN&n z>VxuQ2Z{QO`|BIqoMk#DvQ{dGskx3pxk~EHA}SXE<-S}Ip2HtPJbf@%0hEtK2_~21W2BX;GFET9`iLerO z5@O?3vKm}N#;QZO6|MJK#mbrsT_r-xM@*B~e6q}92*z0=fBX~s-~usbWFv~6;*ShP zN@KxsdxSW{bQ2>eaQxqvNe}^BZmTFpv>8X-1WCk@*yodk+ zk`4eQ z5IlvMOE><9#(QHUBaqea;i*x1eK8Jq*Wa#(WJw}U$iC%*@mEVzR|CUE0g4GAtdS?#E@L+jlNL_U?W+-(N47% zwo6Txshxz=6pWQdY$~(zZ?;Ybf2O*2h!HgLn)1vd$Un-u_9kxl?=~ogWW4|l`#FN~p1F-Nr z;~6^0+6)ywksK7LW-I@?J&l*X?bACbTWk>~xLD3S?DDoRmVMh7m$ z`{U`Li9)HHlY`IH`A2j4c>O$R7D6Zly^Ab-RN#<%`9IG=vJsM=RUDldWO6wk$KOD3 zHU%~6TNT9Cr6HoIN}{}kPZ?GV{{UBfV14{+7^_UTIB+2lbW**)XQ;Q!E#?~&Zy(u` zER}!q^3QLDhb97dOmhSy90m$NCoD6qce^w*Hb8XPp2OMfva~^%l`Qy&sF!nY3uf=F zkN4Y>&q-YzuU#cvuE?SnS92PUe=43T0-~T%ldA3;QPBDY#FjXNAa8NLiq{`Wpi`{Y z!(P!5(!_Vu{jF4#bBHIFG^l7IP(4LM#Y+zid<=~Kf0nKb+aNk5{+yLYNz&^uvDQ2- zBD=**08d5+^*OPPO9dVK0px#oIM$iS92={(pFeTUWikbVVID-RG!1>p$fR;-%SchvnZ%8yRwQIT1sfiQxtxW;zY784+b5( zIRthG1c8DwbzP0AQkEI-ZO?qLInPfek$^eCDec1l081S`O}dsp+K}OWVNGyk1g3Vfa3Ju`c;~n0{I$2$VoxP3kj(H(rYV$wQcNxn z-#?y^a3V&D#>&uA8y-)LdDPNdh;Dt!f3v|;PkDODZIlp{j@2ybG%|rFCuHnhqm5V8 zbiyz0fhXUNI4mU!rLLv`dyM7{f(%$4fisjFpO}T1OQA`(S5N4m>4w(dzqYHTz1^!G z8n=>`DJb$9tyA}oa_oN!8M*c${CuM}G^mPrX9l*wz!wAy8%HgpPgNlwU~?wF1i;^;+x~J;PFIZ5I05ll<o~ozt1Myb+l_Yu;^$sMOT8W zSuRzd@ixn|QN4WjN*h8$U0WR#2{h{sDopXLhtrkFMk?W!MsUOx8uE{dG1U0C8*NrR zla-+V0F1r5lF%(6MY#(JRyb?`qff!DAnTyhxg$=u+f}BzsqnGXzlScF?g=-Y($!gE zubPt8YN)qd-cdbXWn(08vM3THX($aL1vwu~9I;ybT}HDlPY)?3`-qK9eyZn&(xz(o z40$EOK>{4oJM$cg@>u@>hs!4NvD-!w-?UA;t>Ml3>dm6i3Yc2P(^ie>erG_Mshm~4C;WEamxI(Dxc(VE(7u0onxXd_f zK@b5DNz!ANL*01ZBNE2cp-&Z2)oW8Ga+@9Pw2cbDZY%w9-Pg{f?XSg6Wtyf$wNp%e zNuicPTu6%{b$MZhWtc3S)v%!Dv5m^FZXX8B4RiCK%@(&g9mb1C3j8~%J5`Hp zD^u1`?pZDkH1AmJ6N4Ox10uh03gb%W~CzKZ@3=U&DI~3u4`MosEpa2hU|T z;j%UzufJ8Dj?rkVvs$jV+IZ_}DU~Orwm~q08;KG|@yJdH8Q>!&n~Dsc9FJ{gV{sT< zL&HbR=md~S0`vRWNzzs~(rusb*-?A8=9VcfRMFSQZBZEEjz?0%iZUXFZ=0KD2#JxD zaa=dg#A`JXP?ywn_=e^TZMd{pkQxb+BGRBiBuNSZHXi zcPJ^^W%MIh;+2$w;y^IDB&vo{=0)-d*K@)CGva(QqZ^2->aM3+1A-v9B)waV1^8f8p~8PH`0~0(N0B8G?D@6 zR2WM_U|}c-rCK=>P!!@oR0dOz0mM`kYk0V8HNwW%5+^i^?$Qa=UO`-2nCiEQH}&qZ zg3Y~9Q%sf`dV9;s#tV%_B{D@z@*qC6@v)Lbd@?sO%ZxAx$_}>=;WCyv$HUwL<2U~R z7Lk>uwjv3irqD5{* z{HTBeRC%+&;&6O7`*oaP>@L#XLxk$sKDW8k3#e2kTkoOk%|q$_A2czZo0Z?TR^-=sCQMC46yKlm#>A6r>S6nMC7KtI7 z(u$SpjYQKBqq-zYz^gIGBE$GwvD9%KcMFDNOHO&^9=9nBEltEN*RpyrEEeeE5K{vc zKcOySWlEEg^SA?-d>rGs&bS^S#6K4D;Nx>6nC<#2R?-x}$Ve(hwx~BPi)l%jww>$$0AxZT0w%e_QQVW@%_LGs$jRL1M^aCGcfSpeCr~_MS(c8B zun`uuq=?*|doLDk59!$Bgso7zsS@x`hi%|a!&tltT)VOMy{mlhJ1rwtOGLHv3P|2M zm4lSbt?0&G`!6XtFD4)ketV5}^#1@6dNkXa+fTSwZxlfBaWBft0_Y~j(*o!BUj4`L zF}n7ZDgOY8E*CAmmRO#m{bQCGJyLLpl_8!p^cZuWVXJ!FPNo=xQw~7sr`z7^#2tmA zUglG-93+_NSO zY1CkV9r(yW93TTt!;>%XsdrsMol0Cy) z4I;x$B^%Olm=(#AUJ09&~_ei;3rAm@yF|y`!l5xb2*iaM& z_8B?Goj;24jA<>UZ@1TT%`<_ZK#5r>Hjdca`zC&tN4YC%Y zQ@)E0JRp5`(#k+}fg}Oc_8irX!O*>rOI^I_2;V2LY+J9x^+g%H%vt21-ztq+4N-~nwNob>y zqoy&_FF7Ttky$?v5E86>foA0?T&ZD;d_NUtDx0g*WM$myXJNTEn{xHm{1|)LOT@dZ zCqesi^Iot1ANHMM-#2YlF|FIwHyTQM$aavZrlFvXpqJLcxDin9Wmtl*a7#GkprO^U z#k#f~?x9i~&?Ij>l1JA{Ufy8<*;3CDIHa^u87H3MO9G1 zQ_Rs4oa9fOsdfqoTyjDi11DM|i#~~|M!)81u>(;zfu~(oL4~0AwaxsbbLr2N+f9nW z-g+H-rn6dWt=1jGT@<$8#8y;AYmwlJq)8xnxq*NcM0q*RN$rek)x1i9B>0VqinU#cgtW>iZE%FBYMH+dRi=VgPa`KO6s(~~d?@Z%1G!b%z++9x z{({q4dcV-o%T)~}MarXW7$K*WpjnFxWM0s zkgLE1iOJE3kx9=N0ItD>Xmxi$@-lRbB|(qG)$ph{G5U9vraFrb$hOtpo}S!k>M2Zg z^ifkuE78^v8D5|XC3ylj5a>NZ0p*^|2B;}j#8r3{<0;pe>88Bx_FWx(9vclzn#ATF za(`jvqLb{ae^0l6O6_w~R#sa#mAdIq_`6-kz8AOL7oT=Ybx&P@Ol6(;D}25fmC008 zqf#Aqy1;>PJ#_T@t!y?KxXMp7tmX{FNP`@&Cfy7j)c*jgHan+FdQCpiw%l(p+t#sa zt~3yuTXIs|XK8a!G*t3Dlgg_cXbVXqMzR>s7veRb>iO|vl{d%`2sb)weWGU5JtcJ< zJA%C6U5u|xhMdqqBJwhVb|jGl{DIv;_a&Omz4|@39@jy6tlrjJYQVPJP)A6XDHKU8 z(O|h&1h{1IQTg^D>Nr>USj<7FKx4?c?0-lLCO?JLXAPtr4AW^a2BpqugSd;Hplql6 zli+u8^fPB%cehpTv)-*OEDK8p+}xpMT8R;v5_B|j60ML6sZIbkIb>s?nqXzHj-Gti z2~Lel&iO&odGzJarMoPxzv1^|UafsNyWH(F>^b)>V1?SFamiIlCBM^IW~^$EqtSRG zSy7^XBPzc_b%YUBqrz~Gphvk|29coW(XCC{>^0Eu^yg?$8y~zilzJfpU9{!$d5TZ-6 zv=Vz2E46=T9{avEebU<W4%YAP4b*Fkr-~7upI2aFMq1jHTx!uaqeo}ueG){GhJbM zOqBH%m9jKGj7-KNqCwr83V`w@*;QGy-!3R&u-Z72ZHD&c?{ykfF-{Xy0mw+3bk%Jx zk^DJX7o$7Mlc^T!4XeAVsvs5!<*TEnuawEmO9P763Y;39P;g~*lA(lzqnT0!1)f$u_vPRH1tR_T7=>IMZ3k7l*D#_&xoTT?|%QtO6_K&S;& zXbf)}#?c8RGLq`!)6j=eF3TowrOz$n$ezn-!IefyjH7;f8Gt^M)Ri#ncFTupb@Qk; zU5!CQv*M(!xvdo&&c$WA+`r+#ZwP;nRqd*U;UoJMZO}eeLT9^=%d@# z{kySi>2A|d)QT!9(Fdg*X&I5)p+!$2D3x7IKPxJqe4Op6{i6J?%+MvXB$?O#BHdG` zg`rxQ`NJ>yjQN59Bmv9=)kivS(n@QUr*GP$r#qhYTLcrQj)nrIRz0y`3+4~yXw+MIw^#-jNnU;yc0Smw z+EHC&*_#)9O>CO?bG8W@_i3P{VNVnl2#(Ct$t#E9Ol6r^y9mP`=5BEr9|tM1`Gxf$ zkK*Pw(O_mARiIkY4+KYDK?h(u^Pec**XSQsI^AhneWz!%)7z;fl`1bgdui?Kc>GE# zgn~%~(8>bk*~5J53X>TmD3gshJkty$4y64^i}zUE!AwSRo43ER^izBwS9IFuPg3o> zSASiiVHcxa)F>^HNX*1R9CYZSM-1OG^N|aK#0ZGarphmKY{Caf`~J!dqgJKepy~dH z`d;n9(;bzuR^_-UHcr^GS)seh6fng}d3%j8h=P&|y7}RNtdbzfi;)AD2XL%4F9o%! zIJvU`NG{fFbQiIbJk`z%hGDTdj}7>Mz&8M%;B^C-jz-|FcDY|{JwmnC+Uz%7%_S`c z+2FWit)it^#yY@ z@-$H_uNwsq{{Vzoj7FO=7>FUDGWrwPObbThb=_3tWoLk1V%q(0%k)~#+qx8=zsYfUXR+FBWDr)eRg6!ZQaB4Zn?892!}b@>%lNW+LNpwAJZu-(n0 zOX+oCgQrHbs<61UxI;ytnb4iP=%mxymvnUcbg*3PcPm})jptiLTTgDGr4rMS5?Lsx zlC2seAYYac<fWzq1sm3b3q3wO4N@>@odnnYaIMzCnT!!^wjHZ*rrsdDbr{Lwl_EHeawm5 zlEGU7=1~}ihh#gz7ZxM)9l^Qu3wUh)sBGSbP}E**8)`eXHO7S6O{;UxVvZ@Lg;Gk0 zVUAau)hE^D@;qTglu=& zwlyw&%6BSpAYA;Ua@BZi-<6cW4bjdT$07TBJz?UEshb^9vhVY@ zF~384`z&mC;i!{VQa3}N|n z15U?C^NTG?ILrlnJE?|-RtI@94Y`vX#Pz+`ZSHt9MfPwBljaYPs0Ph63EC_8VvX%qe0ZzfyFy_+3OfMyndeQpigX1HIby3b7#*EJoM*EObQT579&LFYAy zsQ8KIib_aXRDp$jU>#NP+&eKGPOc`i0DFE}@&~sssOA-K8Fn3*YE*E}c4w0Jhicc! z1(T@(z?<_EBudnK(!Q&AZDF2JZhIiJ-7Pyx>1t~vG0ASMp|aISB`Jbm{6%C^c_aFcIj}5G zFPkS?H0xoW&jr8Zq>rdu^{4=tKxeJxL&^SbYyiii5-=BC_#7`H}fEe4%;VC&l!cOA$kiIKHcMK>q-gX{P&mE;AMI z#a3de)#2?72mGLtC-ZA#VQ%F?x}UrHlQsTLueNr|(b_K3i;B?OB6_$gs};RAsHl}h zVmQQtSt3xXV|dm0hb4}X<1~228MUgHG&a$pzM^j=Y0J9oFgzBf8ReK}W-c;qq0&u& zxc>l3O?kCc-)%JZI+-hBhR`6m)1_6mIy$NzQx$ruO34~F!m~J%DT$4cl|dV-9dlSd zHriBtJY-d+c7yq*)@y*Bw05)Vw<>Td%r5X-lH&Fe)(lAIKhk*&6%hp!S zTpdPJ@ajF1NBo7;Xc2F8~ z$cB&iXUiMPKZRyCv(Ba+BpC$GhxT5H!ng$r(^nWl76G8|7LW%aF{d>X+nYbA)@yBi z+n#&2;F8*&qT8rqrm1LNmG}xt_F@}5r!D~fCI1ta-IsUR)>KAk1Ygw+iUA3 zQ5tk9lFai5USqLW?7OnZb-G5g-0pOAF}$)=2&lzFlw7tWiJ3W!78x(dl3TDGOR0jZ zMWR>AYT76RdBYHQrPhQW4Ms)A`5)~Q;ZYLUyM{KqXBkv?LQe9B)u z`7XA{7NuJXcs~#ssgKC;B#6+FxSn2$&A72vfTLVU0>^&Gr&TGo^;U+>4Z5N_%42q# z1%|qsYM7%k9&X|jBQZsl8O)KnJQ+(VIG5z*#|WtARco(KWu!?XY`{d8*av}dVC{O! zEEOxVl_M^9G5|d!oT1#W2b#!Sddh9Iw6zAZg0`Nfj8`O-l?c@o=+it3lBbcApo!ANTU#G4OD#v#-Pc7$1A%ue<$4dowwvmR6$H0Sk6}nG*Sbx_wUSvOt1pMYW#GadZ>m&uXU0sOrw}w_I*e&n&WAY;{ry z(skrjUZf!IvPz^XpO=HFaM{B8p9J7E-$|7#knljtHXTfx{{R!Z?D)_9PU85yGcXu1 zD29k6UDnenI$M2bLKOc1tNljW{buMymfN)|QPEYzV@p6K70NLR6_@6Sjx1EJKk(Ri z7(R{tJ+60#@h!KPW#mn&`Y$!9Jck?3{cr59AGLfp?R!n`in>eP;^%Lrs7i&jR#HMe zR#pxcSk?d)1z2b2Ekp{_=g#Z!+sv27u3WPdAu%*s_N$ExLPd~ z2IEl~p@K>|m8JDzt&RH;G%gHo2s~L?N{|QBS1!WSad9HWbH=7^M|I7;XId_oZwnsr zqO~PqYI8?b3)H+3#Z1d8M;vDi%*t9~-HNDMa(NPQ4vKDKd1R0%1hC#7Xmc7(nt@N{5>Hh#5S#^jdsU(U=Nopk+ zrj3FgN0XILsrvit&*@Nk#EK3C!GjSx!HL~azL{w)n2pFW{*+^LKJRXmRok}>qPCun zxcV-^yb}h-$aAutgpud1x|Pf+YhA$=d8V|VT>Y5IRZatxG zrMFu49bFBsn6fN&3`I-Ku?3K{OP6O1QJK5^j=h)8wQ*QXO?I3{C9f|gCO%l@%yt%7 zs0=uG4H7lBz2$5wuZP{OXxrPy`MW($peU`N(_60>siuObkxbS}P_60^vk2iHkO39= zHzB}_8Wasy7Smt^L|ADCcF>-N_nDG*Y0`>~4xFUHjkGby80JLsQGT0zKU?n&W8M~9 zTsxlLDS}(>2xFaHqn*z>d8LWjQA&h(-xgL>@7Cd zC5B+{dvuFmo|>%I<@i(F8`iohDb~KlM-)*}ei%xT`p_>oc;@67%&j4L963Cll#|&) z!iFyuLAe+Nbp~(B_UN+JrrMP=utn$iJAD>cYy3WS7S~L?u9MYOEkv@lO?5Od34@kq z7(;|Sn4UwDk;HKr2U<_2D^xFgc7Optb2j>^)oWg6kc~CJ*Z{T;-k=)`ZQM4!Z1yWg z=Do;XqTNE!8mjARD#VOq;tN6QHA!Me%uWf*5P1$iUmJkHfXgw)96;BTLEA!hn`;43 zaV9y{B9MRwJvyk3>!C398QrNZmUDTaqF5uEN@x=?gm|G-$|)nlD>ADXos`Pgd_a5KS+FOT|H80oXZs@kp9zJ9YSGn<*YEC)*` zzkEMMdbwJCJBQ)zP)yYqIvR(bsV_1ZiX+Y)hzzBi22vac$Z$XdeuZ&|W0=wTu6mi* z^jPY(^++x{SVRaOobJ3kgKl-+T5Bz{YVJLovuzYrCYD&~&0MI|VU?12q4bxG*fIu< zq#%%tBvu@?Z~aY~bUJ-`UQa9i6?wxJyXB`k+`;p)9-m#7xV7{%;zGv*S6e!Ru<7>% z^3Ja_Qq@TWQ9f9>64Od0mRVTH{MC3e0;T;)F)_p_2NFRetZVN>&0;ibJ+V@l*KV3> ze4~|>u9bW~_0y$Rd-XG1x>vmGZ}q0Sk^wjq15p&aC6#BSbXsSXa=P~2gA2jz8|)g-*VP&9i>}gx6#%9GRZO5bYhV5hp`mFdXv`mi z4Lw+nq2`)zMZb*5U6kZV%6FTKk>Ih0=5;!a<^lAca7yu);hj#QCZi3ETVp#x%g*FR zfPl0YUke-eQezGh~(yt~U44`ZhN4IgUTxDuTi@|ge9;Dmqw(xYTV5?HZR1nfk_KW=wn%Y+_ z;d)v-r3J=GC8n;HAy*x2U%rl5eN_4Rj!Q2oWe!hr58=i2>Q$kj{a#HXO;d#I%b+*KB+b;Rud8WEq>MLm}OrfLnDP)d0 z2;gEya7ma*0&oi4eMBU2%GXsc5F=6sHBW3cKGZx3wMCn%+*^s<&J1vGS6#aHtRB#B0e`83-@Sl&t3?{C9S;AoUK>V{+3d89QW;Y}!xlj#xg%CN%JP{H_=XD%aBUw?SX#FM=IpFdT+EpRurhy#8AxKMLK1_I#@_PyLHx}6VDXS*aY*KM7h zZMWMiZYPjZ-mfaAK$ON-DFkaGg$@VF^GcT+&x$xaj$^}f8UFx|k}U+yjqTZ2_z$E7 zKwHQ_I{E$lh1Vz7+$c6rL291MyQnX+o23 z>!DQmT5ZNT&S(JgAlvkgTCBD2;lpNi2FY{X8{@23>*nMT)xCXo=-V^2R4%;HmFbZf z(>zDKfn^}^4tRhGi};;$dK%zwSorZtttR+?tYOStih_q95|e z@x&tar;1-$d4yLo3`Si@lb&@?iTH(>7g9CYa(+r%e0~=I2s|l9eWn-Y_0NC?8jUv*nZ9j)C_0(IE z^#+Ts5pO$P)|z@sYmJ`M9Ve>{VQE6D&Pv83H0R~vkjNQMT(Fiqh(41=0Ldah%G~-J zj>@kIhHZL<)gBlD{{W2NeaQ2=**!h@dg^aY_6@gdZQiXtijs<`)E1-KR4FUQ;Y6TG z_?8^shFPQyl26-JRk-#pg-`5ZbLQN<2=6zJKn01sIIs~d?m^q6eN;E8e+3(#tCbY= z8=rLDC#PzLt(x^sNp7FkaT~`UtgR$dBO)FthM7iwP@H@8P2vqSJZ}(Z{{V^1Jq^Je z^ePpp)O*Dk`FX&Pps~HWtWtkx2FDg*N4Ym%*0f^^gDv_dfYq8 zI*Xs|_~@*4v{V%;WQIq13z+9Dim>AxMhgSTV+S4=6~wW%UTGFI#^9f%k6$QRc#RAe z9}33MV}pT`;_I2T2mlUym9)Mdz8ALlS^8bFH;CMq^|V`Ol1oP2HB|L9*2q?MlvBKo z0B4ZN^T_HKIaLY*_Qzj{zLh$dNdDyf&XNI4HlVa%A>~E_I$yInulu}aC%N%e@^%5(roNCOVreYGe90kgNF_DgU6;Bn8!<;i} z5CdW^XO)HLt>=>KcxEFC+V6J~V_xT(4}c3l_Q3=b0M3K5#{4#Hd!JZrml-5#U6XXA zs2`0M>oU|!UoB^?iR)&lm85Ebhzh7>5v;1psm)5*RjT@QTZ0tf00i%7m=SB~7T0-D zuU`p+;*Z2qio`j`<|GIa1LfK+GGqvdvc+z_;b7QxduGvihS41j7T>J1L3OxWVfCP< zSZisYGa$@R%ZT9g^5hw2ejuRdhlWtAPl>Vhu?~>=iLL|lENtS$a2fo?O0RL4-F z7{F!(g!dGv^uYF??10R8(kdSpIi-kyEEX4|tpzT+jrC6$^esuE~sV8~UY`5eZFi@sTpBg6sN@z-Zv)aW!hpEo!r zI%|IGlB6o)DtK=hb>%0oSc`ft&FOz%cK-lR`U?dmmhoM;cOK-p;-~O3RMbq7(^5qZ zH7T4R%Q<(Pp=DJ@@BtatZF+U8wZs8C4yHZzU4?EPR|@uFvzNu>-bnzF=?7>X6uez) zF5Z-t74_9Du&pwB^$z4j2_in{_;Sti_{lxBbTJ3~SUbQ~wJ^gmE-CjnR(9u4ZPz+| z(|J`{tYX(4zB##98Y$Ss;*taMvn!x*8;E8`UsPF$XaY?ln6~_0)c?Zfg2Yo!F}*ux!f}v0z&JoYZ)ymQPfx za#>}9M!_!MyFW4_FFMxa-$XW}#J$(B`jfEw{S+~j#}VQ+orhor?{)SPOn?MU&9t3& zG0ok2_^3-&4INIz+U*wJy3@}>)jPb?*VH`mx{1U~5gw3G%Dmg=ZcWFJe9Yo&@dkJ` zDi(+YhT6tstQhw&DzTV$aHqHywZswzu`Sm_1}9A?oL&>q?xEXKP0_zD+kPuELlqSa ziMB1v3=&hch>pf1AVB=%hq%Uh$VtvLnEH4}3OUK>OrCn{>a*c#zO@sGEDiA;mf91p zldw!glfNr4al-Lu|hP0K_M8 zLq%|=f<~U~Y*s~Cj*Xz|+SFZY? zzNl=F0VTILoyp$TfJLEe>x7$6e{9Xiy687O+M%r$n}b$*wo7d_M&W`Hnd)JvKgO~g z2a-1tI~*ADNY>pNO`t<5w+)aEfF$t#7(cJ z_x}Kg4Y^%>-LxB;@k>olaC_C7mU5EIJV6l)dXb_inO~S#-erwjFsp%!JU#)~d~3}! zmTmt4B1Y3aNi$>iS@E1l@!4u(*fI#PE^9~rO^fNyL|MGnduUlYA+okDlE*YVdv)&$ zTW6ED67^^9y(Mn_C7_h3uQ7T!RnD=&3`zV zBMOXagEUQ)VoWSQi?RATn5yq|xSNRmw29uuFT!CR1UN?`4!e*+?djEAr}#zKTXyR$ zeS>4$>|#a#0K%Tf4b>7(EImbP&sC88*$SmoRcxPOkH}SykA+6HbLQRJ=rJ0qf4+UnRsJ1XfL-@eR7K+i!Q!SQmCG zn}rP3cE3?;sk@4bMMah*i_;t$KS(Po2M9n=HQ3@>>=h#VHv?(koa%bcy6UPh)Z2@5 zSnCnEojt&n+jTz%y)mG%&uO=8O}j-$P*39j01<1R>m&FdyLqa_)ZLT}!73keTgJH& z#IZuAXFr_40QBi@psT~d%i059J?0c<@BN>hB)+7u{u<$7fzR#|$R~_OcyLBxQ&~E* zE?EBn3X-^7fC)P-;#G3A7ZP`{f_$&#I_|O#4^&QK40R`N-c!kDY5o$ny}>Njt;I`v zy6svjYPF`bRMyUEEv_dK(};a4)O@uY6nwL;Q#eB0Ox?sB&`TUa_xk%PX9D`bG2yT* zBHKZmd3L(ZNAQ8rIAAF@%c+OuL;@?lbO@-2F{o2kMhBcRAhu3Enj;xexrTEFX2X4U zTW5x1Dh7aNAPbWbwusSuG4x{4V*QJ?D%>drLhh-eRlztMOs$+``3LAp)~!dQ53>nebXvII44%4+8vfJ{H%;) zoO0P@?Kk(hP<|(6&Dyr6+npKWhNhzf{83d6Wu|VZi7G(~r+=4l-Am198e11~8&Jl}t z3Zv<@&>lAg$r@>Jc@d{0qUzqNSw~HJLt9VN+kL-pOHE)4`);0`F}G921W~FXRWiv@ zC#k|SgOA=w#FbQjHjO%G6zak=&8@E5k9w7;Dmx=thz>0}i9LL@6Q>{o)m=LH7u_8} z+m^XE+>&g~sY5{MyLOsbTIDJ^M`+QA;Xox3z_JXyjIo3!FjyYxo-|H#CTuJ(*6NDB zDvO_$w80?^isq?pM~UsEcpLr&5br}TLK@q(x! zNC4$X1O*3GxF3eGRcZ>aZ~|`!*5A76D|}IfZ3j}M*B6l&5IgJkQyrt#{;ApoG;7rT z=TRLhl?H3Xk~5w>S(~3Ml4N6oNCb>vs*&o$1BIhSqr(O_A$iR_L*C*XL7s|vusWI7 z4b{3R>H2Du%^=!#ni(s90Sv!}^qQe(aZx$+;WA1~F=Ad!BM?Z}mwZ!H(|c)B(n&Y8 z?Kb4Qt_x2E6)NLEIzTzP&4$0C+*>E0+uB>rKH%yO=ZkS(V!2CKD^gX(_?oC5lvA}U z)yRp$nUS0r;Xv)OGt)Th*pe72+Am2wXqcHF|FJxx3;_L zc#a3t?R`2%-PFHnOT4Iee^E`wp5HBoqV*k4-g=94@b;2D^Kkup+VatHx?q&0w&%_TT&F$$)W1&u0Pi}j zmh<=Mw{q0or__J_OP4+_H*NQ)8t_uR`*r( z3|AMov?G13z)r>?#`T^NXt)mA5r@&W}@PTK1)QP z;Z9+7EX0fj%lrEdwd-_8w<+c9k19nPpf~`Qc*s$o z1-p00eMoq&aBEv6@&x{iOBKX;ZVm<^;7>P4>b&--UvgGU6|;ZcD-0}wl8T~~^5lWW z8DYbMtPWQoc*r2*ZoM2%8M*6I$~ln;r-{K<2g8FMPw%Iit^3lOj^)^!me%)MwZ?0O z1w}M5SKQfQF7cI4YNLrz*khINf!jLc@xK)C+yyt(t6Ia9pDT4%yf+&|35=my0Ltc) za)($O*uc|i^ItM|R>0~XK{~0n_Wt?XHJiG|YN_hlExkr=G}kI9SJ*&SGpy z1DRd+K*%K@tsRkU9( ze9rPr{eO*>eiwl8tVKWVP%QvQ&5@v5Aj}x)8eRh94ytte!gg0u?;DEoQE%EesUv-} z1w0`oxL2%&*hLd0Y#>3+WN@mvbqoIhhF4bADq!e6pVOXR>6?oI&#t!gR~$*4Qx@j% z?k7o%3~$Yq`J&Mh*@qYo%3MhoHrJY{EYL-36n5w%f;RN1Jn7_Pv(XNj;{w z@wA_adb2zshZOCFjf^f%Pa~AT$zca#>9UNxh&^-@e_cHx5wQ-n=SS&3P>XtUJ zJty_r_Ogg|=V9IMw;jj7C%?yiudlmQONB5b?IG}F_9#hPRDAY{U^gFYB$I}uY8kE&|7{9CZx zOlueAw`D_);(~*iDT#ZG7dv68j=J6hcOaDeMvr^%K8{E0l)WV4HQP=cqruJDSJJ)1vWsM>NTKVHD^Gvu>%#$EqE%UZR9Ap3wbF7#=E+N$0 zN|h&=fHHz?JB8QcvCgRXVjGBf4kVdy8ubo3SX?X}eW&5F%Opz;kEbhFG?7Efrr8YY z6R;ext;Il5^EMP?xz*i11;wk0WeS$Qkf@!;Xi^UGF+v?;GwaI4twr%O)n1=%zM4U8 z*dOq9ZRYoNrJY4+mMbL&O3#aIx6j6Kk7kZ6!dgsU72_n^S7l)>t<+HS(VISk^8P`jA~E zxI(u6bc{%*m(i)1BwSSy%dsp@M%yW3aO|n_k@-dXYk&1+h(8Hdpm2<&l1{`CF$VhU zd7YP4d?MN|woZ-HQdHV!vCz`o?kgRssN|*y464jjo;hDo%0X1(-pAiuXAt5vFitMV zREX+N+E&RF1Kip$G`+g*{H>o~xn9z>t!mr%87n5to}!r*WS59hAsvgHD(ALHP(J$P zD*SoD=)4LP-%y<*K%YDP7RbYAj}oh3Z39hX>U~zZ*pxe~V(gu}Wn)_m6y z>TIPg}bwD0+uOT^8cMK^0{*YksC-D1d_uu@MA{7BbR$pb^=W z{{RsMkGAmc6fmv)EjGgpZ#N>^%$T*0Ev&R_oIOF~5+%AFG(9%h{g=_dhwiu8{v-NF zLAvZ#s(8|+T8iOAB)OJ`sZ0fG^>ikHgX{8 z?{7c4i*IeuS5ws5np@2%wruNBrrR)HZFP?gU7F)G6xDRINgxb}k2HxESqh`9KB}1C z=G<;0E*Md403pWu$tTJq_lR3r7-@k{OWa8|kVoY(H8#In$4O^EM6>OC^3=%?Shqdd zY3ePrm7%FaQO%l}dtxywO&R%AGsh#SD&Xq6xnQYh0(aB+`Yf1??XKp!nQfbA3;t29 z^@y2UDQ)lxeM2=#bN$m@DN+9bry74&W z^06!IJL5l1NvA20qURR~cAcZ`b&{Tzp(wu-P^nK%Kddba@mOt1LqeN=^qtIcmAn;f99e()%{hwcX^2 zpxxG}Xk=Mjdh{2oWHP}uJgt&_H>IZw9!cV98Au%RY`Cs3@$WSv3ke6Y_wRiiE)-y@ zIt+_mEqw^-J954D)BgYw9}Jy0>P5q>-Ak#xQ#EC?a!^Z(D~hEw$@p3^SxDwJeiA&B zN=t-k72`P%+!@ow)N9#GNoP%c{{TG3%dp0)n@qXDZ_)vS&=3Xsh_#mO>t4j#ePGxf zCfj#C!$GqtBD~PlM{XA?Q90p7Byqt2b>lfnJrRUZ8B5~_8mPfl45L`m8G#1o)+YR* z`F#}GNz9{`4uEqK2s+-z{cJXs@q239>$h#%lFDu(l8#9X^Gj1OSYSj#&oc&K30T7r zKZxUs}|SA-|AYKd18Af8sQbD*0LpR`qErD(a(vv~s7QfWww8 zFELKcsLT~sOymrWY%j@(YmYPQHuAaGqV02&4Gxl6-Sy1a?=}+}URP=C-^SM4mT0JI zWk{EgG>O@H0ppf1NFRUk*H>Dv$^hMS{v0@vv3)|V{kgn)U9sTWR25sIVY07;F&yhi+^ zmFCMybpv}*bq1!-ZvCjWn_FvJmepZ31JD(`Ks6P-82qhKC}{~j);~oLgRWyARqi=x z*a)6}{{UXWcDx>gFqB)0tsW!v=+VEPy?c_i-FDuN^EKrwRg&EfYNj#HsFfxqVHf}w z3f;=CM$a>0 zH=?;wu!tD=vYZgiThC+j0gMcNNjio$3$*^3#a(x%%k4 zm*5_Tw(Ib}WT%>{1bb!X=R@e!+LCWZZ(G$IWCR?Qk&kjaWOo2(KNI=9DvSaPc`aIR zV5nPCWK6@O{GH!RXg6ImK$ki=A&%j6TcO~q>BVG{BJb)RBqVY&-~)oV$8KG+bxjj{ zDb#flcC?TE;QdQM^PY>AzAZYJal3U#VDy)0-4?2S$hR18(AcZpDs8TjsY#}2TbCGP zY2|8XJX|O)q;bXW6AtP$YGNE9fg*ZOy;VE$G@XbPo+X_Srw71NcK z(`?#pGs8%hN;qB^X`!bWSe0r^ykQwi@F1Q_?m#4sVWow`RC#qtE`9Z#ZZxqGadWVe zx+*Nhnk=bGm^A!_fYg|^!3G5DU{_;&S9}QA`p36nx^(&M7A??|Eb`Y+TO<@U^sfly zOmQKNCTv9hqDF!FIc$~(S+MxJm@4k2R_zitn`z(Gb9kITipIKwP4?T%kozuBHom9) z8`^FgTYf|MZJSpk-D&BqR|6qlocRHE~tr5tP#W$Db|w zY5J{9JE^o0SU_#fq=TULbh6)n311(QZ>l@Zuc%jBHqwgO9V~XK=pmUJbuMER=}8EX zut?QUD9{8{`MVHBem8}^=ftM(nCm|Mg<*%sP|E_Hg|_R?^Umj4vgr=Ed`4Kl9X9=j z^}6b=)mGcojTIoX)B2N1gpJQ5GcTu7`;s2KNL24VS2e#ZHezRvCCse5^P2-DZhm82T#c-oW*8Lu{&F>jgE9M7S!U2m{HEV_5Uy2jl%vD96~>zzeC zG}R(_>8qxTkn~rSyyJ4QvjWNi{v3ivx$o)tlSjv!M?JZ%{{Y9(FYv(=*m>=@*HJ5b zRc&{ImFg;~)hXdmP*golT7?QToUFM%{l|0TzN>(6)UAPBKjjAepnl7c{w@9{c8$|! z)NEawc)H8FYHAwWbfl7b-jLIAKD$g5w=xk*dR&+xW^x)p3f*C;WoL>3h}OXE5j@ZP zx`j$k6&mV~Y;uVL*O(l)>!pzR2>5ij*sPNE99(U;c`kI%M?*Zz{`ekZ3c$6#26Qm)@?q0_Uu))ifEDFJW@O_ z3hJ&3z58Pr>TGMC;MR#HW2sh~8eH)Jby}AD@v+j)oNe!ax!f$Na;1*G-!02- z+^N#OmBwS95@I~#KF^QSR-e*wo3whWL>JH(4NR z%F5YULZv(~tI1a=$IHrBjwM`oZhkmpUb%|Hef_ z{S;DLY&5e&25^sEQ6!6p9U|1hWXpex^LV`_X7(8{&Rlmo{z7 zbRzLcKf2LO&yYdMB=;V~aRVOOx5m794jq;Z6A7r_HP;;mqNAhehTpSQQ^h?Xmaci} zXQmRy^9uTa8G%AM0UTgp_6h*;ub;jkuQ=y6rR+Y-)OcnNv7#$cw$>mYxH0rwHpx>* zw<#8a(?dyUqW4jS7XMOcbJ#c?T$orGAy$dH1dg1`a}t#H^JMlpr-qTJrleGS&GGJ(K2Hxk0x z(pzKH9S?DBh1P!ax!-P7MFrC9B^=Yo>&F^YH2jx11Q==LKr#sK;EZ_3eOb`>dx_#& z=Tl($b@_n%$I(z$;bM~BA`(L$J-gWzn?9OLC6s|>~GEh=H%iq$_5T{VNNmO5Hn)jiIp+h(nnojOKa}1k@Ve?Ap;c9hp*vc8GeohN zfmfCy4d6&NGHY@Xv9(rzY!ZP?&?k$H78@waZ^WJ}TtAeM8 z!_+Rt(rt0c@*}Zn`+~K!wVg@Zcj&IIdY5(5D*;tVte&*!MhM{KFEs}$LmUy01nZCS zxUDQetzG7$PQU6T`Y!#y{X4`krwZCagU{u0oUJW9{iUD z@mB@HU}-R5D?HV?aSje{ShN5L=Q3Q)s&#iMZ1l7?C~R^VjgskH^{F~7 z5P6=aNfD-JTGvS=RKql6@^9mBP^reT+&=;+wx(bsR)RI$ZKjj1%gu0HB85y&dj9}3 z%>2aPO}PWmLg~e@TP@NnQ~v#EAX7jY_w=WR3p0Q%ee zEBap!;HcV}cmDu4AJnLgqiBB9x$fWij`h1PLL0aL04R0bb&<-H5>deWNyU z2W2FPqa+`FO5YQ@vrP(AspvBUNt&Kg6sYiE*Ar33+C!c76Z9*Vwl`P$x3hjWKl}<@ z`lGn_Cfc6)9XOinR+SGe0f5e^{FfqA8^##M%0sEZJ%+b&Kw|JdD;#OI59P6)1Vydb ztay5@!aekjIjBou+5o(WExgT)jWi)|?}#6aDn5jj+xv2sZYlz6_pS=5*2@VNp!&k4oWfnI69p=c$_tS!{#TvAJi)umSm+3 z9H0O%$XRpt#_9!j!QAU`OBUMQ7UKl8v)i{F2jZzJk&57jBs^{kt1Bxj4&x*e4@A~d z0OpyuNc8kt7`E5NHI&1$figz?z2C9hdUUViD*3dxJtpysVo}iSdKjwcBD7f2dTVl2 zxK`&iM1{n%FFshA{4(GSE~#tbDLXXX#x8Gb*bRDb)os3ua<>oTK{qpZ5pCc``T(~V z{{R{Ld#LqOS~rHlvca|5l0i=xjtaRwLZNZ$7)glnEr&t~Aa~QG{{X_aFu+>hlmi{& zRBCY6IkBC@pZuM-NrJg%#eJKl9YCYp7P;WPwSupb%FI>^ge%+zC-`}w9mvW^19?HM znpKGgo`K&<{f?Z%*5bT7@z__;oUV%yZ>5jDHQ9X=+!c3?`_rzZ%V^z~N^6ZJtJAX8 zQQYK8*$kGtdevq^!J=|%78M!pLpD^97ab~I6?#uKCx3UJr>gP}AMo{RRXki}M^qzC zgv?J^*Iy`59n(*&vcFDnqsU~IZ9=2O~j0|V0k*~Fn{$gi{Y9EC9J9kHo^K3K8k}I@IDua zJepN1F!XWC2Vy0mFcm=yhJ+?{OQmRml|>ZaqPzHSA1n!!`KYH1;YRZc}|CPyYn&Ljw@1&WR(yW_C< zdyn9#QF!B6P;%(tCV7G;$G2m3%X~q?ac+BG!m%Nsm@Oc6f(aU0`wgXUJ(JNZ^nEzD z)LeHC@0)wp$qe=NcYWbiAg760B>XZ)vJo1wRapt=DE;b(D%`cmagT|HILu@xb7O8ofA~w(q<4%93+9r z{^(64d%V6F&U%@?9R^6|}@Ke`R z$yY56PpVax6Dej8$r(l|&x~&o;-E-zlBG&-Xb}gb{_6;$@I#(Kwf5L@5v<=*4eq{I ze0BAQa9#S@Q&#ZS((O^kme*ySnhI%u49ygiFpY<){{S$P5ZO|}SHJ;v(O_`&D$_LS zz%A5^oi?2hUbaR#^)OW01Ef1`CwuP@N6S6QT(`V8#oKf43)RBmSsi_4%4T}1#-@!V zow*h=5)>Xxe7Ba#$vM^a3^h7zU;-mSCf@#=E^`%&sOpbsh&Iq@I>(giMyq~&3Eg*9 z^L^KBJ-fQ6+w)#&q^hTcR?kljO-(#(>a1cQhV;E`G41l;`(vN@f{V>2)~4dp4dapi zW7lQg{13-Ce+a}s`kok7ruY+;jxD~y!$Kxv<~l;@UH7{B+tWGeX*Vt7blV|_x8W!K zr!&*OPDx2s%E{w6EZ>mvt|;TN)Y>Wdrrg)nTqlS8AI8I~U?|dikLDQ~96PjtTjT_- z!SIRkA-FHQp69kV4(Pg7SKK0wOJw!c25=fKMc`FEgF2o-}*d^c3o>0=(wRGORVgzjt7Sy&&uHH)B2Vp z{$EAl--4mFG4IV6-Bq|8?(?7o_X?}|XCtx^I}-b8Hw z0Qsof{6Nq2)=|ZA1N^><2Zz!B0P+1w6&tdyrUHiRGKXFvlprJTkUaU({Z|lw$pZmI z8OT1W)E9+~BM(hM*aiDQZ!}A&U(4_1W4uU*~>I!LVHvM$wTDwIpWTX(r zSviR_j_w;g{0};r$55#3)hWsDRxiQTXogfEcK-lN4OwN|b(=`9xg#mF;Gsc*-0_@-%sfh@DjV0oM$_`bgHM zX6BHxhB>4-eQ)$K513d9b`_YzB13S$(Fp+s;M_H;N90~s#y=uH$6CURLrWUs0qgt9 zwj4_k931vjaUAJWKW2~Ls9y_u8MN%%nfIsdxha+^UA1wjql&6S8p~LaGe8xA2bf{W zSNp|6kV74ME;6@-SqAbwBm?v-j^UU$Vklx98#ZY3Ctn~Bl9$tTnhmMZ8=l~{-`3^7 zsq5(ODM4eX68_J%tWq?!GvHWNCdy_J}%PmqLovF&s6H zXfWXG!5VFCMdtS8wC&Sy?oH3mrsZ|H-8hjOPgzqWpc9-aW+&)-YS6qk#Hwbttz&Dh zljyA#w`F`f*6%-7bG)vXO6{R*Ph839LsJDe;;K;!Vj{GuQ2=#jW@?_{L}Qg!Hlb_* z2QVkl@7$5xO6fRu3H2PxbphAPH-paJQM}tv-uG?aY}FG}K^!!*Wg#>(0})mJ5IG}v z0Qn#jooi5`PO~!8ea5mc_aAj>kK$DTqd;80s5~590S7|Y5FmQ#*cI)w-S1U2b+T2w zl=L+;PO;OpzNCy7jDwMH3z3`*5`B-IVyN0pIT>;d_8gY(75KLSRqYI6hz9O4aU|Y7 zCz9CK+x0firIYcJ%S@9|H5acFs5H$iWj#_)uqVI2%mDg@iNkpGSjOD6&!*Pqv~hI> zd}EDAWow-hbQ@i5zLQN+@bP`x75i(b0`G9GxkB{aHWzteNiFpev$NH-V8`q8G;8Rh zlPe|^J}@lW*HmGpQ$z3QwQ*H4R5Zmg15zLntUG>wdmF9yN7gHz_}rVy)zll)*6mwG zP>u?HiFl;9(4_}8ib<~0{y0wj7@~Sn$W`QKKxO2ERk>+WX>Ab?8j=aqengdo;qea) zsa3x#oM7|i6Q=WRH48&uJ|Z^0!t4I)ud`8Fwr1V7Taud3OHm8WO(YUS6*T_AjmdXc?94%JW5-jagQep* zKqLu^T!xOrKx1W-1;jB;r{NPVXf6^bOU1m%nZ4K0pNG!2P+9t0v3AY!mboUN+Z4}N za=6t*&b20`B3fQD@jQyu({RCJ0TG4dy5)^}97huNVO^Qb0%N%v@21?M>!YiMtkdIE zFdpF&d5OGr2b7aN7C+)g;a8*=x*g}ZdY9BohS<4Y>KUzq;Z$Cd#VoF}$SLVm;hJe< zFCZ*A0@w&gJz3Ml)oWPRk(sBh#q51`=eEnAr+}>N!i#e-+GGK!JH+4C*Id`|*$uDZ zuBrDX&Fa?4y4`(Qs4te(5>kes3>eC_buAEeVv%4fhemIeW+9`KZPg!Ljt>S--pA`F zkkMSX0Zol)s>ZUA0GEDqn~?y?oj>9=ld8jfPyAF`y5YaJ?UwRd{{XP<6_Z>|HH=9^ z`%a~zRallvf?v}N3W|q`Tr0}!7~~Xea9$Tz6^ZaE<;-jjmeh&;H;*K^%ea0I4^I(9 zJ+5dnAC$=k#56=&<6OHJeq{kYQ`tLC-)-L(J)T#o%Ue+xDSMtvMG8Y8jv|z$1dI$L z(p8pb%7$kRoD7(XUxvg~z-+=q+nJCjWvfDkOnwrd6fY;l)v?G#$T2-2Ytr!B&c(Rw z>!!`#J3{9|uv40P$_t$wr=2xYaG&tfI--`IGRu;1Kp4va8&$Y`e}-yO#7<$}4^cXG z1AB$Fh~TcRR-J4hhT6u)H_~$rM4Rm8*}oRw78ZT~0PyKWQM4wSg6VdnbcLl>oq7YpuGs+Dz}g7Vz|;{uu6Bu@UB$%wwh$ux z{xKK7ec<&Mxxdby zqxCNL)cd8bvh^}BwOXj`lr->$5mQoALa{`Mq?`l9yLayH?fva_Wpf0QWT`(yx)F5i z4NZMhR>QaU#k2!*zgHDlV9K*BXc^Phm4cozh8f0516nwoTQIGXB%J`%t-LlCrYX?D z-0TZF`PC$V1e(94EgV>=mPMzAf5h- z#8fnuHyTBYZ^V$w>K3v(gyHFbbd$)Fj1I@X8_#2?cr^3o0_$m*y3D3ooRBt!^E+hj zX!lRXg?%g!Uv079H$1gB8fzs~u{8AR(oZrI&nyoK3FJr|pBUF`fPHGT*!qq#Mfvpl zEO@um!eI?20ce6ifjiiD?etv}w&o!6?_8SeYZzW?@m21-! zpIO;-yNR@j2Ko(#nsQv%@Hy0~YU?il0J-nF%ay{8$rZQoR-00qcq*!86$)Bt;=q-Z zQ;s4=^p}x5IsDr7Y%dcy>ViOF_4JuOi=X1WDcm}vX|T&sYu44uWvQ6EyT5j3Z{j5V z^XK1M)#_HPd^WbrVx1~<#&UICgVFodG+j5a(~5dUbQJ`dqGl&G5;5`EF)T-O+p+s= z$G#wFZavaA3$DO|>H-NQ4Hb{w1c1$lEUG2b8#u&T5;C^E_k>j6}59!8lWv1p(!U0~&}R$#B2F zd!$=yN%SA8(Z3tpnd0bWzM@-Io}-oS7R)Hjl6rL2GQ2Q8?f;&TIK(s*G10JZ3A_slsJOej92aK=H;f=K#j0Cv*`c2Nvy)Ae3se3G>VO*O&V zpVClTIyGQRatVh3p5zgaJ-cT>cHvJT2Pq$4(Q;qKzgPbNIavb0%VzlBgV*lRyhs4=Cldzc#$<*%3f^IR9QcO{zL zxa_9O6-_0&&3c0GSx{~;$8?gNQZqVJyqJUcW+_TAP|jpR>Oz3G^%_6SOo-CUon=E! z*{PpL3RoC7ltZ}-hpk;=NR)4{ArZqB7)e{564l5MKS5$>v zS6U6HOvtLy5f=Uio%H5mZyMDA4w>#Pw)1Q9)-(&R`fIo@H5FWDskl;CUaXY2feqQw zt}dxnQwOa)Ya=LUj!HsN8;oVb1srj%8nZ)d7cfY$E&#^x3GBK&JDNbuAl}A06Sk8- zs?pRvIlkTh0JJB0^%kKNMbic6ubIgb2U^PbnpTCkG_=BR3}>Okh6_ z+0DJJ?iL^EwO@;+R-;FTRGr9@TeU=7Yxb-l+^pm8bKp3j$&NJWrb+u0t2g>mfv?}48!o(G8w|>3t0T&$ynX`8$>d;;dyrBiWp>CduOE+K+qBxMhi&YjvJI`#x=8Em~I`WPtAS(n=NNz zUx;{NafY-4CsV$idHt5=o`x!vB6W(O6~lfZ5cVJv2w-v#(Dv=B&;xE3Pr6%F5=fV zkb>>?i5CN}Gw7gQCb+$$soP576t7P;CE|*rIir3J8!bd+Fk#?~dG^)bAZDcI^9Ss? znsGDB_Y3YHRXUBfx>HBEt8bMMQvLyIYANYz`9k%ad6bR^BM-=-Tq$A>M-kgTVM>## zxHY@4M4(MpHaQ84$Cp34!&`d4Vrzl6R8ZZjs#26z$ltKqiD8Mjl|qxq9p8(qaYbh- zmLPc6319@5bocwL<&J>n5JBrdr~1)Ot=9`3=9VhEWx|TG22#sCEa@zApdFc591t=O zZ29r2mWYW^`NfEZ>NHe`ft8~uQxmXjge? zGUk|=aNDsRpnyi}=FR5OSxwb78nF2vf4cO%56ApUjTd2fn?@pwfdo6{ zd_*6cL;nD{f9_douA^`LjTa5uu$KJ*219t+lB|m&=N#UZ)Utg^92e*@sT!r0sMz=K zlB}h{xGxnm!*Tu@{{V$?2g;y1UDH#{skYSWB_{6W_)A{mrBoc;UM%fN8hwj1V3YJx ze@#u8nols(E1TjRBDW5;T9n<(B|!7^7V`l}B(A26W$S%I*-y#=W8*!B3D$WU=&1la zmP(G(Us@Jar>F_#q?!*+NcsXm1Nj{%9Ief_IJd5gPOdVA8P4HljNI2+U6m5ccc_+@ znrY*vNAzB1l1Uo~s~Rgv**`=$@^Aqnrk@k0{8+-4IkTgP0luWj^9r@RYY0wP9H(Gx zO!7|+Y&E`=uu1B{A_9^C7_cKFu>j!z06knt7FU{yS2?~uSpHNv%SVCWXScs>e?17Y zD|G&CSaG>AYe@sX z{{U5zrVWi~&20?CUQUO50byv1ja9wZymq$a=;uy$?Sj*Cw2C_W^<@Pez(&TF1q|Md zYzdKaYob)2xDj#^c#LfxdvdK?Tmw zbXP@Yh6SBNs3#(LhF2pX;GE+J8TQE5#V6#bAoThbXT&J7r8c$gkO)47dE&R$UF#?X z5=qVw?qx^fvAMuf&5^_mk`L5&)_PA3k?s+Rq)k>hgOp7AK%ZZt-rX?hU8Am>rtM|A z*W9SK?Jd4)nJTQ5Vy0)2C4@&3lavI9c^DJRiewBDbu30K;i;OVQKb9PaX5@G;vD7+ z37$qh3fgb*vC;0BS>oJQs(tq^@`5^P zt;XtpS41E9+wUn*;hr1YP(DcMBlP<%QE%H7bX_A$rApjZhVNBNM?%d;MJP1P%_pTO za%FBvK~5>bg7GiygETq^<}!8i7LL5vYhM)VwFVu|8Cn{2zK41J7dg+=yUjN2s*1}~ zHMS|GiZm3Jvjz2(BDG30w`Y{0W-KrSgauFl9qt;Jgw_gT<3;5)>$?$%d)z-U{e9}T zCrW4PRoAI)Zm?cwzwTOhTg>u)*GBZ>q>fh&>PX7HjP62Y9P%7~ZCCN^Wk2cIiabgK zUkxPpun{pQlDOfalrglN$siw?Yi%~yT`am^VfC2wzv7c~$$YlUw{7;_uT^)q(cGe* zCW?6}=vm`oCwCDwGl7h+sT(jQutzI|z+o_WM_1wJK6q$?4vr*TYGvA;qd=}H;!Zxf z!&g5mCDWvfdRpg51od3e*6zMtdbzu*uNRxOO=UYu(m@pEP%c0O@lX^T0Hfan^VO9c zBfz-%j;o>-@VHuH;0?W%uj(spmn#UaTd)5BH~dRR_OVXmggkPxtlWq>?h4^Z?TqB( zbW(jMWs63=c}MEBhCR5c5;w4!17qejjTf_~lzUo|{{T{(mX5x$<)f>LhMVyVNeopp zQxQ#2Wp3(HMn(XRE%K7!0u9a|6;_2-)MK)dxYT_vxco)}o*}gbCljm!Bu_1EJwXQ7 zSh{q3By!rTVU~twk)9~36vpKr42KQuduvaLQYRGZth;|j(EK}&q~07bwTKUrBY82m z(MYxy>7f+!+3#0MsycXI@f4{Y5UEvu!a_%=j53Nmaz8Er@2ad`4b@_$F@Ev-6>Wp! zlaTGSy?~W(1KU zZS|gTL7%nuI3_-WA57J0V{QSt6L=OAr}M44gW*21#Sd8a{Lox#rdrEo!re&?SxQn` zNYY^tUQ7vP1-OHfTOfA_T)z*eSQ@N}5p&cXI{yF*tK)9NoGw;=X=$4o15?i2^c$(q z#*am|w7VkPcfHnJ>ni2Bt)`NF&wZBhZ=2_Rsc74bCiw7g2@J?ZbM z(L)b}tBa~A&=P$-`YD9lUfr?!W4Lyv-@9CIbd`ImrjmR5(MfOhVx^=&kj9Se!Dclw zG>G9&A&B?KY8+-MrPS(xBncC71nWHfmv_MUJFB*>8n26y0Pfvwa7QCN_JXC~2)_^( zzlMGG_WI;XoxOfVj^#X5#-gr2!mUKABVJ$$UTG0B*$Nqm_9Fv}v6PCUV)fQ(Y_LyP6lMPacPdLf z?6M>FUO_Uh2t0mV(BkXi_;nG8#5tj+-h8jGy`f6ACgE#_WG)9!n2GXW5gp);vIO?x zB(+hy%hdk>#9V+460_Q9&!`X4Y0Ez@%f$H^0D?gjKi7D5Qw*p#&>maZkFs7BLt%$8 z+M})J;T`V2W_%=3tq;Ym#^qU89j1=cX}?$0R8>Y;LWY89gK;On&rrAphJ0j_GwGZ) z!Ps^?qOap2&IXv=kJ8^&(z|+su9m@Xr;>`MIVtI3fz_g7V`Pm~sle<;JA$JhJj8!KAFkSwXej#~q1*Y-7yI=U<$znRCuezgyJUrk=fXT3hQTCY z`wx9(s@CYzPrhqnlb&wy0q^=QrTBE*^miLw-py3-AdQl>4PymBr{s}`A{6l=B7ggV z!5PPtd{u!UGZ7sP{TExqD+f(EC&_MGa?{;WC${=mDnd*~vI_K)Gyecn0G-u=?Z+9& z1mGO&&oT=_z0Pl&?Fi1ahJV8?L{ZfGng0Oh60!7{ugk=ClHe+_1RSlyytF-{MEmNtXwfx`jM=)_{{XKoK-?}M>W^MG z-u>Fu@LWA;=_zDZYP%g-WvhfVn35R*JlPAWV5f-#B~Yr3ZBd}sJ-J_gPUb)4HU{zf ztmhF)jx99cX{GPW-(@7}uI;O=>UP=P`>TG_z4nTUtUdUUz86zqjfJ=&H-7Zn0Y zL(dTs4n(^ST=llhd@$i$(iq`6V#ljY-gzG>HdWuSrTwb@X zCL_efQ!fHOTVJ6BgMN1aXeQ&ID!LQa4db}&^?gL$6xZ5GCIx6HcLhpF#CIrUG{qoO z8opfyRN!_eBP3DIADFs1+uxX8gNOLP1xF10E)xbYp}>sHYg~G2T221|^3y`I+n=Lw zCr6xw%anBW3NwSz1ga*_RXtbO>3&EqqbOxj)L289Al)OmZ`D~ za!AZ&tCSg|lAbsvXyEj@r-OJ$NEq3r@W>9ydG-(A$E_wfzW zcskE#rP{T!UaRPA*E>m|wWG2`k}Vx&EKo@pX5hbsaPnZH07DU+n_Mr#JVK==GZFH5 zj*uisu`)q}aWOw~rB@$HoAb@uBb@i!v~T3SRlP&CT`b#=tF}s-+KNhBM7Ew5?n`Zv zRTWYRdBCqE(P8Dw$;nPKiZPgR?g-uyhw#Y-(i^4uO}^z=a7tNxyIT>tZHfqPQCO+a%O!F=&SXf)@De!Ok0qaif!{jkiDneB)vYEZ z^N+gfalA#8Y6?t(A97@AKJWajcS?2!{OUAOHqhD^y~hKwQB_4q=9Nf2`A*zoUn9%* z);vW9gAX8g{e}LDZsNFVPyG42UtKya+qga)t2%4b8}{no)rm!Pp`-OFHtmu~YNbh? z)gyYkl6@pzY`?mP)RD8Fy}4=SWa{ltU?AW@T+AhrfVt{g=W!64il`T{@F ztj3e#G2~q47UeT@JvH)OCw1AiH2p!gZgF_G+v-x;RcV*khv%t=Qxo=PI8htJ8}SO< zm^XD^$52&pr{SG7RfJ|BfuZ;6H|(!d?d|7HcdD&|`$JO${H<-cQOi*rEYIpju*(@o zNRl(hfkqjZApD@~dbMoSDY5O-uFFx9+Kz*7FJFFo!pKV%=8kH5d1|O6s-8xQCll#0>URocj=UmHr$IfX?d^9Poa9JikJ@qvMyQ)!k9sG!xO+aC<-E6Y$V9-lX!# z(HK<$j}lDYo5rMktCN-h9c^JT4WRIC-139;`{=AGkZDz<@P1%4BG=aBeb>q>^^&5+ zb*iDA4>%mDAxH#!9D8=xqfo5c^uyb_^Q>kPrWUiQIB2&=!kJWptn|T zN?Jzs^T>oNAy9x4d9jKheT(!czT$cl;ns4Z4r6C zw}Ixm!{Se=w;iq3&G|v;#SEgfmVDVI@tU* zKM2;O+X6Yw^*yXUvvX?Wh^YFkoCqcK#|t2O|ZcpNfh<2i3V z{g3E8YJ)71Uvt}Y+9kfyJsYh|l@j_(Fg>JIKnp741Rhz>j{b7K zlUZP8UE%OA$lA3|S8D?C%I3uO5V*^%{aEO(@v~G|;@CAd`>K&Fce+TyuZ}=438|6U zTdaY6K_w~Rk2?SO0)CUe7|GMpnw4Sts${GnY%hkbvHe= zd#JWoG*1tzBUg@Snj-rC~$Z-8F0fow987NyKV2?m1ZvpYEsFZgRvTqe2VDZ zmGLdOI+wRz!E)+0-`N*xy4q^0yPoBvmYzEILO8}MDPl3j60C9dlZP(glBI!@Xp6R- zL~_4v{q7fw6+e zoM#W2v@sww-V1F#An&--vY**3oljZg{kK)Lrhx$UC!>0wT2Y*wgHIZvBO{Xb7zc?X zy+$dHA2t?GFkla{D#o54;zpK_#4_4xL;{j*=p0mAul&;5g1Wz^v8*p#9)a*<)!ocI%R< zDl2MicKIopBc*Fy43!e4I*vazRPw95qzq&rU#@k`;`lxz69gQl#K8hjF=-yB$#YeH z5XaUnc&^qsMu3uf$vU3jvh;85mvr2_W$e@z=qLP9VOv*zxc>T8EzkJlf${TWz!>}c zLEIX+a5PD2-OeGznew-s%E^rQPZw5+rA6XSu5l&W&Y%qrksa5PlW*_!x5sQ-mAaOa zD3$<}ml~c(0^p+)2xcAtJhS!#SgUZpGgQgN89MFt1pDToJ{kCd)bc+Yr~akou=MkB z?XAmly;0WBRV~6Kf=YX>?AOIj!bg15`qZpq^%;*fR^j|70hBQ4nNy358*q;ec1;QV z*VvE*fwt=1yd#fLU}Y>w-tHum{{ZW^tSJS1Z)h##+bp|s=~%27!*sdS!N_C(0M17f zfPJyR4*Aw94C1vO1#-qWm<7kuTDR!oej%jan-as^5`RFwb(D9wXyU!l##a9T5~?k# zJE^9khnZ0}T(hI`3zctAk#56>HXx|(EcUw&T+qv$&0x$<4m>ut9k7o|EO@b|jy@IcpFRdtw!e}6*-jY{O1u%la zIHjkkZY?y@JW(P;K)6dgKk&R>}y8asi>%@nkJt8RW&4Z&GRV>8lxnfmA+8yilk-3DFaoM zjvcqG(tCcl2HiasZD3Kfm{fj z;PPn-H=g`4$FYW?p-gy`oI!l;VE_kMyHJ1StU$~<8ng~3yI)PeJYCloh!+=~@2m*5 zm&>i(Zi%@rOLwi3zUBCd4Mj|{nHpy-S)8%%OA=3h{rmUV()edmeHK28VWbEeM@8rO z#^NZ~eJnwj0|xTE_Peb`HDpcrjtZQJ4ml@-*sp`17&?_&O?ybos?CJO)u&mmH6RJs zO%0>2ic3jTTe>PMuCg;!y(B3t@>J9)a~NphMI4(gg2syw{=HRy;&3$hg<2SYG@EQqEiVj~0+Ib&E`LC+_|HqdEq(e+ULXrk~~&_v7`GGaIN z9!m=+RyRzoG$(Og*)9^tHB@lc%M??*X~AAVtU0==FRZ(D`AI$pJV^2KeoQ{S#vd-aw(g>KulQq95XE^830R)w29oSJzgBg>VI z69>&5N8-N_%2Znou_ylk8H4(D7uI1a^{C;V`mO-zF9h@b&o3pK_?YW<>%DZc$70^U zu<2o}rh@5huBD}TZu3&rM6x8|7GFrDsT!j&Oa@n9lrS%QLXCP4J^%zAX5USH6-GVW z8oP&Lbb;{{U|#`RO*({q?<OuA-xy)s)68 z%1BWff>Z`)1&^ z+pcu;O&s+wh@|Df1uG)}0{~CWjCam6t16g!wJEuvfJ}M?q|PUWrHZFg31|+O0%Z5s z&20N__L|pg{j+7b8cEGN#*zd_!72+OR|Fp54&e9%cL3|3!(b^^#e+$vH`pLU0H%*c$w=H^8HNur-f+^OPCtqCyD|%|91xW;- zZF>Drg*XKoFLgXCWDQ7|^myri))l9f z35HsF`^6ezl}N&}FLUjXeEIT@7zg26CM2I(kFxBz<6P>|8UgQkuaq_5~&l>5-Mm1b_y9y2nw_WVT0jzRX2ztrH|`B32nU z#{1rsHFSHscRk92i_ULt;j=uHUhrE^2hY?oub8(|z^U-Fq&_*_74W>)<-nvP~qD$v?^JVTwZgZi$62~;`ke&xbs4dYK)^-yo@^4<3ClYBScZ})1- z`y|_&a@0dfSw(A>;C(7uMF*5oqc;#^m<$3-U<~-zYr~tJ{u^)d%yjlbsN5%^b>g4DD0PWU5_LB+c4ZO;n{4o4V z-D|!f`goGi(_1XH7q}=S{4XhL38*HW4>xZL@}m%{xe9w92Ssl%=?6^9C5ke8c4r@nqp5OfLAS? zyAIgzj`_#9AOQ%8GrwQ;Wx<~qn`d@cb*8dwjmo3;9aR){R)|_SUPKBNYCjJuMhXb! zAxtwD$Zl*2C|1e1hBlB5r~7u-_StkCD-BY!VYSErkVFX+1RIObJK8{n&K)|tw$AFs ziq#Ml^wp_WVXC>#ctZH(T=ohBdSyz0s=%l|0T?O|8x2ypH*8o9zUR*TmVO~lmK@W= zwWY<`r0*gia{4bXRkl6nrx!{3i)5vFcD2T(nw|*Nq>dtEQ#CZKgoxfXbQ~Ol%5pL@ zs|+3+`kfEMkq`~%mXSK|=&EsCQMe~~k94@ix1QO)o~xpM61u-&>P5oav@Z2>Qp$K$ z*=wYgxl)wo%}pLysN^yMWnc>606;qDs$r|)Tw74vPksIBwyM3jh6?lyjboov+kZ9J zR}Pii?{_tNy3E{E#u}np84gi9rxG1RM+5kjs~mR+16YGxcUAr?hM#|bvhq}P-t~39 z!8JcrZY@sRr=*b+4z1f2DAhM}o>b!Na@|MAE{rk~K)*uimwhr=V z%5D58?&Ih*x9!gzTwOuB+2|>U;q5khYATCl6fNo*3x`%&DrF1A30af?xFC`M%-WeC zv0-jkOH+5Mg#{drPEK}a_URnUqL<#;nEKj9KR4#aMVV(1kBS|0w z)p9`C!{WUc&FrsEUER+uduZ3C?bXuQh7H6Y4eom;M2I)$KAJ}*uWY{xUlF@Dc&CeCZ#r42 z7Fj5T6*J5dQpj5?8yp7WzCjJdb|7SP^>~#xyg$T~HzbgHnLhfgRO#iM_OXusOS`() z*DCG1@cXsDZdz-h+!Zr4)s|h;X_24RnO;VT`JjZ1hmfvtxZ~-8$2`VA7IBOX4h6v6 zf=ot`NWV_2&^{i*Q*-J$)(&li$9n=#Ppqv2v;Hpk-{YEtWo+%O4eq``?fV|kC90^A ze}#-t0A1I)1cQwE8t1VbGYehKekr-~>6>oEm>+&iseTUuhiNYm4UOa2SpK#AM|IO> z*0$E&*Q=G9SaXs>28tK!DwmHlFuz1O;U+bPyYZfBh`jQfRY*55huzD zwn+`mac>@`7NaSCXIe-mBp;d^1h{{Q(qcp|XNPOF?+(*ScMPf@ILSX<;%QB_=S_R5R2QbiQ>;>|&86VueV%0S=<+tZO)cV!_; zHY3r)+0v2nB;=w%FH5c2DH=6z4NL#OwfwKXKRea*G# zV5x*KrL48qK_IU{c%E^C8zlG~q*&whesRIifcU*{h^jS}I8!p69MZuvYlE4?DK;0) z%mo%Qrg9BSb2IyE9Q0YrnEwDCwJ4UmvCKdiD3r%31x^R3^WZT90lQ;9N1bzwcgB_8 z8sJ&XfZtfx?zbVV6P$M^^Z{9tX(8LywKv_hNo#awk_uTXW2r2P0alcvh~aOjjJaHV zt)BYrF#I!()5JCP@smy@jGz*E2>aOdP{Y%9BA{y?W1JtLH$HafYcG^v5IrNU+}&Eg zNwYTfUCy4l+Ttmw0!|SEVrc=5o70D%tHadd*z=MOy-x>XZ_93PLNskBzmR^B41Us;Vz6;aD1@EmdC%A*mS5yuBP z)2W2SmegxVgCVi7Er19*netHlLn`2EVeuBJeTe$s(#N1(FY!xhuyw1bmJP+UceB*& z{liXdRa=(N!K1g`<3bS`3n_`Jp;*wy3_@H23t)|Nyb1hI4~8$|v?8M&Z9Zmy?IufZ zK{waB=Nf+zP1tV|3DWZu8}gl}mgG+#+;+~{n`>Aoqqfc~?E;}LRWnwElDx??G<+c> znASM>gMda$5=KBhm*XoJIqZR&I)V26*GA8WaEzwhJ}RMkX)yvUVD;%(N7l_9@hg4<^O+xL> zuQRcm>I5D{8>~EY3ri1Di2?*f*y#~7=sv6IGSvvD5k}Q?w2>5Z6-BN$7viX%~U{ef^gs!3?rg5?V$-{oT%W(Y?(LRgI?S zzRE*aNJMa!@)RyH@2bW=<`s+RfY2AY5Ykcwh;cFlm&b3{STkmHos_&0;enRxwSE;h z2KnASEt1P@-Fte`Pq*fd-2>Ozr>wX^42out(_tuykY-rZ)lwtiJp8!Rt5Tb4hrOl5 z-XTR}1`SJ^j0lNY^@~DUM%RUb=1XcZy*X z!*6vtd1hIhgWLreFsc)fMoRur($D?$Q`}OP@Ab+x{7(HC2`L{Xeb{ zxbBbVx^3`OOqH>Rm*^^Sx2}8f-p5=w3AiD-=AgGa9V|oeJ0p6>B>iSGwChA ze{A1}TjuSgzu0OvRmzU#HOFh+sU?b~;U#ILsHdxq8J1ZUN}z1UJ02~Z>td^#+?3wg z(g-5c)7_Sj5%8+wOJ2h^8MmAIfxV}ZT5D+5Q`Gd|ukqWh64UJ;_+sAj$yZSwOth84 z>j@MyMGUfZgc-wkc%qxN;a>atBN%OxzeDHp2h z%_>NsWmy%7`MYc4sJ5;T)4^_yt7gd3jCT}veP z{l#aij{pfNFEq|P5AP(0AIrw7T|%o(*j8T<9)4i{p?XQIsHS5QMIe#5=AL$#xF_Yq zCQA}A;2e{Ik=)=Qf&pn+T3T<(Yx>KKbek&sM{&2+B_-PVd7u<2N%L^|cwK8KeBT;}AA?2}%p@rg7cXH=oU{6B}lVxIgc$w}=WC?(KAGp*(ww^=c*z7L91 z!iQ9Ieq*q+Ng7YHh#vcFxi2 zFH5R712tFFdmb66nAh*$ zlF^|?n;(#v1ZqIm4Z2RUNV3|t zm#q*2K~KK;(J)g`6C9RT$T`vfyKi=T2!uNE_Pz9>5X0K2A+ zktzC>Uo|x>K7~CE?ntX4f<7Ta2x<|O00N9-*lU}pE4A6HQIpIA_Y0(M6Nl9V(Q`!W z5D!}$twX*of~MnDcAEKTVN)wlEj16J3<~Y%g*Awk zQ(~}Gs0bCnra#2E5H`@0uIsbD7&etw!uVC(olLUD_zT1B`{c_}T?~<{N`^S1mX#g2 zNFs-l`r$E}xg!k6I5DnyBM%=dqD27Y*LG zO%T|1c5m24?k`gtE#<3UwL13^dKlsSUHRl3WMJpDz8#Hg!>0H3@A@N+8r54cay9_H zqqKczMXo*dYPht*HaP9)$KOJ5R?pbmD(`aXt^WXZ(HNw&SnH{2ZgDi3mLpNjMK=yO z^tnbOX3j%NA8a>j>{T|B9zQbcI42Nx92`AS{kI=Nc07Swt7H5VZrirc*_}wC+*@|z zx9*it)PBu|rhmsILZxFd1oVG-H>esh6kOSe97A{(ulR@+D|dB=8f&Gx}&oIus~10Ch2XvYwf!2 zlUuXyjYO6865Y{187~lFSQWs@iaeGil4X(A!o?a#7`khwLuP!!;(^R_6JS3@ujvA` zp1U4VDi-2jtz zA)@KjXrv{@MY@|=TSd3+6ycgWC$6Zg^p(C-Cm6!9A5f(K05h$?)|U`9g{$K^pcsG* zh0$LO9bfCuUf*i;*JfR)cFxz?RFGUM>S<{i6w=bMC2CwZIsI00zK11A3wPqGNYKVp zp+%3YQL;!o2{zM3vxctsJ&k3cjn7FY{WgxBcb%%__Ai2+t!#$vRZmlI-gD601hb?f zhN-DM~v(yWPyY^j04SInkT+&uaQ5{>q&LvYXCmgbQW#5xzf(LDSTgxf5wX%Dz zLkwL}pt$MeN9eU;67E1A{xwfc-XqHZ(5n(4Dc?=*v)VT;nzEFC&Qe#>&rYFo468aa zcK-Ku10Q`{)dAQ_jObPha@x&s=Dze-Ug;@o>m93Sq^32~A(E~m4LUMDI5WrrbLR)f zTd_C;UpLeNuW)I!pStwgV7ZMj3<0LPbg*9eV+J2qTIkxL$SE(V@T;}~QIL4B#z!n* zc|F0>jpaZoRd&0rBZ&Z+8ZUfZm7FLBq+5LDz6nKKrNEQj5o-=`wU8$ z4j?#4OHqp03 z!Ka7k2Da$3jvN=Z;LHQcFDJZ#&r{armGN9cC_WnIUFIhH z299xa$k}QAv9~I>6Fq`Y#oI00lDd*Qx~qN4SCJ}%lN{wH$#62kxJa`4UZ_&v!>cYI zjHK#;ltx!Ytt098(N^(HE5$tSIhxW5&>e4nT^5Vn)|&2+Z_h&A9Zja~YxO-zqkc^T zf&^h7A27izt?r~BeHBGaL47<_Oo19{srxL#l^i*y{5UxaW_bzHH#*At`_QfHQPqx| zZLQf9{{V$cgass|kpO7t4$CtKFY~EoTy_L;&vH(=mgc(&(8AHg2C|{F`|WS4nbW0N zU-_Di2q0XR4SU=B_1md|IYy2JTJfEsf?{)3=GS{bIOfnyg4B87-y z6;NfF%Xalpki-FkdtpMPI2QJkf+ri zBeVehZoLUrZ}sKFMJu5)dXY+mue!vJu9^+sr~Q-$0Tt`3IMp!;%Vz2IqN1@Ups`ZZ zBS|$iJn&OTENgo0)C|7J_5M62r2enawODsbLOm0VI>t{q$P=TNj3XCYC%p93n6FjhE6RM-4?JB6?^cmUmB9HgO{JV!ZOn z{6~+zKe~IabyJWXl}2-@pR&ZkYl6NWQ^zEqiUf*eofb=CU`3QDL~Y z-pc9!0POa(R@}P3Tel+OX)o5Qgq|4{WQ3R*B#GTywNg)Sz0Wl@R6{8YHJ#;*B67$_jbG*N zs`21)4is%-a5XSEaZorojcpd_vG5)?{CnL-pojuHX@8>Qn*EVkx-Zt7G&yIhs7Sd6 z#{}+VVtufI$@^zZh1Jhf<PZSuP$q>G0^pRC z701d6&OqbrGp|>x!nk%I2I6S~Ok7y<*?CXmaZI&0p5LOxe0kK;U-yR1N`4JZQAv== zk{M-$gg4Hvs(z?6a2OMg~;1*2xyVJOFJ(Slkej{7$hBNhLd3`qr?W&J(sRsy>WoZ@jR6EPUtyDQmT?Fp*$FH$wA4;L6_~E_rQ4^ zET4+ft~5(yY=jAH}5a-LUAmROj&T1$QISYw{0 zt~U8oi_J`GRzz$b>>GlHZvOz?;ty|ejV!Wk63o-2FD$jSl$Qu89**%>HAJ1Ir=&8Z zDo0}@t^%$;Ze9KR<#DNH5i<#wv~CsHR=L_}jFhITEUbqFiH2x3NpRa zUrQjEBFQGF=NvMs)yCz};X5YZpx>wN(wY1gYDFm7YZbu@!$*=@9KCZ@QIM5NfH1sMioMV_xtzyYZK`L z4Uqta@bj;?%dNYwJwaG^1yz5id#R-Stw%XYwsi~5J`EI9q9I-1A^`Kt;fLCrRqp$#D>8@9fF|_Nl zpy*GLU2Y1aju$Z`oqnW!f`DuelUr*(2KT<|O1rET_i8%pg!J_H21-h#qMMB{mL3>z zht+ZO51Rz|8g(kvr214wh9}I&@z|?uY0p$wY)f+O-+9sqJ=PWe4mYP+`UkM9t^2yu zK?HXC%E~(pRkh=HHC1KHNmQ)dxvViZNKmR207)#{2Z%EW{EnwOTpRDVN#?7#o*uR% z66ewUx_8|Ao=aowE|B%-ZdhZpUbc@$ciiE=TgLB1tgciF07>LkEhqqCd2(Poav%(9 z)y3fIoWnbMHs7o*PYV#~@u}t~a%1=RtgDsXEb7g|xH5Dv;m#Npiuy*~PT}#}mp(zT zeB;RX8jCSlQKd?rr}t1eXU*ta-%rtGXXw8Ayii7!9S`_+x7EVjU|`izjz8Y{Y4A>P zJC^PA)SHgOG{|*B-v0oqe}$|}wwVNflT>Sw7J9)x{o za(OAn{n%YW>IGDHn)vM2db&u3B^|%^1b11ICXh{1>`lR-e^HeOq}<67CwR#$YU$$W z;r>PfK_JY)w@k9PUq$r~h|#oO$4J=u&(&+K<+gX0)u!3Ao}g9j>+>YZU38M&TU$Jj zPZ~VtI$ufEgy|hIl4({)nd4R-lt80jyBf!|hBQ05fjvDsO076|HlcHlQ35nO_3t~! zlI0!wbJ_h>yuD`P>zpQ@o}yHz6Kz>zl~JZcE39CK`#Eo!B@?Rv^*rWY0c)O(>;I(kM=#-XXGsEQ<>Qm7($;EqVu=ABiWjA4?f)u~aU zqa?>73EIN(-?v-Z96ca>Hn?2anHG{JO}6^;(@ph1q}xK%xNIrY?f(Exx-A!~qe~gP zz}BjoCN33Te^&|UFl>p{xQ-GA3B+fA4_c*0e|@mw%H!WfTULl=Otjr2Z+7+3Zc3en zu&nzSSt<7x(A`_ob4x_iT(^TItuoT)wwh4TfS)g>@KgZNu#QDOoBY(oRef<+DGk2Y z?0-TG>~E#(u~jKyMGp|hu_8X?p3!5l8uQ~_hSW=49YqzAQZ#|lAzWc!!TmJxZ^^aq82H!)umMyz(w@9;9Qrhgc3QBv8-bBP=Dsqs61vp_K zmU%g3g0ZpgMus29#19t`WNl{2=X|mo)M{oqiw5wTbt-sNDUIZkNN?5)x@aV3T)Wl3 ziaP$HZSBWzx^4P9hUeUL4QohesQ&hu z<-09csnk_&D`Hd9U1escGeullNZE=UW;%9sj~G_u#FNM3F|hGj^)i4+jXifd`E)m3 z&JTk>#daCc9TFY+t`FrG15pHt{{Z7<%l#ecw@Y@vQ1{(GQ*N}?Hkvv*NNtr5T~lt7 zx*DvXTk!EmB!q|=Lm^@#ljT09yS@uU36G{~)^stq+gr!^4fH>0TtCE4$KYxjSZ056 z!P#^pb8(>_?6AEWxL(zF9^2{7hNE>`4fWy|iW_xhMb76+0sK8br62B<9b#s3+++zY zLWfm%1+nxnu5~wDNxih`z5b%fc-65jrCPBdfFw@hH1Ch zsi3N`*{bf%S5Zk_O!#(+iWJWmM~Y>LBcw$L1B-yQ48T>#R}}CR%=8c=tmv)(0IE8U z75@N4@>fM1u-4 zRKiri)HE?Rb2SpQDc2a53Y3m!oeIFJG_)-lj3mY&neE#IpU`>F+f~mwoLm<3Kxl%o zmiLO~N|hAwEEJrYM391Hm%p5N0N@|4J87}i8Df1ub&R!+h#spiLDFm2Ss;&VZK_|| zJBoXXB^@HFr!K&|JD=f1jhWe)@c~KtYE7+{pmVG*=#^Fn(zf5a`a94chuHoVc4Y?1 zu+vlSZOggY<-1>;2r1*0AeW4sh%Ra3UsX{+^%%UaR0D;ld4CnC;V{PO@6}l0sj~*z zcqPU@;@p8gaq79-p^;qoS3&yGw=I;?(^Xz2j^!#=5-REMVR26c7(Bjurl1isVVjhh z&m5cl8D%`VHEcmT`|0GbalA40+g7DW&hAI$2Ukv?m8~XEFkx`6^xZeDz-Xqs7-EusS z9lw#)W*Ou0H9M@&YlA^MsW#QCnu@RSRO`;BoUG9T3Hjq;B8++NP!8W+bS`I!Ma6+RI?DA9Bq&r!#V}phgT}#6ZbOR$^R6zN z=+}E3bUsVbu;f*u&>21bCSXr_3oXuCsM4SbX`z)>W=go0DGKq&rUHdMh7Jh%dl22V zreA4WA%gAKw?D7*$$PC7^Tw)Hm8oG!L}>wxO(9{}zpAcq7-!`xpM3Ymq%!hYohS1< z^!gPD>XzDzb~f4D^ThQg@wjNDnG1#GPXui&?g$Feg^gRkZsl>^wU&)P5~Esq{RX~) zZ&0h?GObW!D@=DJ05vlw^_9mxWZmu8p07(T-leLm+qQU(s?kjv7m`YNJ4q;0<2-zy zV5IrRqlhM}@;6s~w)!ro4~K6I!Uoqj{LcRX)Nkgzy(-w-s+)HI0L0tcIBktb9MD*- zRHO*##Ea?4RWSsXn4>&s9gBSIN` zoCU2uIP9Zt)a5d&bKi*R$?ES);9O% zu(ycS!ZRSdZ}q(W*I#@NU!bk{d9zu>*2)Xzw!W&>b*2?91wpDwLy3Yn%f>PUj4_{ zwn-sJU^A+0&Rbbn(XGAv>D6A9D(PvYhL}L}a3-A22#oj7&4635$vknK05y;j-Bbw< zzMTE(>*l-_GTmN{R*tSHp{XO0s(`i>C?ufslk{Vd54JE+sOHI245mntByv9fiQu^U zMmcICrxjkOqy%ufa$+(*Zv1nAex0yL?WkrNkfi1h$_bAD0HXH`yw3qO5tJtwYH8U< za=k1ZoiD#u+2u^dF#*2-^pUC_l2)v*b?`36>-|F zf+VZ_EH6;VtWqH>qDEMRU<)n_sBDps85q%4tPW^2>Q(;Re>1fE#=4!3i(h<1bixma zewS_9eXV(|irKj8X{rr6i_PvJp_^ADK!nf=#1$#Z+1s){#|l&4-1r?RPH$NH109LH(?4I&NST$X2QhT7T2Tsx&&+ra;q9yjrdxAX6dNQJFxWfZ z_0zrO1=7J?CA#rx3sFZ>zC@-nNFerPV8t0oA(e(1eSGUhnEXflE?1?UY0_J*l7nzte-!)zu;WmpmKd*OV+`JKL8k=OtLC%G$w z@b*!u;*oLpSG-po{7DUnX!@$^WjvP7nC_EEr}1^vt8a)e)^epS1#EMiM zI|KGq*eo!wU*@m?ljyM@9QE;1b(+^kBwt>WluruxF(?YC57QxX2h(0Lgbsclr0%_E z0z)X$8xSMWa~{}IW>r0aC-l{pEc~*v;lUPJx!>^@As!DD9nLZjzO))L)1GT^i6AYL zMbX+_&G7xbH|>4wTBo#ELk*(X#S~qhBNJ7Q{{S&D$2?>O?U3GZaj}JNSBTsnDbs!R z(@(7iKM`K0EMX}&SlDxqsUKtJw#W8w-XVvp*Gp8ag>E()l|(qp$qdj;0PKJIezrjJ zGwrQRO9^myBl;Qp1*^vaZ7NP1Iz2%H>kH`9QNb)y(KiX{ToOztwo88r?}6LseX)&0 zC>AAhVb1*VeyL@!Q$}j3<4L2QaFRTRLJXbGIFR7v9{$6>xb3Ck#`jSb3Awl)`7bpd z)ilfaXPV(qi7Az3teDFx=On7XvJ8a_kCY4!+C`3$DT<-8L|@*X`mbAA>OB@%Y9^;R zWsRgxTo{l+$?`tl{yS-g5RVb1Vrwjyr?|-=xYGU=SRi{4LB;_9 zf{1m7P?&Q-1W$SXKXql^`xO;SEfpogR^qXWdyJ4YgfI*_dMsn&p_miMF#rr?krs=~ zf}4wG8*bv?d#bu^y34$fq!;?jLW$N{QrB4oFFGp%sQ#rqjl_k)P*k2wIT4ID$ON^w zAwlLwpGo~=-!*=cf~+M>RdY#OP8^nzW&&4Sb zhf)uM>A7{J_7)1th`>IRS&5+H<0Cs?26^SnmwhMBRoidGp3J{oV4Z#?oR$VFr#Us@5c_rq^ghaAD z$_5ypONcDTT^<7!RrJLm0WG(ux%2gS*Ztx32FB`=zEKK*-B#H z+dipTqTV}dWmCkmU#N}`(Ej(a{PkXN)wRfd6V4iMK8N;AO}sYM(nW@kbZz>!U_W;S z@{&S(_W4A=T_c68HDUBm#crRW{gzC?k_?$dk~eSMRiuN?a0e`Yn9enT(tPMvY4-~I z($rHGmZF|$g7ys2vIhDBThG67+s>dt7dAk1U7?ldgVYNWtw@y@kt)SioOd7)pn?Z% zV;LTDe5mG{^~WVuHb9n0!+>!UvWCWdTM)iO|-hxI6OI%kWap<{9A6{NmTRFTP+mz4y9e7w^GL= zf$w0bCh>ge{s z-qm$go0nm2o8?_dLuxojyVE+qLO;JqB-{{vjt$JQU0Gv*C5ShvKiJL%}U1 znXrf?ojLyf)_SyCQmAuq>;wEpY;z-A(2dfNmGi7+TVu?UzSP?jKWzc>;tDe_2*+A3f{N6;J3<2vP*>A8^We*IJ z8z19uv}M=T28gNRIfT1on2q-%TWQN>G~V3++f@}-`_}l} zb-S-|Q&7i4X|-nX4^zwcGX9ACrTsQ(pf9FFHh_$E^|FR_ETn#1Y}&OR$6{x zhw#c?T*lp_@7(Iw8}S7?;nb+n4QY>~^fJ1WI|HjD{tWGxLwbuP~#MhXnG~so`qo zZ_FJMNp`Ut9ZyiXx-Z9Jn%vK8n?EQcPd!_1_O|e_-wgd6>AiG&nvZc-+Io>C+FDBL zOYHVZ?QcsG#^{AwSrySS2n>*t6`Tevr?t)=z8aN328*OOPrpuk{b5t_IyjtNPadlw z$57KY&}lwb=DJ$ZS<`NvS3y%tO|o|Ipm}L2WVTd9WD6>pTjs=JeL@(pC9**7NdsF3 zuw%0aHE};+)3vWx>wfCl_HLp|u+G!lDPsMq z@WzT{f~``e+C%6B;-se*Nd9F6gVAu#DE=K)wa?7m+t0tue5|xFTs`#~Sk@8$0Fl$m zT0ND+eMaf*T{}xubr4)B<*gGqr?28?RbB;TWgjx5av&B5B^w8^10NaURXCO);tN2~ zTX;`};F*J@D7n+tBVNl??|xR@mvd%xPsI9hs1hnWL}XrUp@=Q#99Jg|liN6_!@Sk3 z2IBt!va+nkvYeBth2+{%B$Nu!OCX9tf*kTu^}xU<_3`!6bb|zFrfvY&^jnXjR(<@t z(%nzein!>v;>v0*wH1vXFo?#WNb==Mm;-_cB#zknMYRJT;y*wP$8KMujFCvRG#w^) zxc4IKv^TFwx{Aw}dw);2gGXyL z$n}f2I7vHGLsGQnM`i`uGg3G(BrgOb96%eC@r-nq5P89$^t+sA6X2xQc|SYnR=8^u zw)t;p*O{I^_=M>@?7pJhmg{b~*)CTwwenHiqe!KT);y2Oj^iAa$UKQ7$Oj;7Q{z~c z)rw$cZH2Y(%~aFiJTDtb)td6+F#e+8uW;XEh!tu7K^vA}>t%n;!* zYb~kp6Vc6=)lQ&Y=r?VKmhEPtw8?NVO(c+`OtZj|2V`_Er`2)kmI}m-gN22Fx=XN|Qi{)Iptr|vii(bwl9n`r3JMs&{5(N; zq9>-S!9w=pzvqo}jycY1hJNautt8)izHcU5Sjh1Ui-Pwu4c+;_nsV!=#>? zkA0UZd|~yK_Km^%d$i;9FO^pL9`AamV1|N*LJQNu+y!S?l)Ro56e?t#u2Yi@OvT)7 z<;Z@%oad|H_)%9bGZFb`v^{Zr^h;kHux&vmoS9qy7k zVp-hNhe^~Aa%tt6!0nSBJdusZQX!d@U4NWgWq127=w`K1?g~4No(b(~O&x7D_M+Ob z)YN z-`y3rSNtaVo{End5Yt%bjKE-j46Glwe|XNhw!8rl50}5PxMfT`S^dfYp09j*Nc*g% z9h#=vjZs^CxZjL%kRq=%v8ch%E)hc#^X=HN!24%doMc>CVlQbh#s<$U$I45bW1w2< zM!>s=kVuB3xujQDm6BVDTJ>e6YeC97<>w!<+$GjTbQI4l&Yx z=PY}=ktO?i%p^A*x3=xn?Gb;+Q|@`0RDwe*hoKxm1G@rOJ&)H-&7wp}pP~9s*&@K$s+a!~h0R3=aLyusNAcfxo|1u)yaw zXVtME$C}7iUMcNz`f|YyG6qzK_wkQcC$=JA;ZfZ3Zr=U12mr(=v`C$NiTd^A6i=@& zwv(l|s{PkRPkFIgBZlQ!K!q5z2~i9Bp@9rI0AvAA&%~+Z4-;v_%UN7az5Ny<*VH)~ zBQ=RKHZl)RbE5gd@%e7JRD4QWcWn$Ua<-8Znx+zBDde75VUvks_{=fB0Kj9!j^G~4 zG_xTplA~`;@nLVQ{TC0Uup`^;7UmSm%dBPf3aA{B&E-;Y(vdeBT`nwp?kdKN(4NmZ51QWGzz^ zbtxfakbiVMfRcqAQ{gBk}oIl3~WA{ z<+1dt)Wk{rr`h_Y!SLbr-r^^6<35)ccJb8S#d5yVzS4f)yVqVsm6caG+KyQf*;*Lt z8x<30xPRRTi_<^6l=@$3f*SET1 z@eel0=uY3S+%!hrb+=N}Qe5bwnlzS)W`QN7kz!&Gr7x=rsO`a}D&!O+U7i>FbUt8V zp?Q^B46R+x7ilES7%+D0_lquk++B6)ruve$_hqa7k6x8>Lw2D)n^CO3s;R7{aNLbE zmge1$41>0!~&e z6IVR)dfdfKvd<$236GZwLi^_*PTJJV;8lBx{{WAm0b-zk?q5=&{TVO?u%z{Mxqb zoh7=SRjrOl%{&C8kW|AD8RKD+ptVy(k%58f%#Gyt$jTIJQxzE^e*X4cHChIPhiGW)6_f+ld4EC#}P=BvP_`(MpAH2G&_e?)ua%# zp8S)Xd3Cqc5(M*=?WeA2DmM2j*F#@Wu<>}8l}1Mp>Z9dO{FstR1$c!Zcqj-ogDMi`V2 zk&*K^Wdm7pJUy<%3{4wz3VtWf`&c-Q>?YCnQ_4x8c#yzZ=p~J1j!32r85kHUKs><& z9z!7Kxz4#`4Y4;{S8)>=xn6-y&mQaXY7SfvRO@0=WCJ;44Vae;sibYwb$ zo^nhP2eK({s7g|Xx@T;h$sA#Olaa_|;NbZLb{^T(AdM7*fj=+`+%$DwlyVuOhlUJ~ z6b3UkG2gK`2OcsV_S@?N5*sq)R!JY(tRgYvT_PzH#0q>_5T1%hjypK-t(=R8D-k{ z$RCg^QByn?^^foS(n;IIGarnm+^wi%tckTA?jS!xGK%tNRVUFN^59j1*K}5!j&{NVZqCVv0mi~Do z{PfaZDQl9R2bGZq2PIX3ozV9`Ha|>bADQ!{NYtrnRyO5!h%+k%dbGnKc4*K(K5R0R z+l~)|jE>rgFn}be+?V8~xWHPP`7BjTkV#l*OGOf}W?5LdQp!P8{t5fMHtcrqV$08O`V4R|i;d`E7kN{(nGB{Ha4xb`E>l++g zB-r(zE)xF_h27Ny3ryhW)1+9s8ft*ijp&eN$$GGm9M&)j$rwyw&m&X zP3dNQ|;<4!)lCP$ACw z49B0`Lf3nzf9>0SY;e(8H`eQ@^&}BVwyj>hJt0^^V~i-FB9y9voJS(ASd};h8YZwM zuMLi53I70JWZhM`ceSn{PjmbIN}t<$MJ>+5Et;)f%JtMu11~x1UZ3VxVG)u}K|?5T z%)|~rD#kLRbX@v%g-`(_n6RPZMKkvYS}I zK_X{P%^p`$i#Nk3PV8u_`z~tcQdy&|mz++fSCoTJsF0uDJ04s)cF15!Cya9(>lYLL zqg{NZa?Ep@A*KgG0Z$^?bn{%|sS4{9OUKh>Kn6Q02L+eqVx$5G94;~2P;DqF_>jHS zyJC`-p{Ifv;i*tjCJ}=qL;nCH5P1Ip=>UCmjZD%}E}d2*cWqh={jTM<8}Tzf;G>$~ zDWs+iBw|hxwL@owf4ee9{mw~Wlr|e1SbyxiRPyy&Sb!>1EYo@I_4j?3$=&C0k8JM? z%_Dv;=Br;ke~*~2;wqVCc+9f$$>!X0Nn_o->!5Bg@d90A?5(Oi4z)(MqZ}O|71Mn; z_%PdDedxB%z3vL@otp1iS1r~_E%eb;%#?1vlvLPZ@|ReWe4bt9I6@mEP~#2}<&=Ot z&Gq%$O_g>d1p2O-jJi)P{rO7Ke-<4Yi{a<03uN1q)VAHLwo_No{ymbSe&M2-UHC3r z)`~{#6k*o@05!2k7vhP~?yb0Y4y9I;+f+$u*5X0B+<)1*w?^mQJDYG_=p?DDu~XBV zb$k-E3rj6R)I}l{LKa4Nv;1noLgxVM4l=w`hFWALis9_S)L?1UOm;i{7kP?xR21>$vSbH0tHuZnrus zMK!|FQ%-BHaw1d0(aldb9hua8$sC|}?AYu^b%C{pAeO$;1bzPik41UL@J{?IO))u4 zz}5&N*4kwBmDtCH^-BSiv+D!|N3J{#m! z;&rkx^qV>D9VGpu_2{`eJTDho2!IIx05V&@lbm_LfOjQo{r&OpB^pu3WZM?|b2F_J zcP+t8)fIEi#TY6@5(E-3Xy4O9P8o18Mz#D(WS;_@opcAz_5F}H`AO8UFF%!@` zDEpTmxmO_G`|h7?+&8~dsIIo_Rj-7Vw6&AL1y$;Hs9C6}Odg|4M5Ouw(bWf{C1+ML z@)^LY!d+Yl0{4^9e(`APMC~{56`0&V5B%=@rU+|V1UbV@$5gOSz$vIR5IKibwl@d4`Jqh)m|@3PNs7FLe!Sw~q< z0eYpDpYbnGBE%V045dpE+BK2M!m5(NhEK)j5cBj(o*TxfDbpYm&cJsz3K`Ko>+uuO zn+k2)UrTE5H1pOqaGv9{>m+&P^wuWFAsgVw8iEIK7afLkTU=mkkSho$L-zwu)pf#` z3vDpk*nyY}xrNcKq!1&f<9(Lw+CLRte5S3Uq`mYG`F*U67^-E4({Q0PoaJALg`tgr zz|IIDW43dxO58sTWz^s04);9;l|C=}Z6?ki5>H5z>mGM2ulAMVzjtlg3hSQRxox`H zqXuhL&Ek?+82MH)o-Nz_dyIkyHt^Eo8*mk1b6N8>!1|Bg7J2RNcnW%|x=2^M$4*sM z{{Z`s5_9xwtmUR@2oN53^wS+xxy7-S86t@Mla z=CmHwy>5$E_UZMnbJW|d^l3CTjWxxBrwB_&AL5uga%cotL}nav0rEz*UTMCQ%`i^Z z{WY;!7;6JcjZgsA_Vw+z)o+vFRrbUNvCSp0;n%%5JaR)C!7MP7j&`+ZJCGi8*ntqXV(eJg>uj3>M z9UU`Ml;t`Vkjp2`#bb|%VlmwCQS&g?hYG@+RatQPS|q@qF6*ME9n z*59V5XzIQzZ_V#dyEi>m&a!H%x|x`TsjL}h?~=#4!!ad^?nx&k>!HQh#A6*K2DDf- z9RSgF97l-or(!0UHW^w-umg}9eb!z-y;d7^_;~<7;QBqUMNe4JtJ@T@Hu6~76hp6l=TQ^pnHTMf0 zY)df}9Z`lL{{SmaQ`9M_m4O989y{k&?rF*aP-ReG60;O{FGggP_C)>TV*?;}{d)~* zK9*sWYODoD=vMQaYHr=f)Y}fkzuPJ;u-NR>iRnxOFYMkTLog#Dy;hUc81I${d#M`5 zMUHy|n{wiPd3kH~-BMNJSZa88RHSbwUCH0D=lZUJ>jzD$F55+}P}NNLni(RdXA%~c zrd%41F3f yrJha2P~J3JrHO=(&`D2SEmTE(Z^Y1?7+Yr`?w)Q`SpQYyHesN{-BZ z8h%IscVi>qe9A);%{`AS06`k8#o#b3u3d|>t#P5{`z+ssZB{n5F>kG`q8Is|+hx4d zDlDsUNDwAV7|KkgSxE1K10m0zUs0>fZF2fSjs#^}96pbSTxB|}uTE=rrIger@~@8H z1;UDCr7|HZ&Nye0UjG2Y$PU=#aob*XiKU3dx^SX$5kFPj)x}c7wwS3%U3H+pTw2z@y{1=G+CC+PFKsN-%_C9Mh zvSL`TlfnSSJyQYLc;%7(HD8Z$G()+M(R4U+Nqs&=b|1qX@=873OSgY$J-(B0+$iCC z$Yv2qO!3Mc9yVoV=H(JTnUHIWaiLeQjYleM;CGj&6;x>g|^0 zY(sG2#oCki0#{>gZMgI{TYV)S;HbRA3=zj2bzI)O)k%QghuP=EVByC zb-!gv9bsWCQi=1}#uzG}zhF<>A7P+p)ku~Pl!!?@Q$xw0)dp9|Mg9`RW53t1>;T7; zt`p;2L$Le~xtPrj^(u7olW4M!U+Pkxw544IO+`ATG{qGU&f-}(r~r=~L$UCxGTnjC z&zu(r<5TekKnQUVVs71UZi{Z5x)bSS3AZWin_fWB%RD=y z@iR>`F<~k+v}b@w)wwP|@fZa@m|kb@8n`w#NCznCbNUEX8Nhv=pKBbjIe=u(a|4>q zZC;*IZCXOKwRIIi;zW3wq1u^QS&t~u*`FsNOGzWK2)Q{dO-(@QzcswqI1HrNY0uSV z=c6tBN(uW6ef6qYbug^51LPkXSz$Tqtu!m_c`@yhH5e*VcUC0AG-xmsoD8@m{kwKO z^Q3H?tZbLtV$`iW+$kfO&OI4s3eA(m4*2rjvGwhs3DHXMy@gCD6atNo1BP+{9lQH~ zu7qk;veK4S%LMJnm%$&?zJEPL$WpSiOqEec!f8b5$+)?5%~KtL96%%=f2ZZ#6QNE- zFHa6U*b|n=@iAfJ*k`xta=H8&5!MKaAiXPmGuat?9xxE-79PI2vxW3jz4*k6Sea@r|2ueAkm5%(3@J9=)5TCsd zk%8Z~G5H-L0ns6)k}XtH$083xQxhu6?F(ZW$pB*+@O+Rp5ge06pk7NR*70HZ)$zaoRWo@*L>-TMyea1ZeI$77^g0kQ?Gyh>>I4Ku|- zQ*S7!V|0!v>SI!HNM#H&gT=V~xfsv3o>F#%4r|vY-=j%Y<5?8*ELCK1Uy;elRt1ND z2jw^e7yxP}n37T5Twyd=Nb2N*2nKM~2Py#mKjO&o-#&5QKx`cm1Cl9Lu{%WONXQ_8 z#EyPIIT;5((;CPOXoA^K`1cby9Nao`%SH09ZsR#t&yPRT#-E6ENVE{DnyPg}PZX{U zWlnuY;!pl#lH5)RAo&>{ba9DT4FI&8q~@00G}#k-yu_5&F0tTkDdqmNa?G0qL1 z{q-y5_r&*77pc8pxiu@Hvsi8n*xY=C-v{u!6kymayhrP=eA`hV4W2ILA0QWJ6{HD}vx?LQt`~78dc)I5k zhpGOcJNo7y*e6%gg5) z&id78i9eTPuEIXPSK3v*Y8Wh5CnN(=x8!+)*OBQHVQZfW>u!^-)KT5SJ*sPM(Ps}N zafRhb_#xzURXGC$vi***)27PIG~d6zVH{J$bqJ@dx1T%c3HlY>w(ZB!Ews;>_O+Uc zP^31CXr@LPA2Z4*+G%Hzunt&&G5jaFHl~gourbudxx4RjPuOx?Yq(}UrRB%05$IkR z2b7YqTUV-D*svI(?bwzJ1#0AuRMu!L@ zK(uNG@vMCoz~FTs9xK~&H93UsA)&1U%<|oHpIiFLZ>`^S6n4F{X`qhFU0YEV4HHds zmbSWHG1XK{I08zXv?>=02N>5Z!vGG?R-fVNG=}eap0ck$4?_gs8x>fR;4bK70d}-B zOjz7suv*J~^@5_^bDq)E3&!H6xvHe{TQ8{dEz8b+2$dt`vBrJJxP$FbJ+JPmWGg-=_F z;M*nj#Ce~vQ>#s4Q#-tVBZ?K*CmX{VKC3jP37KKj=KF8^(+yo zcroSsg|hzu;@!_I6G?Z5z-osW;EIx(Y{W~2^-IYr84wl+fK}y;1|;jAtHkiNOumoQ zPtjVp1C)Ph&J){TDIR+)Fum8sa*{i*?CPp&SO+@#ON{ihF()j>m7Mx9fN}FmS^EL< zp44?KFua;zfv}Zi$}TJb>;C|xMC}GHdk7odYfHbyAhSh%sd=qeWwbnWQd=xB&nSkX zSAGpuD~zI)5pdwRW@!K{Lav!Ex61?Wwi|+IBRPrOkv>uNo}AQ@4!MDRS~_c0(yG%F zw3iFKBpM1ribSwH>C8tm6B+cT^wgGYHzXmkwxG!;(|`1_)uB%?Y>dQPUw7$v`eW0o z_Wi}U(zcTGcB!|dNhKcMwNO%5Pb{eUXKp4(Jl0TK=a14v9D?VYLZkj{fZJZb=q!SZ z*x#4{bR?1lbhnVPlY5IVHuCCy43?OrpxN80q!(&B7#c{RjjrTP%6bZZRY>`0;w6c~ z@l5{lP8!>Vcy6o+bnEZmNm|v|_WY)+K#8>4bUH@Ae@~zNU)(z%tpX}gs;G)s=T2q_^XY|GWaUF@#0u?15wQL zzP^h`?%Q4d>$WGjt3e$Rj*07S)pC(3k!56nDz{~g+NH@*#C(j!xp}T>Yfe!+!H-`t z3wIR9k>f|p^4Rklc@l5xw{OBeAgGK_0g%%=K9%p{XzG69|AwZv`JDz%>Hwwvi|VFvo>3>dr%j&aiq@t5&W za_W8ZD=alpHLi_TFZpUSMv^N30DI6b<}&VHLX7N3Bm|PWx5Gd1cyGgD#82iwrUaS6Umy$o?+2}9mxn@byc~Qdv!GnKMtR#{y7aZ!8>by7`$Ujw|p1GA6 z7W3GhRt8G!>f*~`oV{y3Ebce&Y#AI7X zs9S?=Z%XP)3r+s4$t_gz$gogX1PCTPRhT4-p&zk15wYy2RaovEag6`uH|}*6J-qKG?p}T+)H?7CHQ<%45$ndGDm!}2G*J80)^V|w6&8U6|{hZjxtHW zAO8TH0sVC<*k`a#Q}43RgW}j)j+0bRQy+L+^QFHK!=%FbTXvzU+|^a4jyfr7Yn39W z5Xmqev$9C$6={*UpdgsAMh--Xqv8xoj0OS-L%Zk?wTcgM7efrnmaiJ5*A|0A@D@L69Cc zRLQ}RVTP$VmMab#(Bu8VXd8i~@*_^sU{&7;uaB(vQlU@82hb8Z^7bWQejxglvm0zu zbn~W`r~QC#t8}^EWg)8Wvcnsq85jY{SJXUEVH2=X*pp7m^{Qs^U9>{(2M2EtYb#Xw zs<_3p1E-i5)Zen>?x9@&0BPuP?E(69V0aX!QLZ%CrLd>BG zz9WGwp9$GIG&B$Y0On5S>a~>``0-pw=R0rPVb`M5+oryYb#6P2O^(w`W}=iC#lD54 zT3UW6IeLD)uHjAz`JA5k9>Z2G29rUkdUg5*uTk{e4LT&p(#tiouP{Svrlw?&PLr<* z7>+zx;iC)N&th|){rh{<#V~R(>h$X}kmP$`to%Zlg^t zHAEF2l<>Mw9Lw0Giowx`ns?GVZgMDFQ@$&zteS3Y{9?oGE>sgT_k#n zn4^>rMo8J!l(Fx{RRBH@e0z8Fx>(=D(rIY8+uv2>c$_=wRWu^v2kq*$?&71YxnKHw zQ$esTL;)pivBGk(nurCbOhIfKw45_ni!Rt-`8dlD9dtlh9H5d+G5e2eE@V z8yvj<07Yqn#5V=vVg(@Q00VPe12-{nOhkI9uSo3I%5I@n?b&N8Q5|p5WbX*W$J7 zf8S$E#6yEaP0U^d5z0h^1Q}aa=4q&)%-NBTV4#3c^Txd@sB1;n2-zmf)wQhEa>%tZ zdbE)FRPbN(`)i!U)TV6Eu4o5=B&m$c$uZmwQ#ozQ$J9aeC;4Z#v5|F@NnTS5qMpIQ z7$QZ;AokP<=AF%#o+@Z4>5>>=jtHY1Rv2ScMIOK?00H@FK-E5~#{tdQ3_Bc>2Xoku z@FaexSl}r_LZv`K9sn2tMgaV=r`1YE$yz5?Zc0^w@AlM5gu$DuWcT^B=Vd7gK*;${ zJNxK5B19lSBp)Dn7|=wUp;@R%WZ-3xg+}b5`1fpnM?UVJ<9F#x)#IpLFi0;2kXTk1qpBi5<)e}1_l?`(WQl1KVkd@@Kv!Eb%0C5e- z=f7|O`srpML|Gpxxz!~wFf6GpIEf?-AB2*-H=hTHKf{jW$LXZoSrQGFLMrw3Pbzj* zPRlPoMB^Db_VPUHVa+8+DyS=QFod_Hu6UUV*vRPE*SV|XCwNqwv&ZQVdCJ0^wsx#duO0&cdC*> z1s2bSW_~Tmk!(;nll&yHP!H6NXRPeiTmk9&E<%+O{H$)J-~Rw5^XuVf;phJV!$$d) zuOZWFSp+Y3XwL?yX8!=gqeJI1aB|E)hBb5iOuE{sSTVVV`hNcR?7EI8h;^{j zpxpcZSJLY1-AyDDi(R-h(7HtwRT2tXRZM>plng>30YYI|frZ91s=)9JxUO8VwV{pE z)W`4osI3;~>L=|P6|I&jsACGNEi=Aq9DvNj_n*5N1q!evau1R_YY&b``0BPxX=rl~ zPuWYw>ZDV`m9taO*5JDW-jXt|IWn1sO67ng0s$lFb(1rQ(P9k*oU(sUMakbA^bNT> zMN4vzano)CW4WiurZ=gAI-v2ls^~y(-qWK00O7}j+aDp$#RB6{1ER6OMJnQ35)JMJ zx_O<-v+&PBZ{EKP^?Nwn?JX_d;d7Q+O8R-KjU#3w4NzFlB9r9AWr}z13wKs{nue2r z1ZnzT*+x2l7vp3$h#-MF+hRvOXQJnhhjfzv0M;wz)`rP71-w$l4P|Xr#SDTd8eq6c z!jSS8#}G=W;!7|911!y=TT${rk!wlrbPC%ai+u*LQvkW#=E5YKYi+0YT|;O1XPSzM zr>W~jT?I69pIVlKY*WeU#LU7r(Pn`ppt(t8sixyIify@IieTr6X9Q5lv4$wlLNWQJk%tgfR=n}dONlvK9lw<} z@VX5GS_$T7(^2*stkk;#d7-sqabG=X5fXa33)GhB>yIy)rZm2fV&t6Q;C!o$4M1^x zQ%Q6S@(`c&+%!g5^8WyO58ZihT`9EP(!257eusDpNmf;%ztL1&nUx~K!yDF2R2CRh zP>S`uco+HJ7X zM$)nV_A;`3r4)c0kU&WU@fFU+z2;mcOyKAXI!Wqg+xEZTbvCl@tF_LIEnRIT9ZMeY zQC9vWM!m3vGAfqk+qMADZ0cg8oFM7%Wr^5YOt`0~F&=U+9sY|KeA)Ds&m{BH&2=Av z{3KS%y(p=b9O0oU9AvUE{v{=p0f0N}8K;zjJ@i>vOGE-1C#mz2b^icr;@Fza0TlH$ zwKX*g=@mS;SmFca!Dx>I!GI$Ni6fHak2+uwWXVm>FOXtC^q;N7`mK4qHbvKOZR?Fe zsG_Gvf*J}6L}_ZIju_dT%{5G)JoPdX0c;!u2QJ4VHA$S&1j@}qp>ZPQ4bJ8{YzHO6 zJwM&m9UAL1*Kb&x_ASDs(p24Nx5ZHs@MUP{NZc6xN_GlxL3LkIlolg4Y-z1b3S>wc zYZI@pHJ+oJQdr@x*Ax23y%&6)zqafaivhVxH)HcR8Y!#dpn+imHgv9zm>6L#nIrw@ z9%I!E>;Uap_KI#H#x{>-Yp^<|Y@iNtI?jaL?0Q-P)_0m(?e9?Z4FNVAvQe?RK}i&p z^!3ocDg94cwGrlQ%8DS592s0RxETYf!+D9^-gJ$C^Xa^-jt^tbSe>n)>jHY;PK&{O z>y@g-W0wB_dD)j*y}h(6=q?p;TOTlbbWV{#)X6s()Il_nhKd5DGPB4Pc%+vc9<)|y zF4P`V``v0|u+-ellYM(mq{MPRnr&fq^Sga*ZR^vG#l3$88&~aG3#DWYSy>>ifYmxI zl17v8M3Sv(ih8_2$VVh&8t*Dp@t>L7^o7fu_-B@~@iXiDEJe3%ZSCFD+vUb%aQ9OIE=bnU=M!z>t)96Ono z-~whpe=U#MZ<^IGxSDlI&*7cyFL80}8$!@^Pg7l0E6Q40mpq$3SnFlES_EjcE58$q ztmo91R3=YVZV~BJDpVwZcmQM&f6qq&zyIn1-LR{#It?IgJ^J!Tv0LPPA#Z zO6qadjW(Aa{mQeoA&YQs>ovZZSuSXqGEg3LB(^@pqq%h? zS$00%vejL;MQqPSM@>tHH3mW%bCZP$h9!;wT(KZ2I;g3KEUs|{(Ayr-Z?EvW+&>ql z-Wu#3KyzFU#y-S;%e6W+(mtMaV%pH&FC(iP(hH>a_;&3H{{ZDNR={EpByc$8R2Ae^ z6Uu=Yr^_6km~C@hOAzwx^qLw!BIr&HdQ~&@6wsjmA3?vscz&o9Mhwi&9PZq-P zX8s9uB}>4i4hrHVP5YsFoAtt^tsJ<4|`Wh|uOBUqId zG8cv$u`F4)-9fEunkL3QCjMZKs)GlL#N%TVS<>ej0`N2dLF7T0wu_jz1FV~d;K~mc zsB!}zZbuo{Plpjjqo7`E#SG)?6aN4s_gSf|NhOXNvHRH-8RmFKLk!_gJ9ZfEaqph~ zb*S3M#4XTmKVRWCQ7)&L-#1t_KL}%n zx@!7mnx;_r%Bsm6bn&1W#XFOnhBP&@8dW(EARV%=K;f87OI++mBF=oc-_fI(i<3Nt zpsq=@bv~wr)g&$>@Nui^+$oQ{bzHpaPE>t>_=^V7j;K! zx6g9u)OK3hi;b$7yzxp;CYGKWc-bX$p9~+>$r(PXBz>WEr@*IJHd^mapzIqx$U!ZARCh~dlAy%F;*KL6(j=%y{Ko~2 z-UTcX7b})oNaH>-Car39T0`JNi1)YGRcXRnDO4fOf^_%p>$Kp!P$W}R9ucfABV?zI zh>U<6w-7#{CypsyNk)-?jH<6DPU9<_?eN@H zDmeDi#S$4+k7a~{=L-jP8qY;#hQoNYp2pbQme=!*eEF_ z6&C7v0(Qxj+@HR9uB*lrKI?hdmRO6aZI1T$h*{=^BLMLQNx}YluB}P5&5hR64ra_R zT=;L{8T*l~7g(&I5LP}%QZgAx{{YHC&YJKC++!ZOccUohl1tiR`1)uI!BpL$#@d!MLY2ZLP7rk>PE^l_Q>!0YEx}f zg>&$+ODj+KX#G}{EoS3G9bw98BS9m9bhkFnB&!kG|UyBXr zCdlX&=E+GypR{fiH1^=lH#DcES4dt&AwZFj7}NlMQ2e|MosdOJzc}7?8(+@qy8%h2 zqX~6{+BGB?onUL+tY^Wc0w0H6zf)tYRIYoaeD_s}pkG#~OTfb;yi&5Nz$x40P{a|2 z0Qa6Pu4BXt5F_7p3{#7-FU)QT=clOa&qdIb(aj9fGrW}y$C5_TuNcMvAQcKuP6^I& zj@TWwqz5&JRdOns<9OV{l13ena6Gv$Z=3i>4*AcK+vJDHwGNdFN(pIMG=S+6((_(JurCqPJEj4s< z`cu}VbPWYlyUEGw9zwWzy*6RQ5_yF`I}K!_D!KDbnTUhTz_;4pL@~_57P~PQ=V>RE zz3VDH@KH3izYbeQsz#xLD`nE-RV>vNv&JE4>PyKhEMyFXTmo}|JKz(o&Lc>iNMmnd z3Kc4`{v}e<0k+#ni|wtsu50M$SGs$*y4Ag`TZhxT?LEs~_-l2lw_C!eE$CYl?}ybxV-?L z`BMc{g&irL;%1qfk0fSDc!mW*$oW$Q?qBrZBHGzsUYw=eXK-=4Ld$r7sGxX`SHC$Dspj zo0|UU7-C8ucVPwgv%9yIi!lt}H%2eEYrwoW-H zz|>t1x!G*erQtR-T&LAbj_9n}7rQkLB@H#TmRRL_i*z#^oPaCH%ZCCak0p%Ezqtt> zN|s$@!>iySp-#xB-&43AE^}_j(tLg zK4@ow$MAY?N;5L}VaIn9LAaLq!ufe==hwQ&;t7U2IrAey2Ksio?5OtQ!BbmN1vHM6 z&nhH_+XIEARYI{l$;lm9D`G)`^C)E^F{(&wKma0U)f^9*9)MnFpRLq0svA200KB&5 z;}^Jp{9mrL)yC0V9+ql}(p(Wr2$zIyB#?y?BD)rmNo=nb-ogI>ZxqKoKYNhOO2oxXUxinresiSjzK9#U)loZ zqDp^OnreE5Sz#K7$*Z4{+SXi5G~sc_-77;{O1NkB58L!@pE6TVmqo;ZF!!t98Xx zg}70md_mq|#bJZlP|Uh>oC8Zu?fsqqoQVxT$BjySoQy{{Rr< zg*P*nD-3X=4n+9Xeh!JE91m|#-Eri~zZbor zj|6H+IggZsGu9(Tw`AW`TeGBnHuUZEaLr{(>I(TFj0T=(oXX8FY`-;l&wTh`Fgt6V z#L;~mOS zzta8}a#f`}G`wadNk9)TC2`zj9FNoV*JX!xY7H*6myz*WULO#w);fM;f2rr8vXegF zyIo*~SL8R1?UbXV3Uq&X-S(;cAVTh5SND6%~0qDaZwnfIFYl^2U!8 z5ruoY5#)M(7H%9#tkzg>rm?cDrL3t56m2ZBH_DNzB$Mm_*IGzulDwBvvzudeZf>34O>K(ja~GUmo&)Lch^X|$JNdGxpqwQT`P9fvR&e;x&F_% zq-}7XZ$_FpV5E(BMHitJJS!QwgtN`D+`mOd-tmp(ocbL$0 z*RNZyHs9A>;kWk|=S#hqP}Ni3=aK4BIjtRGnoeGv@t;mi;lMd%V4#fP9dEmcKA`}R zPSz7|f4Z-&PHH*s7dI*qwKr|wY3`Z}^`_@hY`js_Emb|j1|mpiQ^{N(u78*$d+NHV z@c}Nppcpc~?R+Zrv;P2yK8aX&olPP`b)Dv;x=>L@1Qhj<;bdS5$VVI`RT;;s2Yxx% zpJM0=ScfoaW8_y)gsy8-f^Ib=o2{KI-9&~!VHD-cs;K!;XXRs%d3Nkqu+MOHs$Fs# zEUa?VKPmV7EEiLDEgt^ZcWX7u2$~ATRW$_*JT5p zGmNW`ZZPQG2F(VU{%?g3JP%&a`=Ig^}$ znKPE-^wo82;lC={qmwYqrM7#mJJQCHs8#R>+g$BNk*d4^8?}3+kW1UxdjqXP0+6z> z)anDu^dR{`e{OPtMCny zL1CX`fsI78qcR_aA+yL2xzUuTnJdwQlkN4+jHs9j)Rb(alu@LTgV-~1AI}H;G>c;D zQm!IMu_$L8$oYyMz~jC%?Wb|6M1rifDjxZK=gx7Zmex*64HA^%0M2`sC$RftOR6rd ztVahd6c2Il{`+Zwr7DB~;fV#Y{e1m&vdK18Q2g=#8aPDL&A zDj^)CVk#IbH6az21fsADl0A)}{8N27}_xq0>^taIjO7l-|psc!5)l@)| zR?>QnPf#*_E^EQcoZ~E@1CV=m7}ArZqAx2-{95#q`_=uaX`|Zq8lA^>q%~$}>E=M` zMq*PUfaOCoI6$fnbKo5IofMiqW)n5J@dCmjq>HU&Es}%ltu?03O-+jUX$Wz5Ldl2irX(p|R-z-^`mG z7cg|!bMB9WzOwF1W%dh=+ozLF=v}JqR+^8)#OWH8s#cK{A&kt3l<4`5gixM3DKdI(BLvR1`pUA9C*ju-&6z;OrROK zRvKW6UR6j-FdSuWzys`i{{S!x6@f^+Mui=e^f{&W?FG5GD_Xd zrFce)Rj=@MaO`LfaBn-D#CmVg@>IBrt!Z;zE^*KXT4L8O=g^JrO|icW9VY7!M7nWv z+FOFxwD%>tzF8-V#XjjU8g-QnbyVyYmTGp6QI0@3#y(aVI(Y1E4--^6o1E7-c#wTc z*1^%l)1p~coV4}_(#Ksd7dAU`?^J#Tx`$J|tE+Z*OfD9Uvga^cDz{y><4_#uD-$G& z&bh`H4E$HS6RWyBV-4YkzO1{RQa?pf>=WBk>~U{v{mlHva&+MBj-@=cjv3bQ2?km5iEb%9zLS5F~CucP9X9m-;R+ z7=h}pU5uv(k=%bjvcc^hxpW_=mmSAdwR($DS5tkse$$>k(QdiVMNdD|~KE?DlVF*--w z{rr{N7g)Mqcc`eSP1j|lf?OCamyV%aQgF@cEQX{jG+eOCP$aS{<0FX*L|uW!Fj|>D zLqVikd+8_@8cm)@{{S6M+UP&h)g5TIbqlB$s#?yM)mkehvrYKQTCJ(RsRVY3Wn40q zc8*7p<5vbpl0_)Q4kw!HV+Pt(8h;cEL##n*GB&;R*JC`?aSngWm5w=X4UC?nNa$9j zw*LTU2U)9Qbk?0v#(I)QzIdRZyyoX16Is(W=jbv)E6)XO&)5gZgL5E64? z*ec}K*W-k>!izE0HZQEVu&X_H0 z+qBWmPi~=zrdiZ}?kLpys~A#Qo;6X*Q(wHbOV;w{iNcL9KhdHjv}q+Drr5=U&S*CBdz1vHrsU0FEhXD`TFDsjaTj zQ#yf}p>_;vCr2E;N`7ue48-|+@q4petJy^B9k$?VWLPF+#hD4rF!DnjW4IzPOBO5!CYLy7 z0Oin6&`)TUV}mVo$;$==+C4e-T!GOW#a`~}-A%UjSv~h}n`PeTHKy$;tfiIUqLt%k zic-MwAzL2&Msfxa z7>K{(0x@aU6Q7i{U^q-3Qpb+op*p$3)pMeZ#|s?(4BKTeo!dRJ*8!Kkt zN!2EVm1shmbXKm%L)Gn-QMu@%xoxQLR84fGol7LtzPbsNk9?tRW2yNHlSGv<>&H#4 zyJE?;?>37~O{FT}o;t;qxkXmOwyhwofbu+Hl_6-t5T#m{LxLGuvazAmgW6|rrM++H zQBoODv%k>a(%z~S)BA`|#!yI433$q*?zzwOKhspaMx2J#8jE_a$Kjk;gmNsZsADK4G|mfnguJ*-)((Qrt5rkC#M#Rw?Jm0yKTU18{H(hO=F$EcLly^k{SwP zdvR!JVWeE(Fpx9<02WE+aTuozX{bNK-6vD^w?(ms!?E<;nCtp}`>&n*tNSwd@#^m5 z+dDqG+jO*BKLt}AZQ7^s(ycX8$k8;4s@%$$WsS^v?u39dfzZ|C6lhRoYK=cO!U_9@ zRO}s35V5~oFQgv~T?v=rucZ_lIxCGe)}!$f+$$=a6j!O2h<{0Qks7KZuP>PKEODMA zjdmioDyys1W?8Tsz~|KNuW*=gNryDa))w4&e-PBqTp$KHL&M1UY-6^3p8hp2nZSsJ zw_zcx)iq>P;JKO@vEkkDJnJlUSi?!w6paNQ>{qnbQNddUPGg=4g2@}8Wi82AcNq)q z`D%1(8gG_ru+?dz&k}4j@3Pd*%1joK*nj2hHRvW)W{Lj*3!LIU{{UAy!gNHhGec8u ziP{HZe1H@Ys;anV>nnbqDa{#5dsgO=q$^cZhR=YQ)l=zm3eArW3Ry*0Pf(+bp~u&j zwTlYKWqZ9eC$Ik&z?;QBa@uKjY?5+BE$s}ZZ<4A+Lmt=)V{_xS=J0&T}aqZ*A zlx`E0jTY|s`1(T7-oRGc$0ABipjnttBE|0*!Bip%d zTu6-_YNB?`eRWek~LOpo_T5!OtnOuku5PIMbB)rF=b=! z3omZ?@83{1H!!3ih*=7F-kB0Pe;G3`b1hWm?6C zDt3ELu58`03hpjhA2^{TNmfNa{hf*mLmgC6y~|^B05{WuQSs~ zT4v{2)#F)ltG3xXZD_N+iqUP$ja5nYONVLNDynovjJxH`EV7PGArcUD#Y`MQYp15& zAe)bHv7f{--`Nt;I+2*(#OgG*n`*W8>DpU|f85O5qo8%yNaicfr)PCcLmbXoSQASm zk*WFBTRcI^sqcVwvqq&BT9tU^nUnQ`wJN^3n?0PsG7pd~pQ?gi{xY_f*ot~PHu&mY z9qyKSpq|aSEc6?aI$2P+Bzl*TXJs-e856q<lW> z6S!3qrf)0$%VC)M&ypGc0PF|R!0FP->|feRZ=F;2$4#nenL*5!TZAvmK7L8!4x{pZ zSLT=p*Exl=m+_MWy138IkW1ClhP5OQ;zj{U*X{)1GR%oIPU(IWHZ{?*;5@qf@u z>87`?%Krd_xiG}_)=N}W@G}k^+EDz420?XF!A5c8QLVx8Z5f40JJe${aS!X?HSOM}=1VL(A{M+X_eB(YsY@w`JwBm?XF ztb>LSB-Ml1C?#*e1QdIcp6|9dHNwF~!Q`ffdT~*Cj%CS=MKVbYBsLh9kj6ky?*a~{ z-Z!3^6=})(M^SU>{^BqdsZ|c6Q%%+fd3+yrp7kXyHQ%WxanQ!EP{!$Ut@L7*SmTPZ zk%!2rc{-p|kVxam&75ZoPIA#B$-lyprHvqFb^QJNvfSM`vR^i)){0&K0C$ehxM?Y2 zhOX)ROy20HiH{n8##2-d63$AbEBI$=T=ou%2sJh9QN>ovL8ZXn3t~G)+uq$bTlD-| zbf&S(9L~K-v>tMQWwh)&&VsV#ZjK7WQ8@;t582Q~6lSJHD5{Gbhn$8Y?A_ndMJ3OJ ztpd!G7XA+Z0HUzVZ3pr1*OJgX%d0#7i>XlU9mlpW_e(uY0Ie>-xVltB6Uc?6krVL* zPYGoKW|9w;(6S+Hi+VU*JxT_qaMC~J9!BwF%KCcO)y8;L0BDIZBv0wjaT=aWd2fxo zx2?9?*f`xNL86kbF>a=-xJnQXazDs8i6r6aj6QksWy=8iq+o&rUFvNo^!j-%-x0y3 z?mhnijqR_vS9YG@+7}xICC2q&yW1*iOqDW2`#Qa-M5rT-$Rd&$!h`86My`YZ00mio zWmakUROz^k`gI-kY>%qI8Y(w4NFz;$-u`>rWi;HI8sEO`k7=rwMFWZdbkP|g0&Ky z$yDr*Q0tOCIUPY}10aq}a8K7KSs8P6w}i?o2pWj}ZT^=Wd>_!#)%;OyN-D4g4P_Z+i$k2?ZM!e9V!a6P|GQa0kthovo~ z!cM_zZnAZ@ewf_0othi2*tFa)Ra2Up`@PaTbXNLU)Duty(hpFA!zipBv4y~HOLfEW z-Zp0mk;~ndt}39U(q1zT;^(fGk4X}~VRibN(JxfDkL(EH{{V*SD(0!TR8mfr6wD76 znIf7Z(YQ$;{{W`!6gsYQy0^s9G#<*EoqPWPE5G2F)?@HBa1MBPhS>*CmzVz2VbF~s zXltxS;UuxLm5_kw&D$dyv!Z-32+?rdN}0yJ^xPrF3rXBU=&pwJvu9ZT9`|PD-LzFx z?;YK0xl!#H;YcSm(NjY5Pg&_1JwS|Nk`pOWz-Nat`B-8e>eYodm}^KR&hsF8$3ynz zu=sZ6@g6{#01$6uaC9-Rc;>l2OmgkmduriSn42ZglC20{n{0lqWMeq*oQ-3sa9Qk+FO!ZI`|rrx`LsgsD=Lk ziZ@bK)Z^)bHG>mD%?_hbL0h;SOIcE$A%;ba^gqIv+3q23lETfDsD!Q$xnAS?a@RFp znKXljtt-^2VnD?JO`Ids_qxJdsf~8zxYgE2HANjWshiT`tQW9R?ezBVfKT66RGpI! z##10T=(uhxNV|wuodNoPr6-$eQqa~#TSpjz1Y%}_0VNOG@I?|Q5-@SifW`>~79PYN z+OGUd%S#?)oeqcSKSi|6Gbw;uVZXlJR9Ac4C@L$=6ciCrq(=?u$HB9VacmL}JNE;> zzI9`Pr&X-YRpgV_f19fAAnGkX6(+{#(?yRLS6T!}--ASR8x}sIeK?W%p4!;(L3t!= z>E^I_@kBMck5Sv|w!cE}H1}Sjn5Q#GM|ic>S*qifLnF-_!H2^I{xW`HkZ?fqahj}9 zb`qG&2P=W(E@PgXb5^vRF^=&J%w@lAcJp1W@Wb$x(H+Iq-SnvaO?rruvylx9T-rY1G}L zWZPbr{Ge*RnYcFHtI&sV+9MJ{L2ZOI#tOW}0nQF?9Ls^{ zb3Er+^ZP4W*ftjCra(Pp1N%?CR})^kxk=NjW$F#pw(GVueNL4qE3A)gtA)1pji(dT zNo$f%l3GfLYRlXwW}Q!G*N}fE9v^IaF`$f2M`W;_tzs%l`zcJYTr`; z$tT|HwWGrv#tiRhXxvHth1Qw8d~QQ#>rJlZafZXSWVl#ov|Q%7U1}ssb%LR4>D|^C z8N=dgv{VR783srLy{l+Cz7#c$KPj}^UwpTfUy8%f!d7KW@(l7900F6wQ`=S9n+vF$ zYpGQ7U3PBoweEXtd}ERARdGxpW(1E^0nJ?Fuzn)|;CanJG|tLtW}o5>A;2k14Z_XD6=N#wILOtFK3 z?dKZRCvu3o@Xb<5ARR!uRKVuE?I}IU$LFXLo{HN{p^BFbM{eEosFMLnA)B^zNQ5M6 zfOC)Pbfq{-XW~gDe=QQE0tS5hj^D0{=A1%PP%(~Ve!6KTE(j;@sP#?^A?h5AsVnc_ zPE*xec_ib2265w2(E%y-5EdmFus{U%&$fN>`f4WngzT-E@Ni@1IbpakJWswxe@}mH z76+0wSN&u>fPb6;j440i{#tt?3KM#qSP%ds$?^WDPzVG{UrW@Bfoy^2gYYDI{vbjB z0C>?SRW7MwQaGZjD93hDh5lcjbP}DDA$U=Orbc;x5d@#i=}J>7+-!)YV}dxoW^=?G z<%uNw_s?_r=eD5%HDY=pR>CHpa~z+<7NMi!26M!LpC>0L2e;*@5Kih@xh7g@>0dBI z6j<+=zyZ(H;{=}M=ju+JatVXY8KjW}tqgF-AOwYQLg(8)Pv?ywZ7L?}nVpy+k(Bo; zcmu~B{qv6BaJq;NV~tk#T@Zwsp5d7VJ5^pZ&yo8>+h8KAY~wfO^m9 zR<4WTH*Q}p63|!w0QfYmu2|f(md&Yfwp8FgOFR%(Onu4wC~fciJ1w_2SuGo~+h{G4%}r>nkyzvr{{V||aoYrU{{TWZ8OEwK z$zeWi{{Z?^{+(O?L+YZJuk6~~w6M9hZ~Fzoxpt1_OH)P2W3l9|GLGKIzin)@kBOJk zBe4heSdR|G185`BM(h6ov$v@);#;F9vHlgRPwemNg#L>guF|J60>M`GEc|=+1jSCn?l5twyN+RmKyf{X?x4&b zB;3=FFcw~q`#87k1j}E%cC=sv#bA!%RM{u~g{E8&e|&zL#O^yp=}q53`mCRU#Qy-q zdZ-oW;7hFbYlTwBwJG-$F_Mwj+wN3T#~}XztrkfmmmgR4Kr=Wu)W(d#ksy8>nT4U)4s1-?{jykdllX7boB}un+lN8OU!Wxvq;^Qk6=cV z>rur66HMz5*}oTC8+;U}sv6=iR|{Ia0#8bG942T?QbwhIRtW3J z5!mr%{MWWMP-%goR(Xu-qR_`*wriT6hQ(7;X)rTR^!GNXnWa_&F&!BT6j7DKNJB^5 zfU*3UF(rYp;%BwJMf(r3jJrMb_uhBw-)xmG?G4pW~`f(&r;~h^zefbi;&EU zk)x8|y~AU%i4Achm)Q<%YoYoMw@XE7r@dVyn%PP%vBc9Y6qLr68DTDfR5CDDGAlPI z%OrtVqbLi&9YnOXNJE{i`@)=nBVQ%zj8s!RX;C$8OERDT049XT2x6o#8ydIXqIB_Rzf?RUXsf)OHU?A z^yQIAPUH?wq=S)<(EV~XlG><3iSOGIZY`&{XzAgNC#$4vtV#THDC7YFMotuf$G?9d zXGppQmTF|vaB|^qh3FQC;?Bm4xvZ>>NmGr$c+!a zt9OT093vG^7e$gAAO}BEjeUjg6tQPBur*w|0j;dc$ zI75a<90aj|-~w^ka!A#?G1X~P45R^bg{ETPUdq$rZ@}VS%J@p4?`R|gu@?iZ?{2HA zubm9qHYUDZw--`(uIAiT6k?8gn~v$6sexRDN|lO~@}`a7lPl*X2n+LI>Cxg?+O-=@ zhA>Q6ZhNjij|&2$U*a2f=P)ic^j|D5P^C4_stEX%idR6%oDdj+jDT^EsMn#ga)~RD z#pM;8*0um7eM*z;y}3tm*}L}XRZf)>+by*1P0CdUDP*mI3x)NO+X!SC2`Y|XGOksF zEPIH_ptTxSTZ+Cbq6xYOTJe)HIJt?mY}EuN}6i0aI=@YM%S zz!E-a*nL%lDg3kVt`)5n9a5WwT!rb?u@0v~g<*4J>FyQF)YP$Vfjsk6(^F4QvLv+F zE(u?iu--=?2^kssjbXzFoIX~7NHKo*`YG{ugN+qh=niNymv7NmO>ds6+gZY*2gs$5 zIg=~o4&amAVEqoKUF>VaDmKS{OIC-77+*}>a^Lh`{j0Ss*Bzg~>#w!nvu^ggRXtsv zo=E~dT|-w>!trq_cxnpx;`GpvXlTX>O0@` z*>^urJ}`QF({7_%4fg3S-?|yM3>V-2R_2fzpTSQ>P`-~dA#cI2B3GZOQ7g6q$uSr@ zxU4%}N6hkDH%9dY?rz>%YZr-0D4!OCL`6F3a2&+f@+1T;aW3 z%?P|orb9(R3{%C*cUp+zsG1fEt`aCq0V8WJ2MX*PbJZU^tRnC^`|??_F8o8oDT&`v z>0`c~1kR#9UiCAqo8PQA_Pp<1&vM*X9KRVWrzK$x{7W2T2^ydJPyzPWM#^ksax_^` zRIO3x<~nVl9zxyusL;M#RSGS2N}(7kCTwGYOk+RvlE0B7#-)|Klm%LVKyme6Gb0~! z{PiUQ;&m(NxAr{lRZYRv&Aa%DWT~vAp}4~naWl#2$tph;BoQx#Ei5{{0dxdGk-Wc)@{{HLfOVnKAszs-cj;fIV02EIlhE*Q?Tjo|d$6^=HopWd9 z{{S1VmB0}*e_zB3%Z5-s(C1MappqpUQ0gQT`Q!__aXH4>#lvyMwLe2x#_BR{D6>s^_$ RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README.md b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README.md new file mode 100644 index 00000000..adf5de2a --- /dev/null +++ b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README.md @@ -0,0 +1,20 @@ +# TTF-Net model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/ttfnet_darknet53_1x_coco.tar +``` + +### Start the service +``` +tar xf ttfnet_darknet53_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` +This model support TensorRT, if you want a faster inference, please use `--use_trt`. + +### Perform prediction +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README_CN.md b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README_CN.md new file mode 100644 index 00000000..7a2c8609 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/README_CN.md @@ -0,0 +1,22 @@ +# 使用Paddle Serving部署TTF-Net模型 + +(简体中文|[English](./README.md)) + +## 获得模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/ttfnet_darknet53_1x_coco.tar +``` + + +### 启动服务 +``` +tar xf ttfnet_darknet53_1x_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项。 + +### 执行预测 +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/label_list.txt b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/test_client.py b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/test_client.py new file mode 100644 index 00000000..f735c01b --- /dev/null +++ b/examples/Cpp/PaddleDetection/ttfnet_darknet53_1x_coco/test_client.py @@ -0,0 +1,45 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionResize( + (512, 512), False, interpolation=cv2.INTER_LINEAR), + DetectionNormalize([123.675, 116.28, 103.53], [58.395, 57.12, 57.375], False), + DetectionTranspose((2,0,1)) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) + + +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +print(fetch_map) diff --git a/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/000000570688.jpg b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README.md b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README.md new file mode 100644 index 00000000..32670748 --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README.md @@ -0,0 +1,21 @@ +# YOLOv3 model on Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/yolov3_darknet53_270e_coco.tar +``` + +### Start the service +``` +tar xf yolov3_darknet53_270e_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +This model support TensorRT, if you want a faster inference, please use `--use_trt`. + +### Perform prediction +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README_CN.md b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README_CN.md new file mode 100644 index 00000000..4185e0fe --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/README_CN.md @@ -0,0 +1,22 @@ +# 使用Paddle Serving部署YOLOv3模型 + +(简体中文|[English](./README.md)) + +## 获得模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/yolov3_darknet53_270e_coco.tar +``` + + +### 启动服务 +``` +tar xf yolov3_darknet53_270e_coco.tar +python3 -m paddle_serving_server.serve --model serving_server --port 9494 --gpu_ids 0 +``` + +该模型支持TensorRT,如果想要更快的预测速度,可以开启`--use_trt`选项。 + +### 执行预测 +``` +python3 test_client.py 000000570688.jpg +``` diff --git a/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/label_list.txt b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/test_client.py b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/test_client.py new file mode 100644 index 00000000..04f21b32 --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov3_darknet53_270e_coco/test_client.py @@ -0,0 +1,45 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 + +preprocess = DetectionSequential([ + DetectionFile2Image(), + DetectionResize( + (608, 608), False, interpolation=2), + DetectionNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True), + DetectionTranspose((2,0,1)), +]) + +postprocess = RCNNPostprocess("label_list.txt", "output") +client = Client() + +client.load_client_config("serving_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9494']) + +im, im_info = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_shape": np.array(list(im.shape[1:])).reshape(-1), + "scale_factor": im_info['scale_factor'], + }, + fetch=["save_infer_model/scale_0.tmp_1"], + batch=False) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleDetection/yolov4/000000570688.jpg b/examples/Cpp/PaddleDetection/yolov4/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleDetection/yolov4/README.md b/examples/Cpp/PaddleDetection/yolov4/README.md new file mode 100644 index 00000000..0c7cfa7c --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov4/README.md @@ -0,0 +1,23 @@ +# Yolov4 Detection Service + +([简体中文](README_CN.md)|English) + +## Get Model + +``` +python3 -m paddle_serving_app.package --get_model yolov4 +tar -xzvf yolov4.tar.gz +``` + +## Start RPC Service + +``` +python3 -m paddle_serving_server.serve --model yolov4_model --port 9393 --gpu_ids 0 +``` + +## Prediction + +``` +python3 test_client.py 000000570688.jpg +``` +After the prediction is completed, a json file to save the prediction result and a picture with the detection result box will be generated in the `./outpu folder. diff --git a/examples/Cpp/PaddleDetection/yolov4/README_CN.md b/examples/Cpp/PaddleDetection/yolov4/README_CN.md new file mode 100644 index 00000000..1c773033 --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov4/README_CN.md @@ -0,0 +1,24 @@ +# Yolov4 检测服务 + +(简体中文|[English](README.md)) + +## 获取模型 + +``` +python3 -m paddle_serving_app.package --get_model yolov4 +tar -xzvf yolov4.tar.gz +``` + +## 启动RPC服务 + +``` +python3 -m paddle_serving_server.serve --model yolov4_model --port 9393 --gpu_ids 0 +``` + +## 预测 + +``` +python3 test_client.py 000000570688.jpg +``` + +预测完成会在`./output`文件夹下生成保存预测结果的json文件以及标出检测结果框的图片。 diff --git a/examples/Cpp/PaddleDetection/yolov4/label_list.txt b/examples/Cpp/PaddleDetection/yolov4/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov4/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Cpp/PaddleDetection/yolov4/test_client.py b/examples/Cpp/PaddleDetection/yolov4/test_client.py new file mode 100644 index 00000000..dfcd5861 --- /dev/null +++ b/examples/Cpp/PaddleDetection/yolov4/test_client.py @@ -0,0 +1,41 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import numpy as np +from paddle_serving_client import Client +from paddle_serving_app.reader import * +import cv2 +preprocess = Sequential([ + File2Image(), BGR2RGB(), Resize( + (608, 608), interpolation=cv2.INTER_LINEAR), Div(255.0), Transpose( + (2, 0, 1)) +]) + +postprocess = RCNNPostprocess("label_list.txt", "output", [608, 608]) +client = Client() + +client.load_client_config("yolov4_client/serving_client_conf.prototxt") +client.connect(['127.0.0.1:9393']) + +im = preprocess(sys.argv[1]) +fetch_map = client.predict( + feed={ + "image": im, + "im_size": np.array(list(im.shape[1:])), + }, + fetch=["save_infer_model/scale_0.tmp_0"], + batch=False) +fetch_map["image"] = sys.argv[1] +postprocess(fetch_map) diff --git a/examples/Cpp/PaddleNLP/bert/README.md b/examples/Cpp/PaddleNLP/bert/README.md new file mode 100755 index 00000000..5d324283 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/README.md @@ -0,0 +1,80 @@ +Http## Bert as service + +([简体中文](./README_CN.md)|English) + +In the example, a BERT model is used for semantic understanding prediction, and the text is represented as a vector, which can be used for further analysis and prediction. +If your python version is 3.X, replace the 'pip' field in the following command with 'pip3',replace 'python' with 'python3'. + +### Getting Model +method 1: +This example use model [BERT Chinese Model](https://www.paddlepaddle.org.cn/hubdetail?name=bert_chinese_L-12_H-768_A-12&en_category=SemanticModel) from [Paddlehub](https://github.com/PaddlePaddle/PaddleHub). + +Install paddlehub first +``` +pip3 install paddlehub +``` + +run +``` +python3 prepare_model.py 128 +``` + +**PaddleHub only support Python 3.5+** + +the 128 in the command above means max_seq_len in BERT model, which is the length of sample after preprocessing. +the config file and model file for server side are saved in the folder bert_seq128_model. +the config file generated for client side is saved in the folder bert_seq128_client. + +method 2: +You can also download the above model from BOS(max_seq_len=128). After decompression, the config file and model file for server side are stored in the bert_chinese_L-12_H-768_A-12_model folder, and the config file generated for client side is stored in the bert_chinese_L-12_H-768_A-12_client folder: +```shell +wget https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/SemanticModel/bert_chinese_L-12_H-768_A-12.tar.gz +tar -xzf bert_chinese_L-12_H-768_A-12.tar.gz +mv bert_chinese_L-12_H-768_A-12_model bert_seq128_model +mv bert_chinese_L-12_H-768_A-12_client bert_seq128_client +``` +if your model is bert_chinese_L-12_H-768_A-12_model, replace the 'bert_seq128_model' field in the following command with 'bert_chinese_L-12_H-768_A-12_model',replace 'bert_seq128_client' with 'bert_chinese_L-12_H-768_A-12_client'. + +### Getting Dict and Sample Dataset + +``` +sh get_data.sh +``` +this script will download Chinese Dictionary File vocab.txt and Chinese Sample Data data-c.txt + +### Inference Service(Support BRPC-Client、GRPC-Client、Http-Client) +start cpu inference service,Run +``` +python3 -m paddle_serving_server.serve --model bert_seq128_model/ --port 9292 #cpu inference service +``` +Or,start gpu inference service,Run +``` +python3 -m paddle_serving_server.serve --model bert_seq128_model/ --port 9292 --gpu_ids 0 #launch gpu inference service at GPU 0 +``` + +### BRPC-Client Inference + +before prediction we should install paddle_serving_app. This module provides data preprocessing for BERT model. +``` +pip3 install paddle_serving_app +``` +Run +``` +head data-c.txt | python3 bert_client.py --model bert_seq128_client/serving_client_conf.prototxt +``` + +the client reads data from data-c.txt and send prediction request, the prediction is given by word vector. (Due to massive data in the word vector, we do not print it). + +#### GRPC-Client/HTTP-Client +Run +``` +head data-c.txt | python3 bert_httpclient.py --model bert_seq128_client/serving_client_conf.prototxt + +``` + + +## Benchmark +``` shell +bash benchmark.sh bert_seq128_model bert_seq128_client +``` +The output log file of benchmark named `profile_log_bert_seq128_model` diff --git a/examples/Cpp/PaddleNLP/bert/README_CN.md b/examples/Cpp/PaddleNLP/bert/README_CN.md new file mode 100755 index 00000000..42bc3ffa --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/README_CN.md @@ -0,0 +1,85 @@ +## 语义理解预测服务 + +(简体中文|[English](./README.md)) + +示例中采用BERT模型进行语义理解预测,将文本表示为向量的形式,可以用来做进一步的分析和预测。 + +若使用python的版本为3.X, 将以下命令中的pip 替换为pip3, python替换为python3. +### 获取模型 +方法1: +示例中采用[Paddlehub](https://github.com/PaddlePaddle/PaddleHub)中的[BERT中文模型](https://www.paddlepaddle.org.cn/hubdetail?name=bert_chinese_L-12_H-768_A-12&en_category=SemanticModel)。 +请先安装paddlehub +``` +pip3 install paddlehub +``` +执行 +``` +python3 prepare_model.py 128 +``` +参数128表示BERT模型中的max_seq_len,即预处理后的样本长度。 +生成server端配置文件与模型文件,存放在bert_seq128_model文件夹。 +生成client端配置文件,存放在bert_seq128_client文件夹。 + +方法2: +您也可以从bos上直接下载上述模型(max_seq_len=128),解压后server端配置文件与模型文件存放在bert_chinese_L-12_H-768_A-12_model文件夹,client端配置文件存放在bert_chinese_L-12_H-768_A-12_client文件夹: +```shell +wget https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/SemanticModel/bert_chinese_L-12_H-768_A-12.tar.gz +tar -xzf bert_chinese_L-12_H-768_A-12.tar.gz +mv bert_chinese_L-12_H-768_A-12_model bert_seq128_model +mv bert_chinese_L-12_H-768_A-12_client bert_seq128_client +``` +若使用bert_chinese_L-12_H-768_A-12_model模型,将下面命令中的bert_seq128_model字段替换为bert_chinese_L-12_H-768_A-12_model,bert_seq128_client字段替换为bert_chinese_L-12_H-768_A-12_client. + + + + +### 获取词典和样例数据 + +``` +sh get_data.sh +``` +脚本将下载中文词典vocab.txt和中文样例数据data-c.txt + +### 启动预测服务(支持BRPC-Client、GRPC-Client、HTTP-Client三种方式访问) +启动cpu预测服务,执行 +``` +python3 -m paddle_serving_server.serve --model bert_seq128_model/ --port 9292 #启动cpu预测服务 + +``` +或者,启动gpu预测服务,执行 +``` +python3 -m paddle_serving_server.serve --model bert_seq128_model/ --port 9292 --gpu_ids 0 #在gpu 0上启动gpu预测服务 + +``` + +### 执行预测 + +执行预测前需要安装paddle_serving_app,模块中提供了BERT模型的数据预处理方法。 +``` +pip3 install paddle_serving_app +``` + +#### BRPC-Client +执行 +``` +head data-c.txt | python3 bert_client.py --model bert_seq128_client/serving_client_conf.prototxt + +``` +启动client读取data-c.txt中的数据进行预测,预测结果为文本的向量表示(由于数据较多,脚本中没有将输出进行打印),server端的地址在脚本中修改。 + +#### GRPC-Client/HTTP-Client +执行 +``` +head data-c.txt | python3 bert_httpclient.py --model bert_seq128_client/serving_client_conf.prototxt + +``` + +## 性能测试 +``` shell +bash benchmark.sh bert_seq128_model bert_seq128_client +``` +性能测试的日志文件为profile_log_bert_seq128_model + +如需修改性能测试用例的参数,请修改benchmark.sh中的配置信息。 + +注意:bert_seq128_model和bert_seq128_client路径后不要加'/'符号,示例需要在GPU机器上运行。 diff --git a/examples/Cpp/PaddleNLP/bert/batching.py b/examples/Cpp/PaddleNLP/bert/batching.py new file mode 100644 index 00000000..5ec5f320 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/batching.py @@ -0,0 +1,126 @@ +#coding:utf-8 +# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Mask, padding and batching.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import numpy as np + + +def prepare_batch_data(insts, + total_token_num, + max_seq_len=128, + pad_id=None, + cls_id=None, + sep_id=None, + mask_id=None, + return_input_mask=True, + return_max_len=True, + return_num_token=False): + """ + 1. generate Tensor of data + 2. generate Tensor of position + 3. generate self attention mask, [shape: batch_size * max_len * max_len] + """ + + batch_src_ids = [inst[0] for inst in insts] + batch_sent_ids = [inst[1] for inst in insts] + batch_pos_ids = [inst[2] for inst in insts] + labels_list = [] + # compatible with squad, whose example includes start/end positions, + # or unique id + + for i in range(3, len(insts[0]), 1): + labels = [inst[i] for inst in insts] + labels = np.array(labels).astype("int64").reshape([-1, 1]) + labels_list.append(labels) + + out = batch_src_ids + # Second step: padding + src_id, self_input_mask = pad_batch_data( + out, pad_idx=pad_id, max_seq_len=max_seq_len, return_input_mask=True) + pos_id = pad_batch_data( + batch_pos_ids, + pad_idx=pad_id, + max_seq_len=max_seq_len, + return_pos=False, + return_input_mask=False) + sent_id = pad_batch_data( + batch_sent_ids, + pad_idx=pad_id, + max_seq_len=max_seq_len, + return_pos=False, + return_input_mask=False) + + return_list = [src_id, pos_id, sent_id, self_input_mask] + labels_list + + return return_list if len(return_list) > 1 else return_list[0] + + +def pad_batch_data(insts, + pad_idx=0, + max_seq_len=128, + return_pos=False, + return_input_mask=False, + return_max_len=False, + return_num_token=False, + return_seq_lens=False): + """ + Pad the instances to the max sequence length in batch, and generate the + corresponding position data and input mask. + """ + return_list = [] + #max_len = max(len(inst) for inst in insts) + max_len = max_seq_len + # Any token included in dict can be used to pad, since the paddings' loss + # will be masked out by weights and make no effect on parameter gradients. + + inst_data = np.array([ + list(inst) + list([pad_idx] * (max_len - len(inst))) for inst in insts + ]) + return_list += [inst_data.astype("int64").reshape([-1, max_len, 1])] + + # position data + if return_pos: + inst_pos = np.array([ + list(range(0, len(inst))) + [pad_idx] * (max_len - len(inst)) + for inst in insts + ]) + + return_list += [inst_pos.astype("int64").reshape([-1, max_len, 1])] + + if return_input_mask: + # This is used to avoid attention on paddings. + input_mask_data = np.array( + [[1] * len(inst) + [0] * (max_len - len(inst)) for inst in insts]) + input_mask_data = np.expand_dims(input_mask_data, axis=-1) + return_list += [input_mask_data.astype("float32")] + + if return_max_len: + return_list += [max_len] + + if return_num_token: + num_token = 0 + for inst in insts: + num_token += len(inst) + return_list += [num_token] + + if return_seq_lens: + seq_lens = np.array([len(inst) for inst in insts]) + return_list += [seq_lens.astype("int64").reshape([-1, 1])] + + return return_list if len(return_list) > 1 else return_list[0] diff --git a/examples/Cpp/PaddleNLP/bert/benchmark.py b/examples/Cpp/PaddleNLP/bert/benchmark.py new file mode 100644 index 00000000..bdef9828 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/benchmark.py @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import unicode_literals, absolute_import +import os +import sys +import time +import json +import requests +import numpy as np +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency +from paddle_serving_app.reader import ChineseBertReader + +args = benchmark_args() + + +def single_func(idx, resource): + fin = open("data-c.txt") + dataset = [] + for line in fin: + dataset.append(line.strip()) + + profile_flags = False + latency_flags = False + if os.getenv("FLAGS_profile_client"): + profile_flags = True + if os.getenv("FLAGS_serving_latency"): + latency_flags = True + latency_list = [] + + if args.request == "rpc": + reader = ChineseBertReader({"max_seq_len": 128}) + fetch = ["pooled_output"] + client = Client() + client.load_client_config(args.model) + client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) + start = time.time() + for i in range(turns): + if args.batch_size >= 1: + l_start = time.time() + feed_batch = [] + b_start = time.time() + for bi in range(args.batch_size): + feed_dict = reader.process(dataset[bi]) + for key in feed_dict.keys(): + feed_dict[key] = np.array(feed_dict[key]).reshape( + (1, 128, 1)) + feed_batch.append(feed_dict) + b_end = time.time() + + if profile_flags: + sys.stderr.write( + "PROFILE\tpid:{}\tbert_pre_0:{} bert_pre_1:{}\n".format( + os.getpid(), + int(round(b_start * 1000000)), + int(round(b_end * 1000000)))) + result = client.predict( + feed=feed_batch, fetch=fetch, batch=True) + + l_end = time.time() + if latency_flags: + latency_list.append(l_end * 1000 - l_start * 1000) + else: + print("unsupport batch size {}".format(args.batch_size)) + + elif args.request == "http": + reader = ChineseBertReader({"max_seq_len": 128}) + fetch = ["pooled_output"] + server = "http://" + resource["endpoint"][idx % len(resource[ + "endpoint"])] + "/bert/prediction" + start = time.time() + for i in range(turns): + if args.batch_size >= 1: + l_start = time.time() + feed_batch = [] + b_start = time.time() + for bi in range(args.batch_size): + feed_batch.append({"words": dataset[bi]}) + req = json.dumps({"feed": feed_batch, "fetch": fetch}) + b_end = time.time() + + if profile_flags: + sys.stderr.write( + "PROFILE\tpid:{}\tbert_pre_0:{} bert_pre_1:{}\n".format( + os.getpid(), + int(round(b_start * 1000000)), + int(round(b_end * 1000000)))) + result = requests.post( + server, + data=req, + headers={"Content-Type": "application/json"}) + l_end = time.time() + if latency_flags: + latency_list.append(l_end * 1000 - l_start * 1000) + else: + print("unsupport batch size {}".format(args.batch_size)) + + else: + raise ValueError("not implemented {} request".format(args.request)) + end = time.time() + if latency_flags: + return [[end - start], latency_list] + else: + return [[end - start]] + + +if __name__ == '__main__': + multi_thread_runner = MultiThreadRunner() + endpoint_list = ["127.0.0.1:9292", "127.0.0.1:9293"] + turns = 100 + start = time.time() + result = multi_thread_runner.run( + single_func, args.thread, {"endpoint": endpoint_list, + "turns": turns}) + end = time.time() + total_cost = end - start + + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + avg_cost = avg_cost / args.thread + + print("total cost: {}s".format(total_cost)) + print("each thread cost: {}s. ".format(avg_cost)) + print("qps: {}samples/s".format(args.batch_size * args.thread * turns / + total_cost)) + if os.getenv("FLAGS_serving_latency"): + show_latency(result[1]) diff --git a/examples/Cpp/PaddleNLP/bert/benchmark.sh b/examples/Cpp/PaddleNLP/bert/benchmark.sh new file mode 100644 index 00000000..7e374db3 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/benchmark.sh @@ -0,0 +1,55 @@ +rm profile_log* +export CUDA_VISIBLE_DEVICES=0,1 +export FLAGS_profile_server=1 +export FLAGS_profile_client=1 +export FLAGS_serving_latency=1 + +gpu_id=0 +#save cpu and gpu utilization log +if [ -d utilization ];then + rm -rf utilization +else + mkdir utilization +fi +#start server +$PYTHONROOT/bin/python3 -m paddle_serving_server.serve --model $1 --port 9292 --thread 4 --gpu_ids 0,1 --mem_optim --ir_optim > elog 2>&1 & +sleep 5 + +#warm up +$PYTHONROOT/bin/python3 benchmark.py --thread 4 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 +echo -e "import psutil\nimport time\nwhile True:\n\tcpu_res = psutil.cpu_percent()\n\twith open('cpu.txt', 'a+') as f:\n\t\tf.write(f'{cpu_res}\\\n')\n\ttime.sleep(0.1)" > cpu.py +for thread_num in 1 4 8 16 +do +for batch_size in 1 4 16 64 +do + job_bt=`date '+%Y%m%d%H%M%S'` + nvidia-smi --id=0 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_memory_use.log 2>&1 & + nvidia-smi --id=0 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + rm -rf cpu.txt + $PYTHONROOT/bin/python3 cpu.py & + gpu_memory_pid=$! + $PYTHONROOT/bin/python3 benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + kill `ps -ef|grep used_memory|awk '{print $2}'` > /dev/null + kill `ps -ef|grep utilization.gpu|awk '{print $2}'` > /dev/null + kill `ps -ef|grep cpu.py|awk '{print $2}'` > /dev/null + echo "model_name:" $1 + echo "thread_num:" $thread_num + echo "batch_size:" $batch_size + echo "=================Done====================" + echo "model_name:$1" >> profile_log_$1 + echo "batch_size:$batch_size" >> profile_log_$1 + job_et=`date '+%Y%m%d%H%M%S'` + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "CPU_UTILIZATION:", max}' cpu.txt >> profile_log_$1 + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "MAX_GPU_MEMORY:", max}' gpu_memory_use.log >> profile_log_$1 + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$1 + rm -rf gpu_use.log gpu_utilization.log + $PYTHONROOT/bin/python3 ../util/show_profile.py profile $thread_num >> profile_log_$1 + tail -n 8 profile >> profile_log_$1 + echo "" >> profile_log_$1 +done +done + +#Divided log +awk 'BEGIN{RS="\n\n"}{i++}{print > "bert_log_"i}' profile_log_$1 +mkdir bert_log && mv bert_log_* bert_log +ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/examples/Cpp/PaddleNLP/bert/benchmark_with_profile.sh b/examples/Cpp/PaddleNLP/bert/benchmark_with_profile.sh new file mode 100644 index 00000000..f36fbbce --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/benchmark_with_profile.sh @@ -0,0 +1,10 @@ +export CUDA_VISIBLE_DEVICES=0,1 +python -m paddle_serving_server.serve --model bert_seq20_model/ --port 9295 --thread 4 --gpu_ids 0,1 2> elog > stdlog & +export FLAGS_profile_client=1 +export FLAGS_profile_server=1 +sleep 5 +thread_num=4 +python benchmark_batch.py --thread ${thread_num} --batch_size 64 --model serving_client_conf/serving_client_conf.prototxt 2> profile + +python show_profile.py profile ${thread_num} +python timeline_trace.py profile trace diff --git a/examples/Cpp/PaddleNLP/bert/bert_client.py b/examples/Cpp/PaddleNLP/bert/bert_client.py new file mode 100644 index 00000000..4111589b --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/bert_client.py @@ -0,0 +1,37 @@ +# coding:utf-8 +# pylint: disable=doc-string-missing +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from paddle_serving_client import Client +from paddle_serving_client.utils import benchmark_args +from paddle_serving_app.reader import ChineseBertReader +import numpy as np +args = benchmark_args() + +reader = ChineseBertReader({"max_seq_len": 128}) +fetch = ["pooled_output"] +endpoint_list = ['127.0.0.1:9292'] +client = Client() +client.load_client_config(args.model) +client.connect(endpoint_list) + +for line in sys.stdin: + feed_dict = reader.process(line) + for key in feed_dict.keys(): + feed_dict[key] = np.array(feed_dict[key]).reshape((128, 1)) + #print(feed_dict) + result = client.predict(feed=feed_dict, fetch=fetch, batch=False) +print(result) diff --git a/examples/Cpp/PaddleNLP/bert/bert_gpu_server.py b/examples/Cpp/PaddleNLP/bert/bert_gpu_server.py new file mode 100644 index 00000000..7708a078 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/bert_gpu_server.py @@ -0,0 +1,42 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +from paddle_serving_server import OpMaker +from paddle_serving_server import OpSeqMaker +from paddle_serving_server import Server + +op_maker = OpMaker() +read_op = op_maker.create('general_reader') +general_infer_op = op_maker.create('general_infer') +general_response_op = op_maker.create('general_response') + +op_seq_maker = OpSeqMaker() +op_seq_maker.add_op(read_op) +op_seq_maker.add_op(general_infer_op) +op_seq_maker.add_op(general_response_op) + +server = Server() +server.set_op_sequence(op_seq_maker.get_op_sequence()) +server.set_num_threads(8) +server.set_memory_optimize(True) +server.set_gpuid(1) + +server.load_model_config(sys.argv[1]) +port = int(sys.argv[2]) +gpuid = sys.argv[3] +server.set_gpuid(gpuid) +server.prepare_server(workdir="work_dir1", port=port, device="gpu") +server.run_server() diff --git a/examples/Cpp/PaddleNLP/bert/bert_httpclient.py b/examples/Cpp/PaddleNLP/bert/bert_httpclient.py new file mode 100644 index 00000000..255c78ec --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/bert_httpclient.py @@ -0,0 +1,58 @@ +# coding:utf-8 +# pylint: disable=doc-string-missing +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from paddle_serving_client import HttpClient +from paddle_serving_client.utils import benchmark_args +from paddle_serving_app.reader import ChineseBertReader +import numpy as np +args = benchmark_args() + +reader = ChineseBertReader({"max_seq_len": 128}) +fetch = ["pooled_output"] +endpoint_list = ['127.0.0.1:9292'] +client = HttpClient() +client.load_client_config(args.model) +''' +if you want use GRPC-client, set_use_grpc_client(True) +or you can directly use client.grpc_client_predict(...) +as for HTTP-client,set_use_grpc_client(False)(which is default) +or you can directly use client.http_client_predict(...) +''' +#client.set_use_grpc_client(True) +''' +if you want to enable Encrypt Module,uncommenting the following line +''' +#client.use_key("./key") +''' +if you want to compress,uncommenting the following line +''' +#client.set_response_compress(True) +#client.set_request_compress(True) +''' +we recommend use Proto data format in HTTP-body, set True(which is default) +if you want use JSON data format in HTTP-body, set False +''' +#client.set_http_proto(True) +client.connect(endpoint_list) + +for line in sys.stdin: + feed_dict = reader.process(line) + for key in feed_dict.keys(): + feed_dict[key] = np.array(feed_dict[key]).reshape((128, 1)) + #print(feed_dict) + result = client.predict(feed=feed_dict, fetch=fetch, batch=False) +print(result) diff --git a/examples/Cpp/PaddleNLP/bert/bert_reader.py b/examples/Cpp/PaddleNLP/bert/bert_reader.py new file mode 100644 index 00000000..366c19b5 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/bert_reader.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +from batching import pad_batch_data +import tokenization + + +class BertReader(): + def __init__(self, vocab_file="", max_seq_len=128): + self.vocab_file = vocab_file + self.tokenizer = tokenization.FullTokenizer(vocab_file=vocab_file) + self.max_seq_len = max_seq_len + self.vocab = self.tokenizer.vocab + self.pad_id = self.vocab["[PAD]"] + self.cls_id = self.vocab["[CLS]"] + self.sep_id = self.vocab["[SEP]"] + self.mask_id = self.vocab["[MASK]"] + + def pad_batch(self, token_ids, text_type_ids, position_ids): + batch_token_ids = [token_ids] + batch_text_type_ids = [text_type_ids] + batch_position_ids = [position_ids] + + padded_token_ids, input_mask = pad_batch_data( + batch_token_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id, + return_input_mask=True) + padded_text_type_ids = pad_batch_data( + batch_text_type_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id) + padded_position_ids = pad_batch_data( + batch_position_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id) + return padded_token_ids, padded_position_ids, padded_text_type_ids, input_mask + + def process(self, sent): + text_a = tokenization.convert_to_unicode(sent) + tokens_a = self.tokenizer.tokenize(text_a) + if len(tokens_a) > self.max_seq_len - 2: + tokens_a = tokens_a[0:(self.max_seq_len - 2)] + tokens = [] + text_type_ids = [] + tokens.append("[CLS]") + text_type_ids.append(0) + for token in tokens_a: + tokens.append(token) + text_type_ids.append(0) + token_ids = self.tokenizer.convert_tokens_to_ids(tokens) + position_ids = list(range(len(token_ids))) + p_token_ids, p_pos_ids, p_text_type_ids, input_mask = \ + self.pad_batch(token_ids, text_type_ids, position_ids) + feed_result = { + "input_ids": p_token_ids.reshape(-1).tolist(), + "position_ids": p_pos_ids.reshape(-1).tolist(), + "segment_ids": p_text_type_ids.reshape(-1).tolist(), + "input_mask": input_mask.reshape(-1).tolist() + } + return feed_result diff --git a/examples/Cpp/PaddleNLP/bert/bert_server.py b/examples/Cpp/PaddleNLP/bert/bert_server.py new file mode 100644 index 00000000..35d38be0 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/bert_server.py @@ -0,0 +1,38 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +from paddle_serving_server import OpMaker +from paddle_serving_server import OpSeqMaker +from paddle_serving_server import Server + +op_maker = OpMaker() +read_op = op_maker.create('general_reader') +general_infer_op = op_maker.create('general_infer') +general_response_op = op_maker.create('general_response') + +op_seq_maker = OpSeqMaker() +op_seq_maker.add_op(read_op) +op_seq_maker.add_op(general_infer_op) +op_seq_maker.add_op(general_response_op) + +server = Server() +server.set_op_sequence(op_seq_maker.get_op_sequence()) +server.set_num_threads(4) + +server.load_model_config(sys.argv[1]) +port = int(sys.argv[2]) +server.prepare_server(workdir="work_dir1", port=port, device="cpu") +server.run_server() diff --git a/examples/Cpp/PaddleNLP/bert/get_data.sh b/examples/Cpp/PaddleNLP/bert/get_data.sh new file mode 100644 index 00000000..5e17d10d --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/get_data.sh @@ -0,0 +1,2 @@ +wget https://paddle-serving.bj.bcebos.com/bert_example/data-c.txt --no-check-certificate +wget https://paddle-serving.bj.bcebos.com/bert_example/vocab.txt --no-check-certificate diff --git a/examples/Cpp/PaddleNLP/bert/prepare_model.py b/examples/Cpp/PaddleNLP/bert/prepare_model.py new file mode 100644 index 00000000..e883b6b1 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/prepare_model.py @@ -0,0 +1,49 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +import paddlehub as hub +import paddle.fluid as fluid +import sys +import paddle_serving_client.io as serving_io +import paddle + +paddle.enable_static() +model_name = "bert_chinese_L-12_H-768_A-12" +module = hub.Module(name=model_name) +inputs, outputs, program = module.context( + trainable=True, max_seq_len=int(sys.argv[1])) +place = fluid.core_avx.CPUPlace() +exe = fluid.Executor(place) +input_ids = inputs["input_ids"] +position_ids = inputs["position_ids"] +segment_ids = inputs["segment_ids"] +input_mask = inputs["input_mask"] +pooled_output = outputs["pooled_output"] +sequence_output = outputs["sequence_output"] + +feed_var_names = [ + input_ids.name, position_ids.name, segment_ids.name, input_mask.name +] + +target_vars = [pooled_output, sequence_output] + +serving_io.save_model( + "bert_seq{}_model".format(sys.argv[1]), + "bert_seq{}_client".format(sys.argv[1]), { + "input_ids": input_ids, + "position_ids": position_ids, + "segment_ids": segment_ids, + "input_mask": input_mask, + }, {"pooled_output": pooled_output, + "sequence_output": sequence_output}, program) diff --git a/examples/Cpp/PaddleNLP/bert/test_multi_fetch_client.py b/examples/Cpp/PaddleNLP/bert/test_multi_fetch_client.py new file mode 100644 index 00000000..1ee54009 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/test_multi_fetch_client.py @@ -0,0 +1,53 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import ChineseBertReader +import sys +import numpy as np + +client = Client() +client.load_client_config("./bert_seq32_client/serving_client_conf.prototxt") +client.connect(["127.0.0.1:9292"]) + +reader = ChineseBertReader({"max_seq_len": 32}) +fetch = ["sequence_10", "sequence_12", "pooled_output"] +expected_shape = { + "sequence_10": (4, 32, 768), + "sequence_12": (4, 32, 768), + "pooled_output": (4, 768) +} +batch_size = 4 +feed_batch = {} + +batch_len = 0 +for line in sys.stdin: + feed = reader.process(line) + if batch_len == 0: + for key in feed.keys(): + val_len = len(feed[key]) + feed_batch[key] = np.array(feed[key]).reshape((1, val_len, 1)) + continue + if len(feed_batch) < batch_size: + for key in feed.keys(): + np.concatenate([ + feed_batch[key], np.array(feed[key]).reshape((1, val_len, 1)) + ]) + else: + fetch_map = client.predict(feed=feed_batch, fetch=fetch) + feed_batch = [] + for var_name in fetch: + if fetch_map[var_name].shape != expected_shape[var_name]: + print("fetch var {} shape error.".format(var_name)) + sys.exit(1) diff --git a/examples/Cpp/PaddleNLP/bert/tokenization.py b/examples/Cpp/PaddleNLP/bert/tokenization.py new file mode 100644 index 00000000..0d84ed38 --- /dev/null +++ b/examples/Cpp/PaddleNLP/bert/tokenization.py @@ -0,0 +1,441 @@ +# coding=utf-8 +# Copyright 2018 The Google AI Language Team Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Tokenization classes.""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import collections +import io +import unicodedata +import six +import sentencepiece as spm +import pickle + + +def convert_to_unicode(text): # pylint: disable=doc-string-with-all-args + """Converts `text` to Unicode (if it's not already), assuming utf-8 input.""" + if six.PY3: + if isinstance(text, str): + return text + elif isinstance(text, bytes): + return text.decode("utf-8", "ignore") + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + elif six.PY2: + if isinstance(text, str): + return text.decode("utf-8", "ignore") + elif isinstance(text, unicode): # noqa + return text + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + else: + raise ValueError("Not running on Python2 or Python 3?") + + +def printable_text(text): # pylint: disable=doc-string-with-all-args + """Returns text encoded in a way suitable for print or `tf.logging`.""" + + # These functions want `str` for both Python2 and Python3, but in one case + # it's a Unicode string and in the other it's a byte string. + if six.PY3: + if isinstance(text, str): + return text + elif isinstance(text, bytes): + return text.decode("utf-8", "ignore") + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + elif six.PY2: + if isinstance(text, str): + return text + elif isinstance(text, unicode): # noqa + return text.encode("utf-8") + else: + raise ValueError("Unsupported string type: %s" % (type(text))) + else: + raise ValueError("Not running on Python2 or Python 3?") + + +def load_vocab(vocab_file): # pylint: disable=doc-string-with-all-args, doc-string-with-returns + """Loads a vocabulary file into a dictionary.""" + vocab = collections.OrderedDict() + fin = io.open(vocab_file, "r", encoding="UTF-8") + for num, line in enumerate(fin): + items = convert_to_unicode(line.strip()).split("\t") + if len(items) > 2: + break + token = items[0] + index = items[1] if len(items) == 2 else num + token = token.strip() + vocab[token] = int(index) + fin.close() + return vocab + + +def convert_by_vocab(vocab, items): + """Converts a sequence of [tokens|ids] using the vocab.""" + output = [] + for item in items: + output.append(vocab[item]) + return output + + +def convert_tokens_to_ids(vocab, tokens): + return convert_by_vocab(vocab, tokens) + + +def convert_ids_to_tokens(inv_vocab, ids): + return convert_by_vocab(inv_vocab, ids) + + +def whitespace_tokenize(text): + """Runs basic whitespace cleaning and splitting on a peice of text.""" + text = text.strip() + if not text: + return [] + tokens = text.split() + return tokens + + +class FullTokenizer(object): + """Runs end-to-end tokenziation.""" + + def __init__(self, + vocab_file, + do_lower_case=True, + use_sentence_piece_vocab=False): + self.vocab = load_vocab(vocab_file) + self.inv_vocab = {v: k for k, v in self.vocab.items()} + self.basic_tokenizer = BasicTokenizer(do_lower_case=do_lower_case) + self.use_sentence_piece_vocab = use_sentence_piece_vocab + self.wordpiece_tokenizer = WordpieceTokenizer( + vocab=self.vocab, + use_sentence_piece_vocab=self.use_sentence_piece_vocab) + + def tokenize(self, text): + split_tokens = [] + for token in self.basic_tokenizer.tokenize(text): + for sub_token in self.wordpiece_tokenizer.tokenize(token): + split_tokens.append(sub_token) + + return split_tokens + + def convert_tokens_to_ids(self, tokens): + return convert_by_vocab(self.vocab, tokens) + + def convert_ids_to_tokens(self, ids): + return convert_by_vocab(self.inv_vocab, ids) + + +class CharTokenizer(object): + """Runs end-to-end tokenziation.""" + + def __init__(self, vocab_file, do_lower_case=True): + self.vocab = load_vocab(vocab_file) + self.inv_vocab = {v: k for k, v in self.vocab.items()} + self.wordpiece_tokenizer = WordpieceTokenizer(vocab=self.vocab) + + def tokenize(self, text): + split_tokens = [] + for token in text.lower().split(" "): + for sub_token in self.wordpiece_tokenizer.tokenize(token): + split_tokens.append(sub_token) + + return split_tokens + + def convert_tokens_to_ids(self, tokens): + return convert_by_vocab(self.vocab, tokens) + + def convert_ids_to_tokens(self, ids): + return convert_by_vocab(self.inv_vocab, ids) + + +class WSSPTokenizer(object): # pylint: disable=doc-string-missing + def __init__(self, vocab_file, sp_model_dir, word_dict, ws=True, + lower=True): + self.vocab = load_vocab(vocab_file) + self.inv_vocab = {v: k for k, v in self.vocab.items()} + self.ws = ws + self.lower = lower + self.dict = pickle.load(open(word_dict, 'rb')) + self.sp_model = spm.SentencePieceProcessor() + self.window_size = 5 + self.sp_model.Load(sp_model_dir) + + def cut(self, chars): # pylint: disable=doc-string-missing + words = [] + idx = 0 + while idx < len(chars): + matched = False + for i in range(self.window_size, 0, -1): + cand = chars[idx:idx + i] + if cand in self.dict: + words.append(cand) + matched = True + break + if not matched: + i = 1 + words.append(chars[idx]) + idx += i + return words + + def tokenize(self, text, unk_token="[UNK]"): # pylint: disable=doc-string-missing + text = convert_to_unicode(text) + if self.ws: + text = [s for s in self.cut(text) if s != ' '] + else: + text = text.split(' ') + if self.lower: + text = [s.lower() for s in text] + text = ' '.join(text) + tokens = self.sp_model.EncodeAsPieces(text) + in_vocab_tokens = [] + for token in tokens: + if token in self.vocab: + in_vocab_tokens.append(token) + else: + in_vocab_tokens.append(unk_token) + return in_vocab_tokens + + def convert_tokens_to_ids(self, tokens): + return convert_by_vocab(self.vocab, tokens) + + def convert_ids_to_tokens(self, ids): + return convert_by_vocab(self.inv_vocab, ids) + + +class BasicTokenizer(object): + """Runs basic tokenization (punctuation splitting, lower casing, etc.).""" + + def __init__(self, do_lower_case=True): + """Constructs a BasicTokenizer. + + Args: + do_lower_case: Whether to lower case the input. + """ + self.do_lower_case = do_lower_case + + def tokenize(self, text): # pylint: disable=doc-string-with-all-args, doc-string-with-returns + """Tokenizes a piece of text.""" + text = convert_to_unicode(text) + text = self._clean_text(text) + + # This was added on November 1st, 2018 for the multilingual and Chinese + # models. This is also applied to the English models now, but it doesn't + # matter since the English models were not trained on any Chinese data + # and generally don't have any Chinese data in them (there are Chinese + # characters in the vocabulary because Wikipedia does have some Chinese + # words in the English Wikipedia.). + text = self._tokenize_chinese_chars(text) + + orig_tokens = whitespace_tokenize(text) + split_tokens = [] + for token in orig_tokens: + if self.do_lower_case: + token = token.lower() + token = self._run_strip_accents(token) + split_tokens.extend(self._run_split_on_punc(token)) + + output_tokens = whitespace_tokenize(" ".join(split_tokens)) + return output_tokens + + def _run_strip_accents(self, text): + """Strips accents from a piece of text.""" + text = unicodedata.normalize("NFD", text) + output = [] + for char in text: + cat = unicodedata.category(char) + if cat == "Mn": + continue + output.append(char) + return "".join(output) + + def _run_split_on_punc(self, text): + """Splits punctuation on a piece of text.""" + chars = list(text) + i = 0 + start_new_word = True + output = [] + while i < len(chars): + char = chars[i] + if _is_punctuation(char): + output.append([char]) + start_new_word = True + else: + if start_new_word: + output.append([]) + start_new_word = False + output[-1].append(char) + i += 1 + + return ["".join(x) for x in output] + + def _tokenize_chinese_chars(self, text): + """Adds whitespace around any CJK character.""" + output = [] + for char in text: + cp = ord(char) + if self._is_chinese_char(cp): + output.append(" ") + output.append(char) + output.append(" ") + else: + output.append(char) + return "".join(output) + + def _is_chinese_char(self, cp): + """Checks whether CP is the codepoint of a CJK character.""" + # This defines a "chinese character" as anything in the CJK Unicode block: + # https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block) + # + # Note that the CJK Unicode block is NOT all Japanese and Korean characters, + # despite its name. The modern Korean Hangul alphabet is a different block, + # as is Japanese Hiragana and Katakana. Those alphabets are used to write + # space-separated words, so they are not treated specially and handled + # like the all of the other languages. + if ((cp >= 0x4E00 and cp <= 0x9FFF) or # + (cp >= 0x3400 and cp <= 0x4DBF) or # + (cp >= 0x20000 and cp <= 0x2A6DF) or # + (cp >= 0x2A700 and cp <= 0x2B73F) or # + (cp >= 0x2B740 and cp <= 0x2B81F) or # + (cp >= 0x2B820 and cp <= 0x2CEAF) or + (cp >= 0xF900 and cp <= 0xFAFF) or # + (cp >= 0x2F800 and cp <= 0x2FA1F)): # + return True + + return False + + def _clean_text(self, text): + """Performs invalid character removal and whitespace cleanup on text.""" + output = [] + for char in text: + cp = ord(char) + if cp == 0 or cp == 0xfffd or _is_control(char): + continue + if _is_whitespace(char): + output.append(" ") + else: + output.append(char) + return "".join(output) + + +class WordpieceTokenizer(object): + """Runs WordPiece tokenziation.""" + + def __init__(self, + vocab, + unk_token="[UNK]", + max_input_chars_per_word=100, + use_sentence_piece_vocab=False): + self.vocab = vocab + self.unk_token = unk_token + self.max_input_chars_per_word = max_input_chars_per_word + self.use_sentence_piece_vocab = use_sentence_piece_vocab + + def tokenize(self, text): # pylint: disable=doc-string-with-all-args + """Tokenizes a piece of text into its word pieces. + + This uses a greedy longest-match-first algorithm to perform tokenization + using the given vocabulary. + + For example: + input = "unaffable" + output = ["un", "##aff", "##able"] + + Args: + text: A single token or whitespace separated tokens. This should have + already been passed through `BasicTokenizer. + + Returns: + A list of wordpiece tokens. + """ + + text = convert_to_unicode(text) + + output_tokens = [] + for token in whitespace_tokenize(text): + chars = list(token) + if len(chars) > self.max_input_chars_per_word: + output_tokens.append(self.unk_token) + continue + + is_bad = False + start = 0 + sub_tokens = [] + while start < len(chars): + end = len(chars) + cur_substr = None + while start < end: + substr = "".join(chars[start:end]) + if start == 0 and self.use_sentence_piece_vocab: + substr = u'\u2581' + substr + if start > 0 and not self.use_sentence_piece_vocab: + substr = "##" + substr + if substr in self.vocab: + cur_substr = substr + break + end -= 1 + if cur_substr is None: + is_bad = True + break + sub_tokens.append(cur_substr) + start = end + + if is_bad: + output_tokens.append(self.unk_token) + else: + output_tokens.extend(sub_tokens) + return output_tokens + + +def _is_whitespace(char): + """Checks whether `chars` is a whitespace character.""" + # \t, \n, and \r are technically contorl characters but we treat them + # as whitespace since they are generally considered as such. + if char == " " or char == "\t" or char == "\n" or char == "\r": + return True + cat = unicodedata.category(char) + if cat == "Zs": + return True + return False + + +def _is_control(char): + """Checks whether `chars` is a control character.""" + # These are technically control characters but we count them as whitespace + # characters. + if char == "\t" or char == "\n" or char == "\r": + return False + cat = unicodedata.category(char) + if cat.startswith("C"): + return True + return False + + +def _is_punctuation(char): + """Checks whether `chars` is a punctuation character.""" + cp = ord(char) + # We treat all non-letter/number ASCII as punctuation. + # Characters such as "^", "$", and "`" are not in the Unicode + # Punctuation class but we treat them as punctuation anyways, for + # consistency. + if ((cp >= 33 and cp <= 47) or (cp >= 58 and cp <= 64) or + (cp >= 91 and cp <= 96) or (cp >= 123 and cp <= 126)): + return True + cat = unicodedata.category(char) + if cat.startswith("P"): + return True + return False diff --git a/examples/Cpp/PaddleNLP/lac/README.md b/examples/Cpp/PaddleNLP/lac/README.md new file mode 100755 index 00000000..108d5051 --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/README.md @@ -0,0 +1,26 @@ +## Chinese Word Segmentation + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +python3 -m paddle_serving_app.package --get_model lac +tar -xzvf lac.tar.gz +``` + +#### Start inference service(Support BRPC-Client/GRPC-Client/Http-Client) + +``` +python3 -m paddle_serving_server.serve --model lac_model/ --port 9292 +``` +### BRPC Infer +``` +echo "我爱北京天安门" | python3 lac_client.py lac_client/serving_client_conf.prototxt +``` + +It will get the segmentation result. + +### GRPC/Http Infer +``` +echo "我爱北京天安门" | python3 lac_http_client.py lac_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/PaddleNLP/lac/README_CN.md b/examples/Cpp/PaddleNLP/lac/README_CN.md new file mode 100755 index 00000000..5634128c --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/README_CN.md @@ -0,0 +1,26 @@ +## 中文分词模型 + +(简体中文|[English](./README.md)) + +### 获取模型 +``` +python3 -m paddle_serving_app.package --get_model lac +tar -xzvf lac.tar.gz +``` + +#### 开启预测服务(支持BRPC-Client/GRPC-Client/Http-Client) + +``` +python3 -m paddle_serving_server.serve --model lac_model/ --port 9292 +``` +### 执行BRPC预测 +``` +echo "我爱北京天安门" | python3 lac_client.py lac_client/serving_client_conf.prototxt +``` + +我们就能得到分词结果 + +### 执行GRPC/Http预测 +``` +echo "我爱北京天安门" | python3 lac_http_client.py lac_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/PaddleNLP/lac/benchmark.py b/examples/Cpp/PaddleNLP/lac/benchmark.py new file mode 100644 index 00000000..64e935a6 --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/benchmark.py @@ -0,0 +1,53 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import sys +import time +import requests +from paddle_serving_app.reader import LACReader +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args + +args = benchmark_args() + + +def single_func(idx, resource): + reader = LACReader() + start = time.time() + if args.request == "rpc": + client = Client() + client.load_client_config(args.model) + client.connect([args.endpoint]) + fin = open("jieba_test.txt") + for line in fin: + feed_data = reader.process(line) + fetch_map = client.predict( + feed={"words": feed_data}, fetch=["crf_decode"]) + elif args.request == "http": + fin = open("jieba_test.txt") + for line in fin: + req_data = {"words": line.strip(), "fetch": ["crf_decode"]} + r = requests.post( + "http://{}/lac/prediction".format(args.endpoint), + data={"words": line.strip(), + "fetch": ["crf_decode"]}) + end = time.time() + return [[end - start]] + + +multi_thread_runner = MultiThreadRunner() +result = multi_thread_runner.run(single_func, args.thread, {}) +print(result) diff --git a/examples/Cpp/PaddleNLP/lac/lac_client.py b/examples/Cpp/PaddleNLP/lac/lac_client.py new file mode 100644 index 00000000..568b08d8 --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/lac_client.py @@ -0,0 +1,49 @@ +# encoding=utf-8 +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +from paddle_serving_app.reader import LACReader +import sys +import os +import io +import numpy as np + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9292"]) + +reader = LACReader() +for line in sys.stdin: + if len(line) <= 0: + continue + feed_data = reader.process(line) + if len(feed_data) <= 0: + continue + print(feed_data) + #fetch_map = client.predict(feed={"words": np.array(feed_data).reshape(len(feed_data), 1), "words.lod": [0, len(feed_data)]}, fetch=["crf_decode"], batch=True) + fetch_map = client.predict( + feed={ + "words": np.array(feed_data + feed_data).reshape( + len(feed_data) * 2, 1), + "words.lod": [0, len(feed_data), 2 * len(feed_data)] + }, + fetch=["crf_decode"], + batch=True) + print(fetch_map) + begin = fetch_map['crf_decode.lod'][0] + end = fetch_map['crf_decode.lod'][1] + segs = reader.parse_result(line, fetch_map["crf_decode"][begin:end]) + print("word_seg: " + "|".join(str(words) for words in segs)) diff --git a/examples/Cpp/PaddleNLP/lac/lac_http_client.py b/examples/Cpp/PaddleNLP/lac/lac_http_client.py new file mode 100755 index 00000000..5cdfaf1d --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/lac_http_client.py @@ -0,0 +1,66 @@ +# encoding=utf-8 +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import HttpClient +from paddle_serving_app.reader import LACReader +import sys +import os +import io +import numpy as np + +client = HttpClient() +client.load_client_config(sys.argv[1]) +''' +if you want use GRPC-client, set_use_grpc_client(True) +or you can directly use client.grpc_client_predict(...) +as for HTTP-client,set_use_grpc_client(False)(which is default) +or you can directly use client.http_client_predict(...) +''' +#client.set_use_grpc_client(True) +''' +if you want to enable Encrypt Module,uncommenting the following line +''' +#client.use_key("./key") +''' +if you want to compress,uncommenting the following line +''' +#client.set_response_compress(True) +#client.set_request_compress(True) +''' +we recommend use Proto data format in HTTP-body, set True(which is default) +if you want use JSON data format in HTTP-body, set False +''' +#client.set_http_proto(True) +client.connect(["127.0.0.1:9292"]) + +reader = LACReader() +for line in sys.stdin: + if len(line) <= 0: + continue + feed_data = reader.process(line) + if len(feed_data) <= 0: + continue + print(feed_data) + #fetch_map = client.predict(feed={"words": np.array(feed_data).reshape(len(feed_data), 1), "words.lod": [0, len(feed_data)]}, fetch=["crf_decode"], batch=True) + fetch_map = client.predict( + feed={ + "words": np.array(feed_data + feed_data).reshape( + len(feed_data) * 2, 1), + "words.lod": [0, len(feed_data), 2 * len(feed_data)] + }, + fetch=["crf_decode"], + batch=True) + print(fetch_map) diff --git a/examples/Cpp/PaddleNLP/lac/lac_reader.py b/examples/Cpp/PaddleNLP/lac/lac_reader.py new file mode 100644 index 00000000..488e7ced --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/lac_reader.py @@ -0,0 +1,126 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +import sys +py_version = sys.version_info[0] +if py_version == 2: + reload(sys) + sys.setdefaultencoding('utf-8') +import os +import io + + +def load_kv_dict(dict_path, + reverse=False, + delimiter="\t", + key_func=None, + value_func=None): + result_dict = {} + for line in io.open(dict_path, "r", encoding="utf8"): + terms = line.strip("\n").split(delimiter) + if len(terms) != 2: + continue + if reverse: + value, key = terms + else: + key, value = terms + if key in result_dict: + raise KeyError("key duplicated with [%s]" % (key)) + if key_func: + key = key_func(key) + if value_func: + value = value_func(value) + result_dict[key] = value + return result_dict + + +class LACReader(object): + """data reader""" + + def __init__(self, dict_folder): + # read dict + #basepath = os.path.abspath(__file__) + #folder = os.path.dirname(basepath) + word_dict_path = os.path.join(dict_folder, "word.dic") + label_dict_path = os.path.join(dict_folder, "tag.dic") + self.word2id_dict = load_kv_dict( + word_dict_path, reverse=True, value_func=int) + self.id2word_dict = load_kv_dict(word_dict_path) + self.label2id_dict = load_kv_dict( + label_dict_path, reverse=True, value_func=int) + self.id2label_dict = load_kv_dict(label_dict_path) + + @property + def vocab_size(self): + """vocabulary size""" + return max(self.word2id_dict.values()) + 1 + + @property + def num_labels(self): + """num_labels""" + return max(self.label2id_dict.values()) + 1 + + def word_to_ids(self, words): + """convert word to word index""" + word_ids = [] + idx = 0 + try: + words = unicode(words, 'utf-8') + except: + pass + for word in words: + if word not in self.word2id_dict: + word = "OOV" + word_id = self.word2id_dict[word] + word_ids.append(word_id) + return word_ids + + def label_to_ids(self, labels): + """convert label to label index""" + label_ids = [] + for label in labels: + if label not in self.label2id_dict: + label = "O" + label_id = self.label2id_dict[label] + label_ids.append(label_id) + return label_ids + + def process(self, sent): + words = sent.strip() + word_ids = self.word_to_ids(words) + return word_ids + + def parse_result(self, words, crf_decode): + tags = [self.id2label_dict[str(x[0])] for x in crf_decode] + + sent_out = [] + tags_out = [] + partial_word = "" + for ind, tag in enumerate(tags): + if partial_word == "": + partial_word = self.id2word_dict[str(words[ind])] + tags_out.append(tag.split('-')[0]) + continue + if tag.endswith("-B") or (tag == "O" and tag[ind - 1] != "O"): + sent_out.append(partial_word) + tags_out.append(tag.split('-')[0]) + partial_word = self.id2word_dict[str(words[ind])] + continue + partial_word += self.id2word_dict[str(words[ind])] + + if len(sent_out) < len(tags_out): + sent_out.append(partial_word) + + return sent_out diff --git a/examples/Cpp/PaddleNLP/lac/utils.py b/examples/Cpp/PaddleNLP/lac/utils.py new file mode 100644 index 00000000..64602902 --- /dev/null +++ b/examples/Cpp/PaddleNLP/lac/utils.py @@ -0,0 +1,141 @@ +# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +util tools +""" +from __future__ import print_function +import os +import sys +import numpy as np +import paddle.fluid as fluid +import io + + +def str2bool(v): + """ + argparse does not support True or False in python + """ + return v.lower() in ("true", "t", "1") + + +def parse_result(words, crf_decode, dataset): + """ parse result """ + offset_list = (crf_decode.lod())[0] + words = np.array(words) + crf_decode = np.array(crf_decode) + batch_size = len(offset_list) - 1 + + for sent_index in range(batch_size): + begin, end = offset_list[sent_index], offset_list[sent_index + 1] + sent = [] + for id in words[begin:end]: + if dataset.id2word_dict[str(id[0])] == 'OOV': + sent.append(' ') + else: + sent.append(dataset.id2word_dict[str(id[0])]) + tags = [ + dataset.id2label_dict[str(id[0])] for id in crf_decode[begin:end] + ] + + sent_out = [] + tags_out = [] + parital_word = "" + for ind, tag in enumerate(tags): + # for the first word + if parital_word == "": + parital_word = sent[ind] + tags_out.append(tag.split('-')[0]) + continue + + # for the beginning of word + if tag.endswith("-B") or (tag == "O" and tags[ind - 1] != "O"): + sent_out.append(parital_word) + tags_out.append(tag.split('-')[0]) + parital_word = sent[ind] + continue + + parital_word += sent[ind] + + # append the last word, except for len(tags)=0 + if len(sent_out) < len(tags_out): + sent_out.append(parital_word) + return sent_out, tags_out + + +def parse_padding_result(words, crf_decode, seq_lens, dataset): + """ parse padding result """ + words = np.squeeze(words) + batch_size = len(seq_lens) + + batch_out = [] + for sent_index in range(batch_size): + + sent = [] + for id in words[begin:end]: + if dataset.id2word_dict[str(id[0])] == 'OOV': + sent.append(' ') + else: + sent.append(dataset.id2word_dict[str(id[0])]) + tags = [ + dataset.id2label_dict[str(id)] + for id in crf_decode[sent_index][1:seq_lens[sent_index] - 1] + ] + + sent_out = [] + tags_out = [] + parital_word = "" + for ind, tag in enumerate(tags): + # for the first word + if parital_word == "": + parital_word = sent[ind] + tags_out.append(tag.split('-')[0]) + continue + + # for the beginning of word + if tag.endswith("-B") or (tag == "O" and tags[ind - 1] != "O"): + sent_out.append(parital_word) + tags_out.append(tag.split('-')[0]) + parital_word = sent[ind] + continue + + parital_word += sent[ind] + + # append the last word, except for len(tags)=0 + if len(sent_out) < len(tags_out): + sent_out.append(parital_word) + + batch_out.append([sent_out, tags_out]) + return batch_out + + +def init_checkpoint(exe, init_checkpoint_path, main_program): + """ + Init CheckPoint + """ + assert os.path.exists( + init_checkpoint_path), "[%s] cann't be found." % init_checkpoint_path + + def existed_persitables(var): + """ + If existed presitabels + """ + if not fluid.io.is_persistable(var): + return False + return os.path.exists(os.path.join(init_checkpoint_path, var.name)) + + fluid.io.load_vars( + exe, + init_checkpoint_path, + main_program=main_program, + predicate=existed_persitables) diff --git a/examples/Cpp/PaddleNLP/senta/README.md b/examples/Cpp/PaddleNLP/senta/README.md new file mode 100644 index 00000000..9a159133 --- /dev/null +++ b/examples/Cpp/PaddleNLP/senta/README.md @@ -0,0 +1,23 @@ +# Chinese Sentence Sentiment Classification +([简体中文](./README_CN.md)|English) + +## Get Model +``` +python3 -m paddle_serving_app.package --get_model senta_bilstm +python3 -m paddle_serving_app.package --get_model lac +tar -xzvf senta_bilstm.tar.gz +tar -xzvf lac.tar.gz +``` + +## Start HTTP Service +``` +python3 -m paddle_serving_server.serve --model lac_model --port 9300 +python3 senta_web_service.py +``` +In the Chinese sentiment classification task, the Chinese word segmentation needs to be done through [LAC task] (../lac). +In this demo, the LAC task is placed in the preprocessing part of the HTTP prediction service of the sentiment classification task. + +## Client prediction +``` +curl -H "Content-Type:application/json" -X POST -d '{"feed":[{"words": "天气不错"}], "fetch":["class_probs"]}' http://127.0.0.1:9393/senta/prediction +``` diff --git a/examples/Cpp/PaddleNLP/senta/README_CN.md b/examples/Cpp/PaddleNLP/senta/README_CN.md new file mode 100644 index 00000000..a09fd117 --- /dev/null +++ b/examples/Cpp/PaddleNLP/senta/README_CN.md @@ -0,0 +1,23 @@ +# 中文语句情感分类 +(简体中文|[English](./README.md)) + +## 获取模型文件 +``` +python3 -m paddle_serving_app.package --get_model senta_bilstm +python3 -m paddle_serving_app.package --get_model lac +tar -xzvf lac.tar.gz +tar -xzvf senta_bilstm.tar.gz +``` + +## 启动HTTP服务 +``` +python3 -m paddle_serving_server.serve --model lac_model --port 9300 +python3 senta_web_service.py +``` +中文情感分类任务中需要先通过[LAC任务](../lac)进行中文分词。 +示例中将LAC任务放在情感分类任务的HTTP预测服务的预处理部分。 + +## 客户端预测 +``` +curl -H "Content-Type:application/json" -X POST -d '{"feed":[{"words": "天气不错"}], "fetch":["class_probs"]}' http://127.0.0.1:9393/senta/prediction +``` diff --git a/examples/Cpp/PaddleNLP/senta/get_data.sh b/examples/Cpp/PaddleNLP/senta/get_data.sh new file mode 100644 index 00000000..7fd5c3e2 --- /dev/null +++ b/examples/Cpp/PaddleNLP/senta/get_data.sh @@ -0,0 +1,7 @@ +wget https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/SentimentAnalysis/senta_bilstm.tar.gz --no-check-certificate +tar -xzvf senta_bilstm.tar.gz +wget https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/LexicalAnalysis/lac.tar.gz --no-check-certificate +tar -xzvf lac.tar.gz +wget https://paddle-serving.bj.bcebos.com/reader/lac/lac_dict.tar.gz --no-check-certificate +tar -xzvf lac_dict.tar.gz +wget https://paddle-serving.bj.bcebos.com/reader/senta/vocab.txt --no-check-certificate diff --git a/examples/Cpp/PaddleNLP/senta/senta_web_service.py b/examples/Cpp/PaddleNLP/senta/senta_web_service.py new file mode 100644 index 00000000..1e872f0e --- /dev/null +++ b/examples/Cpp/PaddleNLP/senta/senta_web_service.py @@ -0,0 +1,73 @@ +#encoding=utf-8 +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys +import numpy as np +from paddle_serving_server.web_service import WebService +from paddle_serving_client import Client +from paddle_serving_app.reader import LACReader, SentaReader + + +class SentaService(WebService): + #初始化lac模型预测服务 + def init_lac_client(self, lac_port, lac_client_config): + self.lac_reader = LACReader() + self.senta_reader = SentaReader() + self.lac_client = Client() + self.lac_client.load_client_config(lac_client_config) + self.lac_client.connect(["127.0.0.1:{}".format(lac_port)]) + + #定义senta模型预测服务的预处理,调用顺序:lac reader->lac模型预测->预测结果后处理->senta reader + def preprocess(self, feed=[], fetch=[]): + feed_batch = [] + is_batch = True + words_lod = [0] + for ins in feed: + if "words" not in ins: + raise ("feed data error!") + feed_data = self.lac_reader.process(ins["words"]) + words_lod.append(words_lod[-1] + len(feed_data)) + feed_batch.append(np.array(feed_data).reshape(len(feed_data), 1)) + words = np.concatenate(feed_batch, axis=0) + + lac_result = self.lac_client.predict( + feed={"words": words, + "words.lod": words_lod}, + fetch=["crf_decode"], + batch=True) + result_lod = lac_result["crf_decode.lod"] + feed_batch = [] + words_lod = [0] + for i in range(len(feed)): + segs = self.lac_reader.parse_result( + feed[i]["words"], + lac_result["crf_decode"][result_lod[i]:result_lod[i + 1]]) + feed_data = self.senta_reader.process(segs) + feed_batch.append(np.array(feed_data).reshape(len(feed_data), 1)) + words_lod.append(words_lod[-1] + len(feed_data)) + return { + "words": np.concatenate(feed_batch), + "words.lod": words_lod + }, fetch, is_batch + + +senta_service = SentaService(name="senta") +senta_service.load_model_config("senta_bilstm_model") +senta_service.prepare_server(workdir="workdir") +senta_service.init_lac_client( + lac_port=9300, lac_client_config="lac_model/serving_server_conf.prototxt") +senta_service.run_rpc_service() +senta_service.run_web_service() diff --git a/examples/Cpp/PaddleOCR/ocr/README.md b/examples/Cpp/PaddleOCR/ocr/README.md new file mode 100755 index 00000000..95cc210a --- /dev/null +++ b/examples/Cpp/PaddleOCR/ocr/README.md @@ -0,0 +1,127 @@ +# OCR + +(English|[简体中文](./README_CN.md)) + +## Get Model +``` +python3 -m paddle_serving_app.package --get_model ocr_rec +tar -xzvf ocr_rec.tar.gz +python3 -m paddle_serving_app.package --get_model ocr_det +tar -xzvf ocr_det.tar.gz +``` + +## Get Dataset (Optional) +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/ocr/test_imgs.tar +tar xf test_imgs.tar +``` + +## Web Service + +### Start Service + +``` +#choose one of cpu/gpu commands as following +#for cpu user +python3 -m paddle_serving_server.serve --model ocr_det_model --port 9293 +python3 ocr_web_server.py cpu +#for gpu user +python3 -m paddle_serving_server.serve --model ocr_det_model --port 9293 --gpu_ids 0 +python3 ocr_web_server.py gpu +``` + +### Client Prediction +``` +python3 ocr_web_client.py +``` +If you want a faster web service, please try Web LocalPredictor Service + +## Web LocalPredictor Service +``` +#choose one of cpu/gpu commands as following +#for cpu user +python3 ocr_debugger_server.py cpu +#for gpu user +python3 ocr_debugger_server.py gpu +``` + +## Web LocalPredictor Client Prediction +``` +python3 ocr_web_client.py +``` + +## Benchmark + +CPU: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz * 40 + +GPU: Nvidia Tesla V100 * 1 + +Dataset: RCTW 500 sample images + +| engine | client read image(ms) | client-server tras time(ms) | server read image(ms) | det pre(ms) | det infer(ms) | det post(ms) | rec pre(ms) | rec infer(ms) | rec post(ms) | server-client trans time(ms) | server side time consumption(ms) | server side overhead(ms) | total time(ms) | +|------------------------------|----------------|----------------------------|------------------|--------------------|------------------|--------------------|--------------------|------------------|--------------------|--------------------------|--------------------|--------------|---------------| +| Serving web service | 8.69 | 13.41 | 109.97 | 2.82 | 87.76 | 4.29 | 3.98 | 78.51 | 3.66 | 4.12 | 181.02 | 136.49 | 317.51 | +| Serving LocalPredictor web service | 8.73 | 16.42 | 115.27 | 2.93 | 20.63 | 3.97 | 4.48 | 13.84 | 3.60 | 6.91 | 49.45 | 147.33 | 196.78 | + +## Appendix: For Users who want to launch Det or Rec only +if you are going to detect images not recognize it or directly recognize the words from images. We also provide Det and Rec server for you. + +### Det Server + +``` +python3 det_web_server.py cpu #for cpu user +python3 det_web_server.py gpu #for gpu user +#or +python3 det_debugger_server.py cpu #for cpu user +python3 det_debugger_server.py gpu #for gpu user +``` + +### Det Client + +``` +# also use ocr_web_client.py +python3 ocr_web_client.py +``` + +### Rec Server + +``` +python3 rec_web_server.py cpu #for cpu user +python3 rec_web_server.py gpu #for gpu user +#or +python3 rec_debugger_server.py cpu #for cpu user +python3 rec_debugger_server.py gpu #for gpu user +``` + +### Rec Client + +``` +python3 rec_web_client.py +``` + +## C++ OCR Service + +**Notice:** If you need to concatenate det model and rec model, and do pre-processing and post-processing in Paddle Serving C++ framework, you need to use the C++ server compiled with WITH_OPENCV option,see the [COMPILE.md](../../../doc/COMPILE.md) + +### Start Service +Select a startup mode according to CPU / GPU device + +After the -- model parameter, the folder path of multiple model files is passed in to start the prediction service of multiple model concatenation. +``` +#for cpu user +python3 -m paddle_serving_server.serve --model ocr_det_model ocr_rec_model --port 9293 +#for gpu user +python3 -m paddle_serving_server.serve --model ocr_det_model ocr_rec_model --port 9293 --gpu_ids 0 +``` + +### Client Prediction +The pre-processing and post-processing is in the C + + server part, the image's Base64 encoded string is passed into the C + + server. + +so the value of parameter `feed_var` which is in the file `ocr_det_client/serving_client_conf.prototxt` should be changed. + +for this case, `feed_type` should be 20(which means the data type is string),`shape` should be 1. + +By passing in multiple client folder paths, the client can be started for multi model prediction. +``` +python3 ocr_cpp_client.py ocr_det_client ocr_rec_client +``` diff --git a/examples/Cpp/PaddleOCR/ocr/README_CN.md b/examples/Cpp/PaddleOCR/ocr/README_CN.md new file mode 100755 index 00000000..5c0734c9 --- /dev/null +++ b/examples/Cpp/PaddleOCR/ocr/README_CN.md @@ -0,0 +1,126 @@ +# OCR 服务 + +([English](./README.md)|简体中文) + +## 获取模型 +``` +python3 -m paddle_serving_app.package --get_model ocr_rec +tar -xzvf ocr_rec.tar.gz +python3 -m paddle_serving_app.package --get_model ocr_det +tar -xzvf ocr_det.tar.gz +``` +## 获取数据集(可选) +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/ocr/test_imgs.tar +tar xf test_imgs.tar +``` + +## Web Service服务 + +### 启动服务 + +``` +#根据CPU/GPU设备选择一种启动方式 +#for cpu user +python3 -m paddle_serving_server.serve --model ocr_det_model --port 9293 +python3 ocr_web_server.py cpu +#for gpu user +python3 -m paddle_serving_server.serve --model ocr_det_model --port 9293 --gpu_ids 0 +python3 ocr_web_server.py gpu +``` + +### 启动客户端 +``` +python3 ocr_web_client.py +``` + +如果用户需要更快的执行速度,请尝试LocalPredictor版Web服务 +## 启动LocalPredictor版Web服务 +``` +#根据CPU/GPU设备选择一种启动方式 +#for cpu user +python3 ocr_debugger_server.py cpu +#for gpu user +python3 ocr_debugger_server.py gpu +``` + +## 启动客户端 +``` +python3 ocr_web_client.py +``` + +## 性能指标 + +CPU: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz * 40 + +GPU: Nvidia Tesla V100单卡 + +数据集:RCTW 500张测试数据集 + +| engine | 客户端读图(ms) | 客户端发送请求到服务端(ms) | 服务端读图(ms) | 检测预处理耗时(ms) | 检测模型耗时(ms) | 检测后处理耗时(ms) | 识别预处理耗时(ms) | 识别模型耗时(ms) | 识别后处理耗时(ms) | 服务端回传客户端时间(ms) | 服务端整体耗时(ms) | 空跑耗时(ms) | 整体耗时(ms) | +|------------------------------|----------------|----------------------------|------------------|--------------------|------------------|--------------------|--------------------|------------------|--------------------|--------------------------|--------------------|--------------|---------------| +| Serving web service | 8.69 | 13.41 | 109.97 | 2.82 | 87.76 | 4.29 | 3.98 | 78.51 | 3.66 | 4.12 | 181.02 | 136.49 | 317.51 | +| Serving LocalPredictor web service | 8.73 | 16.42 | 115.27 | 2.93 | 20.63 | 3.97 | 4.48 | 13.84 | 3.60 | 6.91 | 49.45 | 147.33 | 196.78 | + + +## 附录: 检测/识别单服务启动 +如果您想单独启动检测或者识别服务,我们也提供了启动单服务的代码 + +### 启动检测服务 + +``` +python3 det_web_server.py cpu #for cpu user +python3 det_web_server.py gpu #for gpu user +#or +python3 det_debugger_server.py cpu #for cpu user +python3 det_debugger_server.py gpu #for gpu user +``` + +### 检测服务客户端 + +``` +# also use ocr_web_client.py +python3 ocr_web_client.py +``` + +### 启动识别服务 + +``` +python3 rec_web_server.py cpu #for cpu user +python3 rec_web_server.py gpu #for gpu user +#or +python3 rec_debugger_server.py cpu #for cpu user +python3 rec_debugger_server.py gpu #for gpu user +``` + +### 识别服务客户端 + +``` +python3 rec_web_client.py +``` +## C++ OCR Service服务 + +**注意:** 若您需要使用Paddle Serving C++框架串联det模型和rec模型,并进行前后处理,您需要使用开启WITH_OPENCV选项编译的C++ Server,详见[COMPILE.md](../../../doc/COMPILE.md) + +### 启动服务 +根据CPU/GPU设备选择一种启动方式 + +通过--model后,指定多个模型文件的文件夹路径来启动多模型串联的预测服务。 +``` +#for cpu user +python3 -m paddle_serving_server.serve --model ocr_det_model ocr_rec_model --port 9293 +#for gpu user +python3 -m paddle_serving_server.serve --model ocr_det_model ocr_rec_model --port 9293 --gpu_ids 0 +``` + +### 启动客户端 +由于需要在C++Server部分进行前后处理,传入C++Server的仅仅是图片的base64编码的字符串,故第一个模型的Client配置需要修改 + +即`ocr_det_client/serving_client_conf.prototxt`中`feed_var`字段 + +对于本示例而言,`feed_type`应修改为20(数据类型为string),`shape`为1. + +通过在客户端启动后加入多个client模型的client配置文件夹路径,启动client进行预测。 +``` +python3 ocr_cpp_client.py ocr_det_client ocr_rec_client +``` diff --git a/examples/Cpp/PaddleOCR/ocr/det_debugger_server.py b/examples/Cpp/PaddleOCR/ocr/det_debugger_server.py new file mode 100644 index 00000000..5b40fe93 --- /dev/null +++ b/examples/Cpp/PaddleOCR/ocr/det_debugger_server.py @@ -0,0 +1,79 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +import cv2 +import sys +import numpy as np +import os +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, ResizeByFactor +from paddle_serving_app.reader import Div, Normalize, Transpose +from paddle_serving_app.reader import DBPostProcess, FilterBoxes +if sys.argv[1] == 'gpu': + from paddle_serving_server.web_service import WebService +elif sys.argv[1] == 'cpu': + from paddle_serving_server.web_service import WebService +import time +import re +import base64 + + +class OCRService(WebService): + def init_det(self): + self.det_preprocess = Sequential([ + ResizeByFactor(32, 960), Div(255), + Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), Transpose( + (2, 0, 1)) + ]) + self.filter_func = FilterBoxes(10, 10) + self.post_func = DBPostProcess({ + "thresh": 0.3, + "box_thresh": 0.5, + "max_candidates": 1000, + "unclip_ratio": 1.5, + "min_size": 3 + }) + + def preprocess(self, feed=[], fetch=[]): + data = base64.b64decode(feed[0]["image"].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + self.ori_h, self.ori_w, _ = im.shape + det_img = self.det_preprocess(im) + _, self.new_h, self.new_w = det_img.shape + return { + "image": det_img[np.newaxis, :].copy() + }, ["concat_1.tmp_0"], True + + def postprocess(self, feed={}, fetch=[], fetch_map=None): + det_out = fetch_map["concat_1.tmp_0"] + ratio_list = [ + float(self.new_h) / self.ori_h, float(self.new_w) / self.ori_w + ] + dt_boxes_list = self.post_func(det_out, [ratio_list]) + dt_boxes = self.filter_func(dt_boxes_list[0], [self.ori_h, self.ori_w]) + return {"dt_boxes": dt_boxes.tolist()} + + +ocr_service = OCRService(name="ocr") +ocr_service.load_model_config("ocr_det_model") +if sys.argv[1] == 'gpu': + ocr_service.set_gpus("0") + ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu") +elif sys.argv[1] == 'cpu': + ocr_service.prepare_server(workdir="workdir", port=9292) +ocr_service.init_det() +ocr_service.run_debugger_service() +ocr_service.run_web_service() diff --git a/examples/Cpp/PaddleOCR/ocr/det_web_server.py b/examples/Cpp/PaddleOCR/ocr/det_web_server.py new file mode 100644 index 00000000..d38686e5 --- /dev/null +++ b/examples/Cpp/PaddleOCR/ocr/det_web_server.py @@ -0,0 +1,78 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +import cv2 +import sys +import numpy as np +import os +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, ResizeByFactor +from paddle_serving_app.reader import Div, Normalize, Transpose +from paddle_serving_app.reader import DBPostProcess, FilterBoxes +if sys.argv[1] == 'gpu': + from paddle_serving_server.web_service import WebService +elif sys.argv[1] == 'cpu': + from paddle_serving_server.web_service import WebService +import time +import re +import base64 + + +class OCRService(WebService): + def init_det(self): + self.det_preprocess = Sequential([ + ResizeByFactor(32, 960), Div(255), + Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), Transpose( + (2, 0, 1)) + ]) + self.filter_func = FilterBoxes(10, 10) + self.post_func = DBPostProcess({ + "thresh": 0.3, + "box_thresh": 0.5, + "max_candidates": 1000, + "unclip_ratio": 1.5, + "min_size": 3 + }) + + def preprocess(self, feed=[], fetch=[]): + data = base64.b64decode(feed[0]["image"].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + self.ori_h, self.ori_w, _ = im.shape + det_img = self.det_preprocess(im) + _, self.new_h, self.new_w = det_img.shape + print(det_img) + return {"image": det_img}, ["concat_1.tmp_0"], False + + def postprocess(self, feed={}, fetch=[], fetch_map=None): + det_out = fetch_map["concat_1.tmp_0"] + ratio_list = [ + float(self.new_h) / self.ori_h, float(self.new_w) / self.ori_w + ] + dt_boxes_list = self.post_func(det_out, [ratio_list]) + dt_boxes = self.filter_func(dt_boxes_list[0], [self.ori_h, self.ori_w]) + return {"dt_boxes": dt_boxes.tolist()} + + +ocr_service = OCRService(name="ocr") +ocr_service.load_model_config("ocr_det_model") +if sys.argv[1] == 'gpu': + ocr_service.set_gpus("0") + ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu") +elif sys.argv[1] == 'cpu': + ocr_service.prepare_server(workdir="workdir", port=9292, device="cpu") +ocr_service.init_det() +ocr_service.run_rpc_service() +ocr_service.run_web_service() diff --git a/examples/Cpp/PaddleOCR/ocr/imgs/1.jpg b/examples/Cpp/PaddleOCR/ocr/imgs/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08010177fed2ee8c3709912c06c0b161ba546313 GIT binary patch literal 312292 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

AQ3qosP^V`)@F)@`gO3U;_lE z4*cCGm_AvaMiRQQ^6k6gEpO@9)bZD!4t9^7xA-_$4K4sG>f|W8#&!2s(=aW;QyX7E z$HeHZ%qiMeuC6NQMTFs{j)~K506EckDYG6|>v>Y+X}u^}>A>B(jmB}Sj$$h+*$Q|p zX{JQ>avY~7(`ltIH}(A2LwhUjnTc5?75202;athX(UMd~myWp^JU2XyM`r@d=SK=# z5VXo+?iAowcqN{!!^*)7zN;$ z>|b8?cgHQn;it*zF{{)9?DElM=Cau8F4@=Vkz&h) z&<2wd9Fclcu`ig_hC6UQY~A)9rLEo$~(oaO!Jz zm~LLNN_fjCE2CHYei;U8)-UzBA}+B7Lg`U+$@6C{>8E)yly;35tUCHOv!~lDrv=;Z zbG0ulFi^D$MK!i#QvID7F$A{m+MiWJapIzVTiV%0`AqhlVn->LId2yJYjW#iaP z1h|u)UOe(kwtgGl^TW__Fd&bbJhR9WTJ$sQ#r)L7Fqw*@hP# zde2DsDzzPQ_Z?Ys^aYXfqq(9cI1sITgIrga8P9a2dh-`Kjz9E8*^aCTK-U)-x?!Yq zutYvPc)Q1mA-`?Vt!N<8<~`8@2Vl#4yWUZMT}xsLx{of!B{Az6L66Wmwne5BwEGj4 z

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 TlDIY%k1RFEPD?q!`p7>4iY2E| literal 0 HcmV?d00001 diff --git a/examples/Cpp/PaddleOCR/ocr/rec_web_client.py b/examples/Cpp/PaddleOCR/ocr/rec_web_client.py new file mode 100644 index 00000000..312a2148 --- /dev/null +++ b/examples/Cpp/PaddleOCR/ocr/rec_web_client.py @@ -0,0 +1,41 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# -*- coding: utf-8 -*- + +import requests +import json +import cv2 +import base64 +import os, sys +import time + + +def cv2_to_base64(image): + #data = cv2.imencode('.jpg', image)[1] + return base64.b64encode(image).decode( + 'utf8') #data.tostring()).decode('utf8') + + +headers = {"Content-type": "application/json"} +url = "http://127.0.0.1:9292/ocr/prediction" +test_img_dir = "rec_img/" + +for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + #data = {"feed": [{"image": image}], "fetch": ["res"]} + data = {"feed": [{"image": image}] * 3, "fetch": ["res"]} + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Cpp/PaddleOCR/ocr/rec_web_server.py b/examples/Cpp/PaddleOCR/ocr/rec_web_server.py new file mode 100644 index 00000000..2db6e398 --- /dev/null +++ b/examples/Cpp/PaddleOCR/ocr/rec_web_server.py @@ -0,0 +1,80 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import OCRReader +import cv2 +import sys +import numpy as np +import os +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, URL2Image, ResizeByFactor +from paddle_serving_app.reader import Div, Normalize, Transpose +from paddle_serving_app.reader import DBPostProcess, FilterBoxes, GetRotateCropImage, SortedBoxes +if sys.argv[1] == 'gpu': + from paddle_serving_server.web_service import WebService +elif sys.argv[1] == 'cpu': + from paddle_serving_server.web_service import WebService +import time +import re +import base64 + + +class OCRService(WebService): + def init_rec(self): + self.ocr_reader = OCRReader() + + def preprocess(self, feed=[], fetch=[]): + # TODO: to handle batch rec images + img_list = [] + for feed_data in feed: + data = base64.b64decode(feed_data["image"].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img_list.append(im) + max_wh_ratio = 0 + for i, boximg in enumerate(img_list): + h, w = boximg.shape[0:2] + wh_ratio = w * 1.0 / h + max_wh_ratio = max(max_wh_ratio, wh_ratio) + _, w, h = self.ocr_reader.resize_norm_img(img_list[0], + max_wh_ratio).shape + imgs = np.zeros((len(img_list), 3, w, h)).astype('float32') + for i, img in enumerate(img_list): + norm_img = self.ocr_reader.resize_norm_img(img, max_wh_ratio) + imgs[i] = norm_img + + feed = {"image": imgs.copy()} + fetch = ["ctc_greedy_decoder_0.tmp_0", "softmax_0.tmp_0"] + return feed, fetch, True + + def postprocess(self, feed={}, fetch=[], fetch_map=None): + rec_res = self.ocr_reader.postprocess(fetch_map, with_score=True) + res_lst = [] + for res in rec_res: + res_lst.append(res[0]) + res = {"res": res_lst} + return res + + +ocr_service = OCRService(name="ocr") +ocr_service.load_model_config("ocr_rec_model") +ocr_service.init_rec() +if sys.argv[1] == 'gpu': + ocr_service.set_gpus("0") + ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu") +elif sys.argv[1] == 'cpu': + ocr_service.prepare_server(workdir="workdir", port=9292, device="cpu") +ocr_service.run_rpc_service() +ocr_service.run_web_service() diff --git a/examples/Cpp/PaddleRec/criteo_ctr/README.md b/examples/Cpp/PaddleRec/criteo_ctr/README.md new file mode 100644 index 00000000..6c1d79e7 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/README.md @@ -0,0 +1,31 @@ +## CTR Prediction Service + +([简体中文](./README_CN.md)|English) + +### download criteo dataset +``` +sh get_data.sh +``` + +### download inference model +``` +wget https://paddle-serving.bj.bcebos.com/criteo_ctr_example/criteo_ctr_demo_model.tar.gz +tar xf criteo_ctr_demo_model.tar.gz +mv models/ctr_client_conf . +mv models/ctr_serving_model . +``` +the directories like `ctr_serving_model` and `ctr_client_conf` will appear. + +### Start RPC Inference Service + +``` +python3 -m paddle_serving_server.serve --model ctr_serving_model/ --port 9292 #CPU RPC Service +python3 -m paddle_serving_server.serve --model ctr_serving_model/ --port 9292 --gpu_ids 0 #RPC Service on GPU 0 +``` + +### RPC Infer + +``` +python3 test_client.py ctr_client_conf/serving_client_conf.prototxt raw_data/part-0 +``` +the latency will display in the end. diff --git a/examples/Cpp/PaddleRec/criteo_ctr/README_CN.md b/examples/Cpp/PaddleRec/criteo_ctr/README_CN.md new file mode 100644 index 00000000..c5b1da76 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/README_CN.md @@ -0,0 +1,31 @@ +## CTR预测服务 + +(简体中文|[English](./README.md)) + +### 获取样例数据 +``` +sh get_data.sh +``` + +### 下载模型 +``` +wget https://paddle-serving.bj.bcebos.com/criteo_ctr_example/criteo_ctr_demo_model.tar.gz +tar xf criteo_ctr_demo_model.tar.gz +mv models/ctr_client_conf . +mv models/ctr_serving_model . +``` +会在当前目录出现`ctr_serving_model` 和 `ctr_client_conf`文件夹。 + +### 启动RPC预测服务 + +``` +python3 -m paddle_serving_server.serve --model ctr_serving_model/ --port 9292 #启动CPU预测服务 +python3 -m paddle_serving_server.serve --model ctr_serving_model/ --port 9292 --gpu_ids 0 #在GPU 0上启动预测服务 +``` + +### 执行预测 + +``` +python3 test_client.py ctr_client_conf/serving_client_conf.prototxt raw_data/part-0 +``` +预测完毕会输出预测过程的耗时。 diff --git a/examples/Cpp/PaddleRec/criteo_ctr/args.py b/examples/Cpp/PaddleRec/criteo_ctr/args.py new file mode 100644 index 00000000..30124d4e --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/args.py @@ -0,0 +1,105 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +import argparse + + +def parse_args(): + parser = argparse.ArgumentParser(description="PaddlePaddle CTR example") + parser.add_argument( + '--train_data_path', + type=str, + default='./data/raw/train.txt', + help="The path of training dataset") + parser.add_argument( + '--sparse_only', + type=bool, + default=False, + help="Whether we use sparse features only") + parser.add_argument( + '--test_data_path', + type=str, + default='./data/raw/valid.txt', + help="The path of testing dataset") + parser.add_argument( + '--batch_size', + type=int, + default=1000, + help="The size of mini-batch (default:1000)") + parser.add_argument( + '--embedding_size', + type=int, + default=10, + help="The size for embedding layer (default:10)") + parser.add_argument( + '--num_passes', + type=int, + default=10, + help="The number of passes to train (default: 10)") + parser.add_argument( + '--model_output_dir', + type=str, + default='models', + help='The path for model to store (default: models)') + parser.add_argument( + '--sparse_feature_dim', + type=int, + default=1000001, + help='sparse feature hashing space for index processing') + parser.add_argument( + '--is_local', + type=int, + default=1, + help='Local train or distributed train (default: 1)') + parser.add_argument( + '--cloud_train', + type=int, + default=0, + help='Local train or distributed train on paddlecloud (default: 0)') + parser.add_argument( + '--async_mode', + action='store_true', + default=False, + help='Whether start pserver in async mode to support ASGD') + parser.add_argument( + '--no_split_var', + action='store_true', + default=False, + help='Whether split variables into blocks when update_method is pserver') + parser.add_argument( + '--role', + type=str, + default='pserver', # trainer or pserver + help='The path for model to store (default: models)') + parser.add_argument( + '--endpoints', + type=str, + default='127.0.0.1:6000', + help='The pserver endpoints, like: 127.0.0.1:6000,127.0.0.1:6001') + parser.add_argument( + '--current_endpoint', + type=str, + default='127.0.0.1:6000', + help='The path for model to store (default: 127.0.0.1:6000)') + parser.add_argument( + '--trainer_id', + type=int, + default=0, + help='The path for model to store (default: models)') + parser.add_argument( + '--trainers', + type=int, + default=1, + help='The num of trianers, (default: 1)') + return parser.parse_args() diff --git a/examples/Cpp/PaddleRec/criteo_ctr/benchmark.py b/examples/Cpp/PaddleRec/criteo_ctr/benchmark.py new file mode 100644 index 00000000..8be7387d --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/benchmark.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import unicode_literals, absolute_import +import os +import sys +import time +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args +import requests +import json +import criteo_reader as criteo + +args = benchmark_args() + + +def single_func(idx, resource): + batch = 1 + buf_size = 100 + dataset = criteo.CriteoDataset() + dataset.setup(1000001) + test_filelists = [ + "./raw_data/part-%d" % x for x in range(len(os.listdir("./raw_data"))) + ] + reader = dataset.infer_reader(test_filelists[len(test_filelists) - 40:], + batch, buf_size) + if args.request == "rpc": + fetch = ["prob"] + client = Client() + client.load_client_config(args.model) + client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) + + start = time.time() + for i in range(1000): + if args.batch_size == 1: + data = reader().next() + feed_dict = {} + for i in range(1, 27): + feed_dict["sparse_{}".format(i - 1)] = data[0][i] + result = client.predict(feed=feed_dict, fetch=fetch) + else: + print("unsupport batch size {}".format(args.batch_size)) + + elif args.request == "http": + raise ("Not support http service.") + end = time.time() + return [[end - start]] + + +if __name__ == '__main__': + multi_thread_runner = MultiThreadRunner() + endpoint_list = ["127.0.0.1:9292"] + #endpoint_list = endpoint_list + endpoint_list + endpoint_list + result = multi_thread_runner.run(single_func, args.thread, + {"endpoint": endpoint_list}) + #result = single_func(0, {"endpoint": endpoint_list}) + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + avg_cost = avg_cost / args.thread + print("average total cost {} s.".format(avg_cost)) diff --git a/examples/Cpp/PaddleRec/criteo_ctr/benchmark.sh b/examples/Cpp/PaddleRec/criteo_ctr/benchmark.sh new file mode 100644 index 00000000..cf7bc6b3 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/benchmark.sh @@ -0,0 +1,9 @@ +rm profile_log +for thread_num in 1 2 4 8 16 +do + $PYTHONROOT/bin/python benchmark.py --thread $thread_num --model ctr_client_conf/serving_client_conf.prototxt --request rpc > profile 2>&1 + echo "========================================" + echo "batch size : $batch_size" >> profile_log + $PYTHONROOT/bin/python ../util/show_profile.py profile $thread_num >> profile_log + tail -n 1 profile >> profile_log +done diff --git a/examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.py b/examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.py new file mode 100644 index 00000000..1e4348c9 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import unicode_literals, absolute_import +import os +import sys +import time +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args +import requests +import json +import criteo_reader as criteo + +args = benchmark_args() + + +def single_func(idx, resource): + batch = 1 + buf_size = 100 + dataset = criteo.CriteoDataset() + dataset.setup(1000001) + test_filelists = [ + "./raw_data/part-%d" % x for x in range(len(os.listdir("./raw_data"))) + ] + reader = dataset.infer_reader(test_filelists[len(test_filelists) - 40:], + batch, buf_size) + if args.request == "rpc": + fetch = ["prob"] + client = Client() + client.load_client_config(args.model) + client.connect([resource["endpoint"][idx % len(resource["endpoint"])]]) + + start = time.time() + for i in range(1000): + if args.batch_size >= 1: + feed_batch = [] + for bi in range(args.batch_size): + feed_dict = {} + data = reader().next() + for i in range(1, 27): + feed_dict["sparse_{}".format(i - 1)] = data[0][i] + feed_batch.append(feed_dict) + result = client.predict(feed=feed_batch, fetch=fetch) + else: + print("unsupport batch size {}".format(args.batch_size)) + + elif args.request == "http": + raise ("no batch predict for http") + end = time.time() + return [[end - start]] + + +if __name__ == '__main__': + multi_thread_runner = MultiThreadRunner() + endpoint_list = ["127.0.0.1:9292"] + #endpoint_list = endpoint_list + endpoint_list + endpoint_list + result = multi_thread_runner.run(single_func, args.thread, + {"endpoint": endpoint_list}) + #result = single_func(0, {"endpoint": endpoint_list}) + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + avg_cost = avg_cost / args.thread + print("average total cost {} s.".format(avg_cost)) diff --git a/examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.sh b/examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.sh new file mode 100644 index 00000000..46ba451d --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/benchmark_batch.sh @@ -0,0 +1,12 @@ +rm profile_log +for thread_num in 1 2 4 8 16 +do +for batch_size in 1 2 4 8 16 32 64 128 256 512 +do + $PYTHONROOT/bin/python benchmark_batch.py --thread $thread_num --batch_size $batch_size --model serving_client_conf/serving_client_conf.prototxt --request rpc > profile 2>&1 + echo "========================================" + echo "batch size : $batch_size" >> profile_log + $PYTHONROOT/bin/python ../util/show_profile.py profile $thread_num >> profile_log + tail -n 1 profile >> profile_log +done +done diff --git a/examples/Cpp/PaddleRec/criteo_ctr/clean.sh b/examples/Cpp/PaddleRec/criteo_ctr/clean.sh new file mode 100644 index 00000000..78703636 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/clean.sh @@ -0,0 +1 @@ +rm -rf *pyc kvdb raw_data ctr_client_conf ctr_serving_model ctr_data.tar.gz *~ diff --git a/examples/Cpp/PaddleRec/criteo_ctr/get_data.sh b/examples/Cpp/PaddleRec/criteo_ctr/get_data.sh new file mode 100644 index 00000000..1f244b3a --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/data/ctr_prediction/ctr_data.tar.gz +tar -zxvf ctr_data.tar.gz diff --git a/examples/Cpp/PaddleRec/criteo_ctr/local_train.py b/examples/Cpp/PaddleRec/criteo_ctr/local_train.py new file mode 100644 index 00000000..bbc94075 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/local_train.py @@ -0,0 +1,88 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import print_function + +from args import parse_args +import os +import paddle.fluid as fluid +import sys +from network_conf import dnn_model + +dense_feature_dim = 13 + + +def train(): + args = parse_args() + sparse_only = args.sparse_only + if not os.path.isdir(args.model_output_dir): + os.mkdir(args.model_output_dir) + dense_input = fluid.layers.data( + name="dense_input", shape=[dense_feature_dim], dtype='float32') + sparse_input_ids = [ + fluid.layers.data( + name="C" + str(i), shape=[1], lod_level=1, dtype="int64") + for i in range(1, 27) + ] + label = fluid.layers.data(name='label', shape=[1], dtype='int64') + + #nn_input = None if sparse_only else dense_input + nn_input = dense_input + predict_y, loss, auc_var, batch_auc_var = dnn_model( + nn_input, sparse_input_ids, label, args.embedding_size, + args.sparse_feature_dim) + + optimizer = fluid.optimizer.SGD(learning_rate=1e-4) + optimizer.minimize(loss) + + exe = fluid.Executor(fluid.CPUPlace()) + exe.run(fluid.default_startup_program()) + dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") + dataset.set_use_var([dense_input] + sparse_input_ids + [label]) + + python_executable = "python" + pipe_command = "{} criteo_reader.py {}".format(python_executable, + args.sparse_feature_dim) + + dataset.set_pipe_command(pipe_command) + dataset.set_batch_size(128) + thread_num = 10 + dataset.set_thread(thread_num) + + whole_filelist = [ + "raw_data/part-%d" % x for x in range(len(os.listdir("raw_data"))) + ] + + dataset.set_filelist(whole_filelist[:thread_num]) + dataset.load_into_memory() + + epochs = 1 + for i in range(epochs): + exe.train_from_dataset( + program=fluid.default_main_program(), dataset=dataset, debug=True) + print("epoch {} finished".format(i)) + + import paddle_serving_client.io as server_io + feed_var_dict = {} + for i, sparse in enumerate(sparse_input_ids): + feed_var_dict["sparse_{}".format(i)] = sparse + fetch_var_dict = {"prob": predict_y} + + server_io.save_model("ctr_serving_model", "ctr_client_conf", feed_var_dict, + fetch_var_dict, fluid.default_main_program()) + + +if __name__ == '__main__': + train() diff --git a/examples/Cpp/PaddleRec/criteo_ctr/network_conf.py b/examples/Cpp/PaddleRec/criteo_ctr/network_conf.py new file mode 100644 index 00000000..ec5eb7d5 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/network_conf.py @@ -0,0 +1,74 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import paddle.fluid as fluid +import math + + +def dnn_model(dense_input, sparse_inputs, label, embedding_size, + sparse_feature_dim): + def embedding_layer(input): + emb = fluid.layers.embedding( + input=input, + is_sparse=True, + is_distributed=False, + size=[sparse_feature_dim, embedding_size], + param_attr=fluid.ParamAttr( + name="SparseFeatFactors", + initializer=fluid.initializer.Uniform())) + return fluid.layers.sequence_pool(input=emb, pool_type='sum') + + def mlp_input_tensor(emb_sums, dense_tensor): + if isinstance(dense_tensor, fluid.Variable): + return fluid.layers.concat(emb_sums, axis=1) + else: + return fluid.layers.concat(emb_sums + [dense_tensor], axis=1) + + def mlp(mlp_input): + fc1 = fluid.layers.fc(input=mlp_input, + size=400, + act='relu', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(mlp_input.shape[1])))) + fc2 = fluid.layers.fc(input=fc1, + size=400, + act='relu', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(fc1.shape[1])))) + fc3 = fluid.layers.fc(input=fc2, + size=400, + act='relu', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(fc2.shape[1])))) + pre = fluid.layers.fc(input=fc3, + size=2, + act='softmax', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(fc3.shape[1])))) + return pre + + emb_sums = list(map(embedding_layer, sparse_inputs)) + mlp_in = mlp_input_tensor(emb_sums, dense_input) + predict = mlp(mlp_in) + cost = fluid.layers.cross_entropy(input=predict, label=label) + avg_cost = fluid.layers.reduce_sum(cost) + accuracy = fluid.layers.accuracy(input=predict, label=label) + auc_var, batch_auc_var, auc_states = \ + fluid.layers.auc(input=predict, label=label, num_thresholds=2 ** 12, slide_steps=20) + return predict, avg_cost, auc_var, batch_auc_var diff --git a/examples/Cpp/PaddleRec/criteo_ctr/test_client.py b/examples/Cpp/PaddleRec/criteo_ctr/test_client.py new file mode 100644 index 00000000..fd6c6e03 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/test_client.py @@ -0,0 +1,76 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +import sys +import os +import time +from paddle_serving_client.metric import auc +import numpy as np +import sys + +class CriteoReader(object): + def __init__(self, sparse_feature_dim): + self.cont_min_ = [0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + self.cont_max_ = [ + 20, 600, 100, 50, 64000, 500, 100, 50, 500, 10, 10, 10, 50 + ] + self.cont_diff_ = [ + 20, 603, 100, 50, 64000, 500, 100, 50, 500, 10, 10, 10, 50 + ] + self.hash_dim_ = sparse_feature_dim + # here, training data are lines with line_index < train_idx_ + self.train_idx_ = 41256555 + self.continuous_range_ = range(1, 14) + self.categorical_range_ = range(14, 40) + + def process_line(self, line): + features = line.rstrip('\n').split('\t') + dense_feature = [] + sparse_feature = [] + for idx in self.continuous_range_: + if features[idx] == '': + dense_feature.append(0.0) + else: + dense_feature.append((float(features[idx]) - self.cont_min_[idx - 1]) / \ + self.cont_diff_[idx - 1]) + for idx in self.categorical_range_: + sparse_feature.append( + [hash(str(idx) + features[idx]) % self.hash_dim_]) + + return sparse_feature + +py_version = sys.version_info[0] + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9292"]) +reader = CriteoReader(1000001) +batch = 1 +buf_size = 100 +label_list = [] +prob_list = [] +start = time.time() +f = open(sys.argv[2], 'r') +for ei in range(10): + data = reader.process_line(f.readline()) + feed_dict = {} + for i in range(1, 27): + feed_dict["sparse_{}".format(i - 1)] = np.array(data[i-1]).reshape(-1) + feed_dict["sparse_{}.lod".format(i - 1)] = [0, len(data[i-1])] + fetch_map = client.predict(feed=feed_dict, fetch=["prob"]) + print(fetch_map) +end = time.time() +f.close() diff --git a/examples/Cpp/PaddleRec/criteo_ctr/test_server.py b/examples/Cpp/PaddleRec/criteo_ctr/test_server.py new file mode 100644 index 00000000..34f859da --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr/test_server.py @@ -0,0 +1,36 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import os +import sys +from paddle_serving_server import OpMaker +from paddle_serving_server import OpSeqMaker +from paddle_serving_server import Server + +op_maker = OpMaker() +read_op = op_maker.create('general_reader') +general_infer_op = op_maker.create('general_infer') +response_op = op_maker.create('general_response') + +op_seq_maker = OpSeqMaker() +op_seq_maker.add_op(read_op) +op_seq_maker.add_op(general_infer_op) +op_seq_maker.add_op(response_op) + +server = Server() +server.set_op_sequence(op_seq_maker.get_op_sequence()) +server.load_model_config(sys.argv[1]) +server.prepare_server(workdir="work_dir1", port=9292, device="cpu") +server.run_server() diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/README.md b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/README.md new file mode 100755 index 00000000..4492b398 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/README.md @@ -0,0 +1,72 @@ +## Criteo CTR with Sparse Parameter Indexing Service + +([简体中文](./README_CN.md)|English) + +### Get Sample Dataset + +go to directory `python/examples/criteo_ctr_with_cube` +``` +sh get_data.sh +``` + +### Download Model and Sparse Parameter Sequence Files +``` +wget https://paddle-serving.bj.bcebos.com/unittest/ctr_cube_unittest.tar.gz +tar xf ctr_cube_unittest.tar.gz +mv models/ctr_client_conf ./ +mv models/ctr_serving_model_kv ./ +mv models/data ./cube/ +``` +the model will be in ./ctr_server_model_kv and ./ctr_client_config. + +### Start Sparse Parameter Indexing Service +``` +wget https://paddle-serving.bj.bcebos.com/others/cube_app.tar.gz +tar xf cube_app.tar.gz +mv cube_app/cube* ./cube/ +sh cube_prepare.sh & +``` + +Here, the sparse parameter is loaded by cube sparse parameter indexing service Cube. + +### Start RPC Predictor, the number of serving thread is 4(configurable in test_server.py) + +``` +python3 test_server.py ctr_serving_model_kv +``` + +### Run Prediction + +``` +python3 test_client.py ctr_client_conf/serving_client_conf.prototxt ./raw_data +``` + +### Benchmark + +CPU :Intel(R) Xeon(R) CPU 6148 @ 2.40GHz + +Model :[Criteo CTR](https://github.com/PaddlePaddle/Serving/blob/develop/python/examples/criteo_ctr_with_cube/network_conf.py) + +server core/thread num : 4/8 + +Run +``` +bash benchmark.sh +``` +1000 batches will be sent by every client + +| client thread num | prepro | client infer | op0 | op1 | op2 | postpro | avg_latency | qps | +| ------------------ | ------ | ------------ | ------ | ----- | ------ | ------- | ----- | ----- | +| 1 | 0.035 | 1.596 | 0.021 | 0.518 | 0.0024 | 0.0025 | 6.774 | 147.7 | +| 2 | 0.034 | 1.780 | 0.027 | 0.463 | 0.0020 | 0.0023 | 6.931 | 288.3 | +| 4 | 0.038 | 2.954 | 0.025 | 0.455 | 0.0019 | 0.0027 | 8.378 | 477.5 | +| 8 | 0.044 | 8.230 | 0.028 | 0.464 | 0.0023 | 0.0034 | 14.191 | 563.8 | +| 16 | 0.048 | 21.037 | 0.028 | 0.455 | 0.0025 | 0.0041 | 27.236 | 587.5 | + +the average latency of threads + +![avg cost](../../../doc/images/criteo-cube-benchmark-avgcost.png) + +The QPS is + +![qps](../../../doc/images/criteo-cube-benchmark-qps.png) diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/README_CN.md b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/README_CN.md new file mode 100644 index 00000000..8c8d51d9 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/README_CN.md @@ -0,0 +1,70 @@ +## 带稀疏参数索引服务的CTR预测服务 +(简体中文|[English](./README.md)) + +### 获取样例数据 +进入目录 `python/examples/criteo_ctr_with_cube` +``` +sh get_data.sh +``` + +### 下载模型和稀疏参数序列文件 +``` +wget https://paddle-serving.bj.bcebos.com/unittest/ctr_cube_unittest.tar.gz +tar xf ctr_cube_unittest.tar.gz +mv models/ctr_client_conf ./ +mv models/ctr_serving_model_kv ./ +mv models/data ./cube/ +``` +执行脚本后会在当前目录有ctr_server_model_kv和ctr_client_config文件夹。 + +### 启动稀疏参数索引服务 +``` +wget https://paddle-serving.bj.bcebos.com/others/cube_app.tar.gz +tar xf cube_app.tar.gz +mv cube_app/cube* ./cube/ +sh cube_prepare.sh & +``` + +此处,模型当中的稀疏参数会被存放在稀疏参数索引服务Cube当中。 + +### 启动RPC预测服务,服务端线程数为4(可在test_server.py配置) + +``` +python3 test_server.py ctr_serving_model_kv +``` + +### 执行预测 + +``` +python3 test_client.py ctr_client_conf/serving_client_conf.prototxt ./raw_data +``` + +### Benchmark + +设备 :Intel(R) Xeon(R) CPU 6148 @ 2.40GHz + +模型 :[Criteo CTR](https://github.com/PaddlePaddle/Serving/blob/develop/python/examples/criteo_ctr_with_cube/network_conf.py) + +server core/thread num : 4/8 + +执行 +``` +bash benchmark.sh +``` +客户端每个线程会发送1000个batch + +| client thread num | prepro | client infer | op0 | op1 | op2 | postpro | avg_latency | qps | +| ------------------ | ------ | ------------ | ------ | ----- | ------ | ------- | ----- | ----- | +| 1 | 0.035 | 1.596 | 0.021 | 0.518 | 0.0024 | 0.0025 | 6.774 | 147.7 | +| 2 | 0.034 | 1.780 | 0.027 | 0.463 | 0.0020 | 0.0023 | 6.931 | 288.3 | +| 4 | 0.038 | 2.954 | 0.025 | 0.455 | 0.0019 | 0.0027 | 8.378 | 477.5 | +| 8 | 0.044 | 8.230 | 0.028 | 0.464 | 0.0023 | 0.0034 | 14.191 | 563.8 | +| 16 | 0.048 | 21.037 | 0.028 | 0.455 | 0.0025 | 0.0041 | 27.236 | 587.5 | + +平均每个线程耗时图如下 + +![avg cost](../../../doc/images/criteo-cube-benchmark-avgcost.png) + +每个线程QPS耗时如下 + +![qps](../../../doc/images/criteo-cube-benchmark-qps.png) diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/criteo_reader.py b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/criteo_reader.py new file mode 100755 index 00000000..2a80af78 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/criteo_reader.py @@ -0,0 +1,83 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import sys +import paddle.fluid.incubate.data_generator as dg + + +class CriteoDataset(dg.MultiSlotDataGenerator): + def setup(self, sparse_feature_dim): + self.cont_min_ = [0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + self.cont_max_ = [ + 20, 600, 100, 50, 64000, 500, 100, 50, 500, 10, 10, 10, 50 + ] + self.cont_diff_ = [ + 20, 603, 100, 50, 64000, 500, 100, 50, 500, 10, 10, 10, 50 + ] + self.hash_dim_ = sparse_feature_dim + # here, training data are lines with line_index < train_idx_ + self.train_idx_ = 41256555 + self.continuous_range_ = range(1, 14) + self.categorical_range_ = range(14, 40) + + def _process_line(self, line): + features = line.rstrip('\n').split('\t') + dense_feature = [] + sparse_feature = [] + for idx in self.continuous_range_: + if features[idx] == '': + dense_feature.append(0.0) + else: + dense_feature.append((float(features[idx]) - self.cont_min_[idx - 1]) / \ + self.cont_diff_[idx - 1]) + for idx in self.categorical_range_: + sparse_feature.append( + [hash(str(idx) + features[idx]) % self.hash_dim_]) + + return dense_feature, sparse_feature, [int(features[0])] + + def infer_reader(self, filelist, batch, buf_size): + def local_iter(): + for fname in filelist: + with open(fname.strip(), "r") as fin: + for line in fin: + dense_feature, sparse_feature, label = self._process_line( + line) + #yield dense_feature, sparse_feature, label + yield [dense_feature] + sparse_feature + [label] + + import paddle + batch_iter = paddle.batch( + paddle.reader.shuffle( + local_iter, buf_size=buf_size), + batch_size=batch) + return batch_iter + + def generate_sample(self, line): + def data_iter(): + dense_feature, sparse_feature, label = self._process_line(line) + feature_name = ["dense_input"] + for idx in self.categorical_range_: + feature_name.append("C" + str(idx - 13)) + feature_name.append("label") + yield zip(feature_name, [dense_feature] + sparse_feature + [label]) + + return data_iter + + +if __name__ == "__main__": + criteo_dataset = CriteoDataset() + criteo_dataset.setup(int(sys.argv[1])) + criteo_dataset.run_from_stdin() diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/cube.conf b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/cube.conf new file mode 100755 index 00000000..b70f6e34 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/cube.conf @@ -0,0 +1,13 @@ +[{ + "dict_name": "test_dict", + "shard": 1, + "dup": 1, + "timeout": 200, + "retry": 3, + "backup_request": 100, + "type": "ipport_list", + "load_balancer": "rr", + "nodes": [{ + "ipport_list": "list://127.0.0.1:8027" + }] +}] diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/gflags.conf b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/gflags.conf new file mode 100755 index 00000000..21c7bdde --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/conf/gflags.conf @@ -0,0 +1,4 @@ +--port=8027 +--dict_split=1 +--in_mem=true +--log_dir=./log/ diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/keys b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/keys new file mode 100755 index 00000000..f00c965d --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube/keys @@ -0,0 +1,10 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube_prepare.sh b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube_prepare.sh new file mode 100755 index 00000000..773baba4 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/cube_prepare.sh @@ -0,0 +1,20 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +#! /bin/bash + +mkdir -p cube_model +mkdir -p cube/data +./cube/cube-builder -dict_name=test_dict -job_mode=base -last_version=0 -cur_version=0 -depend_version=0 -input_path=./cube_model -output_path=${PWD}/cube/data -shard_num=1 -only_build=false +cd cube && ./cube diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/get_data.sh b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/get_data.sh new file mode 100755 index 00000000..1f244b3a --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/data/ctr_prediction/ctr_data.tar.gz +tar -zxvf ctr_data.tar.gz diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/local_train.py b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/local_train.py new file mode 100755 index 00000000..555e2e92 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/local_train.py @@ -0,0 +1,101 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from __future__ import print_function + +from args import parse_args +import os +import paddle.fluid as fluid +import paddle +import sys +from network_conf import dnn_model + +dense_feature_dim = 13 + +paddle.enable_static() +def train(): + args = parse_args() + sparse_only = args.sparse_only + if not os.path.isdir(args.model_output_dir): + os.mkdir(args.model_output_dir) + dense_input = fluid.layers.data( + name="dense_input", shape=[dense_feature_dim], dtype='float32') + sparse_input_ids = [ + fluid.layers.data( + name="C" + str(i), shape=[1], lod_level=1, dtype="int64") + for i in range(1, 27) + ] + label = fluid.layers.data(name='label', shape=[1], dtype='int64') + + #nn_input = None if sparse_only else dense_input + nn_input = dense_input + predict_y, loss, auc_var, batch_auc_var, infer_vars = dnn_model( + nn_input, sparse_input_ids, label, args.embedding_size, + args.sparse_feature_dim) + + optimizer = fluid.optimizer.SGD(learning_rate=1e-4) + optimizer.minimize(loss) + + exe = fluid.Executor(fluid.CPUPlace()) + exe.run(fluid.default_startup_program()) + dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") + dataset.set_use_var([dense_input] + sparse_input_ids + [label]) + + python_executable = "python3.6" + pipe_command = "{} criteo_reader.py {}".format(python_executable, + args.sparse_feature_dim) + + dataset.set_pipe_command(pipe_command) + dataset.set_batch_size(128) + thread_num = 10 + dataset.set_thread(thread_num) + + whole_filelist = [ + "raw_data/part-%d" % x for x in range(len(os.listdir("raw_data"))) + ] + + print(whole_filelist) + dataset.set_filelist(whole_filelist[:100]) + dataset.load_into_memory() + fluid.layers.Print(auc_var) + epochs = 1 + for i in range(epochs): + exe.train_from_dataset( + program=fluid.default_main_program(), dataset=dataset, debug=True) + print("epoch {} finished".format(i)) + + import paddle_serving_client.io as server_io + feed_var_dict = {} + feed_var_dict['dense_input'] = dense_input + for i, sparse in enumerate(sparse_input_ids): + feed_var_dict["embedding_{}.tmp_0".format(i)] = sparse + fetch_var_dict = {"prob": predict_y} + + feed_kv_dict = {} + feed_kv_dict['dense_input'] = dense_input + for i, emb in enumerate(infer_vars): + feed_kv_dict["embedding_{}.tmp_0".format(i)] = emb + fetch_var_dict = {"prob": predict_y} + + server_io.save_model("ctr_serving_model", "ctr_client_conf", feed_var_dict, + fetch_var_dict, fluid.default_main_program()) + + server_io.save_model("ctr_serving_model_kv", "ctr_client_conf_kv", + feed_kv_dict, fetch_var_dict, + fluid.default_main_program()) + + +if __name__ == '__main__': + train() diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/network_conf.py b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/network_conf.py new file mode 100755 index 00000000..2975533a --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/network_conf.py @@ -0,0 +1,77 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import paddle.fluid as fluid +import math + + +def dnn_model(dense_input, sparse_inputs, label, embedding_size, + sparse_feature_dim): + def embedding_layer(input): + emb = fluid.layers.embedding( + input=input, + is_sparse=True, + is_distributed=False, + size=[sparse_feature_dim, embedding_size], + param_attr=fluid.ParamAttr( + name="SparseFeatFactors", + initializer=fluid.initializer.Uniform())) + x = fluid.layers.sequence_pool(input=emb, pool_type='sum') + return emb, x + + def mlp_input_tensor(emb_sums, dense_tensor): + #if isinstance(dense_tensor, fluid.Variable): + # return fluid.layers.concat(emb_sums, axis=1) + #else: + return fluid.layers.concat(emb_sums + [dense_tensor], axis=1) + + def mlp(mlp_input): + fc1 = fluid.layers.fc(input=mlp_input, + size=400, + act='relu', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(mlp_input.shape[1])))) + fc2 = fluid.layers.fc(input=fc1, + size=400, + act='relu', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(fc1.shape[1])))) + fc3 = fluid.layers.fc(input=fc2, + size=400, + act='relu', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(fc2.shape[1])))) + pre = fluid.layers.fc(input=fc3, + size=2, + act='softmax', + param_attr=fluid.ParamAttr( + initializer=fluid.initializer.Normal( + scale=1 / math.sqrt(fc3.shape[1])))) + return pre + + emb_pair_sums = list(map(embedding_layer, sparse_inputs)) + emb_sums = [x[1] for x in emb_pair_sums] + infer_vars = [x[0] for x in emb_pair_sums] + mlp_in = mlp_input_tensor(emb_sums, dense_input) + predict = mlp(mlp_in) + cost = fluid.layers.cross_entropy(input=predict, label=label) + avg_cost = fluid.layers.reduce_sum(cost) + accuracy = fluid.layers.accuracy(input=predict, label=label) + auc_var, batch_auc_var, auc_states = \ + fluid.layers.auc(input=predict, label=label, num_thresholds=2 ** 12, slide_steps=20) + return predict, avg_cost, auc_var, batch_auc_var, infer_vars diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_client.py b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_client.py new file mode 100755 index 00000000..f12d727a --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_client.py @@ -0,0 +1,57 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +import sys +import os +import criteo_reader as criteo +import time +from paddle_serving_client.metric import auc +import numpy as np +py_version = sys.version_info[0] + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9292"]) + +batch = 1 +buf_size = 100 +dataset = criteo.CriteoDataset() +dataset.setup(1000001) +test_filelists = ["{}/part-0".format(sys.argv[2])] +reader = dataset.infer_reader(test_filelists, batch, buf_size) +label_list = [] +prob_list = [] +start = time.time() +for ei in range(100): + if py_version == 2: + data = reader().next() + else: + data = reader().__next__() + feed_dict = {} + feed_dict['dense_input'] = np.array(data[0][0]).reshape(1, len(data[0][0])) + + for i in range(1, 27): + feed_dict["embedding_{}.tmp_0".format(i - 1)] = np.array(data[0][i]).reshape(len(data[0][i])) + feed_dict["embedding_{}.tmp_0.lod".format(i - 1)] = [0, len(data[0][i])] + fetch_map = client.predict(feed=feed_dict, fetch=["prob"],batch=True) + print(fetch_map) + prob_list.append(fetch_map['prob'][0][1]) + label_list.append(data[0][-1][0]) + + +end = time.time() +print(end - start) + diff --git a/examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_server.py b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_server.py new file mode 100755 index 00000000..479c6029 --- /dev/null +++ b/examples/Cpp/PaddleRec/criteo_ctr_with_cube/test_server.py @@ -0,0 +1,41 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import os +import sys +from paddle_serving_server import OpMaker +from paddle_serving_server import OpSeqMaker +from paddle_serving_server import Server + +op_maker = OpMaker() +read_op = op_maker.create('general_reader') +general_dist_kv_infer_op = op_maker.create('general_dist_kv_infer') +response_op = op_maker.create('general_response') + +op_seq_maker = OpSeqMaker() +op_seq_maker.add_op(read_op) +op_seq_maker.add_op(general_dist_kv_infer_op) +op_seq_maker.add_op(response_op) + +server = Server() +server.set_op_sequence(op_seq_maker.get_op_sequence()) +server.set_num_threads(4) +server.load_model_config(sys.argv[1]) +server.prepare_server( + workdir="work_dir1", + port=9292, + device="cpu", + cube_conf="./cube/conf/cube.conf") +server.run_server() diff --git a/examples/Cpp/PaddleSeg/deeplabv3/N0060.jpg b/examples/Cpp/PaddleSeg/deeplabv3/N0060.jpg new file mode 100644 index 0000000000000000000000000000000000000000..feac2837eaa5ae5db414d9769a0c5a830dde268d GIT binary patch literal 49567 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

;_S=X_8e)|c}IO^)Xhw<`d- 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

;_S=X_8e)|c}IO^)Xhw<`d- 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

;_S=X_8e)|c}IO^)Xhw<`d- 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 1: + l_start = time.time() + feed_batch = [] + b_start = time.time() + for bi in range(args.batch_size): + feed_batch.append({"image": img_list[bi]}) + b_end = time.time() + if profile_flags: + sys.stderr.write( + "PROFILE\tpid:{}\tunt_pre_0:{} unet_pre_1:{}\n".format( + os.getpid(), + int(round(b_start * 1000000)), + int(round(b_end * 1000000)))) + result = client_handler.predict( + feed={"image": img_list[bi]}, fetch=["output"]) + #result["filename"] = "./img_data/N0060.jpg" % (os.getpid(), idx, time.time()) + #postprocess(result) # if you want to measure post process time, you have to uncomment this line + l_end = time.time() + if latency_flags: + latency_list.append(l_end * 1000 - l_start * 1000) + else: + print("unsupport batch size {}".format(args.batch_size)) + end = time.time() + if latency_flags: + return [[end - start], latency_list] + else: + return [[end - start]] + + +if __name__ == '__main__': + """ + usage: + """ + img_file_list = get_img_names("./img_data") + img_content_list = preprocess_img(img_file_list) + multi_thread_runner = MultiThreadRunner() + endpoint_list = ["127.0.0.1:9494"] + turns = 1 + start = time.time() + result = multi_thread_runner.run(benckmark_worker, args.thread, { + "endpoint": endpoint_list, + "turns": turns, + "img_list": img_content_list + }) + end = time.time() + total_cost = end - start + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + avg_cost = avg_cost / args.thread + print("total cost: {}s".format(total_cost)) + print("each thread cost: {}s. ".format(avg_cost)) + print("qps: {}samples/s".format(args.batch_size * args.thread * turns / + total_cost)) + if os.getenv("FLAGS_serving_latency"): + show_latency(result[1]) diff --git a/examples/Cpp/encryption/README.md b/examples/Cpp/encryption/README.md new file mode 100644 index 00000000..3120422e --- /dev/null +++ b/examples/Cpp/encryption/README.md @@ -0,0 +1,48 @@ +# Encryption Model Prediction + +([简体中文](README_CN.md)|English) + +## Get Origin Model + +The example uses the model file of the fit_a_line example as a origin model + +``` +sh get_data.sh +``` + +## Encrypt Model + +The `paddlepaddle` package is used in this example, you may need to download the corresponding package(`pip3 install paddlepaddle`). + +[python3 encrypt.py](./encrypt.py) + +[//file]:#encrypt.py +``` python +def serving_encryption(): + inference_model_to_serving( + dirname="./uci_housing_model", + params_filename=None, + serving_server="encrypt_server", + serving_client="encrypt_client", + encryption=True) +``` +dirname is the folder path where the model is located. If the parameter is discrete, it is unnecessary to specify params_filename, else you need to set `params_filename="__params__"`. + +The key is stored in the `key` file, and the encrypted model file and server-side configuration file are stored in the `encrypt_server` directory. +client-side configuration file are stored in the `encrypt_client` directory. + +**Notice:** When encryption prediction is used, the model configuration and parameter folder loaded by server and client should be encrypt_server/ and encrypt_client/ +## Start Encryption Service +CPU Service +``` +python3 -m paddle_serving_server.serve --model encrypt_server/ --port 9393 --use_encryption_model +``` +GPU Service +``` +python3 -m paddle_serving_server.serve --model encrypt_server/ --port 9393 --use_encryption_model --gpu_ids 0 +``` + +## Prediction +``` +python3 test_client.py encrypt_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/encryption/README_CN.md b/examples/Cpp/encryption/README_CN.md new file mode 100644 index 00000000..ad82d49b --- /dev/null +++ b/examples/Cpp/encryption/README_CN.md @@ -0,0 +1,49 @@ +# 加密模型预测 + +(简体中文|[English](README.md)) + +## 获取明文模型 + +示例中使用fit_a_line示例的模型文件作为明文模型 + +``` +sh get_data.sh +``` + +## 模型加密 +本示例中使用了`paddlepaddle`包中的模块,需要进行下载(`pip3 install paddlepaddle`)。 + +运行[python3 encrypt.py](./encrypt.py)进行模型加密 + +[//file]:#encrypt.py +``` python +def serving_encryption(): + inference_model_to_serving( + dirname="./uci_housing_model", + params_filename=None, + serving_server="encrypt_server", + serving_client="encrypt_client", + encryption=True) +``` +其中dirname为模型所在的文件夹路径 + +当参数为离散参数时,无须指定params_filename,当参数为__params__时,需指定`params_filename="__params__"` + +密钥保存在`key`文件中,加密模型文件以及server端配置文件保存在`encrypt_server`目录下,client端配置文件保存在`encrypt_client`目录下。 + +**注意:** 当使用加密预测时,服务端和客户端启动加载的模型配置和参数文件夹是encrypt_server/和encrypt_client/ + +## 启动加密预测服务 +CPU预测服务 +``` +python3 -m paddle_serving_server.serve --model encrypt_server/ --port 9393 --use_encryption_model +``` +GPU预测服务 +``` +python3 -m paddle_serving_server.serve --model encrypt_server/ --port 9393 --use_encryption_model --gpu_ids 0 +``` + +## 预测 +``` +python3 test_client.py encrypt_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/encryption/encrypt.py b/examples/Cpp/encryption/encrypt.py new file mode 100644 index 00000000..e2337843 --- /dev/null +++ b/examples/Cpp/encryption/encrypt.py @@ -0,0 +1,28 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client.io import inference_model_to_serving + + +def serving_encryption(): + inference_model_to_serving( + dirname="./uci_housing_model", + params_filename=None, + serving_server="encrypt_server", + serving_client="encrypt_client", + encryption=True) + + +if __name__ == "__main__": + serving_encryption() diff --git a/examples/Cpp/encryption/get_data.sh b/examples/Cpp/encryption/get_data.sh new file mode 100644 index 00000000..c3cd5c23 --- /dev/null +++ b/examples/Cpp/encryption/get_data.sh @@ -0,0 +1,4 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing_example/encrypt.tar.gz +tar -xzf encrypt.tar.gz +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar.gz +tar -xzf uci_housing.tar.gz diff --git a/examples/Cpp/encryption/test_client.py b/examples/Cpp/encryption/test_client.py new file mode 100644 index 00000000..33816e74 --- /dev/null +++ b/examples/Cpp/encryption/test_client.py @@ -0,0 +1,33 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +import sys + +client = Client() +client.load_client_config(sys.argv[1]) +client.use_key("./key") +client.connect(["0.0.0.0:9393"], encryption=True) +fetch_list = client.get_fetch_names() + +import paddle +test_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=1) + +for data in test_reader(): + fetch_map = client.predict(feed={"x": data[0][0]}, fetch=fetch_list) + print(fetch_map) diff --git a/examples/Cpp/fit_a_line/README.md b/examples/Cpp/fit_a_line/README.md new file mode 100644 index 00000000..9586cd67 --- /dev/null +++ b/examples/Cpp/fit_a_line/README.md @@ -0,0 +1,41 @@ +# Fit a line prediction example + +([简体中文](./README_CN.md)|English) + +## Get data + +```shell +sh get_data.sh +``` + + + +## RPC service + +### Start server + +```shell +python3 -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9393 +``` + +## Client prediction + +### RPC Client +The `paddlepaddle` package is used in `test_client.py`, and you may need to download the corresponding package(`pip3 install paddlepaddle`). + +``` shell +python3 test_client.py uci_housing_client/serving_client_conf.prototxt +``` + +### Http Client + +``` shell +python3 test_httpclient.py uci_housing_client/serving_client_conf.prototxt +``` + + +## Benchmark +``` shell +bash benchmark.sh uci_housing_model uci_housing_client +``` +The log file of benchmark named `profile_log_uci_housing_model` diff --git a/examples/Cpp/fit_a_line/README_CN.md b/examples/Cpp/fit_a_line/README_CN.md new file mode 100755 index 00000000..d1cace5e --- /dev/null +++ b/examples/Cpp/fit_a_line/README_CN.md @@ -0,0 +1,43 @@ +# 线性回归预测服务示例 + +(简体中文|[English](./README.md)) + +## 获取数据 + +```shell +sh get_data.sh +``` + + +## 开启服务端(支持BRPC-Client/GRPC Client/Http-Client) + +```shell +python3 -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9393 +``` + +## 客户端预测 + +### BRPC-Client + +`test_client.py`中使用了`paddlepaddle`包,需要进行下载(`pip3 install paddlepaddle`)。 + +``` shell +python3 test_client.py uci_housing_client/serving_client_conf.prototxt +``` + +### GRPC-Client/Http-Client + +``` shell +python3 test_httpclient.py uci_housing_client/serving_client_conf.prototxt +``` + + +## 性能测试 +``` shell +bash benchmark.sh uci_housing_model uci_housing_client +``` +性能测试的日志文件为profile_log_uci_housing_model + +如需修改性能测试用例的参数,请修改benchmark.sh中的配置信息。 + +注意:uci_housing_model和uci_housing_client路径后不要加'/'符号,示例需要在GPU机器上运行。 diff --git a/examples/Cpp/fit_a_line/benchmark.py b/examples/Cpp/fit_a_line/benchmark.py new file mode 100644 index 00000000..7c4e4b4c --- /dev/null +++ b/examples/Cpp/fit_a_line/benchmark.py @@ -0,0 +1,77 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency +import time +import paddle +import sys +import requests + +args = benchmark_args() + + +def single_func(idx, resource): + train_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=1) + total_number = sum(1 for _ in train_reader()) + latency_list = [] + + if args.request == "rpc": + client = Client() + client.load_client_config(args.model) + client.connect([args.endpoint]) + start = time.time() + for data in train_reader(): + l_start = time.time() + fetch_map = client.predict(feed={"x": data[0][0]}, fetch=["price"]) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + end = time.time() + return [[end - start], latency_list, [total_number]] + elif args.request == "http": + train_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=1) + start = time.time() + for data in train_reader(): + l_start = time.time() + r = requests.post( + 'http://{}/uci/prediction'.format(args.endpoint), + data={"x": data[0]}) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + end = time.time() + return [[end - start], latency_list, [total_number]] + + +start = time.time() +multi_thread_runner = MultiThreadRunner() +result = multi_thread_runner.run(single_func, args.thread, {}) +end = time.time() +total_cost = end - start +avg_cost = 0 +for i in range(args.thread): + avg_cost += result[0][i] +avg_cost = avg_cost / args.thread + +print("total cost: {}s".format(total_cost)) +print("each thread cost: {}s. ".format(avg_cost)) +print("qps: {}samples/s".format(args.batch_size * args.thread / total_cost)) +show_latency(result[1]) diff --git a/examples/Cpp/fit_a_line/benchmark.sh b/examples/Cpp/fit_a_line/benchmark.sh new file mode 100644 index 00000000..7e374db3 --- /dev/null +++ b/examples/Cpp/fit_a_line/benchmark.sh @@ -0,0 +1,55 @@ +rm profile_log* +export CUDA_VISIBLE_DEVICES=0,1 +export FLAGS_profile_server=1 +export FLAGS_profile_client=1 +export FLAGS_serving_latency=1 + +gpu_id=0 +#save cpu and gpu utilization log +if [ -d utilization ];then + rm -rf utilization +else + mkdir utilization +fi +#start server +$PYTHONROOT/bin/python3 -m paddle_serving_server.serve --model $1 --port 9292 --thread 4 --gpu_ids 0,1 --mem_optim --ir_optim > elog 2>&1 & +sleep 5 + +#warm up +$PYTHONROOT/bin/python3 benchmark.py --thread 4 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 +echo -e "import psutil\nimport time\nwhile True:\n\tcpu_res = psutil.cpu_percent()\n\twith open('cpu.txt', 'a+') as f:\n\t\tf.write(f'{cpu_res}\\\n')\n\ttime.sleep(0.1)" > cpu.py +for thread_num in 1 4 8 16 +do +for batch_size in 1 4 16 64 +do + job_bt=`date '+%Y%m%d%H%M%S'` + nvidia-smi --id=0 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_memory_use.log 2>&1 & + nvidia-smi --id=0 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + rm -rf cpu.txt + $PYTHONROOT/bin/python3 cpu.py & + gpu_memory_pid=$! + $PYTHONROOT/bin/python3 benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + kill `ps -ef|grep used_memory|awk '{print $2}'` > /dev/null + kill `ps -ef|grep utilization.gpu|awk '{print $2}'` > /dev/null + kill `ps -ef|grep cpu.py|awk '{print $2}'` > /dev/null + echo "model_name:" $1 + echo "thread_num:" $thread_num + echo "batch_size:" $batch_size + echo "=================Done====================" + echo "model_name:$1" >> profile_log_$1 + echo "batch_size:$batch_size" >> profile_log_$1 + job_et=`date '+%Y%m%d%H%M%S'` + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "CPU_UTILIZATION:", max}' cpu.txt >> profile_log_$1 + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "MAX_GPU_MEMORY:", max}' gpu_memory_use.log >> profile_log_$1 + awk 'BEGIN {max = 0} {if(NR>1){if ($1 > max) max=$1}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$1 + rm -rf gpu_use.log gpu_utilization.log + $PYTHONROOT/bin/python3 ../util/show_profile.py profile $thread_num >> profile_log_$1 + tail -n 8 profile >> profile_log_$1 + echo "" >> profile_log_$1 +done +done + +#Divided log +awk 'BEGIN{RS="\n\n"}{i++}{print > "bert_log_"i}' profile_log_$1 +mkdir bert_log && mv bert_log_* bert_log +ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/examples/Cpp/fit_a_line/get_data.sh b/examples/Cpp/fit_a_line/get_data.sh new file mode 100644 index 00000000..84a3966a --- /dev/null +++ b/examples/Cpp/fit_a_line/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar.gz +tar -xzf uci_housing.tar.gz diff --git a/examples/Cpp/fit_a_line/local_train.py b/examples/Cpp/fit_a_line/local_train.py new file mode 100644 index 00000000..3e0f8880 --- /dev/null +++ b/examples/Cpp/fit_a_line/local_train.py @@ -0,0 +1,53 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import sys +import paddle +import paddle.fluid as fluid +paddle.enable_static() +train_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=16) + +test_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=16) + +x = fluid.data(name='x', shape=[None, 13], dtype='float32') +y = fluid.data(name='y', shape=[None, 1], dtype='float32') + +y_predict = fluid.layers.fc(input=x, size=1, act=None) +cost = fluid.layers.square_error_cost(input=y_predict, label=y) +avg_loss = fluid.layers.mean(cost) +sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.01) +sgd_optimizer.minimize(avg_loss) + +place = fluid.CPUPlace() +feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) +exe = fluid.Executor(place) +exe.run(fluid.default_startup_program()) + +import paddle_serving_client.io as serving_io + +for pass_id in range(30): + for data_train in train_reader(): + avg_loss_value, = exe.run(fluid.default_main_program(), + feed=feeder.feed(data_train), + fetch_list=[avg_loss]) + +serving_io.save_model("uci_housing_model", "uci_housing_client", {"x": x}, + {"price": y_predict}, fluid.default_main_program()) diff --git a/examples/Cpp/fit_a_line/test_client.py b/examples/Cpp/fit_a_line/test_client.py new file mode 100755 index 00000000..d18ece66 --- /dev/null +++ b/examples/Cpp/fit_a_line/test_client.py @@ -0,0 +1,35 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +import sys +import numpy as np + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9393"]) +fetch_list = client.get_fetch_names() +import paddle +test_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=1) + +for data in test_reader(): + new_data = np.zeros((1, 13)).astype("float32") + new_data[0] = data[0][0] + fetch_map = client.predict( + feed={"x": new_data}, fetch=fetch_list, batch=True) + print(fetch_map) diff --git a/examples/Cpp/fit_a_line/test_httpclient.py b/examples/Cpp/fit_a_line/test_httpclient.py new file mode 100755 index 00000000..c9f785dc --- /dev/null +++ b/examples/Cpp/fit_a_line/test_httpclient.py @@ -0,0 +1,58 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client.httpclient import HttpClient +import sys +import numpy as np +import time + +client = HttpClient() +client.load_client_config(sys.argv[1]) +''' +if you want use GRPC-client, set_use_grpc_client(True) +or you can directly use client.grpc_client_predict(...) +as for HTTP-client,set_use_grpc_client(False)(which is default) +or you can directly use client.http_client_predict(...) +''' +#client.set_use_grpc_client(True) +''' +if you want to enable Encrypt Module,uncommenting the following line +''' +#client.use_key("./key") +''' +if you want to compress,uncommenting the following line +''' +#client.set_response_compress(True) +#client.set_request_compress(True) +''' +we recommend use Proto data format in HTTP-body, set True(which is default) +if you want use JSON data format in HTTP-body, set False +''' +#client.set_http_proto(True) +client.connect(["127.0.0.1:9393"]) +fetch_list = client.get_fetch_names() + +import paddle +test_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=1) +for data in test_reader(): + new_data = np.zeros((1, 13)).astype("float32") + new_data[0] = data[0][0] + fetch_map = client.predict( + feed={"x": new_data}, fetch=fetch_list, batch=True) + print(fetch_map) + break diff --git a/examples/Cpp/fit_a_line/test_multi_process_client.py b/examples/Cpp/fit_a_line/test_multi_process_client.py new file mode 100644 index 00000000..e6120266 --- /dev/null +++ b/examples/Cpp/fit_a_line/test_multi_process_client.py @@ -0,0 +1,42 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +import paddle +import numpy as np + + +def single_func(idx, resource): + client = Client() + client.load_client_config( + "./uci_housing_client/serving_client_conf.prototxt") + client.connect(["127.0.0.1:9293", "127.0.0.1:9292"]) + x = [ + 0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, + 0.6283, 0.4919, 0.1856, 0.0795, -0.0332 + ] + x = np.array(x) + for i in range(1000): + fetch_map = client.predict(feed={"x": x}, fetch=["price"]) + if fetch_map is None: + return [[None]] + return [[0]] + + +multi_thread_runner = MultiThreadRunner() +thread_num = 4 +result = multi_thread_runner.run(single_func, thread_num, {}) +if None in result[0]: + exit(1) diff --git a/examples/Cpp/fit_a_line/test_server.py b/examples/Cpp/fit_a_line/test_server.py new file mode 100644 index 00000000..d055b309 --- /dev/null +++ b/examples/Cpp/fit_a_line/test_server.py @@ -0,0 +1,36 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_server.web_service import WebService +import numpy as np + + +class UciService(WebService): + def preprocess(self, feed=[], fetch=[]): + feed_batch = [] + is_batch = True + new_data = np.zeros((len(feed), 1, 13)).astype("float32") + for i, ins in enumerate(feed): + nums = np.array(ins["x"]).reshape(1, 1, 13) + new_data[i] = nums + feed = {"x": new_data} + return feed, fetch, is_batch + + +uci_service = UciService(name="uci") +uci_service.load_model_config("uci_housing_model") +uci_service.prepare_server(workdir="workdir", port=9393) +uci_service.run_rpc_service() +uci_service.run_web_service() diff --git a/examples/Cpp/imdb/README.md b/examples/Cpp/imdb/README.md new file mode 100755 index 00000000..573ac47d --- /dev/null +++ b/examples/Cpp/imdb/README.md @@ -0,0 +1,28 @@ +## IMDB comment sentiment inference service + +([简体中文](./README_CN.md)|English) + +### Get model files and sample data + +``` +sh get_data.sh +``` +the package downloaded contains cnn, lstm and bow model config along with their test_data and train_data. + +### Start inference service(Support BRPC-Client/GRPC-Client/Http-Client) + +``` +python3 -m paddle_serving_server.serve --model imdb_cnn_model/ --port 9292 +``` +### BRPC-Client Infer +``` +head test_data/part-0 | python3 test_client.py imdb_cnn_client_conf/serving_client_conf.prototxt imdb.vocab +``` + +it will get predict results of the first 10 test cases. + + +### GRPC-Client/Http-Client Infer +``` +head test_data/part-0 | python3 test_http_client.py imdb_cnn_client_conf/serving_client_conf.prototxt imdb.vocab +``` diff --git a/examples/Cpp/imdb/README_CN.md b/examples/Cpp/imdb/README_CN.md new file mode 100755 index 00000000..a1fecc8a --- /dev/null +++ b/examples/Cpp/imdb/README_CN.md @@ -0,0 +1,26 @@ +## IMDB评论情绪预测服务 + +(简体中文|[English](./README.md)) + +### 获取模型文件和样例数据 + +``` +sh get_data.sh +``` +脚本会下载和解压出cnn、lstm和bow三种模型的配置文文件以及test_data和train_data。 + +### 启动预测服务(支持BRPC-Client/GRPC-Client/Http-Client) + +``` +python3 -m paddle_serving_server.serve --model imdb_cnn_model/ --port 9292 +``` +### BRPC-Client预测 +``` +head test_data/part-0 | python3 test_client.py imdb_cnn_client_conf/serving_client_conf.prototxt imdb.vocab +``` +预测test_data/part-0的前十个样例。 + +### BRPC-Client预测 +``` +head test_data/part-0 | python3 test_http_client.py imdb_cnn_client_conf/serving_client_conf.prototxt imdb.vocab +``` diff --git a/examples/Cpp/imdb/abtest_client.py b/examples/Cpp/imdb/abtest_client.py new file mode 100644 index 00000000..f5f721b6 --- /dev/null +++ b/examples/Cpp/imdb/abtest_client.py @@ -0,0 +1,43 @@ + +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +import numpy as np + +client = Client() +client.load_client_config('imdb_bow_client_conf/serving_client_conf.prototxt') +client.add_variant("bow", ["127.0.0.1:8000"], 10) +client.add_variant("lstm", ["127.0.0.1:9000"], 90) +client.connect() + +print('please wait for about 10s') +with open('processed.data') as f: + cnt = {"bow": {'acc': 0, 'total': 0}, "lstm": {'acc': 0, 'total': 0}} + for line in f: + word_ids, label = line.split(';') + word_ids = [int(x) for x in word_ids.split(',')] + word_len = len(word_ids) + feed = { + "words": np.array(word_ids).reshape(word_len, 1), + "words.lod": [0, word_len] + } + fetch = ["acc", "cost", "prediction"] + [fetch_map, tag] = client.predict(feed=feed, fetch=fetch, need_variant_tag=True,batch=True) + if (float(fetch_map["prediction"][0][1]) - 0.5) * (float(label[0]) - 0.5) > 0: + cnt[tag]['acc'] += 1 + cnt[tag]['total'] += 1 + + for tag, data in cnt.items(): + print('[{}](total: {}) acc: {}'.format(tag, data['total'], float(data['acc'])/float(data['total']) )) diff --git a/examples/Cpp/imdb/abtest_get_data.py b/examples/Cpp/imdb/abtest_get_data.py new file mode 100644 index 00000000..c6bd7ea5 --- /dev/null +++ b/examples/Cpp/imdb/abtest_get_data.py @@ -0,0 +1,23 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_app.reader.imdb_reader import IMDBDataset +imdb_dataset = IMDBDataset() +imdb_dataset.load_resource('imdb.vocab') + +with open('test_data/part-0') as fin: + with open('processed.data', 'w') as fout: + for line in fin: + word_ids, label = imdb_dataset.get_words_and_label(line) + fout.write("{};{}\n".format(','.join([str(x) for x in word_ids]), label[0])) diff --git a/examples/Cpp/imdb/benchmark.py b/examples/Cpp/imdb/benchmark.py new file mode 100644 index 00000000..18584f88 --- /dev/null +++ b/examples/Cpp/imdb/benchmark.py @@ -0,0 +1,107 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import os +import sys +import time +import requests +import numpy as np +from paddle_serving_app.reader.imdb_reader import IMDBDataset +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import MultiThreadRunner, benchmark_args, show_latency + +args = benchmark_args() + + +def single_func(idx, resource): + imdb_dataset = IMDBDataset() + imdb_dataset.load_resource("./imdb.vocab") + dataset = [] + with open("./test_data/part-0") as fin: + for line in fin: + dataset.append(line.strip()) + profile_flags = False + latency_flags = False + if os.getenv("FLAGS_profile_client"): + profile_flags = True + if os.getenv("FLAGS_serving_latency"): + latency_flags = True + latency_list = [] + start = time.time() + if args.request == "rpc": + client = Client() + client.load_client_config(args.model) + client.connect([args.endpoint]) + for i in range(1000): + if args.batch_size >= 1: + feed_batch = [] + feed = {"words": [], "words.lod": [0]} + for bi in range(args.batch_size): + word_ids, label = imdb_dataset.get_words_and_label(dataset[ + bi]) + feed["words.lod"].append(feed["words.lod"][-1] + len( + word_ids)) + feed["words"].extend(word_ids) + feed["words"] = np.array(feed["words"]).reshape( + len(feed["words"]), 1) + result = client.predict( + feed=feed, fetch=["prediction"], batch=True) + if result is None: + raise ("predict failed.") + else: + print("unsupport batch size {}".format(args.batch_size)) + + elif args.request == "http": + if args.batch_size >= 1: + feed_batch = [] + for bi in range(args.batch_size): + feed_batch.append({"words": dataset[bi]}) + r = requests.post( + "http://{}/imdb/prediction".format(args.endpoint), + json={"feed": feed_batch, + "fetch": ["prediction"]}) + if r.status_code != 200: + print('HTTP status code -ne 200') + raise ("predict failed.") + else: + print("unsupport batch size {}".format(args.batch_size)) + end = time.time() + return [[end - start]] + + +if __name__ == '__main__': + multi_thread_runner = MultiThreadRunner() + endpoint_list = [ + "127.0.0.1:9292", "127.0.0.1:9293", "127.0.0.1:9294", "127.0.0.1:9295" + ] + turns = 100 + start = time.time() + result = multi_thread_runner.run( + single_func, args.thread, {"endpoint": endpoint_list, + "turns": turns}) + end = time.time() + total_cost = end - start + avg_cost = 0 + for i in range(args.thread): + avg_cost += result[0][i] + avg_cost = avg_cost / args.thread + + print("total cost: {}".format(total_cost)) + print("each thread cost: {}".format(avg_cost)) + print("qps: {}samples/s".format(args.batch_size * args.thread * turns / + total_cost)) + if os.getenv("FLAGS_serving_latency"): + show_latency(result[0]) diff --git a/examples/Cpp/imdb/benchmark.sh b/examples/Cpp/imdb/benchmark.sh new file mode 100644 index 00000000..7db9a108 --- /dev/null +++ b/examples/Cpp/imdb/benchmark.sh @@ -0,0 +1,43 @@ +rm profile_log* +export FLAGS_profile_server=1 +export FLAGS_profile_client=1 +export FLAGS_serving_latency=1 +$PYTHONROOT/bin/python3 -m paddle_serving_server.serve --model $1 --port 9292 --thread 4 --mem_optim --ir_optim 2> elog > stdlog & +hostname=`echo $(hostname)|awk -F '.baidu.com' '{print $1}'` +#save cpu and gpu utilization log +if [ -d utilization ];then + rm -rf utilization +else + mkdir utilization +fi +sleep 5 + + +#warm up +$PYTHONROOT/bin/python3 benchmark.py --thread 4 --batch_size 1 --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 +echo -e "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + +for thread_num in 1 4 8 16 +do +for batch_size in 1 4 16 64 +do + job_bt=`date '+%Y%m%d%H%M%S'` + $PYTHONROOT/bin/python3 benchmark.py --thread $thread_num --batch_size $batch_size --model $2/serving_client_conf.prototxt --request rpc > profile 2>&1 + echo "model_name:" $1 + echo "thread_num:" $thread_num + echo "batch_size:" $batch_size + echo "=================Done====================" + echo "model_name:$1" >> profile_log_$1 + echo "batch_size:$batch_size" >> profile_log_$1 + job_et=`date '+%Y%m%d%H%M%S'` + $PYTHONROOT/bin/python3 ../util/show_profile.py profile $thread_num >> profile_log_$1 + $PYTHONROOT/bin/python3 cpu_utilization.py >> profile_log_$1 + tail -n 8 profile >> profile_log_$1 + echo "" >> profile_log_$1 +done +done + +#Divided log +awk 'BEGIN{RS="\n\n"}{i++}{print > "imdb_log_"i}' profile_log_$1 +mkdir $1_log && mv imdb_log_* $1_log +ps -ef|grep 'serving'|grep -v grep|cut -c 9-15 | xargs kill -9 diff --git a/examples/Cpp/imdb/clean_data.sh b/examples/Cpp/imdb/clean_data.sh new file mode 100644 index 00000000..6d2c8d7a --- /dev/null +++ b/examples/Cpp/imdb/clean_data.sh @@ -0,0 +1 @@ +rm -rf imdb.vocab kvdb log *.pyc serving_client_conf serving_server_model test_data text_classification_data.tar.gz train_data work_dir1 diff --git a/examples/Cpp/imdb/get_data.sh b/examples/Cpp/imdb/get_data.sh new file mode 100644 index 00000000..81d8d5d3 --- /dev/null +++ b/examples/Cpp/imdb/get_data.sh @@ -0,0 +1,4 @@ +wget --no-check-certificate https://fleet.bj.bcebos.com/text_classification_data.tar.gz +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imdb-demo/imdb_model.tar.gz +tar -zxvf text_classification_data.tar.gz +tar -zxvf imdb_model.tar.gz diff --git a/examples/Cpp/imdb/imdb_reader.py b/examples/Cpp/imdb/imdb_reader.py new file mode 100644 index 00000000..a4ef3e16 --- /dev/null +++ b/examples/Cpp/imdb/imdb_reader.py @@ -0,0 +1,92 @@ +# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import sys +import os +import paddle +import re +import paddle.fluid.incubate.data_generator as dg + +py_version = sys.version_info[0] + + +class IMDBDataset(dg.MultiSlotDataGenerator): + def load_resource(self, dictfile): + self._vocab = {} + wid = 0 + if py_version == 2: + with open(dictfile) as f: + for line in f: + self._vocab[line.strip()] = wid + wid += 1 + else: + with open(dictfile, encoding="utf-8") as f: + for line in f: + self._vocab[line.strip()] = wid + wid += 1 + self._unk_id = len(self._vocab) + self._pattern = re.compile(r'(;|,|\.|\?|!|\s|\(|\))') + self.return_value = ("words", [1, 2, 3, 4, 5, 6]), ("label", [0]) + + def get_words_only(self, line): + sent = line.lower().replace("
", " ").strip() + words = [x for x in self._pattern.split(sent) if x and x != " "] + feas = [ + self._vocab[x] if x in self._vocab else self._unk_id for x in words + ] + return feas + + def get_words_and_label(self, line): + send = '|'.join(line.split('|')[:-1]).lower().replace("
", + " ").strip() + label = [int(line.split('|')[-1])] + + words = [x for x in self._pattern.split(send) if x and x != " "] + feas = [ + self._vocab[x] if x in self._vocab else self._unk_id for x in words + ] + return feas, label + + def infer_reader(self, infer_filelist, batch, buf_size): + def local_iter(): + for fname in infer_filelist: + with open(fname, "r") as fin: + for line in fin: + feas, label = self.get_words_and_label(line) + yield feas, label + + import paddle + batch_iter = paddle.batch( + paddle.reader.shuffle( + local_iter, buf_size=buf_size), + batch_size=batch) + return batch_iter + + def generate_sample(self, line): + def memory_iter(): + for i in range(1000): + yield self.return_value + + def data_iter(): + feas, label = self.get_words_and_label(line) + yield ("words", feas), ("label", label) + + return data_iter + + +if __name__ == "__main__": + imdb = IMDBDataset() + imdb.load_resource("imdb.vocab") + imdb.run_from_stdin() diff --git a/examples/Cpp/imdb/local_train.py b/examples/Cpp/imdb/local_train.py new file mode 100644 index 00000000..98333e4e --- /dev/null +++ b/examples/Cpp/imdb/local_train.py @@ -0,0 +1,73 @@ +# Copyright (c) 2018 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +import os +import sys +import paddle +import logging +import paddle.fluid as fluid + +logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger("fluid") +logger.setLevel(logging.INFO) +paddle.enable_static() + +def load_vocab(filename): + vocab = {} + with open(filename) as f: + wid = 0 + for line in f: + vocab[line.strip()] = wid + wid += 1 + vocab[""] = len(vocab) + return vocab + + +if __name__ == "__main__": + from nets import lstm_net + model_name = "imdb_lstm" + vocab = load_vocab('imdb.vocab') + dict_dim = len(vocab) + + data = fluid.layers.data( + name="words", shape=[1], dtype="int64", lod_level=1) + label = fluid.layers.data(name="label", shape=[1], dtype="int64") + + dataset = fluid.DatasetFactory().create_dataset() + filelist = ["train_data/%s" % x for x in os.listdir("train_data")] + dataset.set_use_var([data, label]) + pipe_command = "python imdb_reader.py" + dataset.set_pipe_command(pipe_command) + dataset.set_batch_size(128) + dataset.set_filelist(filelist) + dataset.set_thread(10) + avg_cost, acc, prediction = lstm_net(data, label, dict_dim) + optimizer = fluid.optimizer.SGD(learning_rate=0.01) + optimizer.minimize(avg_cost) + + exe = fluid.Executor(fluid.CPUPlace()) + exe.run(fluid.default_startup_program()) + epochs = 6 + + import paddle_serving_client.io as serving_io + + for i in range(epochs): + exe.train_from_dataset( + program=fluid.default_main_program(), dataset=dataset, debug=False) + logger.info("TRAIN --> pass: {}".format(i)) + if i == 5: + serving_io.save_model("{}_model".format(model_name), + "{}_client_conf".format(model_name), + {"words": data}, {"prediction": prediction}, + fluid.default_main_program()) diff --git a/examples/Cpp/imdb/nets.py b/examples/Cpp/imdb/nets.py new file mode 100644 index 00000000..4f2d2af6 --- /dev/null +++ b/examples/Cpp/imdb/nets.py @@ -0,0 +1,134 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing, doc-string-with-all-args, doc-string-with-returns + +import sys +import time +import numpy as np + +import paddle +import paddle.fluid as fluid + + +def bow_net(data, + label, + dict_dim, + emb_dim=128, + hid_dim=128, + hid_dim2=96, + class_dim=2): + """ bow net. """ + emb = fluid.layers.embedding( + input=data, size=[dict_dim, emb_dim], is_sparse=True) + bow = fluid.layers.sequence_pool(input=emb, pool_type='sum') + bow_tanh = fluid.layers.tanh(bow) + fc_1 = fluid.layers.fc(input=bow_tanh, size=hid_dim, act="tanh") + fc_2 = fluid.layers.fc(input=fc_1, size=hid_dim2, act="tanh") + prediction = fluid.layers.fc(input=[fc_2], size=class_dim, act="softmax") + cost = fluid.layers.cross_entropy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + acc = fluid.layers.accuracy(input=prediction, label=label) + + return avg_cost, acc, prediction + + +def cnn_net(data, + label, + dict_dim, + emb_dim=128, + hid_dim=128, + hid_dim2=96, + class_dim=2, + win_size=3): + """ conv net. """ + emb = fluid.layers.embedding( + input=data, size=[dict_dim, emb_dim], is_sparse=True) + + conv_3 = fluid.nets.sequence_conv_pool( + input=emb, + num_filters=hid_dim, + filter_size=win_size, + act="tanh", + pool_type="max") + + fc_1 = fluid.layers.fc(input=[conv_3], size=hid_dim2) + + prediction = fluid.layers.fc(input=[fc_1], size=class_dim, act="softmax") + cost = fluid.layers.cross_entropy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + acc = fluid.layers.accuracy(input=prediction, label=label) + + return avg_cost, acc, prediction + + +def lstm_net(data, + label, + dict_dim, + emb_dim=128, + hid_dim=128, + hid_dim2=96, + class_dim=2, + emb_lr=30.0): + """ lstm net. """ + emb = fluid.layers.embedding( + input=data, + size=[dict_dim, emb_dim], + param_attr=fluid.ParamAttr(learning_rate=emb_lr), + is_sparse=True) + + fc0 = fluid.layers.fc(input=emb, size=hid_dim * 4) + + lstm_h, c = fluid.layers.dynamic_lstm( + input=fc0, size=hid_dim * 4, is_reverse=False) + + lstm_max = fluid.layers.sequence_pool(input=lstm_h, pool_type='max') + lstm_max_tanh = fluid.layers.tanh(lstm_max) + + fc1 = fluid.layers.fc(input=lstm_max_tanh, size=hid_dim2, act='tanh') + + prediction = fluid.layers.fc(input=fc1, size=class_dim, act='softmax') + + cost = fluid.layers.cross_entropy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + acc = fluid.layers.accuracy(input=prediction, label=label) + + return avg_cost, acc, prediction + + +def gru_net(data, + label, + dict_dim, + emb_dim=128, + hid_dim=128, + hid_dim2=96, + class_dim=2, + emb_lr=400.0): + """ gru net. """ + emb = fluid.layers.embedding( + input=data, + size=[dict_dim, emb_dim], + param_attr=fluid.ParamAttr(learning_rate=emb_lr)) + + fc0 = fluid.layers.fc(input=emb, size=hid_dim * 3) + gru_h = fluid.layers.dynamic_gru(input=fc0, size=hid_dim, is_reverse=False) + gru_max = fluid.layers.sequence_pool(input=gru_h, pool_type='max') + gru_max_tanh = fluid.layers.tanh(gru_max) + fc1 = fluid.layers.fc(input=gru_max_tanh, size=hid_dim2, act='tanh') + prediction = fluid.layers.fc(input=fc1, size=class_dim, act='softmax') + + cost = fluid.layers.cross_entropy(input=prediction, label=label) + avg_cost = fluid.layers.mean(x=cost) + acc = fluid.layers.accuracy(input=prediction, label=label) + + return avg_cost, acc, prediction diff --git a/examples/Cpp/imdb/test_client.py b/examples/Cpp/imdb/test_client.py new file mode 100644 index 00000000..2aeee01a --- /dev/null +++ b/examples/Cpp/imdb/test_client.py @@ -0,0 +1,40 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +from paddle_serving_client import Client +from paddle_serving_app.reader.imdb_reader import IMDBDataset +import sys +import numpy as np + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9292"]) + +# you can define any english sentence or dataset here +# This example reuses imdb reader in training, you +# can define your own data preprocessing easily. +imdb_dataset = IMDBDataset() +imdb_dataset.load_resource(sys.argv[2]) + +for line in sys.stdin: + word_ids, label = imdb_dataset.get_words_and_label(line) + word_len = len(word_ids) + feed = { + "words": np.array(word_ids).reshape(word_len, 1), + "words.lod": [0, word_len] + } + #print(feed) + fetch = ["prediction"] + fetch_map = client.predict(feed=feed, fetch=fetch, batch=True) + print("{} {}".format(fetch_map["prediction"][0], label[0])) diff --git a/examples/Cpp/imdb/test_http_client.py b/examples/Cpp/imdb/test_http_client.py new file mode 100755 index 00000000..e3cc7051 --- /dev/null +++ b/examples/Cpp/imdb/test_http_client.py @@ -0,0 +1,61 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +from paddle_serving_client import HttpClient +from paddle_serving_app.reader.imdb_reader import IMDBDataset +import sys +import numpy as np + +client = HttpClient() +client.load_client_config(sys.argv[1]) +''' +if you want use GRPC-client, set_use_grpc_client(True) +or you can directly use client.grpc_client_predict(...) +as for HTTP-client,set_use_grpc_client(False)(which is default) +or you can directly use client.http_client_predict(...) +''' +#client.set_use_grpc_client(True) +''' +if you want to enable Encrypt Module,uncommenting the following line +''' +#client.use_key("./key") +''' +if you want to compress,uncommenting the following line +''' +#client.set_response_compress(True) +#client.set_request_compress(True) +''' +we recommend use Proto data format in HTTP-body, set True(which is default) +if you want use JSON data format in HTTP-body, set False +''' +#client.set_http_proto(True) +client.connect(["127.0.0.1:9292"]) + +# you can define any english sentence or dataset here +# This example reuses imdb reader in training, you +# can define your own data preprocessing easily. +imdb_dataset = IMDBDataset() +imdb_dataset.load_resource(sys.argv[2]) + +for line in sys.stdin: + word_ids, label = imdb_dataset.get_words_and_label(line) + word_len = len(word_ids) + feed = { + "words": np.array(word_ids).reshape(word_len, 1), + "words.lod": [0, word_len] + } + #print(feed) + fetch = ["prediction"] + fetch_map = client.predict(feed=feed, fetch=fetch, batch=True) + print(fetch_map) diff --git a/examples/Cpp/low_precision/resnet50/README.md b/examples/Cpp/low_precision/resnet50/README.md new file mode 100644 index 00000000..b4ae2552 --- /dev/null +++ b/examples/Cpp/low_precision/resnet50/README.md @@ -0,0 +1,28 @@ +# resnet50 int8 example +(English|[简体中文](./README_CN.md)) + +## Obtain the quantized model through PaddleSlim tool +Train the low-precision models please refer to [PaddleSlim](https://paddleslim.readthedocs.io/zh_CN/latest/tutorials/quant/overview.html). + +## Deploy the quantized model from PaddleSlim using Paddle Serving with Nvidia TensorRT int8 mode + +Firstly, download the [Resnet50 int8 model](https://paddle-inference-dist.bj.bcebos.com/inference_demo/python/resnet50/ResNet50_quant.tar.gz) and convert to Paddle Serving's saved model。 +``` +wget https://paddle-inference-dist.bj.bcebos.com/inference_demo/python/resnet50/ResNet50_quant.tar.gz +tar zxvf ResNet50_quant.tar.gz + +python3 -m paddle_serving_client.convert --dirname ResNet50_quant +``` +Start RPC service, specify the GPU id and precision mode +``` +python3 -m paddle_serving_server.serve --model serving_server --port 9393 --gpu_ids 0 --use_trt --precision int8 +``` +Request the serving service with Client +``` +python3 resnet50_client.py +``` + +## Reference +* [PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim) +* [Deploy the quantized model Using Paddle Inference on Intel CPU](https://paddle-inference.readthedocs.io/en/latest/optimize/paddle_x86_cpu_int8.html) +* [Deploy the quantized model Using Paddle Inference on Nvidia GPU](https://paddle-inference.readthedocs.io/en/latest/optimize/paddle_trt.html) diff --git a/examples/Cpp/low_precision/resnet50/README_CN.md b/examples/Cpp/low_precision/resnet50/README_CN.md new file mode 100644 index 00000000..648b64dd --- /dev/null +++ b/examples/Cpp/low_precision/resnet50/README_CN.md @@ -0,0 +1,27 @@ +# resnet50 int8示例 +(简体中文|[English](./README.md)) + +## 通过PaddleSlim量化生成低精度模型 +详细见[PaddleSlim量化](https://paddleslim.readthedocs.io/zh_CN/latest/tutorials/quant/overview.html) + +## 使用TensorRT int8加载PaddleSlim Int8量化模型进行部署 +首先下载Resnet50 [PaddleSlim量化模型](https://paddle-inference-dist.bj.bcebos.com/inference_demo/python/resnet50/ResNet50_quant.tar.gz),并转换为Paddle Serving支持的部署模型格式。 +``` +wget https://paddle-inference-dist.bj.bcebos.com/inference_demo/python/resnet50/ResNet50_quant.tar.gz +tar zxvf ResNet50_quant.tar.gz + +python3 -m paddle_serving_client.convert --dirname ResNet50_quant +``` +启动rpc服务, 设定所选GPU id、部署模型精度 +``` +python3 -m paddle_serving_server.serve --model serving_server --port 9393 --gpu_ids 0 --use_trt --precision int8 +``` +使用client进行请求 +``` +python3 resnet50_client.py +``` + +## 参考文档 +* [PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim) +* PaddleInference Intel CPU部署量化模型[文档](https://paddle-inference.readthedocs.io/en/latest/optimize/paddle_x86_cpu_int8.html) +* PaddleInference NV GPU部署量化模型[文档](https://paddle-inference.readthedocs.io/en/latest/optimize/paddle_trt.html) diff --git a/examples/Cpp/low_precision/resnet50/daisy.jpg b/examples/Cpp/low_precision/resnet50/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Cpp/low_precision/resnet50/resnet50_client.py b/examples/Cpp/low_precision/resnet50/resnet50_client.py new file mode 100644 index 00000000..5d7b3124 --- /dev/null +++ b/examples/Cpp/low_precision/resnet50/resnet50_client.py @@ -0,0 +1,32 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize + +client = Client() +client.load_client_config( + "serving_client/serving_client_conf.prototxt") +client.connect(["127.0.0.1:9393"]) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = client.predict(feed={"image": img}, fetch=["save_infer_model/scale_0.tmp_0"]) +print(fetch_map["save_infer_model/scale_0.tmp_0"].reshape(-1)) diff --git a/examples/Cpp/util/README.md b/examples/Cpp/util/README.md new file mode 100644 index 00000000..0f6782ab --- /dev/null +++ b/examples/Cpp/util/README.md @@ -0,0 +1,31 @@ +## Timeline Tool Tutorial + +([简体中文](./README_CN.md)|English) + +The serving framework has a built-in function for predicting the timing of each stage of the service. The client controls whether to turn on the environment through environment variables. After opening, the information will be output to the screen. +``` +export FLAGS_profile_client=1 #turn on the client timing tool for each stage +export FLAGS_profile_server=1 #turn on the server timing tool for each stage +``` +After enabling this function, the client will print the corresponding log information to standard output during the prediction process. + +In order to show the time consuming of each stage more intuitively, a script is provided to further analyze and process the log file. + +When using, first save the output of the client to a file, taking `profile` as an example. +``` +python3 show_profile.py profile ${thread_num} +``` +Here the `thread_num` parameter is the number of processes when the client is running, and the script will calculate the average time spent in each phase according to this parameter. + +The script calculates the time spent in each stage, divides by the number of threads to average, and prints to standard output. + +``` +python3 timeline_trace.py profile trace +``` +The script converts the time-dot information in the log into a json format and saves it to a trace file. The trace file can be visualized through the tracing function of the Chrome browser. + +Specific operation: Open the chrome browser, enter `chrome://tracing/` in the address bar, jump to the tracing page, click the `load` button, and open the saved trace file to visualize the time information of each stage of the prediction service. + +The data visualization output is shown as follow, it uses [bert as service example](https://github.com/PaddlePaddle/Serving/tree/develop/python/examples/bert) GPU inference service. The server starts 4 GPU prediction, the client starts 4 `processes`, and the timeline of each stage when the batch size is 1. Among them, `bert_pre` represents the data preprocessing stage of the client, and `client_infer` represents the stage where the client completes sending and receiving prediction requests. `process` represents the process number of the client, and the second line of each process shows the timeline of each op of the server. + +![timeline](../../../doc/images/timeline-example.png) diff --git a/examples/Cpp/util/README_CN.md b/examples/Cpp/util/README_CN.md new file mode 100644 index 00000000..e12b4cc1 --- /dev/null +++ b/examples/Cpp/util/README_CN.md @@ -0,0 +1,31 @@ +## Timeline工具使用 + +(简体中文|[English](./README.md)) + +serving框架中内置了预测服务中各阶段时间打点的功能,在client端通过环境变量来控制是否开启,开启后会将打点信息输出到屏幕。 +``` +export FLAGS_profile_client=1 #开启client端各阶段时间打点 +export FLAGS_profile_server=1 #开启server端各阶段时间打点 +``` +开启该功能后,client端在预测的过程中会将对应的日志信息打印到标准输出。 + +为了更直观地展现各阶段的耗时,提供脚本对日志文件做进一步的分析处理。 + +使用时先将client的输出保存到文件,以profile为例。 +``` +python3 show_profile.py profile ${thread_num} +``` +这里thread_num参数为client运行时的进程数,脚本将按照这个参数来计算各阶段的平均耗时。 + +脚本将计算各阶段的耗时,并除以线程数做平均,打印到标准输出。 + +``` +python3 timeline_trace.py profile trace +``` +脚本将日志中的时间打点信息转换成json格式保存到trace文件,trace文件可以通过chrome浏览器的tracing功能进行可视化。 + +具体操作:打开chrome浏览器,在地址栏输入chrome://tracing/,跳转至tracing页面,点击load按钮,打开保存的trace文件,即可将预测服务的各阶段时间信息可视化。 + +效果如下图,图中展示了使用[bert示例](https://github.com/PaddlePaddle/Serving/tree/develop/python/examples/bert)的GPU预测服务,server端开启4卡预测,client端启动4进程,batch size为1时的各阶段timeline,其中bert_pre代表client端的数据预处理阶段,client_infer代表client完成预测请求的发送和接收结果的阶段,图中的process代表的是client的进程号,每个进进程的第二行展示的是server各个op的timeline。 + +![timeline](../../../doc/images/timeline-example.png) diff --git a/examples/Cpp/util/get_acc.py b/examples/Cpp/util/get_acc.py new file mode 100644 index 00000000..91796478 --- /dev/null +++ b/examples/Cpp/util/get_acc.py @@ -0,0 +1,28 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import sys +import os + +total = 0 +acc = 0 +for line in sys.stdin: + line = line.strip() + group = line.split() + if (float(group[0]) - 0.5) * (float(group[1]) - 0.5) > 0: + acc += 1 + total += 1 + +print(float(acc) / float(total)) diff --git a/examples/Cpp/util/show_profile.py b/examples/Cpp/util/show_profile.py new file mode 100644 index 00000000..a726e765 --- /dev/null +++ b/examples/Cpp/util/show_profile.py @@ -0,0 +1,41 @@ +#coding=utf-8 +import sys +import collections + +profile_file = sys.argv[1] +thread_num = sys.argv[2] +time_dict = collections.OrderedDict() +query_count = 0 + + +def prase(line): + profile_list = line.split(" ") + num = len(profile_list) + for idx in range(int(num / 2)): + profile_0_list = profile_list[idx * 2].split(":") + profile_1_list = profile_list[idx * 2 + 1].split(":") + if len(profile_0_list[0].split("_")) == 2: + name = profile_0_list[0].split("_")[0] + else: + name = profile_0_list[0].split("_")[0] + "_" + profile_0_list[ + 0].split("_")[1] + cost = int(profile_1_list[1]) - int(profile_0_list[1]) + if name not in time_dict: + time_dict[name] = cost + else: + time_dict[name] += cost + + +with open(profile_file) as f: + query_count = 0 + for line in f.readlines(): + line = line.strip().split("\t") + if line[0] == "PROFILE": + prase(line[2]) + query_count += 1 + +print("thread_num: {}".format(thread_num)) +print("query_count: {}".format(query_count)) +for name in time_dict: + print("{} cost: {}s in each thread ".format(name, time_dict[name] / ( + 1000000.0 * float(thread_num)))) diff --git a/examples/Cpp/util/timeline_trace.py b/examples/Cpp/util/timeline_trace.py new file mode 100644 index 00000000..f1273ab6 --- /dev/null +++ b/examples/Cpp/util/timeline_trace.py @@ -0,0 +1,55 @@ +#coding=utf-8 +import json +import sys + +profile_file = sys.argv[1] + + +def prase(pid_str, time_str, counter): + pid = pid_str.split(":")[1] + event_list = time_str.split(" ") + trace_list = [] + for event in event_list: + name, ts = event.split(":") + name_list = name.split("_") + ph = "B" if (name_list[-1] == "0") else "E" + if len(name_list) == 2: + name = name_list[0] + else: + name = "_".join(name_list[:-1]) + name_list = name.split("#") + if len(name_list) > 1: + tid = name_list[-1] + name = "#".join(name_list[:-1]) + else: + tid = 0 + event_dict = {} + event_dict["name"] = name + event_dict["tid"] = tid + event_dict["pid"] = pid + event_dict["ts"] = ts + event_dict["ph"] = ph + + trace_list.append(event_dict) + return trace_list + + +if __name__ == "__main__": + profile_file = sys.argv[1] + trace_file = sys.argv[2] + all_list = [] + counter = 0 + with open(profile_file) as f: + for line in f.readlines(): + line = line.strip().split("\t") + if line[0] == "PROFILE": + if len(line) < 2: + continue + trace_list = prase(line[1], line[2], counter) + counter += 1 + for trace in trace_list: + all_list.append(trace) + + trace = json.dumps(all_list, indent=2, separators=(',', ':')) + with open(trace_file, "w") as f: + f.write(trace) diff --git a/examples/Cpp/xpu/bert/README.md b/examples/Cpp/xpu/bert/README.md new file mode 100644 index 00000000..676ac361 --- /dev/null +++ b/examples/Cpp/xpu/bert/README.md @@ -0,0 +1,36 @@ + +## Prepare +### download model and extract +``` +wget https://paddle-inference-dist.cdn.bcebos.com/PaddleLite/models_and_data_for_unittests/bert_base_chinese.tar.gz +tar zxvf bert_base_chinese.tar.gz +``` +### convert model +``` +python3 -m paddle_serving_client.convert --dirname bert_base_chinese --model_filename bert_base_chinese/model.pdmodel --params_filename bert_base_chinese/model.pdiparams +``` +### or, you can get the serving saved model directly +``` +wget https://paddle-serving.bj.bcebos.com/models/xpu/bert.tar.gz +tar zxvf bert.tar.gz +``` +### Getting Dict and Sample Dataset + +``` +sh get_data.sh +``` +this script will download Chinese Dictionary File vocab.txt and Chinese Sample Data data-c.txt + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model serving_server --port 7703 --use_lite --use_xpu --ir_optim +``` + +### Client Prediction + +``` +head data-c.txt | python3 bert_client.py --model serving_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/xpu/bert/bert_client.py b/examples/Cpp/xpu/bert/bert_client.py new file mode 100644 index 00000000..db10425b --- /dev/null +++ b/examples/Cpp/xpu/bert/bert_client.py @@ -0,0 +1,37 @@ +# coding:utf-8 +# pylint: disable=doc-string-missing +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from paddle_serving_client import Client +from paddle_serving_client.utils import benchmark_args +from chinese_bert_reader import ChineseBertReader +import numpy as np +args = benchmark_args() + +reader = ChineseBertReader({"max_seq_len": 128}) +fetch = ["save_infer_model/scale_0.tmp_1"] +endpoint_list = ['127.0.0.1:7703'] +client = Client() +client.load_client_config(args.model) +client.connect(endpoint_list) + +for line in sys.stdin: + feed_dict = reader.process(line) + for key in feed_dict.keys(): + feed_dict[key] = np.array(feed_dict[key]).reshape((1, 128)) + #print(feed_dict) + result = client.predict(feed=feed_dict, fetch=fetch, batch=True) +print(result) diff --git a/examples/Cpp/xpu/bert/chinese_bert_reader.py b/examples/Cpp/xpu/bert/chinese_bert_reader.py new file mode 100644 index 00000000..133cc088 --- /dev/null +++ b/examples/Cpp/xpu/bert/chinese_bert_reader.py @@ -0,0 +1,123 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# coding=utf-8 +from paddle_serving_app.reader.bert_base_reader import BertBaseReader +from paddle_serving_app.reader.batching import pad_batch_data +from paddle_serving_app.reader.tokenization import FullTokenizer, convert_to_unicode + + +class ChineseBertReader(BertBaseReader): + """ + ChineseBertReader handles the most traditional Chinese Bert + preprocessing, a user can define the vocab file through initialization + + Examples: + from paddle_serving_app import ChineseBertReader + + line = ["this is China"] + reader = ChineseBertReader() + reader.process(line[0]) + + """ + + def __init__(self, args={}): + super(ChineseBertReader, self).__init__() + vocab_file = "" + if "vocab_file" in args: + vocab_file = args["vocab_file"] + else: + vocab_file = self._download_or_not() + + self.tokenizer = FullTokenizer(vocab_file=vocab_file) + if "max_seq_len" in args: + self.max_seq_len = args["max_seq_len"] + else: + self.max_seq_len = 20 + self.vocab = self.tokenizer.vocab + self.pad_id = self.vocab["[PAD]"] + self.cls_id = self.vocab["[CLS]"] + self.sep_id = self.vocab["[SEP]"] + self.mask_id = self.vocab["[MASK]"] + self.feed_keys = [ + "input_ids", "token_type_ids" + ] + + """ + inner function + """ + + def _download_or_not(self): + import os + import paddle_serving_app + module_path = os.path.dirname(paddle_serving_app.__file__) + full_path = "{}/tmp/chinese_bert".format(module_path) + os.system("mkdir -p {}".format(full_path)) + if os.path.exists("{}/vocab.txt".format(full_path)): + pass + else: + url = "https://paddle-serving.bj.bcebos.com/reader/chinese_bert/vocab.txt" + r = os.system("wget --no-check-certificate " + url) + os.system("mv vocab.txt {}".format(full_path)) + if r != 0: + raise SystemExit('Download failed, please check your network') + return "{}/vocab.txt".format(full_path) + + """ + inner function + """ + + def _pad_batch(self, token_ids, text_type_ids): + batch_token_ids = [token_ids] + batch_text_type_ids = [text_type_ids] + + padded_token_ids, input_mask = pad_batch_data( + batch_token_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id, + return_input_mask=True) + padded_text_type_ids = pad_batch_data( + batch_text_type_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id) + return padded_token_ids, padded_text_type_ids + + """ + process function deals with a raw Chinese string as a sentence + this funtion returns a feed_dict + default key of the returned feed_dict: input_ids, position_ids, segment_ids, input_mask + """ + + def process(self, line): + text_a = convert_to_unicode(line) + tokens_a = self.tokenizer.tokenize(text_a) + if len(tokens_a) > self.max_seq_len - 2: + tokens_a = tokens_a[0:(self.max_seq_len - 2)] + tokens = [] + text_type_ids = [] + tokens.append("[CLS]") + text_type_ids.append(0) + for token in tokens_a: + tokens.append(token) + text_type_ids.append(0) + token_ids = self.tokenizer.convert_tokens_to_ids(tokens) + #position_ids = list(range(len(token_ids))) + p_token_ids, p_text_type_ids= \ + self._pad_batch(token_ids, text_type_ids) + feed_result = { + self.feed_keys[0]: p_token_ids.reshape(-1).tolist(), + #self.feed_keys[1]: p_pos_ids.reshape(-1).tolist(), + self.feed_keys[1]: p_text_type_ids.reshape(-1).tolist(), + #self.feed_keys[3]: input_mask.reshape(-1).tolist() + } + return feed_result diff --git a/examples/Cpp/xpu/bert/get_data.sh b/examples/Cpp/xpu/bert/get_data.sh new file mode 100644 index 00000000..5e17d10d --- /dev/null +++ b/examples/Cpp/xpu/bert/get_data.sh @@ -0,0 +1,2 @@ +wget https://paddle-serving.bj.bcebos.com/bert_example/data-c.txt --no-check-certificate +wget https://paddle-serving.bj.bcebos.com/bert_example/vocab.txt --no-check-certificate diff --git a/examples/Cpp/xpu/ernie/README.md b/examples/Cpp/xpu/ernie/README.md new file mode 100644 index 00000000..ef001e80 --- /dev/null +++ b/examples/Cpp/xpu/ernie/README.md @@ -0,0 +1,36 @@ + +## Prepare +### download model and extract +``` +wget https://paddle-inference-dist.cdn.bcebos.com/PaddleLite/models_and_data_for_unittests/ernie.tar.gz +tar zxvf ernie.tar.gz +``` +### convert model +``` +python3 -m paddle_serving_client.convert --dirname ernie +``` +### or, you can get the serving saved model directly +``` +wget https://paddle-serving.bj.bcebos.com/models/xpu/ernie.tar.gz +tar zxvf ernie.tar.gz +``` +### Getting Dict and Sample Dataset + +``` +sh get_data.sh +``` +this script will download Chinese Dictionary File vocab.txt and Chinese Sample Data data-c.txt + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model serving_server --port 7704 --use_lite --use_xpu --ir_optim +``` + +### Client Prediction + +``` +head data-c.txt | python3 ernie_client.py --model serving_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/xpu/ernie/chinese_ernie_reader.py b/examples/Cpp/xpu/ernie/chinese_ernie_reader.py new file mode 100644 index 00000000..13e6aa67 --- /dev/null +++ b/examples/Cpp/xpu/ernie/chinese_ernie_reader.py @@ -0,0 +1,130 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# coding=utf-8 +from paddle_serving_app.reader.bert_base_reader import BertBaseReader +from paddle_serving_app.reader.batching import pad_batch_data +from paddle_serving_app.reader.tokenization import FullTokenizer, convert_to_unicode + + +class ChineseErnieReader(BertBaseReader): + """ + ChineseErnieReader handles the most traditional Chinese Bert + preprocessing, a user can define the vocab file through initialization + + Examples: + from paddle_serving_app import ChineseErnieReader + + line = ["this is China"] + reader = ChineseErnieReader() + reader.process(line[0]) + + """ + + def __init__(self, args={}): + super(ChineseErnieReader, self).__init__() + vocab_file = "" + if "vocab_file" in args: + vocab_file = args["vocab_file"] + print("vocab") + else: + vocab_file = self._download_or_not() + + self.tokenizer = FullTokenizer(vocab_file=vocab_file) + print(self.tokenizer) + if "max_seq_len" in args: + self.max_seq_len = args["max_seq_len"] + else: + self.max_seq_len = 20 + self.vocab = self.tokenizer.vocab + self.pad_id = self.vocab["[PAD]"] + self.cls_id = self.vocab["[CLS]"] + self.sep_id = self.vocab["[SEP]"] + self.mask_id = self.vocab["[MASK]"] + self.feed_keys = [ + "placeholder_0", "placeholder_1", "placeholder_2", "placeholder_3" + ] + + """ + inner function + """ + + def _download_or_not(self): + import os + import paddle_serving_app + module_path = os.path.dirname(paddle_serving_app.__file__) + full_path = "{}/tmp/chinese_bert".format(module_path) + os.system("mkdir -p {}".format(full_path)) + if os.path.exists("{}/vocab.txt".format(full_path)): + pass + else: + url = "https://paddle-serving.bj.bcebos.com/reader/chinese_bert/vocab.txt" + r = os.system("wget --no-check-certificate " + url) + os.system("mv vocab.txt {}".format(full_path)) + if r != 0: + raise SystemExit('Download failed, please check your network') + return "{}/vocab.txt".format(full_path) + + """ + inner function + """ + + def _pad_batch(self, token_ids, text_type_ids, position_ids): + batch_token_ids = [token_ids] + batch_text_type_ids = [text_type_ids] + batch_position_ids = [position_ids] + + padded_token_ids, input_mask = pad_batch_data( + batch_token_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id, + return_input_mask=True) + padded_text_type_ids = pad_batch_data( + batch_text_type_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id) + padded_position_ids = pad_batch_data( + batch_position_ids, + max_seq_len=self.max_seq_len, + pad_idx=self.pad_id) + return padded_token_ids, padded_position_ids, padded_text_type_ids, input_mask + + """ + process function deals with a raw Chinese string as a sentence + this funtion returns a feed_dict + default key of the returned feed_dict: input_ids, position_ids, segment_ids, input_mask + """ + + def process(self, line): + text_a = convert_to_unicode(line) + tokens_a = self.tokenizer.tokenize(text_a) + if len(tokens_a) > self.max_seq_len - 2: + tokens_a = tokens_a[0:(self.max_seq_len - 2)] + tokens = [] + text_type_ids = [] + tokens.append("[CLS]") + text_type_ids.append(0) + for token in tokens_a: + tokens.append(token) + text_type_ids.append(0) + token_ids = self.tokenizer.convert_tokens_to_ids(tokens) + position_ids = list(range(len(token_ids))) + p_token_ids, p_pos_ids, p_text_type_ids, input_mask = \ + self._pad_batch(token_ids, text_type_ids, position_ids) + feed_result = { + self.feed_keys[0]: p_token_ids.reshape(-1).tolist(), + self.feed_keys[1]: p_pos_ids.reshape(-1).tolist(), + self.feed_keys[2]: p_text_type_ids.reshape(-1).tolist(), + self.feed_keys[3]: input_mask.reshape(-1).tolist() + } + return feed_result diff --git a/examples/Cpp/xpu/ernie/ernie_client.py b/examples/Cpp/xpu/ernie/ernie_client.py new file mode 100644 index 00000000..b02c9d0a --- /dev/null +++ b/examples/Cpp/xpu/ernie/ernie_client.py @@ -0,0 +1,37 @@ +# coding:utf-8 +# pylint: disable=doc-string-missing +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +from paddle_serving_client import Client +from paddle_serving_client.utils import benchmark_args +from chinese_ernie_reader import ChineseErnieReader +import numpy as np +args = benchmark_args() + +reader = ChineseErnieReader({"max_seq_len": 128}) +fetch = ["save_infer_model/scale_0"] +endpoint_list = ['127.0.0.1:7704'] +client = Client() +client.load_client_config(args.model) +client.connect(endpoint_list) + +for line in sys.stdin: + feed_dict = reader.process(line) + for key in feed_dict.keys(): + feed_dict[key] = np.array(feed_dict[key]).reshape((128, 1)) + # print(feed_dict) + result = client.predict(feed=feed_dict, fetch=fetch, batch=False) + print(result) diff --git a/examples/Cpp/xpu/ernie/get_data.sh b/examples/Cpp/xpu/ernie/get_data.sh new file mode 100644 index 00000000..5e17d10d --- /dev/null +++ b/examples/Cpp/xpu/ernie/get_data.sh @@ -0,0 +1,2 @@ +wget https://paddle-serving.bj.bcebos.com/bert_example/data-c.txt --no-check-certificate +wget https://paddle-serving.bj.bcebos.com/bert_example/vocab.txt --no-check-certificate diff --git a/examples/Cpp/xpu/fit_a_line_xpu/README.md b/examples/Cpp/xpu/fit_a_line_xpu/README.md new file mode 100755 index 00000000..2640344d --- /dev/null +++ b/examples/Cpp/xpu/fit_a_line_xpu/README.md @@ -0,0 +1,25 @@ +# Fit a line prediction example + +([简体中文](./README_CN.md)|English) + +## Get data + +```shell +sh get_data.sh +``` + +## RPC service + +### Start server +You can use the following code to start the RPC service +```shell +python3 -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9393 --use_lite --use_xpu --ir_optim +``` + +### Client prediction + +The `paddlepaddle` package is used in `test_client.py`, and you may need to download the corresponding package(`pip3 install paddlepaddle`). + +``` shell +python3 test_client.py uci_housing_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/xpu/fit_a_line_xpu/README_CN.md b/examples/Cpp/xpu/fit_a_line_xpu/README_CN.md new file mode 100755 index 00000000..268acf5a --- /dev/null +++ b/examples/Cpp/xpu/fit_a_line_xpu/README_CN.md @@ -0,0 +1,33 @@ +# 线性回归预测服务示例 + +(简体中文|[English](./README.md)) + +## 获取数据 + +```shell +sh get_data.sh +``` + + + +## RPC服务 + +### 开启服务端 + +``` shell +python3 test_server.py uci_housing_model/ +``` + +也可以通过下面的一行代码开启默认RPC服务: + +```shell +python3 -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9393 --use_lite --use_xpu --ir_optim +``` + +### 客户端预测 + +`test_client.py`中使用了`paddlepaddle`包,需要进行下载(`pip3 install paddlepaddle`)。 + +``` shell +python3 test_client.py uci_housing_client/serving_client_conf.prototxt +``` diff --git a/examples/Cpp/xpu/fit_a_line_xpu/benchmark.py b/examples/Cpp/xpu/fit_a_line_xpu/benchmark.py new file mode 100644 index 00000000..0ddda2a0 --- /dev/null +++ b/examples/Cpp/xpu/fit_a_line_xpu/benchmark.py @@ -0,0 +1,57 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args +import time +import paddle +import sys +import requests + +args = benchmark_args() + + +def single_func(idx, resource): + if args.request == "rpc": + client = Client() + client.load_client_config(args.model) + client.connect([args.endpoint]) + train_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=1) + start = time.time() + for data in train_reader(): + fetch_map = client.predict(feed={"x": data[0][0]}, fetch=["price"]) + end = time.time() + return [[end - start]] + elif args.request == "http": + train_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=1) + start = time.time() + for data in train_reader(): + r = requests.post( + 'http://{}/uci/prediction'.format(args.endpoint), + data={"x": data[0]}) + end = time.time() + return [[end - start]] + + +multi_thread_runner = MultiThreadRunner() +result = multi_thread_runner.run(single_func, args.thread, {}) +print(result) diff --git a/examples/Cpp/xpu/fit_a_line_xpu/get_data.sh b/examples/Cpp/xpu/fit_a_line_xpu/get_data.sh new file mode 100644 index 00000000..84a3966a --- /dev/null +++ b/examples/Cpp/xpu/fit_a_line_xpu/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar.gz +tar -xzf uci_housing.tar.gz diff --git a/examples/Cpp/xpu/fit_a_line_xpu/local_train.py b/examples/Cpp/xpu/fit_a_line_xpu/local_train.py new file mode 100644 index 00000000..3e0f8880 --- /dev/null +++ b/examples/Cpp/xpu/fit_a_line_xpu/local_train.py @@ -0,0 +1,53 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +import sys +import paddle +import paddle.fluid as fluid +paddle.enable_static() +train_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=16) + +test_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=16) + +x = fluid.data(name='x', shape=[None, 13], dtype='float32') +y = fluid.data(name='y', shape=[None, 1], dtype='float32') + +y_predict = fluid.layers.fc(input=x, size=1, act=None) +cost = fluid.layers.square_error_cost(input=y_predict, label=y) +avg_loss = fluid.layers.mean(cost) +sgd_optimizer = fluid.optimizer.SGD(learning_rate=0.01) +sgd_optimizer.minimize(avg_loss) + +place = fluid.CPUPlace() +feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) +exe = fluid.Executor(place) +exe.run(fluid.default_startup_program()) + +import paddle_serving_client.io as serving_io + +for pass_id in range(30): + for data_train in train_reader(): + avg_loss_value, = exe.run(fluid.default_main_program(), + feed=feeder.feed(data_train), + fetch_list=[avg_loss]) + +serving_io.save_model("uci_housing_model", "uci_housing_client", {"x": x}, + {"price": y_predict}, fluid.default_main_program()) diff --git a/examples/Cpp/xpu/fit_a_line_xpu/test_client.py b/examples/Cpp/xpu/fit_a_line_xpu/test_client.py new file mode 100644 index 00000000..c480e81c --- /dev/null +++ b/examples/Cpp/xpu/fit_a_line_xpu/test_client.py @@ -0,0 +1,35 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing + +from paddle_serving_client import Client +import sys +import numpy as np + +client = Client() +client.load_client_config(sys.argv[1]) +client.connect(["127.0.0.1:9393"]) + +import paddle +test_reader = paddle.batch( + paddle.reader.shuffle( + paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=1) + +for data in test_reader(): + new_data = np.zeros((1, 1, 13)).astype("float32") + new_data[0] = data[0][0] + fetch_map = client.predict( + feed={"x": new_data}, fetch=["price"], batch=True) + print(fetch_map) diff --git a/examples/Cpp/xpu/resnet_v2_50_xpu/README.md b/examples/Cpp/xpu/resnet_v2_50_xpu/README.md new file mode 100644 index 00000000..76b04d614 --- /dev/null +++ b/examples/Cpp/xpu/resnet_v2_50_xpu/README.md @@ -0,0 +1,22 @@ +# Image Classification + +## Get Model + +``` +python3 -m paddle_serving_app.package --get_model resnet_v2_50_imagenet +tar -xzvf resnet_v2_50_imagenet.tar.gz +``` + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model resnet_v2_50_imagenet_model --port 9393 --use_lite --use_xpu --ir_optim +``` + +### Client Prediction + +``` +python3 resnet50_client.py +``` diff --git a/examples/Cpp/xpu/resnet_v2_50_xpu/README_CN.md b/examples/Cpp/xpu/resnet_v2_50_xpu/README_CN.md new file mode 100644 index 00000000..652c4f67 --- /dev/null +++ b/examples/Cpp/xpu/resnet_v2_50_xpu/README_CN.md @@ -0,0 +1,22 @@ +# 图像分类 + +## 获取模型 + +``` +python3 -m paddle_serving_app.package --get_model resnet_v2_50_imagenet +tar -xzvf resnet_v2_50_imagenet.tar.gz +``` + +## RPC 服务 + +### 启动服务端 + +``` +python3 -m paddle_serving_server.serve --model resnet_v2_50_imagenet_model --port 9393 --use_lite --use_xpu --ir_optim +``` + +### 客户端预测 + +``` +python3 resnet50_client.py +``` diff --git a/examples/Cpp/xpu/resnet_v2_50_xpu/daisy.jpg b/examples/Cpp/xpu/resnet_v2_50_xpu/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Cpp/xpu/resnet_v2_50_xpu/localpredict.py b/examples/Cpp/xpu/resnet_v2_50_xpu/localpredict.py new file mode 100644 index 00000000..2e76098e --- /dev/null +++ b/examples/Cpp/xpu/resnet_v2_50_xpu/localpredict.py @@ -0,0 +1,31 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize +from paddle_serving_app.local_predict import LocalPredictor +import sys + +predictor = LocalPredictor() +predictor.load_model_config(sys.argv[1], use_lite=True, use_xpu=True, ir_optim=True) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = predictor.predict(feed={"image": img}, fetch=["score"]) +print(fetch_map["score"].reshape(-1)) diff --git a/examples/Cpp/xpu/resnet_v2_50_xpu/resnet50_client.py b/examples/Cpp/xpu/resnet_v2_50_xpu/resnet50_client.py new file mode 100644 index 00000000..b249d2a6 --- /dev/null +++ b/examples/Cpp/xpu/resnet_v2_50_xpu/resnet50_client.py @@ -0,0 +1,32 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize + +client = Client() +client.load_client_config( + "resnet_v2_50_imagenet_client/serving_client_conf.prototxt") +client.connect(["127.0.0.1:9393"]) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = client.predict(feed={"image": img}, fetch=["score"]) +print(fetch_map["score"].reshape(-1)) diff --git a/examples/Cpp/xpu/vgg19/README.md b/examples/Cpp/xpu/vgg19/README.md new file mode 100644 index 00000000..d8520684 --- /dev/null +++ b/examples/Cpp/xpu/vgg19/README.md @@ -0,0 +1,30 @@ + +## Prepare +### download model and extract +``` +wget https://paddle-inference-dist.bj.bcebos.com/PaddleLite/models_and_data_for_unittests/VGG19.tar.gz +tar zxvf VGG19.tar.gz +``` +### convert model +``` +python3 -m paddle_serving_client.convert --dirname VGG19 +``` +### or, you can get the serving saved model directly +``` +wget https://paddle-serving.bj.bcebos.com/models/xpu/vgg19.tar.gz +tar zxvf vgg19.tar.gz +``` + +## RPC Service + +### Start Service + +``` +python3 -m paddle_serving_server.serve --model serving_server --port 7702 --use_lite --use_xpu --ir_optim +``` + +### Client Prediction + +``` +python3 vgg19_client.py +``` diff --git a/examples/Cpp/xpu/vgg19/daisy.jpg b/examples/Cpp/xpu/vgg19/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 zcmb4qRa9I}(Cy$u&>=vO!3US%FgU^8T>`;mHi?MmxWj zgyCK9G#`)@BD2NFuj3JRE+88YFSwA?t$P+k`Ai1J{}|@~3BtsBt`qe zQWKgje+xzTlNXedwxj@_CrJ@Xq5DZm0Rds$Nud!|aA1!VEsz$pMQ07{Ba=_sWB^(M z2<@c{Wq?c{f#3VMiGa^-82V5#LHQA=Z~iO&q&zHu-+`8N*8CRqyQxHAGI?koD*v?g zvnX^+Oyb^o7TPeG6jV)FP{i~wKjv_s7%godzcd93U_Uj6LYkN;Oi>w#fx-dVV)0b7 zhuQZ*DlPdvEF<#ZL@OaDQK=wHGASrAsJ&Ot2!e!`tGpuMy{fq%U4xKv@XhHjogis0qv_xssmL8TSlL7XqpbVq( zbH{l|L2-aR(qxK8cz_V#_Z|;)OI+G?jHEv9kBnOapXg{&#b`r3o(W=v5GG+OS^`2C zWPlKGEI4_KP+5%-pb!Cy2>Y*3hzxqUV9o?Xl=0ijq=^ zUc3wY53{PKJP6%i&7L(1S{x6@;_qOJ&}8XTQ~@V}Gc8%mSY4gkulB4!n6rRC6kXLd~SjY>_Z*qiLke% zkVbvBG73N$7@~|q8^RzLkrz^jZtpGs3@M%zlpi`01&WZSCIW}cgDfeWfcDc2QY_r5 zL~k@tLgdgL=vW{iX)+~cDIXaXY!nuz29Pu-EhGB(T}@>S2zn(g_!ICP4lRxdPgYV> zqGUuT^TmRPk^KhJat?|2J==pboPh3`;T{FlVeT+spDRWZ0}3uJD&4T34A2r6LTd?# zd-lCyfDG`C0fly#Hl7T4y~hs)kjp4*lF4Igl5Pnrggiq`@*q@rc1-l}q?&k&XY1mk zqw=(AIy(Kw6AJqq3Rp-T5jWwp&)`c(fbx=dds0CRKno}V(DK>mJqY*XpKS_!HmFz; zl$!yZ1pNMN9CWEdApY=s?PLbEo;pArEuoZ;9C{u+%n)C$5SxyLR+Ju*`r_G>ap>XC z4o&%}V~j7?JW;b>eY#+)5l+j@>LUS$H`FP#Gf*_L;9;;Z$qE4kF}hDnEqD?r+v#>*{xDadqNCU=CG{UQd8y zsZG%kL=>}xe2phFPV3zHx>!8zAi=cl8JOTzEF`AQEc*nRn5^dUk#XmCD{J)wf&8(4 z21+g*$3ek9os6PyEqRHyT-<8PX1+K&_;sNDDL7TDB;3Smi_ zij06LBGNY~&z}`LkOx~HbR>`Z27oO^kGHOpUy##Qz!u<_%Reio0Cpz#TvG>NR~6Ou zrMLkTP?XOn`NG=YzIX!EUj*?g4g5}wAF|)fPqJzE^!#{mC}^U8PqCTkZ6jK_+gddg zztf?(vzFvvITln!m`-X`X7I61<#qVjH)I|C{JQYx$K0b0%95?oKZ6%7#g!t6UsC71 z5_#3)fwiU_BwzDewN+HKC&oSSty&oD2sA4ley6>?kqCaV5>L|L$=GWYVP$PiOHxp7 zX~ohbO(8vO!9Gd7d4E9Mxjp5AD613>3df6&uJ!MkLJ9<)v@ic`S=oX74%lg!0qt}m zG3~w#xQGj`<%G|Dm7mt0SuM*iCu{LT^Y2G{LO+C#L_P@I_@^a;Pm zx|iH2sjy=IdC2PU$y>xQCave6=6cs{U;a+F&7wLsYSHk@PtT9`S)*v z&j7)8?3i~+>WG_F_*P}9pLGCLi-XwO)^Laj{;_pVk6(T~V_H+jRx8?o-&~;U#=OhF zwm7C;%YRYVD=VIOEawd!YA5#}Ta-zsyz*w%Pdof_AaT?K2@3o52>06kN&{ zY-W>z1@tX4`50mBP_kzR0rFwk`KTyl(zJPf+%Xg=!+uhl}sVRbUN?5 z2bsJOONcxQYhjWlJ1a|{^qW5Z5bZFO;hJKT!ix%eTfUSLS<0%{z-d9HfyuS-=7Ojr zmvHMjxk*Q6xvif(+%-po>*-xl5j`Z{@u$`<_=EaUtYoPBl_}0gv@O)uGNsu218W|t zF)P_b3CFZy%09`%EIQgkZ0@PPs>A02B_j!m)^q?$0HL~w)QcBg`>KBZK)fXRSH(Hb zq=YCG*f_L(07i5_MWdGym2?q=q*94M^yl>qk{9(nSBC$$9HLkYMlQS$F`}#97HQ9( zn17H!*|JLtiimpzNP3U-^q3VsesQGSdAm9FSx&U)dMs?}(!)uEDV~NnWloN-`2{Att=J+G){>h;AU+L|Br!C9lVnwp@RfQdXMHx8?lZ2SZj5=?j9oNN|72;i6Ihwkl4bjDtzlLak}qR=Xgm<} zkiX8x2U^}rGvEdAwSDgzL-RcYi)heaWAQr)R#&#yW* zrYuvDIP2_^P$<=X*<9s$!3N5ZX9Si6;nm0ZOiC;3)ip69&n9R=;O}-UuX)`}OR6Th z8VGT%G_1gjgs{%f#vwuR2k&C|IB40waOE|YXt;2cvSRqUjPOO7`B?y8yVBWg^B6{e z{%0lvO@9vNrgqvkm{SE}ZNfQK7j3a$!r?^;>#q%;Tz~)5=#siWMt2eiX zf5=7$}8#tLzQ+*qY%J}Nq3A;);mVkDXUElYZr z^;ZS_8u!s^P-!BURad5-0O>J8J4o?dbkFCwU5ApIyY5c~#5HEX^Ojxr=c=ELi5KVz z;4qG=sl&x@i;!vJ*5#RSlshw$S55iU54JZpr>G>J5vX3`IKi9Sb5IBNzMx##3meR8 z=hy8Aaq-;;Z~m3LXo&`CZoqUh%=1w&IH*nWa+Ba@sDfW(5bFi z#tWZ@=$nqRJnuGgNDq0jrJp7{YTMZux)DR~*t2jTT6y9tHR;OQ53|nwBoRxlKU7BF z`};s^9m8b%02UTLYyCNSuY)!%!q7a`zdY$VF6@y82$F&dpMxm!=P(ZxlJurej1drr zj+RXO93)^nyJ|YKS~CqISDk%vCKTFD?917i27`o+N<-IfuzlK{GnDU)$y8(;d7GG^ zYoW~K>~m}Ey*D`|MHU75$dYm|HS5cv>`?`6^@q!P@0H(3Q;+4U{EL6xoac$W1~8$Q zCOf=y=f7u|@Ll=$dOqCj*^9@Re~7r3N{H1q%tgoQEmN{*$QIHDhGMxI zVP#Cnm5-^YxObn${xTpbNmpKh%ZW*~DH+dr;qT&yx5)|Ea4v+2lq>C&M(H10CksQX zselacNO>BPt~Cf|&bf8q$|E?RA(lO*$t{k9?u*t(675X8!Vql3i9(B^vJs)de@amGX#zHu0_8ha3}n*eadKOBg)$EsIOqpu0PKE61uM5W4*n zkD-G7#2YvC>-U2<`xA-B{k$^oVQqHzVk>F_0(U!FINRB3RMZ&_jpH-x>JC^ikFB~R zb^pE629IUYmjl*G0Cy;}bNk#M_BT%ecANRO-3+Gp)NI5{m7h4!8gWCzhf8dHHG$yd z*={X5>>A3hgMvwZ;01V!GVrAGH!fQnLv@}gICSqupK%$OFEJqg561K5j>*v+$9>8x zpeMtFo7iE^98++k4KI>j7N0&l*F2VFC9PS7b1<~uphHK6lxI9WJGe}1K87}(i+oI%W8uGu*x^kDXu!kIN(9{1YUbL3KrneLA%D?w8Q~U9T#8ScpYAhCX zI(9_uL3}JnQdiPdoZ8@ZIj1YORVzDlAbRw;=vsAyXPve+=PMe?&eLvIqA?d)w^a>l zI8S@szUqMJ+j@AOVd1&QzBjvh^`pHChoA0WMowJ1#<$np8(bduH=OR z-zTUB(>{;>%``rY_V`ga$APvQ))@_PNlS=7#kcBpLiiKD2Vu$u!PryrsL$kNM zKdbSfyIkgf?HoFi?GjacMRlS^fHy$KA9|zjwLrE56T#H$1gqguVhGD)*+kmZ+3vE( z$_44~3$)Cd(1BF3s+b7}$rqVFX&k zN8sCLXiZ8+7Za+j3y6^s2qDx`2E3@C>NAA9-$=?j(V&dfPkkiO6KM#!RISNX|I1ls z7FJcZx2&V%T4}LcYFOv6FvbHNq|io~WgoNgE6YGJj4EH2h=Cu1j8BZ7#+b@42+MkUrR8c9Mh@2KB8Y0*!>7=mN()a}MT8jw1L*C<2&bQYt3vL7K@AAM( z%$Y-6Bdw+$1gqGE(OE?T0|24>;@;gMF4H-~VuH9kBEHLINf0yTX*0xwUM}jJjBS{k z$47-3a+`W#_TttmqTC1-Bm**JWYN+fMsc-K_ znHpNz0KPOU63_F#h~ovb2Z~~%gdI(RqeI6Ff7{^RcrIn6=NBc)FZG|KS*(Rg@sTLU z9kt&YIjgrt8)bZ*(>z+NnhGTAu0N2N8}+XVz*^h4V_)V`e--6_KWuKAJSo}&-?^YM zudo|1$Y9N)*8kQhRkPKWtfA97cx$FS;cn^VYwAcYM$QLE{l5CTt~Z`&*N1JtS@mF) z{ZN1nv@*G_^cG})RTlg(nShh3<8FeO-WC%u)^WFjPGmzRysYIyhHQ5KQO}_G^ARb@ce8pu@xA;f0O36{uS1~6zgus_@o#|< zglWtdammAr^C47y zbB5sE@=+Q~RX%kfBj=WGcLoQNqPS|KHaVk@(&I}Rn{N4Z zfx?_Q$33T=e3N1UM$T{uJ10z!QKz9o+2@W$_hgWyn9rXry0{9D2=A`7g=%Rs>|1K_5+YZ$fix-T(S^S;zjCVvY#j^a(HtmA%V zk`lSXpv;|-Pfawe`vyRmzCc&R3>a2p)FN6aZu}_F&Hs}ua~VSaDl)BTD;UsyVL{L| z{h>cRT!&|x^gY4bg0$WrlhqIQrVb4=TFrL)sP1W>b#TIT(Ur%y7e8n6Gv_zn+D6EnflK050@vv?2WC3Fg6YO)A>65T(Poene)-+9^Nwn2cPn@iKq3RA;r`>(xz_~<@eze50 zXhP|M#rn9_tthzXAnv41)cU*cZtd%@vpH*fl>A1=aw=pN38pTo%^|RW5@rim@DBwq zt#R<0hj?r>WM^ylG`E0Rh+}vaJZncj1?e<5K=qF!p0-elRxPq_ATBK;k|i*;D4^Y0 ztd(Msq3ZT}FlmYNRBdeE6Q!QQM){PHtT8KjYiB+8Il^nzn?aO5q(2bnBg!|VXS42X z&P@l;PLQ(#eeQ;N?lK?uJgoyI!0fV*L(w`r1EP3B)#j4w=8gxk6H9dfd%~e7pOX(g zzI1`r7nDS@efC;M)6g@0Ffk?NFzI(RvV-Ja4{$^oe5sl7yq4qU7ww<*OM^ETHb3e; ze4P>Z$H>^KFDUi()HrE~mw+ria6HZ>TWgzsqSnVua8;lKVB$*?!XU%`LKewiWZkY5 z7+^B(lBQZZ1hEEjiAOZ|FTBE0lF>pikE@05_m;+<09>HZ>nA{YhS^&Ur~I;(`R@L( z96pW&aSF`fLoP#eBB*b(I)lR>F6zjK?rkLCkxbI_#`I&{m5!SMB7vb(&-9pYM{m@W ze7qr;6lD<&#ZA~?X=3shj-%^k+cH{|38B5$*>BpDjq0DsvVJ9H9Y5%*mAGD2FU(U& z_Ju;&))<}Jubffggjo}aZUe8WL+H3?Zr+uA?b}wg}(-zh8NR+d~;2x4r zggi7t-4!+6T`9RwEx*+!sU~EbSoM$gn2(k@e|!3tfZ6_y< z4=`^;soxS|n$p7wXVhkVRRlc>7hHvi=r(Pt%M=f@461$C=n(=}kjuvjP^Zmg2LmWm zElYd)cv7Pw0HP2U%q?LG#M0lqOwlSV45RI?3%%-9VNCJ^YFcKBOcZw-Q%fyCwV(dw z59)1Em*svPRy+J8D+!tU?l&6K(!pjPt3PmvAtm*f0oB0m1X4L1N=h>Bg$4_hRcwo+ z{emGr@PZm~d=M``G|^$0HZH6v8Vlbk_F(OVyEF0_-BnO+Oaok)POy*7#pTM^UH-gB zA-_?FYe?pgNDRuT&p(JLWiKpU5@nN060<1(v+@ANZ8$@#j$`V$Coud&^R;QlERRrs zc8K4yPd*xNT#%LT@%k5C?X)ty49KAwT59u6BrGlX(WRjtE1)YMi>*V$M_sI7kM zU34pPKsJAC3_c|Ju3E1}qs>ilcPV;!9hgWcAipDr(eEI5V`j^uaUOC286RbPSwUtN zyZ2EeK<}ZkrX!xQtzXUDLWl84H$=R)VuE_0YtkoLVAA!*JySV~ZPg|4o|$6Pa53eJ zQdTqi9sSb$GTz3ENYU7w{afk2a6SQ0U3{IcSZ@h}XZ*{ocQt3Br~0=8)p7>oD z$@@vEg~rx1ojR0zw8T#Fb&79A@q;V^G%>4{fAHnXzWVT$^>7k=V|l2gDThOJPIPYY zT>Wv=@b~mt%d(AOe@?y^rDUgE>yq$N#`nn2W@gn&gd=z@VwqRyIFa~JjDPRmlM<|~ z&vf0tRqDAB^qVI-Dy!=4x3UciJ;-}d*nK4rx7E^8(xSbrZ5Qgc{H<%sXqO;TUJ;&E z9uT8CGwkbCM_qJ>3xEQM=a$OTPpo5C)|1_*(1S5Z&bPer8e5b++?O$4df# z@9QtMpnOMP-F0>u`>3^AU3*Wo6g7}gX5@_I7}*OW83YaJgJ@N@MR7O4qrRilts|_@ z2?7gTlp0{2hd_`5(z>^Abu5p?B4|`RYRCgYg6FkQ8rOoG?WL#)OVpiL6Vub3>E)Bz zPL51)AV&vY+Ea6`mSp**TGB1;FU0Pi1n}U^7`wAwde3)^DC<+by!n_kdd=-Zf#mc2}xt~ zniECBsHtGM@Cd&4DL=h~d`;6$g$z}Z{SvG5+?^TTSJg_>EM+dx#cI3aXj6EoSBN>^ zlBE{~B|BzH5xbVu4`Y9hd$G8GD)WEuW)AoG&Q(JGnP4sJF2K@E$pb0xxYjsN7<@`+ zm#vb(4Ho%t;qViki*u*Ka1{k{)_+z!$Klk{X0Chvgiz$I^oHEWPS`n;%hQUJ`U`2K z@$mAp@&sixOL2l86Ew{oKl09OLU_biAIvL5$!*l+b!Dd)pW(G*D?Vp}ofa9L0Jr8+fb4b@DGDJ0H;L=HhidsKqAkNFWHQY5{Vdl>FIA)pZO&0NKwvVr? za=x=o{XtT%#y1}3=KOyntq%3=@)`KOJlll)Eq3#`A5)Bob>t5u-$6y|4*rM?QS@(9 zn_&5xsH9dur(7hXb8ii^3`at-&^`MSWNS=G1>3e*|M&wpHktEJD!2WuuG`^5HrLUj znf3K;jSegoa^Bp*A2QdoGeyy3GaK5ing89quftaHl8`9>8>b~Y$tTM=eFpucSwEYJ6L)t0MedB2M!UmgD~y8 zTBTA~u`d1N@OZo>p#Ntv@)r@zVd=IKX(z>*uB+XHN#Ft*>1NLYVSUT z`}@D#vZ(6TLzHJ8(p>>3%@V4g00phZv7#=N46B;tqE~E)5kRy+eRfLqk zB`n>tgf^(^VS``i51Qeoa3Q?0_tO8}(WA1ftQww^zcWCg=CZ-Otywl!%Xr zQ4TMPJC`sXTGlmMo9%&Te%-W^k%^es+zEM5q9oGeJ?77-i-U%MYL>vm(g$M`bC}_2 zQR(jwwl{9;#;znv z%;a0An^eS_NSm2Q#%nIW%&EIIvOS_$6-2KR<%+hmxXi{^NnieHyvQ%SS)FK6iEn{^ zP}jdGjZ6tt5`e@PGsq_)qfk+i#T8g+!uq)7_Qy4qwjB&Z=;`$(L=UuYWWDjkbqeH@ zYt^da(+#YZj#i|}i~{!>zdBr2c~xWRu93~mUK%*%kQ=*?d=rKzt~>H#j^@KTp8&*0 zREA)~*`#{+^YNDTNH1bXi_N-mr-sXo>w@AsW{S%y4g66|uhN;74SXf67jN|mO890F z^nWvt;pXaxMe*aJ5!u(H0Sx|sNWRXar-D$joV0e@^a=4sXL(`F%9_AIC?kMq7)G{a zS9hIQpYW=AnL|@UjWFF|X|d~_*d!!)EaZF-?n>LCvzqVpF}Y`0VasCQpt#i0vSH?% zJhnwlejarQE(Z;d50A0!Moe+X6h=k%$rGR?>42}|d3UE38`JP67hzcSFhL_1=Ca8E zvAAMIS`OJEI}90@8Xy#gQ&|a|kD7!FV4+p2K2ujb9~BgNhCr-LYhQ&Be+ZGT#}HTV zH)O2>qeN{N-v&I)qzGA95eUE<7bUI>jS>)p4F279;D8P4lNK;*kKcIO3!9PG53vj` zpX8fzq^50V@TuI1x6|B}G$vo9<1(k+gR)EB1*MOMipjQdsXLrhRf|dLxy{`)jJ@)S z9~x&{J0|=2b3}FlJA?6rgd@;IOo791xDO%aMCFr9n_#3bD2X|_J0J;2&c`d-FN!rj=POE0d|=EGJk zMCsByt@JN7nl>kPx7lLr_Z!|RlvEfWsQ}(x@q9e@=!q4su&h_j-T*+fXpN2j91hd?3&ceo&~3_Sg=< zG2?fu@{g>W9Q8@L&4F#S3hQoUPIng@)=BVdh!bVwCtqr_T7h~QhSyGrZS`ayKhlO5 zg|90i>VT~3V6dSOT1BFqfXFe2QN%2IKI7mEm4<4#?JS>%5bXCM$+wd5wE}W9tt;VD z{aCCq*2>cLDIb&Md3(cge*F71+v40(7x?ORTwHcev7Q-Q+-zVRIfP~(GlRLNx}==E4IbR` z<517kWu?F?D$d;~)o3(0Pjgy(&SUDdEaxuz;bmybG9_i9XM1u8nP|$q0-{v@7hcE+ z>u&Gt!7}MN#_*n;s@KU_ozh=pXv-bTIMS=`MQrDq1TdQE13WtlOW+^-Fx={Io6vWr zGl2`^qg=58=-*2|;n(6}G%W^TdVS9+*RfZF=5x+#oZH&9eO=pLeF*|X=AYQN6vCi2Ck`BK{=)=!aqEJD-^p3hcACoYh#`_K6r1cw$``5 zEhP?Is)RXA0%^m$eEMdQT4rNjtPs2euH5YdQUohwK;nNXwsB-6t=XPTI}fss73tJEOCB#FJnXGlaZ25LWC$j zv(T1_*)MRj*B&8NW>T3bhc?t-MmnxBQ%of@RAlsInA28Pa-zB=48mS~Rx_hg;a7?)ns9WE*6}fH`76kG z2_?>d_>v||yYiYyBwRwauiL!PoC#MEF73P}=iFx=;O^{gXqpiib!`2TH=T++F5U zSNY`AlGG;v$MZsP=^yYRvb@cBv#n3D--ZU~3D7+9&hc(+IyJ$D}SOTb=+f+Sa|wqjD74j7l4h;s<^u>YmCCG@H7MIf$(%JhWHsPPj^)W6~UAY^nH<0kzSJ=g03$vW3jW>>=x?`ywpQgNgWQLpw zDh8wD0n)>Knc>^N7EPSip*D5b4k}^NxdRl9q(@@yr5PqJjQjD|&A{-jK*SDpC93h} z{+ZA|>IZ2^c=4&*`(`C!T&~q%BXF9H*Q~Zi@-h2TknYRvU4YWj)V$(_w^&Qdk&}LhFP#%Y&z{enXfmkiiaJEx#i9|{L4N|?0*7GE3fn0jmdQutV3o# z$D5lmG{=Eje#`l_k%p_ODkYs92qE)+tJWQe)!aA7niLo6T>rWpt!XyiDsi&&!%vE9 zp7y=NdvDzG0saK|kRmcHtinfcbYhzwIH8Dg;M4G5CaoPXa`-(_$p^f3Nd>=7=t$4D zOaPhdjP263^elHyf8lUl0=O!vY3PBeb=s$x@NM{4{2kTH!;7;A)czga{v}WJ0hPX& zY0z=r_{REgo={dFS{|GpQA0Z|XFBJy-ncXi{ zJ)99dir)G0)OI!^E18+xgK%A+*_81|CG9eoS>0?I$}h+3(d&R(wQ~0d5d{yOs?6Vv zMl-PXjc~CEw?f{XKcegb!PEuO=(RJ{zdQmy4nge7%8uEx#hAdsRyC#@D+<^m^X9AB zTH6%JcV-NuBchK6{x%${0D*XbmooQ&dj|jnZgOUKYCt#@wu1 zkAeoju3C+(Y%Ud}SoIc*pQB1|mI+{Je zyWjNW3p>4@{o{!IP522{yh9;q5T8^hI?q|v0^r_G*0HSQTG!Xq%EI5Q7(RUqA5y z?LN>wA9{+be%L~lc|NaY!I+FqXL^n#);<5``*CeVg>InM_cwKUp)&p47<+uOdxmV< zGTUx3^^~;n&!gA6s#VRZ%M5;#L$E;V(d~pL`;MWV3_*EsHt6|sg3JU@OJVj;d9U>&V-y*1c5khh_J=hbEw#AO(yxGJMXyh)^8GS^!c zt)pD-6fT6{m!Y9+%&q=rY9tV?s?@ENHTYa%U|pK=yw0+mA$+NHZz^&Lrb5s74jPOF z2qcci;{KI<{L-9(T5yUsOj?l)92lJc^t(4n9Y|Ih($f z&~JTD^F5)$le<}Oc0`L^y(F%6d_VY${=4cU3>J>~T2ebj=wIAU}Jgu^Z)A z%~8f*zOku>8-%hrjP#pL8D5`gga0l~gCisq&{{@T^VOtOk`7vUKNBQjH-zmUt>qT* z&>`s9CE;fK9K$2GH(J)8K_X23kVzj3Df_jYuGofAON8wldFImEf*?v);i|X?G7enW zE5^Fk^6UPFpHPpdi!8ov(wEjwa!Yvu*D^FgM7~Puk~*h6$}ywQ{2)|z{qq4CmgKdL ziGjL&dglquwEz=8e=V<>@h@FnqL<<9g6z@&H1)v8aVj&dpk^_;V^;jsb8t62n|dts zK9@*)gVM;kJj_@mW8V?_Zp?CN?*s;Y?Y@>60chf%_aVHTT2(V#kh>!byu9L_&sDq2BZuZNxjC%r%`>j2Mg=&bG$LB!c(?r@x0hi#TtyyB*s5suKJtH8-K-9KE+FpShf zsVBgIuVmg~DchNcu5imM@r|r+@=jE&V=qH26Nd0YWP%8zV>FO!~$i`C~d`Yoz>kkpG^9o=;|DqpVP)V z=etF=4wPgky`_)0oU$;1cswf^W2itOir7-LMUf_h4{_?k3;P7wV20@Jq~k{@yKpID zy6XwBtkmN+>{e$##xQlcwC3xpyBp=|mOnVS5FZ6PrV_fP#Z<^bm3agEUbnME7d}5w zvY|U1_3%i{dX_NB0AM;(6gA;Uz_Q4KmyFGGyi0h_|Bi zZpbthFQdiM=5@dx`*O8qG7MT&`ORwh)wc#l7D+8zfyT6NQgem zGc7yav}=)@gyC)^>|JZ6;vS#&NcCAqwJZpXu>Wl3S_v9)K17&)|1M-iY4v`tvB<;3 zi4U=fKgy{AnS&_`F5B2SmlpIgye)+{@}J;S$Ly$rNxjOn{W%90VnsxB@Oi5k{06yG z?<}C`OL1XwRv|)g9hgpNC)_e3+eXRRP@`vXus-CoC%gn^0o9uqI7z&)loL$ZO~+x$ zOLG&{*-MffuKNeh08RKy4&-d&yqB;2yo| zwDZzxLW6ah_PTe!!<1{=OGAVskUuVnOYR z@PWBQ&cgJ%F11*J#`QkG514Jr`Ynzz%h#%w7bo%rhKS|=vH}ZarcbRO^}i8|wMy3~(+$S0I@ep3Ie1RU zuR*KU6h(FxaS$6tG(HK4Tgj@d@&QB+J54tVK&i>lD-&a1L}6jGBCV5K6&rdGjK%uI<4WRDTHNr%UU^OUx(yv7RL@5Nt9@#|f8k@PLd$q`o)q{mEAAb`VO z)=z+c8WORE(UlD@<>|4VC)G{EXj=(L{PVZjo1%c+CxGL_^q34mxMS#V;<+aPE?1J1 z{Xucjmm!N*wf9M*T6+(H6q4H8rh)LXpM~vFU8zHqnY>_moB#(p!9R`3BUCE=whn_b z%~TD4Ua(faQd*?~#j-A^@O|=X4KIaZm(0nbF(a#xFNeoFx|mXur0t~{Zln+d}KrbKLuPIoVD;Xbq2c&6^VexHTji^nG2 z=rq}XNTc-jk4Oxb7Cwm7W3Q?++1S=sf=F$xWK+N-3BFD!Bs7T{!nJquCmj-$%&BTA zaet#ti|elRodgt*xIY18@4CI*{VF(e$UbBqNLtK(X_~xe&M*Bq(`HD%t+@X;ypOWA zwPzn;-CC0FS0+22wR}!3y#UP!@LEbEEjhFc?c#BP_FP%FOCK)sdnxH}05m;zcJ2>@ z;Ux(HUoP5Y0>zVd%d?{k?4a-Rpx~3ndr#gxndD;xfFqAzj&kf4r zq+liF6xhnM^adLiIYw&k4+wU|>pLK!o$W}W)@r`b31u_dOCsE$y*~J(`HexQJ~Zcu zIr&)lq@bdpv{l`a%`D?f2pA!XfnPG%GyAyE+-DC?H7?;6AQ8k&fu4F}g*`T{8yb~A zfCYxUPWP&~7&}SC1m3U)l8D|F$hO$M$*;z@*LN<($6;`;Mi+Q1qd)V#tZBB_l76@Y zG(sEIQkqbOR;m`epQApC((8teB76WSFRaEM(nnp7g<>wy?{GWezZf*#{qoD*Rngcn znp`>lOjR@)Ubb$M^{$mA)1T6$bW;?_`KdIkVoO^3PVQ22!7isEzxXxKGQhnjW+qXY zn00EuGl@HOS=(*iEju#FZIr?o0nVY<`8cwhC^ebf zdLqPLYuNeedmkm^cC|9{ibrnO?v~x%WvfCUoqL7dTa4Bl6t?r*DE(GZ;bUdS&x@;| zvG7T+2dH1AYk8nvP}SLzS>n9WY#`ruKp&5@7wzxlp4YM&$>$CEWd|v!NJ&nsdu_SW zzblJt%e`AS3VZ~Q#m4)8tT{H$beF`_jTk&l&E9Sc!7iWegfRfOq2=uG0fJp|Ug0*gxya?O3da2_* zY#AxN#2UhUZ;U`q&Bkh>S(X;Ifb&hsF{%y{Dv7m*)xR_@D9ascZgV8Jo-8vS=MSF( z{1#tmyJxHuc{e&bj99#tvF;fWC-wh&0bX&m+8P+##75~EQmuaVH}+OXxYslHL-<=c z=BR1iF{*^mOn&5I<4fXGJ_@BH%QEqcpFEk%k;U-p(4JdwJd1?F_kD<))d4=8wQ&!1 zQ-4V`D*iMxy|?~N)6M@T;DLUFaC3?SKCw<8(=d zcy7_6jAkOZE&p=jE0ymd{I-GvpWY!d&~c5Q!hXyee~{bQKa!|=uRq(sOvUBT$JN&e z>CNW;RLox?f$_;2(gBDkfX0K!=4eY9g-xKNlvOschvM_dh8)}1$GV;Kf8sSGPJ;&Mqx=}K_}y>5(`{KKen{JXyN=Vz=3@IUM9|DHakdIn3*am z%BgDb=Yuw-?MHjVJAdjU3Y+=bF_eQyQdg!6}GnS=CyZ?i_z z1(cq{l=43}oSah$8^30Q`xC$Z=_dX8AU3ABWV}H(xbE8fL#lt=Yt%g+37VD|am;92U7rt%X2Q>lZKS8DN0hJaoo*21lA?Qq%hEBus_ zmr9KzUewC&nDWGD9s13R{p#xU_J(Fq_}}8gH5b%zH%^^OjOmTcQHcfWYl93A^qmYZ ztsyP9ikD_=4yCJ1?o|B6mG}%EmkMHR$IC7r%2xw5ZRt&@l;GEy8PL{Yx{Z$q88+^C z-Y#(pjNb*f)O33W>lFhtHE5-m9%gNDVHqDb2-b+Shp3+bQ#Y3VB)FHD#(q&+1}wu~ z@V`}7??2SF@U62l*u|@keF5Y47sp}Qtos}^d#9$|*y(@6So!hO3$AEQMEH(E6jji7 zte_Ja>$eGa!qa`*zwMKcn<( z)S`Xb&EELdBEC=muT7zP3S42l+JSMVF2F^ASR1>su{V*z_q3uUc+9OoTTYFWE-b*| z@C(XJkY#%Nd^P&6+w+CM55SeQCV9h~$H~Caxj7w`CxC5aGSBCzUu$RDDa4B}lxxd# zO30(H#fbmf)k{0Qj zun`s_zy^RNprUw}obcCp5v5Zx6j5RjfEK~`7hgh&NN;v%Vl$`TOSROikRz_Kb1j9W zDV=JSTEmw}XDc2YqJnE=-iJeR5e@%^NEE}1DLy$GXN|>pKM6!Dz$Zu{qxHJYhah&n zD5ucmO(SMY09SpHjDf~KEOpnox+s;%RU=FwDRNgojZu2n_4V}|8sJ;M*%=MKy^cN? zrJDEr8!>n3PaW$wxBLDL6JBQP*z8O*IN48(9t*e3E%ZRx!x)qn( z=G^cXTrJ=D$H#Fkul5Y_&a*VH;5zac{0l+GDoy>$*@G3R;z%|sm~ezXb54U-AM?5r znfX$K>;ghHB-M!}t)$`>nmRYl6K4Uyj01E$_PlC20m~3yO>E8%^DAx(UXNZgLeA&< zmMvkPro3R0YTr@lU719DH@NWVVC_Abz1$)~bI2R<7BeZ@lmVFV4fFzqjHM9(vLVFO zqGxHAqT9nQItxP~e#7|)qB8&3@goMP|Nf=tY`^x*aweF-J^T-L;1l4aaIEvCv6^K} zFmC*><;Sir=KD@LHAn)MPrFHQ{<=g3j{(DB`MU=4mC>dlq!xNjV_~M)t(TeF1cX|J zaZpS^PE7vXDc7mA&??7qiMq<%BW-k31X(tS)iHVh4*-Ece!oZ=F2(^LH6o{n>iAZwDQtIX z>T7CU;mj@$E@QyS$Zs)^M8^?V+G;G4P}*qZe}(*~$rMLSBx6x=>PF{n)N922J4^gN z8%^R7b9|A<6-STaIjwfid$XJjXJV~a891m#JT~){pZ@@U5iD@AyRXSA#ZSfl`En1q zTc&H=B|72KTIURT26q@8Ra@zJ$^1Wbwzi&@qLL{e7reJ2<)?RHgRbNSWyCh>i)HH5 z4F?d^$6Iia)6DEQc)%xS;{$QA^-R{>>-aYFYO&B(d&_SxmClm0CGkoC$sDx<*!I~z zw&c{JqT5+Z82fvF$dlAx?fid#^eEb`wy144J8acA2EgWlM=YK$w!34cr||^r^V40f zU&O3(w%=O;bW+I3NYqazx;|u%c}&5>&h~A5imH%4U(_D+(OS8?j9X9&($6eOmoN`RZWs-`@Pc1WQn&b zK=;87M!zGNM<;h6l0IQcqqkY6q-CJ{%@yV+1`q*cu)K3Q zT&2ujGyV1KTvt%vT^zRBsu*jd4GuLC9aq1HHKKICBby$GgBmYJf2uQ_X?EX7|O@b zv;P316>OjX0AI)c(PK|pT~p<$iLEYkL2x>T+_C7j)@~h!x+gwL$%LnKalKapom!W5MG(=>x8 zCqr7@Upxgi8x1@^1LgX-sZ6hd!y&}|H%_*A-^s)7y#_F^*yiOq`-}^7NBr47=|X}o zrN`z|`rG-N_d{Dp;vaP)j7Dx_ZKQ>~m=Dc3033!sNhYEu^O32S*TUXf+@h}2Xdj*T`6GCpTu`&ZmFh@NseTe zVt?}-eUnBPv|v9Yu>mpJ@I6+&#a!=oQv%4(g3ir5pP5vQk=l+`l(4+>U_PLxeauUc z)Aa0^n|+cbmqQMe2J;zJHQMFaa#zi^U~k?5VBPh7E~5ED>X|cYa@buM+YigPRUh~$+DMBUgLlfmqTL7uXdK~oAC)x z`@4%bOqjI02v>p99*PqwRur~x6y%eHnke~fv=nh*1luOi_(wgFTV`V!vqpQSC85UH zT3F)CcT7}MH+_Pw>aj=erEpwm8GQilfyMF2l$k6lhNR`{;Pns-l<^v zsuS^*KC+AO@)jk^$>?Lpd^kV;UXXw52!|i=&NKXCm;V60dG9099zu`&Dj)eWPw@x; z0Ey^2emddmsr(vyoji{{1F`$7nCl~$0~^}m=vSEV4iEmqv!T4)t=KfR^)Y$}{(kNOZBs@krME z&KI1d;=U)i$RQVM`DBpctclnz`2e*RFJ|@kBHFGbuBj|L`>>hBpZw0w-yoy2NUK@0 zNe{05?+`~{ZO(zuEp22DaOT#$5vni?B@nw&vJOAS0=a$`Wx%=0NT zS2&$487n$gVenjyc`qt&kV4-mE-O7>PyY3jPgzddib1)7!z_2tx_*w+J#>N75*oC$ zv~kl$BV#}Vvae+><%#r6ryBWPoC^N{!#4{r5z)hRr;ON{tiuDfNeds0vn?F~>B%{9 zs=MD^NlU}kKf|s1Tu3}NG$J#n@dd8(m?t|!Mc1DfH3vh!aPUhBAU+^H?J z61WMT%6f*&gBwea;UnrX^;}<<@iL;wO1wPvo|otH&CLd}T$-P;WmQ>K!;}zk^|Ie3 z&b&b9I%#BRV?ie}JmV$Ao`ZD?lFMeK;b&Xh8y$9SKB?n-Jnxaj`Hyy!$oePk*Je@N zpHUR?R(tG`Q~BI{M(hYKINNe|!Yi#kb-wkl{vK&=K*-?i{{X`_A&~OkqkLnpHHj4@ z_H_R2{I&D=M&w|VO|rX&p|V;yYO0p%=G9+dW22~Ji@bKqcV?cr<$^X@&BpjUtC5>lxvcw3mxR~8KN%D;7`VUN{)-+Vk{eCFi;8Kl zQB>4Yx-$flOX4y{JcgDWa_5}%!i~n&RnoqK`FEph?X-llc;f~~L>@=;H|Pk)0+DI9 z*`%@m0K4^ctu?VzcvTR1WI4c$2Lsio?i4;0sS!S28opgmg--nx&YA7gQy1mW;&XXm zsB6Sil38$X_i=w1{`ttC4|DJ59Wu%xTLiDWaD*+CcsZ$xM*jdRq;nd15bSN9T#?e< zto&DNmPsV2j`G(H^tw6eMS*}`Ule3xJbMl@_ zW35)}%yiYZ3!Fl!gtfJF?h-d2mF?tr=F&6I7*WYb?r)E2FX=Du{{Yc7nPvC=`;Jmx zu9k_vhu@hQbxTZfTniqmnKhXl70>thE&jNtR-ozp4b zD-wiKZ@x1Z`Q&ArVHV^&K`qOPX=45(ZVYq}8HXUZ#A(^_yJB0o!P#`a8M{wL+*Cs( zgBpCtf4^0l;RtRMT6{~L18Js)S3>a84xllKG5KAckD&{DVzxn36Wt>+KMR3f-;MG9 zhCMz%9>*`N)T!l2wua$BINuCCp4=${2xJ+J!ynRe6=c?#;ocW`t?WkXHm5}FIhq_h zY`1qc_aiTEe%4(YLOD1em_%t`(@9l~tC75>kbKU6bn|W%Bb2Oo{-*x`gykrMY>_C_ z%0B@6rpywP{+p6pc$vQx3~>IJVJ)|)zve?LKTwt;{l)cs2{iL`iOD9Ga(~iN1>%tI zOUKQn7`ssa0R4s!oV zi0EO8AsJ|R9b7k2s;sp0w1#;d)2LPj?Z)nJ-8TA|m@-~Io1=sz*@VAZC8o%82qbNd z!TBs5Z3&iRskk8XU2^?dO;t_d2A4b>hhrL6BI82W<=|n#8t1j(Q;U)*D5x6X(Tw3; zK|scI37SY8(g59CK~DS(g)HPUF(Js!Ba*JD$lNQcn2Rxxs%tqr2-FFo%XLuCnQ18J z1P$`A2C7J3HWksRI$Mx+y*psEc~Jwgg!)3P5_#F39w zZDyhZnCer@3Ce0hB-~|oF2#eJ^qxe+MUV~?kD|kQD~ei7v}_cYTge&H6*+2oE-f;_ zlA0e3l+w`FS|)$O!lJUvBS!2wQ^xqU%PUV$B={=uj1_h)l4;ywM5?wv5J&|TbX&k3 zGD{>J`XdD-f;ogh9P?8VWO=GoapWk`4b_BgRqmDxG{+)5J(E=fOK_#&0hJDOt11}F zES6Eh2#k`YTP>AWdf4cw;xbJk*balKK8cYTdxKii=M#VjGFNo=alx$N`)H}CV@-76 zI!At9%^ra*P3oxU+!RvhFTmFa`#gfd17wgj^-dmnNXhvQ!D=0Ef-p<6eyVfa0Qo5T z49?#=S3P9h-sy79m@TUdqP^Cbs?U@bH@beF%}Y^Apl6zz1y+2ikw*zu{4^@fcKV{bI*p^eP#UQ%`3>SZ8&TD)W zd#Po2j*YD^m6}U?IK>shp47;15s9noswvp=(;yPn2aFOk%THc_j470LmDO?6@hnhB z;|e!1un8PIxg`0{{{Rr?v=Ms~lHwz54>X<>o*UlmkL90Q?BxXbpS} zacPPDH|AP;9=w#Q`)#7@LHs+wiSN?cLrZsu2jV@w2vyYeOl@2%Q!ZQW=3FLK!N@%aA$_-H$zqlWTY z$$y^E?|0${YoKcw=2pcSBsB8zfb4eEKB_F1+FBc%uXYN?QaY&Xm%;PJAjib;-H!bF z@0AkWZMfa(8BZ>lq?xXUSx!%g*9;uA?UHf0!k=g1TK*oXjnO#7V>+~r+J0k^%Cik8 z4ac{`$4~wWGSx*sxc-bPy87G1bnJB-JSMn!@O)9u-mMuK0Q2Uy_P!0Frl*Rk*a)VO z2QcGyj>pt;`YTI4rr&*N5kkspyk*em0Q$GT?zHwxT~`lC=DH13@_cMNkC;6_y5I5M zGtaHQ#7Jv68o zw%fcRxI-1Rw9I$JGlfxGNC7%puB3SGm~?GwLUO7?t`swkZ15>?x2TiGT`d=5&xj!80N zE2!MlgUM$ujC5^rZb4lRoFW0jA%(K*GywM|sEzDTTDMm*O_-Mb*9PivjhxUxO6 zg0fCac(;D9qK{bnNyjA#p>DzED8!t8q3D~*PK~=Luneh5tN4J?$p6snxv+fc8Ia({Kqs<%+@`5&z!}|qY*sEKaKF24u5`CU<1w~C% z7kh+yAZMB=oHu#=#B^POtqo`ckl7+8HZ}$|xC3C6do0Utm9pI;?RBUuAr5Z0C6T0T zhAfT;LG_lvv454oCzrFff&n&`IPG1AwB{&y(OV`Hw$Do5BKFV@-_KRGDA! zw`PSq;T@7YyjikMrOL~0O72_*iBGT8(+~usX zv6yoP4?VlBO%;q?sC;I%j(ZN0-k_}mI9`>meq7?y$aYSD3>LB~DKnArf_@;ShK?}j z91WJO%cseamxt!1c+5{}8-fSxwI*irCHuDjz51(JE)j>3MF$c47d5+$S zs^?{Evn&nuE&l)tWlqJIGADNaCW#bv)K$kcvuKx@joTl$_*2^V0f!H&$9PVPK;{=Q z?btcH5%ox^zVQXLc(l<&b%=aa(w`1eKcVAdeF*xgAw0Z3#!A0~Zr2A4f{kLV{?s^n zD@ZZCt+iTIi}-D+G*lWMSmyoP+WqSb1M^Azbu6KqCir8cIX) zQ_Scc=rYsuY5v$xHb$ODbi9Nz4pCJt#dOynNa5eX^go-fj0#ea@~K zh}p~s4r%pi+WxBmc8{^*M(sYT6TE9m&og@KZW;QO^3 zche&^y`$B<&&(g9X5Z~vQ-ND-W4FO{5@Uapzsio;#vgOwOOv7&kCI7axY>e%8O+kTTh7&ka_9bD;;!!mg|I+?36vN!36W) zp;lL3Jfjf48+df`5rH9YmN(aZ%EwgP-#o6CX-twk;&J9vXC5*>50c@PBdJPtNbaab zU$5$r>xf|7{;H&>g2ZB9I=D9nQUdhBvz!)IqUVvbzg0zX;sXP>cj~EKso04UOS7Q5 z?#DcN!jlckGt7m_X?T`OnaFFig0(aia>xd9a+MdkjczZadj(r0cFNM7*#NACx}ded zyFXQ;g0N@`*Q%Fd^xH3E(r}JeHO*BlxQ3o#K5k4c#-N@0hzs=c6Il~^X z9m-Z%;wVKnH9g6(o!k(oy)Zi(g2M3y+FD|CxT+d1B$?BIU)Q>z^>T8;MV*mdoz9Br z*MM@ZBCBhLa=FEp>SSYl%Rv>?Gy|*kTC_q^NwS@?NWQMC4Q?{BcWZ$m%^b>?RdQq4 zNpj9yD%$5~R(ma-HC*y$YAskRE=MkDJo2J61myDguiv6b8!d&zOsC9;VmMD30B-6q zb`l>h_*Cq9WxC5NZ49?tgcNanQo9+)!a9}TtX8P47U*dqXbodPT%*}V54~QcsdnNP z29KFtox25@s-M-j;JZY4+#eu=dF3|jzbCSc%D)ik1P29C%aX#0DoH@tB5O;zrrV*L zx!{zS)wh#U$gnVa&-&Y(>)c23NuByEUd1BaiO>)5H2Fp6jgCJ>ZNH63EWSeY8 zLS=U9lAW%oezzPjZs!%HqA{9w7>-$uk8~rJ!zHzFJma#0_ZezH9Tdq90*OjBO81_n zI$e#AM6QX!wh}YG=~+%gSRb|%5_58p?unT>pHPH@5y<%jZrQ;i2W6?p45GRN>;Vi6 zW1;|~$|FjehRJQ8#fv64a~=H^j1$LG7<&)Qc1oHi&lzKe#b<6UxKIbWgtXPi=8cc| zCjNu-<(`KMG_d~w1ODatEvv0;s0H!il759y&rc*SERm#Ry0+oIC86S4Gd(FRmNTMy zc{Y*<^=pUs>a1!hqN;A08V_UHD=O#m7+Zs#@dpY}aSJmuOf^jyWlUgd9*6S}L-be) zKi(b&tP!%NdQju!k_VFvqtG3*=tfs)th7x}m&N?X4#RM&YiMb%RL`ZWg_A)40Ev$u zsO)`Inte>Edt|bKcAZ+cLE)L3H?``xw6g6*9YcD}PIN!#r0jl}T?)s=Hp}#St@VtR zz>F6oxc>mo2ksY1rnoXl*&`m= zqIk<*(~w7SdaT=Oolk7hdb!5Mn3MMEvs^{M_UrDc<7lL;Jf@6n^ZiZh^X9ZHk*^tP z1Qco+MM+_gM;W+UD=f7>?OhIsb7RKrkaub8`-K_p1TM*Pw^H3{UrSdIk~a^lPjGr4 zRm<=8DeN_#1c$_h`7uq8jCMVUOjV??fcP_&KyGxmKOn0eT3F%$10904otu?MR}Ps9 zy`qYIGNsaMlv&bMNh@=xsVsBccO_TboEUI@Wn*ex!OkRbT(-x z89$;sb6Q+7wYKVZmbBn3S=6#>Mtm5`t{9c$$Xuu{Tn$%I@VMuu%e2Qx$B%?18)RgB zAwfMXWHG$jAstsANV8shpZ+p3(s!n8>EKnJ4G zMN&%!>ZOqQZOU6}p23Ffv@6rBaEjBt`;+RbNp3Y^Rm}4DbILc!`93Ek=~p2QsHr)* z4TkQI3Bb%EdvFt^!4xqgv7bdBUQT#7i@xNNWk{E5JxqWtBY1-(bK%cf$#=0vp2IP9R4I(!QW+k z>0I|=o1&VQ8Cm?`3aKTM#9q@T+pM_rJd@cJmuH{Hg+8*w6tWXfkfS$-i%z-c4QSk` z@X2=~7rj1bV=i%09NK$y2Cm~XV1>Jq!Wmx>DV0~TDbDQn@;lwo_ zEo`}H_#$t>&!rYTFnh4Ly>vHy})Wg*QsgG3UB+Q{~5W zrVKDD53=5P3$9Xu-5~Nt*KUx7xi=u>Q;s~7QhX^fAu$~;!jsKI55vb|r7-FVL{bBG z7)FTf?4v~u3>3v(D{5JTvxmZaCxSkyHIXNSk@1Z+cM0(fJV9-7h0`4q05a0?`G-*9 z`h~mUE;6FxnqMX$tc(v9oyT$N-tF~MxPr+A{@Fbg+jxz@em)b>{R-i7GP=QZa1WB2 zwvs~KOgJqgx1s$(S89s7y|3;?Yb5KI?`C=#K(4h#QVZGqxqFUB=Cj-v$FT7OTSr}@ z3yVh~vnKU#ucFtgmRExC0BPUHO8fd2qUo}>Ct=(7M7(86`vbKg_5*O@q%pRbQg1K(p5PqQ>D+p(O;(mvJg#DEQK*f}o*B?~J05DX{b-K$ZI+SX zYsRRYe+$PW{l2R|Z}x*mD#aaSgH8sThWt6~f6CMQ{4z$_qm_?g{6WJ6D#~e+;NsP6 zbaECwrH^SXb5Afv#44JmhdXtl;(C~8zE?{FgQIk$f;k@KeO7vM3)QVV#EN#~pi+<= zK~ltlpNT?@V4*1>Ee5wD2+L`IYpG~{a<&$`i!jlsE^9?pBRDGhhOY8SS zR;G@dO;*AI$Wxg!Tseh+rMjK4{!0Fi5(=F!qw-GO601MDQ~gT2mlCZOQ7S+2|P#fEqHD zc54`Q7hnU?OSH=y%Um}Kjd72umQLjGXlZG(z}#$^tETXdKvwixGy};*x@p1Ed96Gw z6|(YEI;TOvK~~huqEa$~k8q5*nc#CM8KigODH>6RmEGYSp5{8o5(cEblTGZEs|u`_ zB=LL({{V!j`c#n8{eqKEX_j-hB`hSOxfv+AJ__)};Af(}i-(<$Hd6lp-N%8bWe2E- z$W=1XoQnp>Nt!aOWROO77Zt&G(={cpgo$+011Hm89 zXYRcVN^?%kc3iiJsHyDMYU{Ju0i}q_5A|dL`jye_Rcx%a)6BhgE1eNd?)RZ_FXYoaSf@LyFFC{v6)zO6Zl>?Y5U%z?EB%N0r3N!UBHy?U-`EG~uaW5Ew;Ak)p`1fe-S7~s57;0R3_G^#qS3=Y|tm`Xqc#(Fw zDJ-KacD5RAQM?HtkQRbQayu2t@3xm(E)Ilb!tXpp{$Afj-)f*`R4$3*EkB~>d~<4Z zXy2%L>7A?|?c`LNJ6$&8*^Sj!t*<`lz=nb_lkht`6z+^9$kn@Q%vv%lcw?UNq>LOX z%&e8MX=KthgkZIZ| zC+4sv(lmT!J4++M*~jj!M^2g-tZD0NbhjX?@m5G9Ruy$j@@dAht0k$Gj@jF+{Y`jf zm|MXn?D-_mpUM)fw+{|husdZ*Syxdnkn%#?DTZG$>(yf1oF3#{)60CY&ZSRt9uUD% zYil0yol2g9xvpTzPE^!@)4HBFOtCb=WBDez!ow$wf6L`00M z3OfZ{(g5i27euz%m|6*pZ|JR}v_}}(gY2x?t!Z#W4JvOe$k1B-)q$nB!kwf6uve8f z`~!fhr>Asefx7e0;w@F{?MG3ha8OAROL}7|)>FKU=~5`@-s6`7tc5lQCC=!)J=&$} zSlKn2g%^ZUIj&*kRJu3}j>!sRsWNkf*CkjZOnGjLS%6DkmL4h z=N9|@Ws>O)Wfabd>_0ZWqnImU>g7(UKV`!+B=ek}!fU~JM=Y9FH-LDWZYbgSZe}A9 zbBi=PxaYrReJx}BO%G{m=^16rw)4&aP~TIA`5JN5m0eqO5wNv{ z6W^jOhiHx?zvwa2)4OunA(pp6j98pRSfCcWSLo`|Ol{ z3GJ(76Aj}MIR?KPeF_i%08z=8KN<8Y&N(Zh)-#QdE{RVW371Kx5dO*5yIVmUf}~81 zuW&Wl8=`V7>352w`k?d zW>v<;wnR~~P%b!pUtfsk(}cykLYYuUj@I_!N>Aa2JANIiOktP7}YrnHVwS2`z{T23Iewp378`cBt+|K}dfPPO^v$Y^_-fTmdP$BGbuS zS1BY-8n9PM5Mjqu%VCky3=Nd(fCl|i>2aOaYpg`Dr!0(V9U$D4nJ7qSlx1JV0CPbA zCq2wKatV>Ov`Fbl$(l!F;pV1NTV1!8D*2YZZpm&!v8A=(j5P?$>dP0VWu&*iJGCY{ zCq`D_+CgsZ3cj+|V;>5)3x-OgCs_-dp31TD7J^;+txZL}#BLQ`RSSzq#ua;#lN_>) z?AX*u#>y1)crt=Is|wm@!d=-?)x5hT@(Z8VO9`UZo>-ZGL2<(Y&m`?t*UNx%O3qTu zbdB(ye1*==c3CmC?KSM5(~;>UbdD}3bQDu5$_furnfXViSzx5Vl6czp4z3G3#+IR3 zNZ4rL214L62PLMdsdSxi5-22!dV&^cf$i99%C&cG};67h2>W-u|?J#eo|$=b?rj4MO8`JjR#;9HfQq`NWa zQ*n@0EyC+lbCW>Sb!-|pC0}sQ231r@*{X8J9rX8BBM8DDQzLV7m(qI8tN#Yct=gtG>X!jVe|4I)h}O=trO zaE-WC^xC?q?RLp_1~oK6!9jf+T>ZkIETO#AN7S=C!mVzaHg<_&V~PZH&1Xcj7$`DU zyQ)^Eld(z^Mk|CVSlH2tMyPIdaPHrKlgXQsF!FX0?7YNb0pur==k^E=Fcb)@&;21&tLUwJKdn9dsCD?sIe zuuC;kxNhRQ_*Ln_MSBq`CRyAr_yiM`pQyN(lY&y`)c*j9S5JnX$(FoCp0)J_B|&gG zT^oj~J?7T~v-n0=DX6Fo>bAbmF3p~e^saZB7ZHy`xLnqUQMbrAKldYRSw?hPQrsO-KYqK6w36u7phw#`tWKP0ARm$2I zPxhSliv%qvcT_h6?zxEOwDfEIulY0eO?rZ{l&m63YjUh7hC{{z5tkJvDpGgoou_~S zlBY!w4djgN!W1gW2-E3mVet@gg=k|14|fNmgVrVViumGiX~<1KX+iZ?PLD_-R@M;1 zmCt!+^zJOv3_KGAm}bfqMPpcSND3VH4-K0Ym%H8N*W__jBdx`GMwBW{&{bVn=N2`< zkfl*h=?Du04RnTL{GCfjYP!2v2cJ@^y;Piu<61{SqaVuwSjP~@E!8!uq&x!S&1mTK z$&HqsQpzEk6-!PD0}A4vk)RENjT1viI97DTU@7+uNOC$hka>v4vKHa3z)tc- zkfv?E$kN9^cIg@c-y*&dNe9Aq?4-+nsiwhcI8D1tj)PvKJ)LLxqXxml?z3ETd=y+YbEwsV*c{P= z)!Tn{kcW&hv)*#3J*06FpM>UPWXFpmTb%ReR$isJRVVOUgw&r0AE~L-*5rU3=Q#fW zWv2FDOe(mZnd9N6jnbc3+v3fNjFNAC?xMu21Y1Hinfu zV81`pk+#jG&a+FC%&E;73ci)7pks$n!Z?)Pn5ptmOejnSoTCGK&$G8J(_a zXeB|j@g&?ka}_PiqCQy~I*#i4s*}VAWtzF#kC?PBdt0G<)wS^?ZRs^>#n(QWqP}}$ z3}cyXr!q+4jdE<(pYFNy_`dNy+MeSzQ{|Eg1dL(XpJdHNx#8!UOjiE@HtRm?^)|n) zn!0DDqBw+mI^`#|DoXoQl`^!)RMDldleu^JS-WGTshQKtb0m%~arG*K-$d5q%C#2g zbOGqKYL%Dm^?i(seL9qtUgr0NZ(i)tMNsb{{{T#$o{L^39P+tjQwC$vT~YBQ(J(RR z!~<-eVQtqgFk?@%cInxHf{@ujgocsLWq;l{3=Waf2Dp9`u~pTablQ4HGMS{zc{uVO zs%Sz|cu0;@j80?zVFeQgRnGc5KxKy%Sj+$kJo z7#l5PX^u$7#WN+eJ>cPBX)A6!S)&=GjAQ9cF4%MCRI7Z3DTWSJmCB34aRhVpS^3-U z^9Qx%yQ_1fX%oMbq}i&qF}sDbw7)G2l36arg`ko_#!BfHTZ3I2aC$2md3yy*cP6Ym z02L}4fC8?LVD^FtN)O*TQ`wwkd^;|qsZX+YyQ-iyI(nemvJb|x=c|++8ZQ2yddf6< z!@8$ig+Ue3py0VpisIJ}Ye!Fdn#oq$oH%8Stp%qlmg!E{L`FSTlWLmas;oM~Ad*uXxI_vdkTw!<8q!M%r05IC5OA&3dv$hcBeb z$w*;wV8Ox(`D!&t;yGmm#aWu)CvmpYS5^WWPWCsUcFM+=gX-p&T}4J4%r(6}s_K$h z=^_mTmkyX#H1{UIVgnDVev9~DNmtcoWX^`~DQnKo30AscLjz;fP6sknx79|`yTDbl zO6doc;X|IDN3`L~tb z;H<^+vPMSjC0tKcj;k|!t80Pkw5fSzJ2*x{=JMyc&UQ+wWM%HzO09dPo!RcB&{3CQ zk=1O*dtznEJERpQ0dUTcg>ALk4$DPLL<4yvs-+$o1S+=bOEu7Q$>|)~nlaU7eW+BL zdP{W(z%Fr+{JAcdJqtv|*yL9n_Mchf@jKxMEv1Mz9=%o`y8Y1G^2;^TvAG#GPT8I} zadu0w*>;a+w8n>p;Bgo;z0&3)8<{qi&-bUqgGO0dF(6OS+$JNyqGNUp1Pqo-1bxz1* zqSPcg?%}~gs-SDZ*<3`>=JH1+I3tp!WHZ@r6TyPHTLfny1y*U=$1Roem^Ft1W2#?= zk;!ITQcr@W8F!Gxx!3s z1OgP8n~sWSAw>!if-;g>gULyWnt~3ELn#v|j5X=jKRlC8ZV|`LM)@ANBo8urHtF3m z)b@4?wBv%rWH@lKQ%8_k({V?a&A3VPOeysCfkv?se_%A@|WrtkkgO#1XMtP6@6`vwWG#8H`f3xzmHX=sZ7i z@-#St2W5$_xA;yk0~y^*vsKFm2CRUo*#`-5O-%kyzeifq&5Dw0$A7ZM+U_C1dACbygcPc26?r{*H3dTfAZiM(R!b|4c`SJ4 zlw9+uVZU{St*2( zyNKYeXv32iN@%Xsb5hFCCx~sf>m6>Ps1rOhAh78;?u$`qOLAvPGB#HC39%a*?6eT8 z>@v#GBB>uDRrHqP_Uny7w38#0m24Pmw)ra-%-1(!3eL$4&>h-RTUR7|YQlC}8?`e2 zX95XS)zSh=Pw@$HjO9eDoV;u>Rb54U(KS-q#{J|p;1uAm!*QumO;F}J+2)|jb#y0k z6-sE>$t}4wXlpJ3tvigWI-=@;a7O9@xw@tJJe7qzONQ%KsbJ5S)K|9F9Q{NqYDzI4 zHVN3{1EPFkp;(pg0*xsSvNnO)N36h%rm8DMK<=t5uMG?%Q2VMkY7$(Q>!rSk)6Bs+ z1nj)&#P#OB_i(D!w6hRC>$6?1{sdJs>e@J7@6&J9a2ko)emwb$oJz@!zO0@)Le$4% z!D+&jKgDl$`ZhQI^HkQ6o|yr9qF7qz9Uy7x@?LrNJxba5!inT%l(D*F>40(iki7)j zmg56;si2nD*;QA%IT)ImqkJYjEGe!!(@q#$u(u^y)q#QKL&d@75lV5%GD*slX5uaG zCEX0#hUH6p#+64)IcGAYzOw_Gt!*WW?IT`Z9UGTEu6`;=TKmOl@ZGxSS1RJlq2}hP z%T4adC4U9YB$`fD-6W;pZ55zwov$U7$01YJ7i8gGnDw1whC-`Dh)8%PJ|sn zI#W!1Vo!o0gsCIhIT6D^LBUp(i)j_|M0zAOm^f3M(b+N?mt`?bP9EX4n+=gThJlp( zK*DNv3?@o>;0uA5Ow*mz8mUS8AyD%f=Ag}5!VXUBCtDw-lE%#NONygO8>uE;YbyJh zj#HjW(wgMg$DDK&;Xxw+?vo3+rNblVX=9?KAGevE=7PpvJ^ws*9JysTypfRBO@>XzM zh#1N-vKx6ULdIO(D+Ue@eyb66u6T2URn1jP-Vban{aXx#>KW*fIf>eOA(K39m>-1>>e!c$=EDwU)8}aZ`it)09&i37H<7a>11eTa0lIP zJ>8}pV|7go}rt(RKv)AdYL zR=~h>g(JXl(Szb@*HB2@H08$&Hf|D5?aAD&9~VA4r?fN!zIIi1s|7`LfX31r-wB&j zDca?`2!7iiR|TP_Ex-zGvxD?783`&)RiU)a^59`CGI$~ZkT7LKtGKo%?on09TalHY zx=idlbp_LEEtcwvlfxt4xPV62VapR;#O^W?tt$TjJHU1cSh=Nnoa!f<<}RG?n^Jru zq0-S5i`%u_$z-@cUp6*8pXxv0E@@Mc@Bj|jH}18Uhv>02m>tfYkd$nB_~ zuvhdI?1RC9)IB z&i6H&b591O%*@79_yRMxSDy{r^y<0Q_0DX;{f<{lxy9r;>K8oXDsn@)s4rhYQW&AH z*Q8}_tg`BBS2VYWi3dOm=vFdxv$+br8iw8&=L26%H2{@U4#(9uMC^d3Iiby0ayJDe zl!rOOjw39S(OteCgeWsXf=E;~4-B3#${nNu%~PQRQm&;Xyw1vWM1hoQlW0mjli2=2 zJF6i(xZa!3iCfrN%`a*j_n=$bTy+2J9Zg%{wYyyPUiB^IuVyg6ZIeOq+` zsH-6%#{p?&k5*MhTwCQE>QjSEfxJAKy2j}TAvHx*T1zz@)ccDAn0u-{UKFc<)xp(s z!J!A3myeKmV2-K!Q{+@{xM>Y&-CEF1;xH{bE|AYnGF0x%FsZ884n{XB>Qh3=VCu}7rJ7oqnYkONGvOMq8OjCnOyX~da!F_m`OrZbUQ>SmZ@ zXlG<~6^?cMb6 z7(1??X0pXi6F^`C3af-{jisiH7L4O0`mKXNiHl~q@s>I(9gWDwLmxl_%U-J*;$x3@ z9?H)1aq!w&-h6;nRFo!1c#`f)bh#ypDBWwGe4Jw{B}WRreCv4&Y*`dTpinC7po==3 z1{5=`HHJ$WHPOxQKF=8}FL0UQ<87BNy>Qg_%A&`OK%JZyez;!fUmKg_HzT6wTtVSi zP6U2!`Gu3J(8D>0W}cT@DDcij#QBI(Q*>xABh=*o0ARC2%`WGgPwG|o7)W1ysSS6Q zAX+i$vZS{{`Kw}K^A|mg-3lYJvnN$QQr9Q$&e_6{d$pd95w@7de!HziZomOi+VnN7 zjxm7H0LjVZt}Nf~4oTo-mY?7}V6J zwQ5%^qO`jf0ynoUAuX-h8E(pO6n7Z%FtOLF4--2r-E?`*%7(s>JA5H7Rs@VCJ+QJ~ zT~@Ny35~7vLMw3bbER0ao5It8s7f0pl0@=a(VPIRnTIO6Q{@;|4J0Y!JgkRk?0|Mv z^WbMHc{vIVM?4i;=aOh5EN9H7vA{GaTQuY+87@XLlqG}>ypq~-REBg=nJ&rZOb$0p zo#_Rl!Zw1DD8|7E9tu><&gq_}<-ryR`P~p6WTG^t%e=};;?f+)Oj&MKU1d4kt7b?G zcUASWw|>d;o)E^eW$q2q(~-$#tE3`biq_nuYr}vm9a;&Sy5W4DJ!0)q`a}n1z^m&_ z-~bk6z07tAS9YfXn;B&0>H`}UcT0y9Hd4bi9$ybR=Aa6OMCapl;1U>4dvaBUkJfX` zD#fW~5pNo}O{^TM`Zoh9VNz>iaXWHRBV(g}q0LvF85%xl086do}h$O zxuZM!tEnlP$TVSP&Zil3(P}GlId%St$=|Et>NxCXxV4$EZT7R z#^;y;S&Z>s*U<#3d$%I$hWb1(3FJGXt-KjyaBH!$qBJwa%|Wi;Zb|A}b#(jqP6N5> zs`@eQGQ?*timLPDNa9ZUPf@wi#s)~rdbZP3PW?||!VyL^VOnxqa5ib@B6FR|C?)6v zq6ws2oyg)Q-qu7YhY1Q5Dsv%3@O-YaEp$7TcDx~_wR4cg+y=^{3q zxR2R(E*-Kmf|-mA4GkL(%f0YcJw<+^=;C!cH>a_w7IYNinh=p)S)rr@x|J!=(gK0* zhIi_JCDFfxM7~PcsUKH2i1D{ft073%Gm??vwif)9I*RtQV19`u@;f9OjVtA85u7Z= z#@|xVay2c4a`?RVQR|~&Va^b1Ax!1B7(mnr!Sz)wjgjU;Fc=HIfM@$HM-sr@dYO)U ztZn|FQQ52J&NRU6e9qt9RkdwSL-!m$>r?MFwNqzzKl`aXDFLayQs;j;dHO1E6qz!4pcAl@qXgNxW zBn*`@o?N|CQ^}|e)ujw%xD~5RC7w#zFR4yI^-`H0QxvhB1wE1ZeOA3} zb}}PQ0&UL&Wb}g#%7rmg?i$d=Q-LZB(1*7n9c1P_l*Dz7AmpL|qo*4ADKk@z8*@>N z=UB%@Ij37jReOmdhN(QHw1qqklxX3@vZu!pJk?lCmuTBT>Z4S!oT~#C2Fg6~?3DQ> ziYO{-JR(|C5LS8cN_OiI0K2NrKCnYBob_3nokOTiq-sR?83!qFPUkoeRZUA(;tp!o z-qKtNS-+{3lf*`*Xel#*N}52^$wQ_&z*BLYE&V)r6GS;$qdQ~SSWOrKSJe3xrtpTf zk+CK+GODhU7K6T2(Z+ZR6?2*-keni{pG=M&P@_8C^ITT7 zw>Ki)a>BsWwAzott?X2wxDpUFWV5kS?cmaaNJB@fdz4059K4qAYg){0l@0Wu?gD0O zh%VX6!invuiuU!%vx$LcM|gPl@vJZ>SzA*ZtRT~!d!e7i1x##XrMDdh6*0aP{m zNT~0RV1H6LE8O7Yl7fDsBH5fa7(I|#iSTDW&Xa$+c+zQU+tFvGsKMq`N}G{+E-uP~ z>fWT_EIKrsBZJnRsyrgs-aC|^c>wNJE35JGI0BRJrQ76XT3Tj8^$5OgVCRsWZBg5G zo)fsZ4MA8#CaiC`QO=AFSMFwxil@vLw$D2YM(Y7jDbC9B-(Kj5!YU7va!Bl$#&nu_ot;$Yn8#p`HCEE$z<>x zP&i{xAexS)q;pX2HR3qV90KYxjC>8;t__G0l?Iv3nCf=m ze0lXu&$#r_sgbQ~HVZ#7xu4qKj%~00NfR zWGKw?v}HKQqj0zFjt7!CqrHna`-r=orx zu~p$`ntWy77l@ zu{>9EY*ez6?qN{ZSs2wO$0Ts-$dA0qpUi)B6pEJvGmd$jpt*?I!BMVAMfh`?PC?x@ zG_4KBaG=*#7VQ|+QQPhJ3!8&k6N6pcDWgvtncmA$jtH{KT`oyD9FvjMyI(zsSG8Ol zRTM37X)g2%JUlC0@s`GS^isJ;7-fC`0FjvG$jIh5!kxCT zEwvA`x_IFrvwU_;{Uw&Kq9b0m6~0-|I%ZQ4O-&wMCXiL!Fq)&nmq7{#<73)m`H*1lgUK8tS*a#J)7dBRO2V~K!loSIPL z0Ltk!S}OF=+XJ7}YA1BJNPGB;qG3G9R2OTz$tA>w=aSIDL*uiegK*))Gf7vTalu)X zly_QrhCD{+)lO+^@uY&YRd&Zv)H$vj^eROmdqzXtK1B%S@W}FODe2hu;lLcGDr}5- z)Xarf1>#y#1BRj9TETvXP&2Vkz~wBJwN}|-ZbtZAC)+hksyK!!Qh(5bHsi55as9&d zeARHz9yJ4z3LPMP|3K z0vy;{NItu+ZDO@L?Qo~2W=pCjjvu>#UWVgt4>ri0`ay=o19Xm{ZT*!yAnZ-AVU?zq zPIXcXX~G@EfO) zL0V1e8EU#6j>?*{lSWP!-mU;zc3JD4IKew1D*~%1X@glH7(u87hgiz(2%xaI|l8Ws5zPOwtWz zFgD6EYZ+x}*SUgvh846FxoAa6 zPBtZ2#?2vV*CvL_BsWsz@=R1ww;YwgV8&AuMhMD$rJe?DGZWK>${8OMmxo@HTc_)M`^0SsxvqpM+pa^Z|~R}6M?2SrCFFsR~%=5QJoh8t@nglaiBQE6Lz3~7~SCR9|6bt_RpNXXjUDyXeGB@Sui zRirbBx@v3FB5q89 zMF)ab(=IBmA~14QB~K7FfaSvj)n>SdjA^Oicry)M23Iq^@wCs1NU1et!{aBCuXeRU zScu6urODCmym>(Zbbc^0b_)rA;#XWjYY&vHMI5tBBcCaAoOdLZVqdp4kE^!JUL^P{ zs~bcLnu6J!GEhmVZmCH@B$f(|@@j0{3LP*rjPKQSTVD)O(nQkMG!TzSWP?Lhr8s$R z`NG}O>7gHNo4SompSd1uToMch0+SV*o-zKI2jr}w8}63&fK{hdebExOUd&>e2x;B3 z0<&y`NXI2rHA5mkVghn1_=`4p`=J(>0FrN!>Wa9beqV(?gtD*?426upR2fI|-MXE@ zx04*ADT&B9B}E(8sj-b~;NDSNWDwFr$@f<=n`A4gB#2vW z@Gu%FIp74pdWuFJ!i96MXN2sKvqI!dx?2ALu~ACZ5=B#E+)Wg6kmmEspaa7jE6G^u zoM&|wrhtZnq=h9mDLzJ9TS%&N^UXDvH+GySCt+joQUh`^x%mZdaaiE0o5)SLz87W0 z;l5+?8?QF;4P&b=b(K#!GRjFk^5ReKy$O75w3b@>vcd##I|TP51NUBWxCb~BoSjDi z_5oq){{YoUnP*|O_9bi=UOckK=H;xY@!hvZ@BNphIMtE+l+JcKla9?Z8Lz346KE=Z6p$T zm7;>A95sZJdIfJoWK>Ghi^*lHph|SuZ!xl+YT@eI{5kD0xAj^E@LWPKFfMjFtqEL! zt8B+pPpSOYf{EIi3ah)=&9Yr=1PtyJ%Vh1)GF3TR+ruZW7&Me_RxNNLQqs-|*sB&y z0Nkdl3HFMq_zuf8c{&*5=&z@o79G}N`BV&U0H#jf2_q95bE#+!$yw7ebBSr{tt-ci zBZoy!$Ov$q+kKXWIOoU$#}tYZ;7vryYUjPDS*bDtmh9@>Mw}9Czx6&K@JLC zGg%(6*95nKBipj8xV*+1^R_ouLvS12K)*D5xBzah&#aJ5WYqAr;u+y+)-?f)Wosj^ zV@7q4s^L^ud2OgND3!an)3{8Id~`Luv}lpF;f>ZCkbXNbdordAh7q4INA@b8398--a}M(7FIb$Y8ybe}56-|gCRKvXp}%DH4t1`b$W zU)2SnZM#!JBXksM_wZNrj;~1vigjUHFa|dn2{h1naOWKrRmS7)jyjG4>?*P`T$ZMs znQqrG9ONX(;f#W_Lx>s3xlD%c$yd99X6w%2RHeAkhw;ah5ViGY3{eyY@Y67T;&~;945$jdQzhc{_fAYo(xM!*H~8^eJi7U%LLIB>88Y zD0o)xZU&6NcK-mI_;9+f3h*pcF}3oK5>Bpi*+pZ4kJX{M`70=(Y)#lEgn#vm8@eGWr>bA1N#te|N z*NfB?t#ccUgYAT>6-0W1YDXVK;fOab{6~Ho1eN~!ha)UFZ_Rj}Mv^-BMKyle^sHsMP zNLbT5O?u2zG9MtQ}067akEc#!uR3$xTWE1980jXjjYKY zWGkv#U?Hv=ioK`QHn3H)Ugd4pzDZ{+h@O1VYdlCBvDMWbEh&-OoPO$GhUOkyE7F=s zsjbtf)gTB(r!}EUk6M8N-3W%G=UiVUevaBRE{zo%&?RCplMi^|$~W zr9IWlbVgHS=-WwkhCC2*qtw+ls9>!4s_`3vxl*AnXv4@;$5AN_vd57%^ek{Eb)BlF zF~7><2hC_JCeXu&ES=Wo?Pa57JSIo#{FPHe^HyEEv&iLZxPH$iLtD00EwY>5oFpSU zdajeg6qo>!u}^UI8i?qm-bZcxJB>LC^_H&)4=&2~l8vncE!zrf=~*K*hVO-|PLeQ0 z@!+MTqz!PuR=(&Q--IV1r0~u(sbQOLrrj75Mh;yRRkZkw?6Ft6Q0BW(9*d(^#NQ0; zu=mK^=MdGIt+EnWCR%x8CVCrlOk;d~5LYyo*9P z)DT-X^cwpx(K*;~$-pW_4AKd39&ivrK)Xcq=wpfrH1GK?Jz4`U4%4=GC?J(z>d4I1 z_KhWt?(%MVttU4e@5uxfR;S$9@u@kY(v_o6B{n^?gb-LZ9sM6_Ev>}r3r|J6P(fnq zh&80Av7~O$q0J0?`2q+kwRTahk=q*@;ib6wD{EWa*@hfO=peK-&l-qhbzpRL_v=k;f$j7G}Tf zELJl{Nz=Nr$yEZ?FCELr~mts`QOu+&m~1JyrJNMXVV zElB;MW@_|&g<~sRL3R%$5Lp_ZyicMmPIft@xy~{GNkIiBpR`w*aY6x)l3c)J2q3iQ z&}uBL;CN%?kzc${$_Ogf{e+9|GZn1`uGvvb8+=Y(5J6{0v6hWQ(c*Ga<0n=SK`D?| z*>7zblx11Vv$jD69bFMmvJG&{3dr3WGn{Xf5LWB$5KOe;z2kU2mrdbjj{%!?K?Q1$ zxV2YE+|v9brT`%>)*Hqq9Peh&BHJ0a)tb9X<%k2rLa(-i=!R W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Cpp/xpu/vgg19/vgg19_client.py b/examples/Cpp/xpu/vgg19/vgg19_client.py new file mode 100644 index 00000000..65d0dd91 --- /dev/null +++ b/examples/Cpp/xpu/vgg19/vgg19_client.py @@ -0,0 +1,33 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_client import Client +from paddle_serving_app.reader import Sequential, File2Image, Resize, CenterCrop +from paddle_serving_app.reader import RGB2BGR, Transpose, Div, Normalize + +client = Client() +client.load_client_config( + "serving_client/serving_client_conf.prototxt") +client.connect(["127.0.0.1:7702"]) + +seq = Sequential([ + File2Image(), Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], True) +]) + +image_file = "daisy.jpg" +img = seq(image_file) +fetch_map = client.predict(feed={"image": img}, fetch=["save_infer_model/scale_0"]) +#print(fetch_map) +print(fetch_map["save_infer_model/scale_0"].reshape(-1)) diff --git a/examples/Pipeline/PaddleClas/DarkNet53/README.md b/examples/Pipeline/PaddleClas/DarkNet53/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/DarkNet53/README_CN.md b/examples/Pipeline/PaddleClas/DarkNet53/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/DarkNet53/benchmark.py b/examples/Pipeline/PaddleClas/DarkNet53/benchmark.py new file mode 100644 index 00000000..3e5db19b --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG_QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/DarkNet53/benchmark.sh b/examples/Pipeline/PaddleClas/DarkNet53/benchmark.sh new file mode 100644 index 00000000..9a27670f --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-DarkNet53" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "#----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTIL:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "GPU_MEM:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTIL:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/DarkNet53/benchmark_cfg.yaml b/examples/Pipeline/PaddleClas/DarkNet53/benchmark_cfg.yaml new file mode 100644 index 00000000..f4d354e3 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/benchmark_cfg.yaml @@ -0,0 +1,29 @@ +cuda_version: "10.1" +cudnn_version: "7.6" +trt_version: "6.0" +python_version: "3.7" +gcc_version: "8.2" +paddle_version: "2.0.1" + +cpu: "Intel(R) Xeon(R) Gold 5117 CPU @ 2.00GHz X12" +gpu: "T4" +xpu: "None" +api: "" +owner: "cuicheng01" + +model_name: "imagenet" +model_type: "static" +model_source: "PaddleClas" +model_url: "" + +batch_size: 1 +num_of_samples: 1000 +input_shape: "3,224,224" + +runtime_device: "cpu" +ir_optim: true +enable_memory_optim: true +enable_tensorrt: false +precision: "fp32" +enable_mkldnn: false +cpu_math_library_num_threads: "" diff --git a/examples/Pipeline/PaddleClas/DarkNet53/config.yml b/examples/Pipeline/PaddleClas/DarkNet53/config.yml new file mode 100644 index 00000000..19f14e73 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: DarkNet53/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/DarkNet53/cpu_utilization.py b/examples/Pipeline/PaddleClas/DarkNet53/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/DarkNet53/daisy.jpg b/examples/Pipeline/PaddleClas/DarkNet53/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/DarkNet53/get_model.sh b/examples/Pipeline/PaddleClas/DarkNet53/get_model.sh new file mode 100644 index 00000000..b19bd02d --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/DarkNet53.tar +tar -xf DarkNet53.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/DarkNet53/imagenet.label b/examples/Pipeline/PaddleClas/DarkNet53/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/DarkNet53/pipeline_http_client.py b/examples/Pipeline/PaddleClas/DarkNet53/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/DarkNet53/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/DarkNet53/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/DarkNet53/resnet50_web_service.py b/examples/Pipeline/PaddleClas/DarkNet53/resnet50_web_service.py new file mode 100644 index 00000000..4fadfd79 --- /dev/null +++ b/examples/Pipeline/PaddleClas/DarkNet53/resnet50_web_service.py @@ -0,0 +1,71 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/README.md b/examples/Pipeline/PaddleClas/HRNet_W18_C/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/README_CN.md b/examples/Pipeline/PaddleClas/HRNet_W18_C/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.py b/examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.sh b/examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.sh new file mode 100644 index 00000000..9abbd0b3 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-HRNet_W18_C" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/config.yml b/examples/Pipeline/PaddleClas/HRNet_W18_C/config.yml new file mode 100644 index 00000000..63eb7216 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: HRNet_W18_C/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/cpu_utilization.py b/examples/Pipeline/PaddleClas/HRNet_W18_C/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/daisy.jpg b/examples/Pipeline/PaddleClas/HRNet_W18_C/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/get_model.sh b/examples/Pipeline/PaddleClas/HRNet_W18_C/get_model.sh new file mode 100644 index 00000000..73381edb --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/HRNet_W18_C.tar +tar -xf HRNet_W18_C.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/imagenet.label b/examples/Pipeline/PaddleClas/HRNet_W18_C/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_http_client.py b/examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/HRNet_W18_C/resnet50_web_service.py b/examples/Pipeline/PaddleClas/HRNet_W18_C/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/HRNet_W18_C/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/README.md b/examples/Pipeline/PaddleClas/MobileNetV1/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/README_CN.md b/examples/Pipeline/PaddleClas/MobileNetV1/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/benchmark.py b/examples/Pipeline/PaddleClas/MobileNetV1/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/benchmark.sh b/examples/Pipeline/PaddleClas/MobileNetV1/benchmark.sh new file mode 100644 index 00000000..d1014244 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-MobileNetV1" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/config.yml b/examples/Pipeline/PaddleClas/MobileNetV1/config.yml new file mode 100644 index 00000000..a20d2998 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: MobileNetV1/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/cpu_utilization.py b/examples/Pipeline/PaddleClas/MobileNetV1/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/daisy.jpg b/examples/Pipeline/PaddleClas/MobileNetV1/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/get_model.sh b/examples/Pipeline/PaddleClas/MobileNetV1/get_model.sh new file mode 100644 index 00000000..3cc56d3a --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/MobileNetV1.tar +tar -xf MobileNetV1.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/imagenet.label b/examples/Pipeline/PaddleClas/MobileNetV1/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/pipeline_http_client.py b/examples/Pipeline/PaddleClas/MobileNetV1/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/MobileNetV1/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/MobileNetV1/resnet50_web_service.py b/examples/Pipeline/PaddleClas/MobileNetV1/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV1/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/README.md b/examples/Pipeline/PaddleClas/MobileNetV2/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/README_CN.md b/examples/Pipeline/PaddleClas/MobileNetV2/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/benchmark.py b/examples/Pipeline/PaddleClas/MobileNetV2/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/benchmark.sh b/examples/Pipeline/PaddleClas/MobileNetV2/benchmark.sh new file mode 100644 index 00000000..53ede791 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-MobileNetV2" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/config.yml b/examples/Pipeline/PaddleClas/MobileNetV2/config.yml new file mode 100644 index 00000000..55c2e06d --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: MobileNetV2/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/cpu_utilization.py b/examples/Pipeline/PaddleClas/MobileNetV2/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/daisy.jpg b/examples/Pipeline/PaddleClas/MobileNetV2/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/get_model.sh b/examples/Pipeline/PaddleClas/MobileNetV2/get_model.sh new file mode 100644 index 00000000..e3262f26 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/MobileNetV2.tar +tar -xf MobileNetV2.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/imagenet.label b/examples/Pipeline/PaddleClas/MobileNetV2/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/pipeline_http_client.py b/examples/Pipeline/PaddleClas/MobileNetV2/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/MobileNetV2/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/MobileNetV2/resnet50_web_service.py b/examples/Pipeline/PaddleClas/MobileNetV2/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV2/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README.md b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README_CN.md b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.py b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.sh b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.sh new file mode 100644 index 00000000..6a431f10 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-MobileNetV3_large_x1_0" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/config.yml b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/config.yml new file mode 100644 index 00000000..f04e1e90 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 2 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: MobileNetV3_large_x1_0/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/cpu_utilization.py b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/daisy.jpg b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/get_model.sh b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/get_model.sh new file mode 100644 index 00000000..d2135801 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/MobileNetV3_large_x1_0.tar +tar -xf MobileNetV3_large_x1_0.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/imagenet.label b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_http_client.py b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/resnet50_web_service.py b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/MobileNetV3_large_x1_0/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README.md b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README_CN.md b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.py b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.sh b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.sh new file mode 100644 index 00000000..2b9ec90e --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ResNeXt101_vd_64x4d" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/config.yml b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/config.yml new file mode 100644 index 00000000..0f0facc5 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ResNeXt101_vd_64x4d/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/cpu_utilization.py b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/daisy.jpg b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/get_model.sh b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/get_model.sh new file mode 100644 index 00000000..603aa286 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/ResNeXt101_vd_64x4d.tar +tar -xf ResNeXt101_vd_64x4d.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/imagenet.label b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNeXt101_vd_64x4d/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/README.md b/examples/Pipeline/PaddleClas/ResNet50_vd/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/README_CN.md b/examples/Pipeline/PaddleClas/ResNet50_vd/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.py b/examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.sh b/examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.sh new file mode 100644 index 00000000..bc1c6524 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ResNet50_vd" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/config.yml b/examples/Pipeline/PaddleClas/ResNet50_vd/config.yml new file mode 100644 index 00000000..104504f4 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ResNet50_vd/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/cpu_utilization.py b/examples/Pipeline/PaddleClas/ResNet50_vd/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/daisy.jpg b/examples/Pipeline/PaddleClas/ResNet50_vd/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/get_model.sh b/examples/Pipeline/PaddleClas/ResNet50_vd/get_model.sh new file mode 100644 index 00000000..7b4f0b24 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/ResNet50_vd.tar +tar -xf ResNet50_vd.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/imagenet.label b/examples/Pipeline/PaddleClas/ResNet50_vd/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ResNet50_vd/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README.md b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README_CN.md b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.py b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.sh b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.sh new file mode 100644 index 00000000..17593214 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ResNet50_vd_FPGM" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/config.yml b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/config.yml new file mode 100644 index 00000000..26087067 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ResNet50_vd_FPGM/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["save_infer_model/scale_0.tmp_1"] diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/cpu_utilization.py b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/daisy.jpg b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/get_model.sh b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/get_model.sh new file mode 100644 index 00000000..4e1414e9 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/ResNet50_vd_FPGM.tar +tar -xf ResNet50_vd_FPGM.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/imagenet.label b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/resnet50_web_service.py new file mode 100644 index 00000000..43dac2a2 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_FPGM/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["save_infer_model/scale_0.tmp_1"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/README.md b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/README_CN.md b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.py b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.sh b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.sh new file mode 100644 index 00000000..248f9506 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ResNet50_vd_KL" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/config.yml b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/config.yml new file mode 100644 index 00000000..9ea71c67 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ResNet50_vd_KL/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["save_infer_model/scale_0.tmp_0"] diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/cpu_utilization.py b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/daisy.jpg b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/get_model.sh b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/get_model.sh new file mode 100644 index 00000000..d81b8eb5 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/ResNet50_vd_KL.tar +tar -xf ResNet50_vd_KL.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/imagenet.label b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_KL/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/resnet50_web_service.py new file mode 100644 index 00000000..569b15bc --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_KL/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"inputs": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["save_infer_model/scale_0.tmp_0"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README.md b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README_CN.md b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.py b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.sh b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.sh new file mode 100644 index 00000000..06cbe718 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ResNet50_vd_PACT" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/config.yml b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/config.yml new file mode 100644 index 00000000..22472052 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ResNet50_vd_PACT/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["save_infer_model/scale_0.tmp_1"] diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/cpu_utilization.py b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/daisy.jpg b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/get_model.sh b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/get_model.sh new file mode 100644 index 00000000..d02a90c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/ResNet50_vd_PACT.tar +tar -xf ResNet50_vd_PACT.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/imagenet.label b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/resnet50_web_service.py new file mode 100644 index 00000000..debc1753 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet50_vd_PACT/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"inputs": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["save_infer_model/scale_0.tmp_1"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/README.md b/examples/Pipeline/PaddleClas/ResNet_V2_50/README.md new file mode 100644 index 00000000..1297abfb --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/README.md @@ -0,0 +1,20 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +python3 -m paddle_serving_app.package --get_model resnet_v2_50_imagenet +tar -xzvf resnet_v2_50_imagenet.tar.gz +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/README_CN.md b/examples/Pipeline/PaddleClas/ResNet_V2_50/README_CN.md new file mode 100644 index 00000000..d547b289 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/README_CN.md @@ -0,0 +1,20 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +python3 -m paddle_serving_app.package --get_model resnet_v2_50_imagenet +tar -xzvf resnet_v2_50_imagenet.tar.gz +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.py b/examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.py new file mode 100644 index 00000000..4b0336f9 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18000/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.sh b/examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.sh new file mode 100644 index 00000000..14c82dfc --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ResNet_v2_50" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/config.yml b/examples/Pipeline/PaddleClas/ResNet_V2_50/config.yml new file mode 100644 index 00000000..ead533a4 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: resnet_v2_50_imagenet_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["score"] diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/daisy.jpg b/examples/Pipeline/PaddleClas/ResNet_V2_50/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_http_client.py new file mode 100644 index 00000000..119a4121 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_http_client.py @@ -0,0 +1,35 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import requests +import json +import cv2 +import base64 +import os + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(1): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_rpc_client.py new file mode 100644 index 00000000..82a57024 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ResNet_V2_50/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ResNet_V2_50/resnet50_web_service.py new file mode 100644 index 00000000..6a7213b7 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ResNet_V2_50/resnet50_web_service.py @@ -0,0 +1,71 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["score"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README.md b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README_CN.md b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.py b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.py new file mode 100644 index 00000000..c80da12c --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.py @@ -0,0 +1,153 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 1 + config["op"]["imagenet"]["local_service_conf"]["devices"] = gpu_id + else: + config["op"]["imagenet"]["local_service_conf"]["device_type"] = 0 + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18080/imagenet/prediction" + start = time.time() + + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + keys, values = [], [] + for i in range(batch_size): + keys.append("image_{}".format(i)) + values.append(image) + data = {"key": keys, "value": values} + latency_list = [] + start_time = time.time() + total_num = 0 + while True: + l_start = time.time() + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_num += 1 + if time.time() - start_time > 20: + break + end = time.time() + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18080']) + start = time.time() + test_img_dir = "imgs/" + for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + start_time = time.time() + while True: + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + if time.time() - start_time > 10: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + if device == "gpu": + gpu_id = sys.argv[5] + else: + gpu_id = None + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.sh b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.sh new file mode 100644 index 00000000..08523c4a --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="clas-ShuffleNetV2_x1_0" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/config.yml b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/config.yml new file mode 100644 index 00000000..bdfbff08 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/config.yml @@ -0,0 +1,33 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18080 +rpc_port: 9993 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ShuffleNetV2_x1_0/ppcls_model/ + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/cpu_utilization.py b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/cpu_utilization.py new file mode 100644 index 00000000..984c7237 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/cpu_utilization.py @@ -0,0 +1,4 @@ +import psutil +cpu_utilization=psutil.cpu_percent(1,False) +print('CPU_UTILIZATION:', cpu_utilization) + diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/daisy.jpg b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/get_model.sh b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/get_model.sh new file mode 100644 index 00000000..6a0611ce --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/model/ShuffleNetV2_x1_0.tar +tar -xf ShuffleNetV2_x1_0.tar + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/imagenet.label b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_http_client.py b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_http_client.py new file mode 100644 index 00000000..bc3fab25 --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_http_client.py @@ -0,0 +1,19 @@ +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + +if __name__ == "__main__": + url = "http://127.0.0.1:18080/imagenet/prediction" + with open(os.path.join(".", "daisy.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_rpc_client.py new file mode 100644 index 00000000..a816eb8e --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/pipeline_rpc_client.py @@ -0,0 +1,36 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9993']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/resnet50_web_service.py b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/resnet50_web_service.py new file mode 100644 index 00000000..c246e45d --- /dev/null +++ b/examples/Pipeline/PaddleClas/ShuffleNetV2_x1_0/resnet50_web_service.py @@ -0,0 +1,72 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + batch_size = len(input_dict.keys()) + imgs = [] + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + imgs.append(img[np.newaxis, :].copy()) + input_imgs = np.concatenate(imgs, axis=0) + return {"image": input_imgs}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + score_list = fetch_dict["prediction"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleClas/imagenet/README.md b/examples/Pipeline/PaddleClas/imagenet/README.md new file mode 100644 index 00000000..6fbe0c4c --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_model.sh +``` + +## Start server + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/imagenet/README_CN.md b/examples/Pipeline/PaddleClas/imagenet/README_CN.md new file mode 100644 index 00000000..c204c3c6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_model.sh +``` + +## 启动服务 + +``` +python3 resnet50_web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleClas/imagenet/config.yml b/examples/Pipeline/PaddleClas/imagenet/config.yml new file mode 100644 index 00000000..600093b3 --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/config.yml @@ -0,0 +1,41 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18082 +rpc_port: 9999 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False +op: + imagenet: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 2 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: ResNet50_vd_model + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "0" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["score"] + + #precsion, 预测精度,降低预测精度可提升推理速度 + #GPU 支持: "fp32"(default), "fp16", "int8"; + #CPU 支持: "fp32"(default), "fp16", "bf16"(mkldnn); 不支持: "int8" + precision: "fp16" + + #ir_optim开关 + ir_optim: False diff --git a/examples/Pipeline/PaddleClas/imagenet/daisy.jpg b/examples/Pipeline/PaddleClas/imagenet/daisy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7edeca63e5f32e68550ef720d81f59df58a8eabc GIT binary patch literal 39696 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 W##>Ru&v$Q>Ac6~0A8IH*&;Qw&gu-k9 literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleClas/imagenet/get_model.sh b/examples/Pipeline/PaddleClas/imagenet/get_model.sh new file mode 100644 index 00000000..1964c79a --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/get_model.sh @@ -0,0 +1,5 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/ResNet50_vd.tar.gz +tar -xzvf ResNet50_vd.tar.gz + +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imagenet-example/image_data.tar.gz +tar -xzvf image_data.tar.gz diff --git a/examples/Pipeline/PaddleClas/imagenet/imagenet.label b/examples/Pipeline/PaddleClas/imagenet/imagenet.label new file mode 100644 index 00000000..d7146735 --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/imagenet.label @@ -0,0 +1,1000 @@ +tench, Tinca tinca, +goldfish, Carassius auratus, +great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias, +tiger shark, Galeocerdo cuvieri, +hammerhead, hammerhead shark, +electric ray, crampfish, numbfish, torpedo, +stingray, +cock, +hen, +ostrich, Struthio camelus, +brambling, Fringilla montifringilla, +goldfinch, Carduelis carduelis, +house finch, linnet, Carpodacus mexicanus, +junco, snowbird, +indigo bunting, indigo finch, indigo bird, Passerina cyanea, +robin, American robin, Turdus migratorius, +bulbul, +jay, +magpie, +chickadee, +water ouzel, dipper, +kite, +bald eagle, American eagle, Haliaeetus leucocephalus, +vulture, +great grey owl, great gray owl, Strix nebulosa, +European fire salamander, Salamandra salamandra, +common newt, Triturus vulgaris, +eft, +spotted salamander, Ambystoma maculatum, +axolotl, mud puppy, Ambystoma mexicanum, +bullfrog, Rana catesbeiana, +tree frog, tree-frog, +tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui, +loggerhead, loggerhead turtle, Caretta caretta, +leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea, +mud turtle, +terrapin, +box turtle, box tortoise, +banded gecko, +common iguana, iguana, Iguana iguana, +American chameleon, anole, Anolis carolinensis, +whiptail, whiptail lizard, +agama, +frilled lizard, Chlamydosaurus kingi, +alligator lizard, +Gila monster, Heloderma suspectum, +green lizard, Lacerta viridis, +African chameleon, Chamaeleo chamaeleon, +Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis, +African crocodile, Nile crocodile, Crocodylus niloticus, +American alligator, Alligator mississipiensis, +triceratops, +thunder snake, worm snake, Carphophis amoenus, +ringneck snake, ring-necked snake, ring snake, +hognose snake, puff adder, sand viper, +green snake, grass snake, +king snake, kingsnake, +garter snake, grass snake, +water snake, +vine snake, +night snake, Hypsiglena torquata, +boa constrictor, Constrictor constrictor, +rock python, rock snake, Python sebae, +Indian cobra, Naja naja, +green mamba, +sea snake, +horned viper, cerastes, sand viper, horned asp, Cerastes cornutus, +diamondback, diamondback rattlesnake, Crotalus adamanteus, +sidewinder, horned rattlesnake, Crotalus cerastes, +trilobite, +harvestman, daddy longlegs, Phalangium opilio, +scorpion, +black and gold garden spider, Argiope aurantia, +barn spider, Araneus cavaticus, +garden spider, Aranea diademata, +black widow, Latrodectus mactans, +tarantula, +wolf spider, hunting spider, +tick, +centipede, +black grouse, +ptarmigan, +ruffed grouse, partridge, Bonasa umbellus, +prairie chicken, prairie grouse, prairie fowl, +peacock, +quail, +partridge, +African grey, African gray, Psittacus erithacus, +macaw, +sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita, +lorikeet, +coucal, +bee eater, +hornbill, +hummingbird, +jacamar, +toucan, +drake, +red-breasted merganser, Mergus serrator, +goose, +black swan, Cygnus atratus, +tusker, +echidna, spiny anteater, anteater, +platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus, +wallaby, brush kangaroo, +koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus, +wombat, +jellyfish, +sea anemone, anemone, +brain coral, +flatworm, platyhelminth, +nematode, nematode worm, roundworm, +conch, +snail, +slug, +sea slug, nudibranch, +chiton, coat-of-mail shell, sea cradle, polyplacophore, +chambered nautilus, pearly nautilus, nautilus, +Dungeness crab, Cancer magister, +rock crab, Cancer irroratus, +fiddler crab, +king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica, +American lobster, Northern lobster, Maine lobster, Homarus americanus, +spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish, +crayfish, crawfish, crawdad, crawdaddy, +hermit crab, +isopod, +white stork, Ciconia ciconia, +black stork, Ciconia nigra, +spoonbill, +flamingo, +little blue heron, Egretta caerulea, +American egret, great white heron, Egretta albus, +bittern, +crane, +limpkin, Aramus pictus, +European gallinule, Porphyrio porphyrio, +American coot, marsh hen, mud hen, water hen, Fulica americana, +bustard, +ruddy turnstone, Arenaria interpres, +red-backed sandpiper, dunlin, Erolia alpina, +redshank, Tringa totanus, +dowitcher, +oystercatcher, oyster catcher, +pelican, +king penguin, Aptenodytes patagonica, +albatross, mollymawk, +grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus, +killer whale, killer, orca, grampus, sea wolf, Orcinus orca, +dugong, Dugong dugon, +sea lion, +Chihuahua, +Japanese spaniel, +Maltese dog, Maltese terrier, Maltese, +Pekinese, Pekingese, Peke, +Shih-Tzu, +Blenheim spaniel, +papillon, +toy terrier, +Rhodesian ridgeback, +Afghan hound, Afghan, +basset, basset hound, +beagle, +bloodhound, sleuthhound, +bluetick, +black-and-tan coonhound, +Walker hound, Walker foxhound, +English foxhound, +redbone, +borzoi, Russian wolfhound, +Irish wolfhound, +Italian greyhound, +whippet, +Ibizan hound, Ibizan Podenco, +Norwegian elkhound, elkhound, +otterhound, otter hound, +Saluki, gazelle hound, +Scottish deerhound, deerhound, +Weimaraner, +Staffordshire bullterrier, Staffordshire bull terrier, +American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier, +Bedlington terrier, +Border terrier, +Kerry blue terrier, +Irish terrier, +Norfolk terrier, +Norwich terrier, +Yorkshire terrier, +wire-haired fox terrier, +Lakeland terrier, +Sealyham terrier, Sealyham, +Airedale, Airedale terrier, +cairn, cairn terrier, +Australian terrier, +Dandie Dinmont, Dandie Dinmont terrier, +Boston bull, Boston terrier, +miniature schnauzer, +giant schnauzer, +standard schnauzer, +Scotch terrier, Scottish terrier, Scottie, +Tibetan terrier, chrysanthemum dog, +silky terrier, Sydney silky, +soft-coated wheaten terrier, +West Highland white terrier, +Lhasa, Lhasa apso, +flat-coated retriever, +curly-coated retriever, +golden retriever, +Labrador retriever, +Chesapeake Bay retriever, +German short-haired pointer, +vizsla, Hungarian pointer, +English setter, +Irish setter, red setter, +Gordon setter, +Brittany spaniel, +clumber, clumber spaniel, +English springer, English springer spaniel, +Welsh springer spaniel, +cocker spaniel, English cocker spaniel, cocker, +Sussex spaniel, +Irish water spaniel, +kuvasz, +schipperke, +groenendael, +malinois, +briard, +kelpie, +komondor, +Old English sheepdog, bobtail, +Shetland sheepdog, Shetland sheep dog, Shetland, +collie, +Border collie, +Bouvier des Flandres, Bouviers des Flandres, +Rottweiler, +German shepherd, German shepherd dog, German police dog, alsatian, +Doberman, Doberman pinscher, +miniature pinscher, +Greater Swiss Mountain dog, +Bernese mountain dog, +Appenzeller, +EntleBucher, +boxer, +bull mastiff, +Tibetan mastiff, +French bulldog, +Great Dane, +Saint Bernard, St Bernard, +Eskimo dog, husky, +malamute, malemute, Alaskan malamute, +Siberian husky, +dalmatian, coach dog, carriage dog, +affenpinscher, monkey pinscher, monkey dog, +basenji, +pug, pug-dog, +Leonberg, +Newfoundland, Newfoundland dog, +Great Pyrenees, +Samoyed, Samoyede, +Pomeranian, +chow, chow chow, +keeshond, +Brabancon griffon, +Pembroke, Pembroke Welsh corgi, +Cardigan, Cardigan Welsh corgi, +toy poodle, +miniature poodle, +standard poodle, +Mexican hairless, +timber wolf, grey wolf, gray wolf, Canis lupus, +white wolf, Arctic wolf, Canis lupus tundrarum, +red wolf, maned wolf, Canis rufus, Canis niger, +coyote, prairie wolf, brush wolf, Canis latrans, +dingo, warrigal, warragal, Canis dingo, +dhole, Cuon alpinus, +African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus, +hyena, hyaena, +red fox, Vulpes vulpes, +kit fox, Vulpes macrotis, +Arctic fox, white fox, Alopex lagopus, +grey fox, gray fox, Urocyon cinereoargenteus, +tabby, tabby cat, +tiger cat, +Persian cat, +Siamese cat, Siamese, +Egyptian cat, +cougar, puma, catamount, mountain lion, painter, panther, Felis concolor, +lynx, catamount, +leopard, Panthera pardus, +snow leopard, ounce, Panthera uncia, +jaguar, panther, Panthera onca, Felis onca, +lion, king of beasts, Panthera leo, +tiger, Panthera tigris, +cheetah, chetah, Acinonyx jubatus, +brown bear, bruin, Ursus arctos, +American black bear, black bear, Ursus americanus, Euarctos americanus, +ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus, +sloth bear, Melursus ursinus, Ursus ursinus, +mongoose, +meerkat, mierkat, +tiger beetle, +ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle, +ground beetle, carabid beetle, +long-horned beetle, longicorn, longicorn beetle, +leaf beetle, chrysomelid, +dung beetle, +rhinoceros beetle, +weevil, +fly, +bee, +ant, emmet, pismire, +grasshopper, hopper, +cricket, +walking stick, walkingstick, stick insect, +cockroach, roach, +mantis, mantid, +cicada, cicala, +leafhopper, +lacewing, lacewing fly, +"dragonfly, darning needle, devils darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", +damselfly, +admiral, +ringlet, ringlet butterfly, +monarch, monarch butterfly, milkweed butterfly, Danaus plexippus, +cabbage butterfly, +sulphur butterfly, sulfur butterfly, +lycaenid, lycaenid butterfly, +starfish, sea star, +sea urchin, +sea cucumber, holothurian, +wood rabbit, cottontail, cottontail rabbit, +hare, +Angora, Angora rabbit, +hamster, +porcupine, hedgehog, +fox squirrel, eastern fox squirrel, Sciurus niger, +marmot, +beaver, +guinea pig, Cavia cobaya, +sorrel, +zebra, +hog, pig, grunter, squealer, Sus scrofa, +wild boar, boar, Sus scrofa, +warthog, +hippopotamus, hippo, river horse, Hippopotamus amphibius, +ox, +water buffalo, water ox, Asiatic buffalo, Bubalus bubalis, +bison, +ram, tup, +bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis, +ibex, Capra ibex, +hartebeest, +impala, Aepyceros melampus, +gazelle, +Arabian camel, dromedary, Camelus dromedarius, +llama, +weasel, +mink, +polecat, fitch, foulmart, foumart, Mustela putorius, +black-footed ferret, ferret, Mustela nigripes, +otter, +skunk, polecat, wood pussy, +badger, +armadillo, +three-toed sloth, ai, Bradypus tridactylus, +orangutan, orang, orangutang, Pongo pygmaeus, +gorilla, Gorilla gorilla, +chimpanzee, chimp, Pan troglodytes, +gibbon, Hylobates lar, +siamang, Hylobates syndactylus, Symphalangus syndactylus, +guenon, guenon monkey, +patas, hussar monkey, Erythrocebus patas, +baboon, +macaque, +langur, +colobus, colobus monkey, +proboscis monkey, Nasalis larvatus, +marmoset, +capuchin, ringtail, Cebus capucinus, +howler monkey, howler, +titi, titi monkey, +spider monkey, Ateles geoffroyi, +squirrel monkey, Saimiri sciureus, +Madagascar cat, ring-tailed lemur, Lemur catta, +indri, indris, Indri indri, Indri brevicaudatus, +Indian elephant, Elephas maximus, +African elephant, Loxodonta africana, +lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens, +giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca, +barracouta, snoek, +eel, +coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch, +rock beauty, Holocanthus tricolor, +anemone fish, +sturgeon, +gar, garfish, garpike, billfish, Lepisosteus osseus, +lionfish, +puffer, pufferfish, blowfish, globefish, +abacus, +abaya, +"academic gown, academic robe, judges robe", +accordion, piano accordion, squeeze box, +acoustic guitar, +aircraft carrier, carrier, flattop, attack aircraft carrier, +airliner, +airship, dirigible, +altar, +ambulance, +amphibian, amphibious vehicle, +analog clock, +apiary, bee house, +apron, +ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin, +assault rifle, assault gun, +backpack, back pack, knapsack, packsack, rucksack, haversack, +bakery, bakeshop, bakehouse, +balance beam, beam, +balloon, +ballpoint, ballpoint pen, ballpen, Biro, +Band Aid, +banjo, +bannister, banister, balustrade, balusters, handrail, +barbell, +barber chair, +barbershop, +barn, +barometer, +barrel, cask, +barrow, garden cart, lawn cart, wheelbarrow, +baseball, +basketball, +bassinet, +bassoon, +bathing cap, swimming cap, +bath towel, +bathtub, bathing tub, bath, tub, +beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon, +beacon, lighthouse, beacon light, pharos, +beaker, +bearskin, busby, shako, +beer bottle, +beer glass, +bell cote, bell cot, +bib, +bicycle-built-for-two, tandem bicycle, tandem, +bikini, two-piece, +binder, ring-binder, +binoculars, field glasses, opera glasses, +birdhouse, +boathouse, +bobsled, bobsleigh, bob, +bolo tie, bolo, bola tie, bola, +bonnet, poke bonnet, +bookcase, +bookshop, bookstore, bookstall, +bottlecap, +bow, +bow tie, bow-tie, bowtie, +brass, memorial tablet, plaque, +brassiere, bra, bandeau, +breakwater, groin, groyne, mole, bulwark, seawall, jetty, +breastplate, aegis, egis, +broom, +bucket, pail, +buckle, +bulletproof vest, +bullet train, bullet, +butcher shop, meat market, +cab, hack, taxi, taxicab, +caldron, cauldron, +candle, taper, wax light, +cannon, +canoe, +can opener, tin opener, +cardigan, +car mirror, +carousel, carrousel, merry-go-round, roundabout, whirligig, +"carpenters kit, tool kit", +carton, +car wheel, +cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM, +cassette, +cassette player, +castle, +catamaran, +CD player, +cello, violoncello, +cellular telephone, cellular phone, cellphone, cell, mobile phone, +chain, +chainlink fence, +chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour, +chain saw, chainsaw, +chest, +chiffonier, commode, +chime, bell, gong, +china cabinet, china closet, +Christmas stocking, +church, church building, +cinema, movie theater, movie theatre, movie house, picture palace, +cleaver, meat cleaver, chopper, +cliff dwelling, +cloak, +clog, geta, patten, sabot, +cocktail shaker, +coffee mug, +coffeepot, +coil, spiral, volute, whorl, helix, +combination lock, +computer keyboard, keypad, +confectionery, confectionary, candy store, +container ship, containership, container vessel, +convertible, +corkscrew, bottle screw, +cornet, horn, trumpet, trump, +cowboy boot, +cowboy hat, ten-gallon hat, +cradle, +crane, +crash helmet, +crate, +crib, cot, +Crock Pot, +croquet ball, +crutch, +cuirass, +dam, dike, dyke, +desk, +desktop computer, +dial telephone, dial phone, +diaper, nappy, napkin, +digital clock, +digital watch, +dining table, board, +dishrag, dishcloth, +dishwasher, dish washer, dishwashing machine, +disk brake, disc brake, +dock, dockage, docking facility, +dogsled, dog sled, dog sleigh, +dome, +doormat, welcome mat, +drilling platform, offshore rig, +drum, membranophone, tympan, +drumstick, +dumbbell, +Dutch oven, +electric fan, blower, +electric guitar, +electric locomotive, +entertainment center, +envelope, +espresso maker, +face powder, +feather boa, boa, +file, file cabinet, filing cabinet, +fireboat, +fire engine, fire truck, +fire screen, fireguard, +flagpole, flagstaff, +flute, transverse flute, +folding chair, +football helmet, +forklift, +fountain, +fountain pen, +four-poster, +freight car, +French horn, horn, +frying pan, frypan, skillet, +fur coat, +garbage truck, dustcart, +gasmask, respirator, gas helmet, +gas pump, gasoline pump, petrol pump, island dispenser, +goblet, +go-kart, +golf ball, +golfcart, golf cart, +gondola, +gong, tam-tam, +gown, +grand piano, grand, +greenhouse, nursery, glasshouse, +grille, radiator grille, +grocery store, grocery, food market, market, +guillotine, +hair slide, +hair spray, +half track, +hammer, +hamper, +hand blower, blow dryer, blow drier, hair dryer, hair drier, +hand-held computer, hand-held microcomputer, +handkerchief, hankie, hanky, hankey, +hard disc, hard disk, fixed disk, +harmonica, mouth organ, harp, mouth harp, +harp, +harvester, reaper, +hatchet, +holster, +home theater, home theatre, +honeycomb, +hook, claw, +hoopskirt, crinoline, +horizontal bar, high bar, +horse cart, horse-cart, +hourglass, +iPod, +iron, smoothing iron, +"jack-o-lantern", +jean, blue jean, denim, +jeep, landrover, +jersey, T-shirt, tee shirt, +jigsaw puzzle, +jinrikisha, ricksha, rickshaw, +joystick, +kimono, +knee pad, +knot, +lab coat, laboratory coat, +ladle, +lampshade, lamp shade, +laptop, laptop computer, +lawn mower, mower, +lens cap, lens cover, +letter opener, paper knife, paperknife, +library, +lifeboat, +lighter, light, igniter, ignitor, +limousine, limo, +liner, ocean liner, +lipstick, lip rouge, +Loafer, +lotion, +loudspeaker, speaker, speaker unit, loudspeaker system, speaker system, +"loupe, jewelers loupe", +lumbermill, sawmill, +magnetic compass, +mailbag, postbag, +mailbox, letter box, +maillot, +maillot, tank suit, +manhole cover, +maraca, +marimba, xylophone, +mask, +matchstick, +maypole, +maze, labyrinth, +measuring cup, +medicine chest, medicine cabinet, +megalith, megalithic structure, +microphone, mike, +microwave, microwave oven, +military uniform, +milk can, +minibus, +miniskirt, mini, +minivan, +missile, +mitten, +mixing bowl, +mobile home, manufactured home, +Model T, +modem, +monastery, +monitor, +moped, +mortar, +mortarboard, +mosque, +mosquito net, +motor scooter, scooter, +mountain bike, all-terrain bike, off-roader, +mountain tent, +mouse, computer mouse, +mousetrap, +moving van, +muzzle, +nail, +neck brace, +necklace, +nipple, +notebook, notebook computer, +obelisk, +oboe, hautboy, hautbois, +ocarina, sweet potato, +odometer, hodometer, mileometer, milometer, +oil filter, +organ, pipe organ, +oscilloscope, scope, cathode-ray oscilloscope, CRO, +overskirt, +oxcart, +oxygen mask, +packet, +paddle, boat paddle, +paddlewheel, paddle wheel, +padlock, +paintbrush, +"pajama, pyjama, pjs, jammies", +palace, +panpipe, pandean pipe, syrinx, +paper towel, +parachute, chute, +parallel bars, bars, +park bench, +parking meter, +passenger car, coach, carriage, +patio, terrace, +pay-phone, pay-station, +pedestal, plinth, footstall, +pencil box, pencil case, +pencil sharpener, +perfume, essence, +Petri dish, +photocopier, +pick, plectrum, plectron, +pickelhaube, +picket fence, paling, +pickup, pickup truck, +pier, +piggy bank, penny bank, +pill bottle, +pillow, +ping-pong ball, +pinwheel, +pirate, pirate ship, +pitcher, ewer, +"plane, carpenters plane, woodworking plane", +planetarium, +plastic bag, +plate rack, +plow, plough, +"plunger, plumbers helper", +Polaroid camera, Polaroid Land camera, +pole, +police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria, +poncho, +pool table, billiard table, snooker table, +pop bottle, soda bottle, +pot, flowerpot, +"potters wheel", +power drill, +prayer rug, prayer mat, +printer, +prison, prison house, +projectile, missile, +projector, +puck, hockey puck, +punching bag, punch bag, punching ball, punchball, +purse, +quill, quill pen, +quilt, comforter, comfort, puff, +racer, race car, racing car, +racket, racquet, +radiator, +radio, wireless, +radio telescope, radio reflector, +rain barrel, +recreational vehicle, RV, R.V., +reel, +reflex camera, +refrigerator, icebox, +remote control, remote, +restaurant, eating house, eating place, eatery, +revolver, six-gun, six-shooter, +rifle, +rocking chair, rocker, +rotisserie, +rubber eraser, rubber, pencil eraser, +rugby ball, +rule, ruler, +running shoe, +safe, +safety pin, +saltshaker, salt shaker, +sandal, +sarong, +sax, saxophone, +scabbard, +scale, weighing machine, +school bus, +schooner, +scoreboard, +screen, CRT screen, +screw, +screwdriver, +seat belt, seatbelt, +sewing machine, +shield, buckler, +shoe shop, shoe-shop, shoe store, +shoji, +shopping basket, +shopping cart, +shovel, +shower cap, +shower curtain, +ski, +ski mask, +sleeping bag, +slide rule, slipstick, +sliding door, +slot, one-armed bandit, +snorkel, +snowmobile, +snowplow, snowplough, +soap dispenser, +soccer ball, +sock, +solar dish, solar collector, solar furnace, +sombrero, +soup bowl, +space bar, +space heater, +space shuttle, +spatula, +speedboat, +"spider web, spiders web", +spindle, +sports car, sport car, +spotlight, spot, +stage, +steam locomotive, +steel arch bridge, +steel drum, +stethoscope, +stole, +stone wall, +stopwatch, stop watch, +stove, +strainer, +streetcar, tram, tramcar, trolley, trolley car, +stretcher, +studio couch, day bed, +stupa, tope, +submarine, pigboat, sub, U-boat, +suit, suit of clothes, +sundial, +sunglass, +sunglasses, dark glasses, shades, +sunscreen, sunblock, sun blocker, +suspension bridge, +swab, swob, mop, +sweatshirt, +swimming trunks, bathing trunks, +swing, +switch, electric switch, electrical switch, +syringe, +table lamp, +tank, army tank, armored combat vehicle, armoured combat vehicle, +tape player, +teapot, +teddy, teddy bear, +television, television system, +tennis ball, +thatch, thatched roof, +theater curtain, theatre curtain, +thimble, +thresher, thrasher, threshing machine, +throne, +tile roof, +toaster, +tobacco shop, tobacconist shop, tobacconist, +toilet seat, +torch, +totem pole, +tow truck, tow car, wrecker, +toyshop, +tractor, +trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi, +tray, +trench coat, +tricycle, trike, velocipede, +trimaran, +tripod, +triumphal arch, +trolleybus, trolley coach, trackless trolley, +trombone, +tub, vat, +turnstile, +typewriter keyboard, +umbrella, +unicycle, monocycle, +upright, upright piano, +vacuum, vacuum cleaner, +vase, +vault, +velvet, +vending machine, +vestment, +viaduct, +violin, fiddle, +volleyball, +waffle iron, +wall clock, +wallet, billfold, notecase, pocketbook, +wardrobe, closet, press, +warplane, military plane, +washbasin, handbasin, washbowl, lavabo, wash-hand basin, +washer, automatic washer, washing machine, +water bottle, +water jug, +water tower, +whiskey jug, +whistle, +wig, +window screen, +window shade, +Windsor tie, +wine bottle, +wing, +wok, +wooden spoon, +wool, woolen, woollen, +worm fence, snake fence, snake-rail fence, Virginia fence, +wreck, +yawl, +yurt, +web site, website, internet site, site, +comic book, +crossword puzzle, crossword, +street sign, +traffic light, traffic signal, stoplight, +book jacket, dust cover, dust jacket, dust wrapper, +menu, +plate, +guacamole, +consomme, +hot pot, hotpot, +trifle, +ice cream, icecream, +ice lolly, lolly, lollipop, popsicle, +French loaf, +bagel, beigel, +pretzel, +cheeseburger, +hotdog, hot dog, red hot, +mashed potato, +head cabbage, +broccoli, +cauliflower, +zucchini, courgette, +spaghetti squash, +acorn squash, +butternut squash, +cucumber, cuke, +artichoke, globe artichoke, +bell pepper, +cardoon, +mushroom, +Granny Smith, +strawberry, +orange, +lemon, +fig, +pineapple, ananas, +banana, +jackfruit, jak, jack, +custard apple, +pomegranate, +hay, +carbonara, +chocolate sauce, chocolate syrup, +dough, +meat loaf, meatloaf, +pizza, pizza pie, +potpie, +burrito, +red wine, +espresso, +cup, +eggnog, +alp, +bubble, +cliff, drop, drop-off, +coral reef, +geyser, +lakeside, lakeshore, +promontory, headland, head, foreland, +sandbar, sand bar, +seashore, coast, seacoast, sea-coast, +valley, vale, +volcano, +ballplayer, baseball player, +groom, bridegroom, +scuba diver, +rapeseed, +daisy, +"yellow ladys slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", +corn, +acorn, +hip, rose hip, rosehip, +buckeye, horse chestnut, conker, +coral fungus, +agaric, +gyromitra, +stinkhorn, carrion fungus, +earthstar, +hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa, +bolete, +ear, spike, capitulum, +toilet tissue, toilet paper, bathroom tissue diff --git a/examples/Pipeline/PaddleClas/imagenet/pipeline_rpc_client.py b/examples/Pipeline/PaddleClas/imagenet/pipeline_rpc_client.py new file mode 100644 index 00000000..573ef4c8 --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/pipeline_rpc_client.py @@ -0,0 +1,39 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +try: + from paddle_serving_server.pipeline import PipelineClient +except ImportError: + from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:9999']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +with open("daisy.jpg", 'rb') as file: + image_data = file.read() +image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["label", "prob"]) + print(ret) diff --git a/examples/Pipeline/PaddleClas/imagenet/resnet50_web_service.py b/examples/Pipeline/PaddleClas/imagenet/resnet50_web_service.py new file mode 100644 index 00000000..a4d37ed6 --- /dev/null +++ b/examples/Pipeline/PaddleClas/imagenet/resnet50_web_service.py @@ -0,0 +1,68 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import sys +from paddle_serving_app.reader import Sequential, URL2Image, Resize, CenterCrop, RGB2BGR, Transpose, Div, Normalize, Base64ToImage +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import base64, cv2 + + +class ImagenetOp(Op): + def init_op(self): + self.seq = Sequential([ + Resize(256), CenterCrop(224), RGB2BGR(), Transpose((2, 0, 1)), + Div(255), Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], + True) + ]) + self.label_dict = {} + label_idx = 0 + with open("imagenet.label") as fin: + for line in fin: + self.label_dict[label_idx] = line.strip() + label_idx += 1 + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + data = base64.b64decode(input_dict["image"].encode('utf8')) + data = np.fromstring(data, np.uint8) + # Note: class variables(self.var) can only be used in process op mode + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + img = self.seq(im) + return {"image": img[np.newaxis, :].copy()}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + print(fetch_dict) + score_list = fetch_dict["score"] + result = {"label": [], "prob": []} + for score in score_list: + score = score.tolist() + max_score = max(score) + result["label"].append(self.label_dict[score.index(max_score)] + .strip().replace(",", "")) + result["prob"].append(max_score) + result["label"] = str(result["label"]) + result["prob"] = str(result["prob"]) + return result, None, "" + + +class ImageService(WebService): + def get_pipeline_response(self, read_op): + image_op = ImagenetOp(name="imagenet", input_ops=[read_op]) + return image_op + + +uci_service = ImageService(name="imagenet") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/000000570688.jpg b/examples/Pipeline/PaddleDetection/faster_rcnn/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/README.md b/examples/Pipeline/PaddleDetection/faster_rcnn/README.md new file mode 100644 index 00000000..a56ecbef --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/README.md @@ -0,0 +1,18 @@ +# Faster RCNN model on Pipeline Paddle Serving + +### Get The Faster RCNN Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/faster_rcnn_r50_fpn_1x_coco.tar +``` + +### Start the service +``` +tar xf faster_rcnn_r50_fpn_1x_coco.tar +python3 web_service.py +``` + +### Perform prediction + +``` +python3 pipeline_http_client.py +``` diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.py b/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.py new file mode 100644 index 00000000..f8d5f2b4 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.py @@ -0,0 +1,132 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import yaml +import requests +import time +import json +import cv2 +import base64 + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 30} + if device == "gpu": + config["op"]["faster_rcnn"]["local_service_conf"]["device_type"] = 1 + config["op"]["faster_rcnn"]["local_service_conf"]["devices"] = gpu_id + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18082/faster_rcnn/prediction" + with open(os.path.join(".", "000000570688.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + latency_list = [] + start = time.time() + total_num = 0 + while True: + l_start = time.time() + data = {"key": [], "value": []} + for j in range(batch_size): + data["key"].append("image_" + str(j)) + data["value"].append(image) + r = requests.post(url=url, data=json.dumps(data)) + l_end = time.time() + total_num += 1 + end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + if end - start > 70: + #print("70s end") + break + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + pass + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + gpu_id = sys.argv[5] + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.sh b/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.sh new file mode 100644 index 00000000..5247891f --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="det-FasterRCNN" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark_config.yaml b/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark_config.yaml new file mode 100644 index 00000000..9252a27b --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/benchmark_config.yaml @@ -0,0 +1,32 @@ + +cuda_version: "10.1" +cudnn_version: "7.6" +trt_version: "6.0" +python_version: "3.7" +gcc_version: "8.2" +paddle_version: "2.0.2" + +cpu: "Xeon 6148" +gpu: "P4" +xpu: "None" +api: "" +owner: "wangjiawei04" + +model_name: "faster_rcnn" +model_type: "static" +model_source: "paddledetection" +model_url: "" + +batch_size: 1 +num_of_samples: 1000 +input_shape: "3, 480, 640" + +runtime_device: "gpu" +ir_optim: true +enable_memory_optim: true +enable_tensorrt: false +precision: "fp32" +enable_mkldnn: true +cpu_math_library_num_threads: "" + + diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/config.yml b/examples/Pipeline/PaddleDetection/faster_rcnn/config.yml new file mode 100644 index 00000000..891b4b99 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/config.yml @@ -0,0 +1,29 @@ +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: false + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + tracer: + interval_s: 30 +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18082 +op: + faster_rcnn: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 2 + local_service_conf: + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + # device_type, 0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: '2' + #Fetch结果列表,以bert_seq128_model中fetch_var的alias_name为准, 如果没有设置则全部返回 + fetch_list: + - save_infer_model/scale_0.tmp_1 + #模型路径 + model_config: serving_server/ +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 9998 +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +#当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 20 diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/label_list.txt b/examples/Pipeline/PaddleDetection/faster_rcnn/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/pipeline_http_client.py b/examples/Pipeline/PaddleDetection/faster_rcnn/pipeline_http_client.py new file mode 100644 index 00000000..7037afc2 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/pipeline_http_client.py @@ -0,0 +1,35 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +url = "http://127.0.0.1:18082/faster_rcnn/prediction" +with open(os.path.join(".", "000000570688.jpg"), 'rb') as file: + image_data1 = file.read() +image = cv2_to_base64(image_data1) + +for i in range(1): + data = {"key": ["image"], "value": [image]} + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleDetection/faster_rcnn/web_service.py b/examples/Pipeline/PaddleDetection/faster_rcnn/web_service.py new file mode 100644 index 00000000..08a91222 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/faster_rcnn/web_service.py @@ -0,0 +1,77 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import sys +import cv2 +from paddle_serving_app.reader import * +import base64 + + +class FasterRCNNOp(Op): + def init_op(self): + self.img_preprocess = Sequential([ + BGR2RGB(), Div(255.0), + Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], False), + Resize(640, 640), Transpose((2, 0, 1)) + ]) + self.img_postprocess = RCNNPostprocess("label_list.txt", "output") + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + imgs = [] + #print("keys", input_dict.keys()) + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + im = self.img_preprocess(im) + imgs.append({ + "image": im[np.newaxis, :], + "im_shape": + np.array(list(im.shape[1:])).reshape(-1)[np.newaxis, :], + "scale_factor": np.array([1.0, 1.0]).reshape(-1)[np.newaxis, :], + }) + feed_dict = { + "image": np.concatenate( + [x["image"] for x in imgs], axis=0), + "im_shape": np.concatenate( + [x["im_shape"] for x in imgs], axis=0), + "scale_factor": np.concatenate( + [x["scale_factor"] for x in imgs], axis=0) + } + #for key in feed_dict.keys(): + # print(key, feed_dict[key].shape) + return feed_dict, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + #print(fetch_dict) + res_dict = { + "bbox_result": + str(self.img_postprocess( + fetch_dict, visualize=False)) + } + return res_dict, None, "" + + +class FasterRCNNService(WebService): + def get_pipeline_response(self, read_op): + faster_rcnn_op = FasterRCNNOp(name="faster_rcnn", input_ops=[read_op]) + return faster_rcnn_op + + +fasterrcnn_service = FasterRCNNService(name="faster_rcnn") +fasterrcnn_service.prepare_pipeline_config("config.yml") +fasterrcnn_service.run_service() diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/000000570688.jpg b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c z&XoeaDq7c#Lc!*alDvelKjsxloFIg|Rm$o9$*l`sn0SpkrtlzB`k*@dn%dl?wf3b~ z?+o)x@JsWO-F`}T#_rsJ9&;rxwjx`iDE2`+4pmev_hh7dybIiKec7=OI4SHIEacr$ z6kYkYc9&o{%003drb**pdfXa~%v`pwzIj;5#kN*Q;bcQK709syIL7#7gNn)_UpGX6LA>x0 zu(?qTzHyXRARq>W=N3VAP;H)KrYg**eHb}FCn?YqVyffq5D<#ri2%qwz*0-ISM{I# zvr0B8#|G?iqZ@z>1Hd)knz5!R5n+}5*Ht6GMUj=~mce5`&cZ7|l?eNtjst>@t74Qm z`D6k>_ytg^z|-M;U2s~$BFpt3T+`-v(Pw!K0KCT*B>y8}MOI7&f#>vCk(Xk$tu;!{ zqxbnNTq6`#BEW!N7X1KV7^`L?MlOg`#36_g`#XNDyJo3t39SM&*3q^&Ou%UZ6c5bq z0mk*zcq$;`K;4_KsFWu#J_4AM#VZE@ZsHLJ9X7Bx1Ist?)$<@m?;2Ytr%H>A0x*-) z2}(@BC727mkG+tWXAKoju%~%23Bmh^FYw)cB~BoufrTot_wP(Cffy;l0T~NyXz@ar zGJfw_8AVK>tRz)(0%=Jx{6eTz&!lLFUv{IzB%~QrV`x$UnwOIIz#^SRDY5R;s~u5Q z%kgVf%e2M17T;C<#qU*aQq{|?sSd8Upw2y#iI)DAtIoAy*#M&Yk zF6ot#*^G4eDIq|j_Bvo~s;4IM+I&;b%XuWrBVJUn$!w>AIJ7Y(!S#&Oawk&v`d{kU zJ^Ld=Q{Sx*2a_^}uVkRBZiTZSi-(o@PX(h!Csz^tAPt8oW))-NlQeee385pcw-(X3 z5f#WmVnOBIdj`R9P`!R{!EfFq|Bch8%=;AU4Lg%EyHxB(gY+Gxk@$44U^6JiyM8qR zBjCbqr2LsWY?tSjcV)7G;MU#{4o9P%yPczZGBPL=#Mb;rTvSl2#g8ToZD8()@+TDZ zPdQ4*RJmiX^ht{bY0n-|=WPT!(%YgmH;pC~X!MSwC7LHjY(jUM!EXCz9T+TsfPyYL>c@i_0dL*p-`Cer`62|WTA>EzTA zU+XkFfC>*7JrNL%y@4mL5TQx6^l>&F68)d!C=zH-`L$PU0g^Q&Gr$bQ#35-uq70Jv z*QMdnKAYTX+Hq~wgIuYrXAqT)R6G*W#lh%Q_BLB0P8bmY9T3{ zQ#s(DOS=XR4}p;)6>UKk?CwSMVs0fIl<4$3D*4v&HUvVit{9y=;$D2EX~xySH?1*B zNCO}ocK{V1-bucZ>P;9kQpF|7psxwM=5BLz5>?_tqnzG@uE0Ppn3_2rvY%NAb`k^fN1^< zC<{+;ZUc*&=>CB5R59rJ3N2c%04H9KPs)cz5=+PS!RL`s80 z3w9f0ftpLm3V!TwvS>^K{b8`1c`$4L;#q2?G#or=W7A*Tlz+XFWglF|xp?%#?k2eW zAhgU9z7;M?`qSl4b~}o{ck-93@bLJf7;(vWaJMf1pA5C;))6O$#XuH00>AJ2FR zo@q3T$6Lr*0Q65ZH9_z^7fgU~@qIke|3I441beHwxK8h1DbZNqg*`siK7To5!gyfP zd)?xwre>?Og}kyE(i~vjeF`);N<({+G6||??PtBeng|?K7512C|ETg~*B+sbz+h)t zcYIqBXyN<2CGWZX@Em>`DyP)t$(SeAJizk-Od*Mv_N46p#(eqqn9MBoQB=*xQ%4ip z;v+Fw_WsJO6nRr0_(7iC%|P_5Tk&QHZzAML(jPSLVCQAz>7Y?wT-WQHz6k;Ph4q(x zADV3W1LZM)@E8OH{10>`ccOKFyO=-lmy$OaFV$2Ce;@mnX>bmuIn0VedPGC>^ zF+!!aLfI6pwT-6kdFV6C+!BLg;qwu~P|WU&k%MJPOo_e%H&k&4 z;w#yT_+MEXsCJV0sN~2dvEJteSQv6G@e*=5=KDB|OjH27EHUJ+ zINA3{ccIB*lb_ym==t{EbL5%)MsZ!` zys~r}`npM_3ZmZSVfsCOou8$M9(70J0VoVx!!A1w{?Py9EiK4ScZ`tv?V0a+y7(;4 zqr!COO04*9`Okh~yVjy*XKQ&r{{KMuwoBvSzjD;!SW_{K)HvT_SLcQ-KtlbtLb>|P zL)Pm;G-(-$6L&ySZi&!(;}oUXN~G+BP&N$=4OqbUodYuxy(8sd1HzwU>K?k@%6Xi= z)LGY5m3Gk8FX0j#rgxm4Do{nmFB^kvs^xf5NN+)F_;arucM8{0U2gB^0pXEH@tU5T z-@>HdW`@t%nC+8*7udbDLVBspNh`U=b~c1ifPt1qmE_wU=yYy~k7iuGEEV4%S|u&g z0zBb7u`Nm}x>PzHqsyFHhwvJQnIt>dDCD2boGW%j2KXqWxAx|V9(J5asz}!>Aewf# z=atpLRw<#;-BTQ)!~J9a%->y%_QkeF`G?x$^ywJO*IX71b=Mz{EV^V<7!RD=Td%+O zI_a6Ms2d(Z(u?ba6!bX7KU%~qr>(-PvI;fD29u$9o9pimGKm#z(;&zG^oLo2Tc7Z< z>`}~A&EcuC*Kj^%HmJbYWgxn5s;L?d&8b9LBnQi4&TDouQYz_a@=SzKeNBf$?Cy8` z^mm~jvBm}^Sh8rOFQq60+KE2%G?ovUOk3NxOme@hu3q`n4GdBPDN6jS%mV1N$r%PNTO#1t9dXFk^ z`}`KQET3+Xblts)(Xv&(2+lsj>4>lwAq90v&2Y`MwVH285H6;%t|%9DW=9llali8? zBPoBPw)^H*ABFm^HUpf=@9Lu@cFG70mNjKohG-<}X(GI?bB~`?dD=P5KOf9g_APpF zg)jL{=e`d)E!lKq{T18Z4Q502KhSDw6oZR*NlF1mv7v~8O3x&~0h+#8?Gpnsa{l0X zdGgJ|)*tX$wT*FId3JelQ5Cpq-r|8gQ<8?YGXS$8F6}m9kM{Kd`j&{LlOq$OzhXBMhfBp4$duL zM+@ZvnDwdvxB@5v*;fWmS&o%~s8Oksf6NpCEtc3_mVyELfPfF!P8UWCXvY^)Er30= zn3skMP8_(>T(AR*Td3!J>OON|0x+*s<<GvQ>?2im)53JpIz}ob^x>LK2B4n9ujA=#J!XjFRAg>4E zK-rXdjNHfD@R^5ag(`a2>9?&(0nFdFBBVd02>%0V=tT_vgd4gk>I1QJBuhgHS+>88 zaK6-A>`L<;ELi%xbC3TKG#}KlJLs7kB}~|M33t9DcS-IU!8gO_S^28<`acjdP5;kyE3CWi|Y4&JFfW;viW5Ocw_x_!ocuZ^TEzmOtHS`}%NXsBZ*p zTcYSzASD64Ua~-NKaczD!}&|3JgBqLfk;)F5~i zMjfhFa}ZXr2W~enH#>OE+)J>rYGRmpmLXwMi4ADtMcV+>-_%miSL@WK3H)&&QcJIh z{k1BmHF>nPo#^ifbn5l|>s4*&si+1a*U5I=q zBc9xVHXzx#V~<^lC*6L>il*A@`h~0Bcfu2ZUp)k!sfX(LkNIH#SIEs9Z0apOU%Z0

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0Dj0R=8R;O(Bt`ob{31o8NVX&NCXXbtdbITXZ(MiKL{8o;MNFK~7l^^2v>dB_)d& zW_IL4g#*WJci_mVYcxqDT$`I}3>yIe0TN`C2Msh)+4ptR)Oe(L#D6mSeuAz6@&*Q1 zI30oZ)st{kU=R%VKFWb{nJavB$}_n3eO3B<%{&#eNhLi+(&of9G$>;c#TrJ;WFYaE z4vM)10!S>rf5n_IxRzmAOqPp=w?a(GB!L1xTM}&ui|kA!sVnG5>Cd)ylQ6GNzMVKqt!#{ zz?Oi~P}5RU(ecdF^XE_<&mxga%b8pb%8EfCgPfDAmwdH6O0Ff_4I2W|TM!R2NR6Vw zVQ7POhqqejn!eLD-uH2|M=_OUxKu`2!YE;g(>cjFUpVjNc-H+|wF4?Pg(kd+hK{kR z`sqE>1WataH#Ss(ziKT_WdllPhN?AK<*Z}ayGqK$fsVuIbB^Sk^rXA{5Z3_&T!!?3 zN3WEiw{X0abaxxQ7p-gC#%g+H;%0^xk(B*ehBALYr{}ECeJT&jTC^8zNCU_xav%kQ zmep4VJz8mC1%j5AGN2RnBx`t8rtiw&dld!xjH{>+H8?!8B+7$``sdHvwy}$qCC*Q;0UcAO|(E^3B{#kOq^nCqOmTQE?v?tTgD^#@WB(H+OI}9M46& zYqwWOcU?W>X!QQSdP{w-+mSWGzKVs~w(~<#Sr4vNT1d;Zd^kEJK&Y4G4H%RikBV_T zN}WJ>)4VpAhU@_(2-mFd&0yg8P8`}*DR9CamC)iOl6AR@%Z5w9f(yc9XcJAul!qbf2eyg8$h2VTpg%0$kR zwn^%a)n20=gm1Ke@qoAf)cuTH`u_liyKC{wtP`s=ywcJEuvS3cwy%xZBZs8 z2{)!rRTZ7eGJ;C-M&yM~rF>H`%r9{kPymuGs^Cr6)HU7JRnhKh`s;<#NSR@;sE^c^ zpZBderglOZqgG+TnEvbm%({*zll)_=hd!Z#2H&dL6!M4$>J5Fo*>`_VYHT&Nm2%fw zB#ujDFA_K5ou+Y6kTNJ?47}8`$a~5Az|P7QdvAw$u;JL6Ppa?jn>)8ZEmkVDY2q9+ ziGn-EixFe!HR&oNjTqH^(?%h8a@>gl~ueA~ecQw^+WY!*AMqS`D!kWj^MqrS#)1JseS8D3Msd163bs z0Vf`mgh-?N!~iv`!|+&|bp|1{^RR9VJIY`>JdaXWnqs)K_`V~@tX$dBU74r2H~#?L z>al$m+|*Ov2)a^1xgw6&B{eHn@>+{yBgDwa%0ouVv5=*a`xYJ4>gN~+D++%NQb0d2 zHawxgi4(2B*;?^RuN*a|se&R4c7tL+mD8IO<5JCK>GjKM?+dj>r*-UFfc6{BA)2PH z??oy!RgeiJWj~4$NbIGV0d<9f{_7g@ZY{#9;eWkJgfZT6>Fxru;rPGCVVL)ypM9sO zpRZNTmwv6^HjVo2Y1`L&m|(a;6tyzgu8bPFipwNkwBUwDBBk1Dby)s*lo8vJ90_yQ?zdz+21RzUvcL)!VhM#Fn~x%+pm!w}qy`gmCVM#N|z(r*v4iQP_R5rE=!sFUoGt3|7)_%&vhVd+42EoOI zFR*?c_~(NBM~5GeEu~qyhZyq)K_l(B3vj06zwAH3Ro-pV(u&xG)ORXI93@s&a8!eX z+0^4B$jH|W>@FJ{nw1vT;?x@xYT1DNNaXC5z%lQQ{jxSd+5^*c?NR} zI@Sd4C!DDdR5~Zq&xknct=mq)MYd|LuBewPCwgNe$CRQ=F}Md0`VMY!;QjIeSRoOsi}?0Fe6F1?a^`%T{X=4pG<%^=(*E(-RNMfcw$y4u9HJUP8@S==d`R#E=Lw_Kg7xi$05hI z!nN;cE;r}=eWyY7qIHdz)LwynFm$`&^JmyDeO|q6O8VJt=6b1jdx@AzNcEtjhG$r# zNQg+wta8aCXC(&&8OvH-upaw;943>zTNHnE=u^8-+dUnbt^lzFHcNlRHlIW$W?Z4n1vmhvlmk_$%Zg{O!V)`br>E3_R%%*;I*4x2VQrrhH&Hy-v-CM>ZM)F74?KwP4( zeLx5#0oxuit*{IbR7na|XxtBQiWHV8r2Go;iX>2>VdTtL&M;lci$=inu-0-C!Vf%>?>DGnmgsXwl#_j%yit+;+Q4r6n!OSSp8lcP zsE+Nr!7XIV_(ZFushU-WAk)*+1ppL674qYkFbgP?DgkcYudtNJXfp+%Pvs}BqT6V4 z#o=Ro<}uAQcM1F_<{S9DHAYZ% zN`El|1WC5$Bndi_0JQ6(ohN+Y6(y+MmTJiC_ba91b3sWfIj~I>wG@#}=&#HpV!Xa* zkSg(195Kn4Ijn9Ty)gPTnI*&XNCb&HjWiQ-Z!s$~>gI<(ZImjzsvC(W6qCGk9FimJ zh}|VIaBLFF+|)Rk-LT!ueLHI2pAEx-ow9Ybh@VI?5G=8Z^#lT8c&ifGe2(Q6J?l)0C@#(;WU^d4w%4=~q%C*L*VlIdlr z+sSUFr@28|Jw;NL1JS8wczrVJe}rI7kiJNd#tyS&cz=laj@KH`>Ge=1nQm6=_xFFI z+5I)z7PzY}+nig!2S){K$4MPX!a^BQlmQ@i1q1O8SpNVRY@RtBuNcQv`7n(?GlZDs zene{%9V2uxjd7ion~XEkikrnXU9#&|Dj3fVFRB_ebze^|iWCJZSD7J;@gpE-QKgcj z1qU_E7J_2&Gh$A&IYpvE2>FQ%8(`g5drWdx=9(*$$LmBEmC|ej{E zpnwTIow1I`R=92)+5{Wg!sgqamp@>lNmwW@-i18LNFixzDbk(F$H0Xx$e_-0at2#D zBe3nASQ=8`UoZ(g{Q7q0fL0z!l+Popzsy*I*d*uJ{{Wx(YitVuQeK#D0+ynhtI~#d zMB-qmPH1}&4$Y@s|{!&Ih_)h+E-`yF&@9rFfP5%II-AsIZSY9Ih#zq;O-~kvQhQ zL1Ec)JCDn@u|2Huvu_{kw&(`Xr5kH?MYrnYTKiNrDNiDxsGb7S4@=BEgo-$}c(;>) zm@9#eTJ()ZLrj-#KV3cDPQ-lMEDh?u-RR3Lx{c|LW>~T(7-C{oni%;OZYh$yijN%`WYz4^4_%BuFq7W2Qhz0{|8vlkeQ*_x!b`_(uHSF_YB(LJ7 ziN8sJe!S)(Z842(<}1%~sM=Rv6*X4b7M@;5_JX>{B}<0O$iF(TxcNBt85qtEvr=w8 zl(ml%KgQ$%78(=hJ#@0h=P-~muRZGb9^cz^6Itb{2BuI_dWJ~^>Yp%NkQfE! z!R*@0Lk{dscefA)hJr*+{I4Ek%qKrAg#)@>;;Qu-QOEFjU5*BFITiOk$DLo& zqFDf+lv*wO0gEy z+z{A}0Z^S<$aY5+RRqdq*K8X>)Q%R=_%dC1c8YD8iTlZ z;YNK-D&jHN407Z!ay#mHW{knDY-QFY3+;1%NaUgf4Hdc?dyT_y3PD*+)Gdmt}5Yv7(?F=x$ ztsOiNky*t-EZFq9An)CWBj>sH)ESCvi@Z8ylX6eXeFx@)+TD~$SS!_Ri9{%4+!EYr zQOW!|`ilTLJ<(gXJ^T+oHN8QAzr=Mcr=6$HKXRf#=DyeNKkX5tNj+O;#i*&JrzT+~ zebHfZKp{a`qL61N$0PLftpmgu*F#!XQUDT4;opcJuU|La*1q#}rKPFdH8DnDxy?JJ4K;|~(z6{}T% z_S!|7OT?HQ$lf)OH(8&FUZurs>eYgZ*|cpN0*7sFne3BUsSPbmBDy-ZilKw5GcuQr z0=xXj(qo?Ou0M}qs@1GTYKF6F09sG{WWa-_hRS$cO)74z>J7+2gS49+Mz;GYpToCU zw?vdxuv~hFQ?PbLrZ~%0T$-Wdgx0y?6*N$Q@^kbha2JXwS2RWyArN{jo~O>POj3g*a>D`$zikI&csZsR#|+tolG0*8on|(;R9Jjg3k}37 zQWdfm%See5NF)Q-vAnIB@cr?Jwt8)7+*X~}OK_>a(^pOSrLoY8&I=UMBXD*pJdnn? zSk^>mRE2;okc;I*B$`$PdU}g}SE4ebUrDbgYtO%7Xr8rvL%&!zRGW>B#@lC>R(o{` ztBuSUPu;u5k~~WzC^&BHFi8UhoKKFsT=W$#k4O*|_1Ab#^ z{x|5XTXy{|C9c(1beHx$Jn;#ps<>0i(9s5z$C&~l&R8xuhV03bq?~#_8{^&=h;gFY zkl|>JZ7>ds-i8B*;VGKMrPTn_ndCMKS$`V`Y1(7E#dv%5%1HP@aI{tgtc(%iSw2`4 zgN#fYAmfYo8p!-*J}*_Jq&34r2n2cW+Tn5-s{BhCSdR=fgHS|+-=CC1(HHB*efsNF zTTnj~)5+_!)X{~JNXK?X02ABFW4=gH<5!gGSHZM0vphx*@@Tm3&HIl*}^YOSeAVqqRvRY>lhBs^ol3_qtb*6~Mxd45l^*BrqNFLn~oQ@>s4LfyF<> zpg|oh4@0;;$CCGM7s424 zu~w|IH7$;c+h@AhAfzR()d@oFCpXCxI!5Hnp2(ztG6y4(uO8yqS5d`1*p{`;Klb6n zDFcxr+mpV*dHypCQv&}02$>wlhp0=ptrS9zdf(c0^IIjJJ~7IWO*^-D42*?}p!X#_ zmL3Lmqh7sgZVU`)bR7u;loP5v0xmQfi*J8$vp%aJb6Uphx%Te#xYi5WRn}acgjDwkro@rP zJK(Qmd|==lc>_JQ)lkD?@KoF2Kx|0_Z}%N_(?zHr9%SmX_V0+D!_vLUV71cRquyIz zZ%8DgqPswNgmwAiS3fXc7{|+%7+iKbbv_@$@me)86&Pt&sv*Uu_RyZcUaPa=e;4r{ z6G_-gL>g`Y8+^nI+1n6wwYx3d(_QVe`t7{$M{iXffpLzODw-M!vHt)r&Hxgpsy?_Z z1_$wADaURHiE!+90m0Kak>j^EQbD|IVEuh%eG|dI>LwEzMwSRQ_1q^uU;%<{m*z4? zn#^8xiN4V4W!A-8M^$rbt2@mbM^9NAG;zqFm62EvJ@OkFA5b+#iQ&}h2MPvxiMXHR zNnVMM;MiPaA4?7eNP=2mkv9ZS)96a*4xaT=-Em6j>n+q%)K*iaBrjJAO-|7g-l5{z z8Gn!fK^Pd%d~1(1tMHaQ;jH7n?H+%1c#V6=e4O0+L$_KY zmuA~2uJK27xJNpYuPRj3Dlsg?01%Q~EcQO!8G5{UD^{@hh^wCv{NyN&n z>VxuQ2Z{QO`|BIqoMk#DvQ{dGskx3pxk~EHA}SXE<-S}Ip2HtPJbf@%0hEtK2_~21W2BX;GFET9`iLerO z5@O?3vKm}N#;QZO6|MJK#mbrsT_r-xM@*B~e6q}92*z0=fBX~s-~usbWFv~6;*ShP zN@KxsdxSW{bQ2>eaQxqvNe}^BZmTFpv>8X-1WCk@*yodk+ zk`4eQ z5IlvMOE><9#(QHUBaqea;i*x1eK8Jq*Wa#(WJw}U$iC%*@mEVzR|CUE0g4GAtdS?#E@L+jlNL_U?W+-(N47% zwo6Txshxz=6pWQdY$~(zZ?;Ybf2O*2h!HgLn)1vd$Un-u_9kxl?=~ogWW4|l`#FN~p1F-Nr z;~6^0+6)ywksK7LW-I@?J&l*X?bACbTWk>~xLD3S?DDoRmVMh7m$ z`{U`Li9)HHlY`IH`A2j4c>O$R7D6Zly^Ab-RN#<%`9IG=vJsM=RUDldWO6wk$KOD3 zHU%~6TNT9Cr6HoIN}{}kPZ?GV{{UBfV14{+7^_UTIB+2lbW**)XQ;Q!E#?~&Zy(u` zER}!q^3QLDhb97dOmhSy90m$NCoD6qce^w*Hb8XPp2OMfva~^%l`Qy&sF!nY3uf=F zkN4Y>&q-YzuU#cvuE?SnS92PUe=43T0-~T%ldA3;QPBDY#FjXNAa8NLiq{`Wpi`{Y z!(P!5(!_Vu{jF4#bBHIFG^l7IP(4LM#Y+zid<=~Kf0nKb+aNk5{+yLYNz&^uvDQ2- zBD=**08d5+^*OPPO9dVK0px#oIM$iS92={(pFeTUWikbVVID-RG!1>p$fR;-%SchvnZ%8yRwQIT1sfiQxtxW;zY784+b5( zIRthG1c8DwbzP0AQkEI-ZO?qLInPfek$^eCDec1l081S`O}dsp+K}OWVNGyk1g3Vfa3Ju`c;~n0{I$2$VoxP3kj(H(rYV$wQcNxn z-#?y^a3V&D#>&uA8y-)LdDPNdh;Dt!f3v|;PkDODZIlp{j@2ybG%|rFCuHnhqm5V8 zbiyz0fhXUNI4mU!rLLv`dyM7{f(%$4fisjFpO}T1OQA`(S5N4m>4w(dzqYHTz1^!G z8n=>`DJb$9tyA}oa_oN!8M*c${CuM}G^mPrX9l*wz!wAy8%HgpPgNlwU~?wF1i;^;+x~J;PFIZ5I05ll<o~ozt1Myb+l_Yu;^$sMOT8W zSuRzd@ixn|QN4WjN*h8$U0WR#2{h{sDopXLhtrkFMk?W!MsUOx8uE{dG1U0C8*NrR zla-+V0F1r5lF%(6MY#(JRyb?`qff!DAnTyhxg$=u+f}BzsqnGXzlScF?g=-Y($!gE zubPt8YN)qd-cdbXWn(08vM3THX($aL1vwu~9I;ybT}HDlPY)?3`-qK9eyZn&(xz(o z40$EOK>{4oJM$cg@>u@>hs!4NvD-!w-?UA;t>Ml3>dm6i3Yc2P(^ie>erG_Mshm~4C;WEamxI(Dxc(VE(7u0onxXd_f zK@b5DNz!ANL*01ZBNE2cp-&Z2)oW8Ga+@9Pw2cbDZY%w9-Pg{f?XSg6Wtyf$wNp%e zNuicPTu6%{b$MZhWtc3S)v%!Dv5m^FZXX8B4RiCK%@(&g9mb1C3j8~%J5`Hp zD^u1`?pZDkH1AmJ6N4Ox10uh03gb%W~CzKZ@3=U&DI~3u4`MosEpa2hU|T z;j%UzufJ8Dj?rkVvs$jV+IZ_}DU~Orwm~q08;KG|@yJdH8Q>!&n~Dsc9FJ{gV{sT< zL&HbR=md~S0`vRWNzzs~(rusb*-?A8=9VcfRMFSQZBZEEjz?0%iZUXFZ=0KD2#JxD zaa=dg#A`JXP?ywn_=e^TZMd{pkQxb+BGRBiBuNSZHXi zcPJ^^W%MIh;+2$w;y^IDB&vo{=0)-d*K@)CGva(QqZ^2->aM3+1A-v9B)waV1^8f8p~8PH`0~0(N0B8G?D@6 zR2WM_U|}c-rCK=>P!!@oR0dOz0mM`kYk0V8HNwW%5+^i^?$Qa=UO`-2nCiEQH}&qZ zg3Y~9Q%sf`dV9;s#tV%_B{D@z@*qC6@v)Lbd@?sO%ZxAx$_}>=;WCyv$HUwL<2U~R z7Lk>uwjv3irqD5{* z{HTBeRC%+&;&6O7`*oaP>@L#XLxk$sKDW8k3#e2kTkoOk%|q$_A2czZo0Z?TR^-=sCQMC46yKlm#>A6r>S6nMC7KtI7 z(u$SpjYQKBqq-zYz^gIGBE$GwvD9%KcMFDNOHO&^9=9nBEltEN*RpyrEEeeE5K{vc zKcOySWlEEg^SA?-d>rGs&bS^S#6K4D;Nx>6nC<#2R?-x}$Ve(hwx~BPi)l%jww>$$0AxZT0w%e_QQVW@%_LGs$jRL1M^aCGcfSpeCr~_MS(c8B zun`uuq=?*|doLDk59!$Bgso7zsS@x`hi%|a!&tltT)VOMy{mlhJ1rwtOGLHv3P|2M zm4lSbt?0&G`!6XtFD4)ketV5}^#1@6dNkXa+fTSwZxlfBaWBft0_Y~j(*o!BUj4`L zF}n7ZDgOY8E*CAmmRO#m{bQCGJyLLpl_8!p^cZuWVXJ!FPNo=xQw~7sr`z7^#2tmA zUglG-93+_NSO zY1CkV9r(yW93TTt!;>%XsdrsMol0Cy) z4I;x$B^%Olm=(#AUJ09&~_ei;3rAm@yF|y`!l5xb2*iaM& z_8B?Goj;24jA<>UZ@1TT%`<_ZK#5r>Hjdca`zC&tN4YC%Y zQ@)E0JRp5`(#k+}fg}Oc_8irX!O*>rOI^I_2;V2LY+J9x^+g%H%vt21-ztq+4N-~nwNob>y zqoy&_FF7Ttky$?v5E86>foA0?T&ZD;d_NUtDx0g*WM$myXJNTEn{xHm{1|)LOT@dZ zCqesi^Iot1ANHMM-#2YlF|FIwHyTQM$aavZrlFvXpqJLcxDin9Wmtl*a7#GkprO^U z#k#f~?x9i~&?Ij>l1JA{Ufy8<*;3CDIHa^u87H3MO9G1 zQ_Rs4oa9fOsdfqoTyjDi11DM|i#~~|M!)81u>(;zfu~(oL4~0AwaxsbbLr2N+f9nW z-g+H-rn6dWt=1jGT@<$8#8y;AYmwlJq)8xnxq*NcM0q*RN$rek)x1i9B>0VqinU#cgtW>iZE%FBYMH+dRi=VgPa`KO6s(~~d?@Z%1G!b%z++9x z{({q4dcV-o%T)~}MarXW7$K*WpjnFxWM0s zkgLE1iOJE3kx9=N0ItD>Xmxi$@-lRbB|(qG)$ph{G5U9vraFrb$hOtpo}S!k>M2Zg z^ifkuE78^v8D5|XC3ylj5a>NZ0p*^|2B;}j#8r3{<0;pe>88Bx_FWx(9vclzn#ATF za(`jvqLb{ae^0l6O6_w~R#sa#mAdIq_`6-kz8AOL7oT=Ybx&P@Ol6(;D}25fmC008 zqf#Aqy1;>PJ#_T@t!y?KxXMp7tmX{FNP`@&Cfy7j)c*jgHan+FdQCpiw%l(p+t#sa zt~3yuTXIs|XK8a!G*t3Dlgg_cXbVXqMzR>s7veRb>iO|vl{d%`2sb)weWGU5JtcJ< zJA%C6U5u|xhMdqqBJwhVb|jGl{DIv;_a&Omz4|@39@jy6tlrjJYQVPJP)A6XDHKU8 z(O|h&1h{1IQTg^D>Nr>USj<7FKx4?c?0-lLCO?JLXAPtr4AW^a2BpqugSd;Hplql6 zli+u8^fPB%cehpTv)-*OEDK8p+}xpMT8R;v5_B|j60ML6sZIbkIb>s?nqXzHj-Gti z2~Lel&iO&odGzJarMoPxzv1^|UafsNyWH(F>^b)>V1?SFamiIlCBM^IW~^$EqtSRG zSy7^XBPzc_b%YUBqrz~Gphvk|29coW(XCC{>^0Eu^yg?$8y~zilzJfpU9{!$d5TZ-6 zv=Vz2E46=T9{avEebU<W4%YAP4b*Fkr-~7upI2aFMq1jHTx!uaqeo}ueG){GhJbM zOqBH%m9jKGj7-KNqCwr83V`w@*;QGy-!3R&u-Z72ZHD&c?{ykfF-{Xy0mw+3bk%Jx zk^DJX7o$7Mlc^T!4XeAVsvs5!<*TEnuawEmO9P763Y;39P;g~*lA(lzqnT0!1)f$u_vPRH1tR_T7=>IMZ3k7l*D#_&xoTT?|%QtO6_K&S;& zXbf)}#?c8RGLq`!)6j=eF3TowrOz$n$ezn-!IefyjH7;f8Gt^M)Ri#ncFTupb@Qk; zU5!CQv*M(!xvdo&&c$WA+`r+#ZwP;nRqd*U;UoJMZO}eeLT9^=%d@# z{kySi>2A|d)QT!9(Fdg*X&I5)p+!$2D3x7IKPxJqe4Op6{i6J?%+MvXB$?O#BHdG` zg`rxQ`NJ>yjQN59Bmv9=)kivS(n@QUr*GP$r#qhYTLcrQj)nrIRz0y`3+4~yXw+MIw^#-jNnU;yc0Smw z+EHC&*_#)9O>CO?bG8W@_i3P{VNVnl2#(Ct$t#E9Ol6r^y9mP`=5BEr9|tM1`Gxf$ zkK*Pw(O_mARiIkY4+KYDK?h(u^Pec**XSQsI^AhneWz!%)7z;fl`1bgdui?Kc>GE# zgn~%~(8>bk*~5J53X>TmD3gshJkty$4y64^i}zUE!AwSRo43ER^izBwS9IFuPg3o> zSASiiVHcxa)F>^HNX*1R9CYZSM-1OG^N|aK#0ZGarphmKY{Caf`~J!dqgJKepy~dH z`d;n9(;bzuR^_-UHcr^GS)seh6fng}d3%j8h=P&|y7}RNtdbzfi;)AD2XL%4F9o%! zIJvU`NG{fFbQiIbJk`z%hGDTdj}7>Mz&8M%;B^C-jz-|FcDY|{JwmnC+Uz%7%_S`c z+2FWit)it^#yY@ z@-$H_uNwsq{{Vzoj7FO=7>FUDGWrwPObbThb=_3tWoLk1V%q(0%k)~#+qx8=zsYfUXR+FBWDr)eRg6!ZQaB4Zn?892!}b@>%lNW+LNpwAJZu-(n0 zOX+oCgQrHbs<61UxI;ytnb4iP=%mxymvnUcbg*3PcPm})jptiLTTgDGr4rMS5?Lsx zlC2seAYYac<fWzq1sm3b3q3wO4N@>@odnnYaIMzCnT!!^wjHZ*rrsdDbr{Lwl_EHeawm5 zlEGU7=1~}ihh#gz7ZxM)9l^Qu3wUh)sBGSbP}E**8)`eXHO7S6O{;UxVvZ@Lg;Gk0 zVUAau)hE^D@;qTglu=& zwlyw&%6BSpAYA;Ua@BZi-<6cW4bjdT$07TBJz?UEshb^9vhVY@ zF~384`z&mC;i!{VQa3}N|n z15U?C^NTG?ILrlnJE?|-RtI@94Y`vX#Pz+`ZSHt9MfPwBljaYPs0Ph63EC_8VvX%qe0ZzfyFy_+3OfMyndeQpigX1HIby3b7#*EJoM*EObQT579&LFYAy zsQ8KIib_aXRDp$jU>#NP+&eKGPOc`i0DFE}@&~sssOA-K8Fn3*YE*E}c4w0Jhicc! z1(T@(z?<_EBudnK(!Q&AZDF2JZhIiJ-7Pyx>1t~vG0ASMp|aISB`Jbm{6%C^c_aFcIj}5G zFPkS?H0xoW&jr8Zq>rdu^{4=tKxeJxL&^SbYyiii5-=BC_#7`H}fEe4%;VC&l!cOA$kiIKHcMK>q-gX{P&mE;AMI z#a3de)#2?72mGLtC-ZA#VQ%F?x}UrHlQsTLueNr|(b_K3i;B?OB6_$gs};RAsHl}h zVmQQtSt3xXV|dm0hb4}X<1~228MUgHG&a$pzM^j=Y0J9oFgzBf8ReK}W-c;qq0&u& zxc>l3O?kCc-)%JZI+-hBhR`6m)1_6mIy$NzQx$ruO34~F!m~J%DT$4cl|dV-9dlSd zHriBtJY-d+c7yq*)@y*Bw05)Vw<>Td%r5X-lH&Fe)(lAIKhk*&6%hp!S zTpdPJ@ajF1NBo7;Xc2F8~ z$cB&iXUiMPKZRyCv(Ba+BpC$GhxT5H!ng$r(^nWl76G8|7LW%aF{d>X+nYbA)@yBi z+n#&2;F8*&qT8rqrm1LNmG}xt_F@}5r!D~fCI1ta-IsUR)>KAk1Ygw+iUA3 zQ5tk9lFai5USqLW?7OnZb-G5g-0pOAF}$)=2&lzFlw7tWiJ3W!78x(dl3TDGOR0jZ zMWR>AYT76RdBYHQrPhQW4Ms)A`5)~Q;ZYLUyM{KqXBkv?LQe9B)u z`7XA{7NuJXcs~#ssgKC;B#6+FxSn2$&A72vfTLVU0>^&Gr&TGo^;U+>4Z5N_%42q# z1%|qsYM7%k9&X|jBQZsl8O)KnJQ+(VIG5z*#|WtARco(KWu!?XY`{d8*av}dVC{O! zEEOxVl_M^9G5|d!oT1#W2b#!Sddh9Iw6zAZg0`Nfj8`O-l?c@o=+it3lBbcApo!ANTU#G4OD#v#-Pc7$1A%ue<$4dowwvmR6$H0Sk6}nG*Sbx_wUSvOt1pMYW#GadZ>m&uXU0sOrw}w_I*e&n&WAY;{ry z(skrjUZf!IvPz^XpO=HFaM{B8p9J7E-$|7#knljtHXTfx{{R!Z?D)_9PU85yGcXu1 zD29k6UDnenI$M2bLKOc1tNljW{buMymfN)|QPEYzV@p6K70NLR6_@6Sjx1EJKk(Ri z7(R{tJ+60#@h!KPW#mn&`Y$!9Jck?3{cr59AGLfp?R!n`in>eP;^%Lrs7i&jR#HMe zR#pxcSk?d)1z2b2Ekp{_=g#Z!+sv27u3WPdAu%*s_N$ExLPd~ z2IEl~p@K>|m8JDzt&RH;G%gHo2s~L?N{|QBS1!WSad9HWbH=7^M|I7;XId_oZwnsr zqO~PqYI8?b3)H+3#Z1d8M;vDi%*t9~-HNDMa(NPQ4vKDKd1R0%1hC#7Xmc7(nt@N{5>Hh#5S#^jdsU(U=Nopk+ zrj3FgN0XILsrvit&*@Nk#EK3C!GjSx!HL~azL{w)n2pFW{*+^LKJRXmRok}>qPCun zxcV-^yb}h-$aAutgpud1x|Pf+YhA$=d8V|VT>Y5IRZatxG zrMFu49bFBsn6fN&3`I-Ku?3K{OP6O1QJK5^j=h)8wQ*QXO?I3{C9f|gCO%l@%yt%7 zs0=uG4H7lBz2$5wuZP{OXxrPy`MW($peU`N(_60>siuObkxbS}P_60^vk2iHkO39= zHzB}_8Wasy7Smt^L|ADCcF>-N_nDG*Y0`>~4xFUHjkGby80JLsQGT0zKU?n&W8M~9 zTsxlLDS}(>2xFaHqn*z>d8LWjQA&h(-xgL>@7Cd zC5B+{dvuFmo|>%I<@i(F8`iohDb~KlM-)*}ei%xT`p_>oc;@67%&j4L963Cll#|&) z!iFyuLAe+Nbp~(B_UN+JrrMP=utn$iJAD>cYy3WS7S~L?u9MYOEkv@lO?5Od34@kq z7(;|Sn4UwDk;HKr2U<_2D^xFgc7Optb2j>^)oWg6kc~CJ*Z{T;-k=)`ZQM4!Z1yWg z=Do;XqTNE!8mjARD#VOq;tN6QHA!Me%uWf*5P1$iUmJkHfXgw)96;BTLEA!hn`;43 zaV9y{B9MRwJvyk3>!C398QrNZmUDTaqF5uEN@x=?gm|G-$|)nlD>ADXos`Pgd_a5KS+FOT|H80oXZs@kp9zJ9YSGn<*YEC)*` zzkEMMdbwJCJBQ)zP)yYqIvR(bsV_1ZiX+Y)hzzBi22vac$Z$XdeuZ&|W0=wTu6mi* z^jPY(^++x{SVRaOobJ3kgKl-+T5Bz{YVJLovuzYrCYD&~&0MI|VU?12q4bxG*fIu< zq#%%tBvu@?Z~aY~bUJ-`UQa9i6?wxJyXB`k+`;p)9-m#7xV7{%;zGv*S6e!Ru<7>% z^3Ja_Qq@TWQ9f9>64Od0mRVTH{MC3e0;T;)F)_p_2NFRetZVN>&0;ibJ+V@l*KV3> ze4~|>u9bW~_0y$Rd-XG1x>vmGZ}q0Sk^wjq15p&aC6#BSbXsSXa=P~2gA2jz8|)g-*VP&9i>}gx6#%9GRZO5bYhV5hp`mFdXv`mi z4Lw+nq2`)zMZb*5U6kZV%6FTKk>Ih0=5;!a<^lAca7yu);hj#QCZi3ETVp#x%g*FR zfPl0YUke-eQezGh~(yt~U44`ZhN4IgUTxDuTi@|ge9;Dmqw(xYTV5?HZR1nfk_KW=wn%Y+_ z;d)v-r3J=GC8n;HAy*x2U%rl5eN_4Rj!Q2oWe!hr58=i2>Q$kj{a#HXO;d#I%b+*KB+b;Rud8WEq>MLm}OrfLnDP)d0 z2;gEya7ma*0&oi4eMBU2%GXsc5F=6sHBW3cKGZx3wMCn%+*^s<&J1vGS6#aHtRB#B0e`83-@Sl&t3?{C9S;AoUK>V{+3d89QW;Y}!xlj#xg%CN%JP{H_=XD%aBUw?SX#FM=IpFdT+EpRurhy#8AxKMLK1_I#@_PyLHx}6VDXS*aY*KM7h zZMWMiZYPjZ-mfaAK$ON-DFkaGg$@VF^GcT+&x$xaj$^}f8UFx|k}U+yjqTZ2_z$E7 zKwHQ_I{E$lh1Vz7+$c6rL291MyQnX+o23 z>!DQmT5ZNT&S(JgAlvkgTCBD2;lpNi2FY{X8{@23>*nMT)xCXo=-V^2R4%;HmFbZf z(>zDKfn^}^4tRhGi};;$dK%zwSorZtttR+?tYOStih_q95|e z@x&tar;1-$d4yLo3`Si@lb&@?iTH(>7g9CYa(+r%e0~=I2s|l9eWn-Y_0NC?8jUv*nZ9j)C_0(IE z^#+Ts5pO$P)|z@sYmJ`M9Ve>{VQE6D&Pv83H0R~vkjNQMT(Fiqh(41=0Ldah%G~-J zj>@kIhHZL<)gBlD{{W2NeaQ2=**!h@dg^aY_6@gdZQiXtijs<`)E1-KR4FUQ;Y6TG z_?8^shFPQyl26-JRk-#pg-`5ZbLQN<2=6zJKn01sIIs~d?m^q6eN;E8e+3(#tCbY= z8=rLDC#PzLt(x^sNp7FkaT~`UtgR$dBO)FthM7iwP@H@8P2vqSJZ}(Z{{V^1Jq^Je z^ePpp)O*Dk`FX&Pps~HWtWtkx2FDg*N4Ym%*0f^^gDv_dfYq8 zI*Xs|_~@*4v{V%;WQIq13z+9Dim>AxMhgSTV+S4=6~wW%UTGFI#^9f%k6$QRc#RAe z9}33MV}pT`;_I2T2mlUym9)Mdz8ALlS^8bFH;CMq^|V`Ol1oP2HB|L9*2q?MlvBKo z0B4ZN^T_HKIaLY*_Qzj{zLh$dNdDyf&XNI4HlVa%A>~E_I$yInulu}aC%N%e@^%5(roNCOVreYGe90kgNF_DgU6;Bn8!<;i} z5CdW^XO)HLt>=>KcxEFC+V6J~V_xT(4}c3l_Q3=b0M3K5#{4#Hd!JZrml-5#U6XXA zs2`0M>oU|!UoB^?iR)&lm85Ebhzh7>5v;1psm)5*RjT@QTZ0tf00i%7m=SB~7T0-D zuU`p+;*Z2qio`j`<|GIa1LfK+GGqvdvc+z_;b7QxduGvihS41j7T>J1L3OxWVfCP< zSZisYGa$@R%ZT9g^5hw2ejuRdhlWtAPl>Vhu?~>=iLL|lENtS$a2fo?O0RL4-F z7{F!(g!dGv^uYF??10R8(kdSpIi-kyEEX4|tpzT+jrC6$^esuE~sV8~UY`5eZFi@sTpBg6sN@z-Zv)aW!hpEo!r zI%|IGlB6o)DtK=hb>%0oSc`ft&FOz%cK-lR`U?dmmhoM;cOK-p;-~O3RMbq7(^5qZ zH7T4R%Q<(Pp=DJ@@BtatZF+U8wZs8C4yHZzU4?EPR|@uFvzNu>-bnzF=?7>X6uez) zF5Z-t74_9Du&pwB^$z4j2_in{_;Sti_{lxBbTJ3~SUbQ~wJ^gmE-CjnR(9u4ZPz+| z(|J`{tYX(4zB##98Y$Ss;*taMvn!x*8;E8`UsPF$XaY?ln6~_0)c?Zfg2Yo!F}*ux!f}v0z&JoYZ)ymQPfx za#>}9M!_!MyFW4_FFMxa-$XW}#J$(B`jfEw{S+~j#}VQ+orhor?{)SPOn?MU&9t3& zG0ok2_^3-&4INIz+U*wJy3@}>)jPb?*VH`mx{1U~5gw3G%Dmg=ZcWFJe9Yo&@dkJ` zDi(+YhT6tstQhw&DzTV$aHqHywZswzu`Sm_1}9A?oL&>q?xEXKP0_zD+kPuELlqSa ziMB1v3=&hch>pf1AVB=%hq%Uh$VtvLnEH4}3OUK>OrCn{>a*c#zO@sGEDiA;mf91p zldw!glfNr4al-Lu|hP0K_M8 zLq%|=f<~U~Y*s~Cj*Xz|+SFZY? zzNl=F0VTILoyp$TfJLEe>x7$6e{9Xiy687O+M%r$n}b$*wo7d_M&W`Hnd)JvKgO~g z2a-1tI~*ADNY>pNO`t<5w+)aEfF$t#7(cJ z_x}Kg4Y^%>-LxB;@k>olaC_C7mU5EIJV6l)dXb_inO~S#-erwjFsp%!JU#)~d~3}! zmTmt4B1Y3aNi$>iS@E1l@!4u(*fI#PE^9~rO^fNyL|MGnduUlYA+okDlE*YVdv)&$ zTW6ED67^^9y(Mn_C7_h3uQ7T!RnD=&3`zV zBMOXagEUQ)VoWSQi?RATn5yq|xSNRmw29uuFT!CR1UN?`4!e*+?djEAr}#zKTXyR$ zeS>4$>|#a#0K%Tf4b>7(EImbP&sC88*$SmoRcxPOkH}SykA+6HbLQRJ=rJ0qf4+UnRsJ1XfL-@eR7K+i!Q!SQmCG zn}rP3cE3?;sk@4bMMah*i_;t$KS(Po2M9n=HQ3@>>=h#VHv?(koa%bcy6UPh)Z2@5 zSnCnEojt&n+jTz%y)mG%&uO=8O}j-$P*39j01<1R>m&FdyLqa_)ZLT}!73keTgJH& z#IZuAXFr_40QBi@psT~d%i059J?0c<@BN>hB)+7u{u<$7fzR#|$R~_OcyLBxQ&~E* zE?EBn3X-^7fC)P-;#G3A7ZP`{f_$&#I_|O#4^&QK40R`N-c!kDY5o$ny}>Njt;I`v zy6svjYPF`bRMyUEEv_dK(};a4)O@uY6nwL;Q#eB0Ox?sB&`TUa_xk%PX9D`bG2yT* zBHKZmd3L(ZNAQ8rIAAF@%c+OuL;@?lbO@-2F{o2kMhBcRAhu3Enj;xexrTEFX2X4U zTW5x1Dh7aNAPbWbwusSuG4x{4V*QJ?D%>drLhh-eRlztMOs$+``3LAp)~!dQ53>nebXvII44%4+8vfJ{H%;) zoO0P@?Kk(hP<|(6&Dyr6+npKWhNhzf{83d6Wu|VZi7G(~r+=4l-Am198e11~8&Jl}t z3Zv<@&>lAg$r@>Jc@d{0qUzqNSw~HJLt9VN+kL-pOHE)4`);0`F}G921W~FXRWiv@ zC#k|SgOA=w#FbQjHjO%G6zak=&8@E5k9w7;Dmx=thz>0}i9LL@6Q>{o)m=LH7u_8} z+m^XE+>&g~sY5{MyLOsbTIDJ^M`+QA;Xox3z_JXyjIo3!FjyYxo-|H#CTuJ(*6NDB zDvO_$w80?^isq?pM~UsEcpLr&5br}TLK@q(x! zNC4$X1O*3GxF3eGRcZ>aZ~|`!*5A76D|}IfZ3j}M*B6l&5IgJkQyrt#{;ApoG;7rT z=TRLhl?H3Xk~5w>S(~3Ml4N6oNCb>vs*&o$1BIhSqr(O_A$iR_L*C*XL7s|vusWI7 z4b{3R>H2Du%^=!#ni(s90Sv!}^qQe(aZx$+;WA1~F=Ad!BM?Z}mwZ!H(|c)B(n&Y8 z?Kb4Qt_x2E6)NLEIzTzP&4$0C+*>E0+uB>rKH%yO=ZkS(V!2CKD^gX(_?oC5lvA}U z)yRp$nUS0r;Xv)OGt)Th*pe72+Am2wXqcHF|FJxx3;_L zc#a3t?R`2%-PFHnOT4Iee^E`wp5HBoqV*k4-g=94@b;2D^Kkup+VatHx?q&0w&%_TT&F$$)W1&u0Pi}j zmh<=Mw{q0or__J_OP4+_H*NQ)8t_uR`*r( z3|AMov?G13z)r>?#`T^NXt)mA5r@&W}@PTK1)QP z;Z9+7EX0fj%lrEdwd-_8w<+c9k19nPpf~`Qc*s$o z1-p00eMoq&aBEv6@&x{iOBKX;ZVm<^;7>P4>b&--UvgGU6|;ZcD-0}wl8T~~^5lWW z8DYbMtPWQoc*r2*ZoM2%8M*6I$~ln;r-{K<2g8FMPw%Iit^3lOj^)^!me%)MwZ?0O z1w}M5SKQfQF7cI4YNLrz*khINf!jLc@xK)C+yyt(t6Ia9pDT4%yf+&|35=my0Ltc) za)($O*uc|i^ItM|R>0~XK{~0n_Wt?XHJiG|YN_hlExkr=G}kI9SJ*&SGpy z1DRd+K*%K@tsRkU9( ze9rPr{eO*>eiwl8tVKWVP%QvQ&5@v5Aj}x)8eRh94ytte!gg0u?;DEoQE%EesUv-} z1w0`oxL2%&*hLd0Y#>3+WN@mvbqoIhhF4bADq!e6pVOXR>6?oI&#t!gR~$*4Qx@j% z?k7o%3~$Yq`J&Mh*@qYo%3MhoHrJY{EYL-36n5w%f;RN1Jn7_Pv(XNj;{w z@wA_adb2zshZOCFjf^f%Pa~AT$zca#>9UNxh&^-@e_cHx5wQ-n=SS&3P>XtUJ zJty_r_Ogg|=V9IMw;jj7C%?yiudlmQONB5b?IG}F_9#hPRDAY{U^gFYB$I}uY8kE&|7{9CZx zOlueAw`D_);(~*iDT#ZG7dv68j=J6hcOaDeMvr^%K8{E0l)WV4HQP=cqruJDSJJ)1vWsM>NTKVHD^Gvu>%#$EqE%UZR9Ap3wbF7#=E+N$0 zN|h&=fHHz?JB8QcvCgRXVjGBf4kVdy8ubo3SX?X}eW&5F%Opz;kEbhFG?7Efrr8YY z6R;ext;Il5^EMP?xz*i11;wk0WeS$Qkf@!;Xi^UGF+v?;GwaI4twr%O)n1=%zM4U8 z*dOq9ZRYoNrJY4+mMbL&O3#aIx6j6Kk7kZ6!dgsU72_n^S7l)>t<+HS(VISk^8P`jA~E zxI(u6bc{%*m(i)1BwSSy%dsp@M%yW3aO|n_k@-dXYk&1+h(8Hdpm2<&l1{`CF$VhU zd7YP4d?MN|woZ-HQdHV!vCz`o?kgRssN|*y464jjo;hDo%0X1(-pAiuXAt5vFitMV zREX+N+E&RF1Kip$G`+g*{H>o~xn9z>t!mr%87n5to}!r*WS59hAsvgHD(ALHP(J$P zD*SoD=)4LP-%y<*K%YDP7RbYAj}oh3Z39hX>U~zZ*pxe~V(gu}Wn)_m6y z>TIPg}bwD0+uOT^8cMK^0{*YksC-D1d_uu@MA{7BbR$pb^=W z{{RsMkGAmc6fmv)EjGgpZ#N>^%$T*0Ev&R_oIOF~5+%AFG(9%h{g=_dhwiu8{v-NF zLAvZ#s(8|+T8iOAB)OJ`sZ0fG^>ikHgX{8 z?{7c4i*IeuS5ws5np@2%wruNBrrR)HZFP?gU7F)G6xDRINgxb}k2HxESqh`9KB}1C z=G<;0E*Md403pWu$tTJq_lR3r7-@k{OWa8|kVoY(H8#In$4O^EM6>OC^3=%?Shqdd zY3ePrm7%FaQO%l}dtxywO&R%AGsh#SD&Xq6xnQYh0(aB+`Yf1??XKp!nQfbA3;t29 z^@y2UDQ)lxeM2=#bN$m@DN+9bry74&W z^06!IJL5l1NvA20qURR~cAcZ`b&{Tzp(wu-P^nK%Kddba@mOt1LqeN=^qtIcmAn;f99e()%{hwcX^2 zpxxG}Xk=Mjdh{2oWHP}uJgt&_H>IZw9!cV98Au%RY`Cs3@$WSv3ke6Y_wRiiE)-y@ zIt+_mEqw^-J954D)BgYw9}Jy0>P5q>-Ak#xQ#EC?a!^Z(D~hEw$@p3^SxDwJeiA&B zN=t-k72`P%+!@ow)N9#GNoP%c{{TG3%dp0)n@qXDZ_)vS&=3Xsh_#mO>t4j#ePGxf zCfj#C!$GqtBD~PlM{XA?Q90p7Byqt2b>lfnJrRUZ8B5~_8mPfl45L`m8G#1o)+YR* z`F#}GNz9{`4uEqK2s+-z{cJXs@q239>$h#%lFDu(l8#9X^Gj1OSYSj#&oc&K30T7r zKZxUs}|SA-|AYKd18Af8sQbD*0LpR`qErD(a(vv~s7QfWww8 zFELKcsLT~sOymrWY%j@(YmYPQHuAaGqV02&4Gxl6-Sy1a?=}+}URP=C-^SM4mT0JI zWk{EgG>O@H0ppf1NFRUk*H>Dv$^hMS{v0@vv3)|V{kgn)U9sTWR25sIVY07;F&yhi+^ zmFCMybpv}*bq1!-ZvCjWn_FvJmepZ31JD(`Ks6P-82qhKC}{~j);~oLgRWyARqi=x z*a)6}{{UXWcDx>gFqB)0tsW!v=+VEPy?c_i-FDuN^EKrwRg&EfYNj#HsFfxqVHf}w z3f;=CM$a>0 zH=?;wu!tD=vYZgiThC+j0gMcNNjio$3$*^3#a(x%%k4 zm*5_Tw(Ib}WT%>{1bb!X=R@e!+LCWZZ(G$IWCR?Qk&kjaWOo2(KNI=9DvSaPc`aIR zV5nPCWK6@O{GH!RXg6ImK$ki=A&%j6TcO~q>BVG{BJb)RBqVY&-~)oV$8KG+bxjj{ zDb#flcC?TE;QdQM^PY>AzAZYJal3U#VDy)0-4?2S$hR18(AcZpDs8TjsY#}2TbCGP zY2|8XJX|O)q;bXW6AtP$YGNE9fg*ZOy;VE$G@XbPo+X_Srw71NcK z(`?#pGs8%hN;qB^X`!bWSe0r^ykQwi@F1Q_?m#4sVWow`RC#qtE`9Z#ZZxqGadWVe zx+*Nhnk=bGm^A!_fYg|^!3G5DU{_;&S9}QA`p36nx^(&M7A??|Eb`Y+TO<@U^sfly zOmQKNCTv9hqDF!FIc$~(S+MxJm@4k2R_zitn`z(Gb9kITipIKwP4?T%kozuBHom9) z8`^FgTYf|MZJSpk-D&BqR|6qlocRHE~tr5tP#W$Db|w zY5J{9JE^o0SU_#fq=TULbh6)n311(QZ>l@Zuc%jBHqwgO9V~XK=pmUJbuMER=}8EX zut?QUD9{8{`MVHBem8}^=ftM(nCm|Mg<*%sP|E_Hg|_R?^Umj4vgr=Ed`4Kl9X9=j z^}6b=)mGcojTIoX)B2N1gpJQ5GcTu7`;s2KNL24VS2e#ZHezRvCCse5^P2-DZhm82T#c-oW*8Lu{&F>jgE9M7S!U2m{HEV_5Uy2jl%vD96~>zzeC zG}R(_>8qxTkn~rSyyJ4QvjWNi{v3ivx$o)tlSjv!M?JZ%{{Y9(FYv(=*m>=@*HJ5b zRc&{ImFg;~)hXdmP*golT7?QToUFM%{l|0TzN>(6)UAPBKjjAepnl7c{w@9{c8$|! z)NEawc)H8FYHAwWbfl7b-jLIAKD$g5w=xk*dR&+xW^x)p3f*C;WoL>3h}OXE5j@ZP zx`j$k6&mV~Y;uVL*O(l)>!pzR2>5ij*sPNE99(U;c`kI%M?*Zz{`ekZ3c$6#26Qm)@?q0_Uu))ifEDFJW@O_ z3hJ&3z58Pr>TGMC;MR#HW2sh~8eH)Jby}AD@v+j)oNe!ax!f$Na;1*G-!02- z+^N#OmBwS95@I~#KF^QSR-e*wo3whWL>JH(4NR z%F5YULZv(~tI1a=$IHrBjwM`oZhkmpUb%|Hef_ z{S;DLY&5e&25^sEQ6!6p9U|1hWXpex^LV`_X7(8{&Rlmo{z7 zbRzLcKf2LO&yYdMB=;V~aRVOOx5m794jq;Z6A7r_HP;;mqNAhehTpSQQ^h?Xmaci} zXQmRy^9uTa8G%AM0UTgp_6h*;ub;jkuQ=y6rR+Y-)OcnNv7#$cw$>mYxH0rwHpx>* zw<#8a(?dyUqW4jS7XMOcbJ#c?T$orGAy$dH1dg1`a}t#H^JMlpr-qTJrleGS&GGJ(K2Hxk0x z(pzKH9S?DBh1P!ax!-P7MFrC9B^=Yo>&F^YH2jx11Q==LKr#sK;EZ_3eOb`>dx_#& z=Tl($b@_n%$I(z$;bM~BA`(L$J-gWzn?9OLC6s|>~GEh=H%iq$_5T{VNNmO5Hn)jiIp+h(nnojOKa}1k@Ve?Ap;c9hp*vc8GeohN zfmfCy4d6&NGHY@Xv9(rzY!ZP?&?k$H78@waZ^WJ}TtAeM8 z!_+Rt(rt0c@*}Zn`+~K!wVg@Zcj&IIdY5(5D*;tVte&*!MhM{KFEs}$LmUy01nZCS zxUDQetzG7$PQU6T`Y!#y{X4`krwZCagU{u0oUJW9{iUD z@mB@HU}-R5D?HV?aSje{ShN5L=Q3Q)s&#iMZ1l7?C~R^VjgskH^{F~7 z5P6=aNfD-JTGvS=RKql6@^9mBP^reT+&=;+wx(bsR)RI$ZKjj1%gu0HB85y&dj9}3 z%>2aPO}PWmLg~e@TP@NnQ~v#EAX7jY_w=WR3p0Q%ee zEBap!;HcV}cmDu4AJnLgqiBB9x$fWij`h1PLL0aL04R0bb&<-H5>deWNyU z2W2FPqa+`FO5YQ@vrP(AspvBUNt&Kg6sYiE*Ar33+C!c76Z9*Vwl`P$x3hjWKl}<@ z`lGn_Cfc6)9XOinR+SGe0f5e^{FfqA8^##M%0sEZJ%+b&Kw|JdD;#OI59P6)1Vydb ztay5@!aekjIjBou+5o(WExgT)jWi)|?}#6aDn5jj+xv2sZYlz6_pS=5*2@VNp!&k4oWfnI69p=c$_tS!{#TvAJi)umSm+3 z9H0O%$XRpt#_9!j!QAU`OBUMQ7UKl8v)i{F2jZzJk&57jBs^{kt1Bxj4&x*e4@A~d z0OpyuNc8kt7`E5NHI&1$figz?z2C9hdUUViD*3dxJtpysVo}iSdKjwcBD7f2dTVl2 zxK`&iM1{n%FFshA{4(GSE~#tbDLXXX#x8Gb*bRDb)os3ua<>oTK{qpZ5pCc``T(~V z{{R{Ld#LqOS~rHlvca|5l0i=xjtaRwLZNZ$7)glnEr&t~Aa~QG{{X_aFu+>hlmi{& zRBCY6IkBC@pZuM-NrJg%#eJKl9YCYp7P;WPwSupb%FI>^ge%+zC-`}w9mvW^19?HM znpKGgo`K&<{f?Z%*5bT7@z__;oUV%yZ>5jDHQ9X=+!c3?`_rzZ%V^z~N^6ZJtJAX8 zQQYK8*$kGtdevq^!J=|%78M!pLpD^97ab~I6?#uKCx3UJr>gP}AMo{RRXki}M^qzC zgv?J^*Iy`59n(*&vcFDnqsU~IZ9=2O~j0|V0k*~Fn{$gi{Y9EC9J9kHo^K3K8k}I@IDua zJepN1F!XWC2Vy0mFcm=yhJ+?{OQmRml|>ZaqPzHSA1n!!`KYH1;YRZc}|CPyYn&Ljw@1&WR(yW_C< zdyn9#QF!B6P;%(tCV7G;$G2m3%X~q?ac+BG!m%Nsm@Oc6f(aU0`wgXUJ(JNZ^nEzD z)LeHC@0)wp$qe=NcYWbiAg760B>XZ)vJo1wRapt=DE;b(D%`cmagT|HILu@xb7O8ofA~w(q<4%93+9r z{^(64d%V6F&U%@?9R^6|}@Ke`R z$yY56PpVax6Dej8$r(l|&x~&o;-E-zlBG&-Xb}gb{_6;$@I#(Kwf5L@5v<=*4eq{I ze0BAQa9#S@Q&#ZS((O^kme*ySnhI%u49ygiFpY<){{S$P5ZO|}SHJ;v(O_`&D$_LS zz%A5^oi?2hUbaR#^)OW01Ef1`CwuP@N6S6QT(`V8#oKf43)RBmSsi_4%4T}1#-@!V zow*h=5)>Xxe7Ba#$vM^a3^h7zU;-mSCf@#=E^`%&sOpbsh&Iq@I>(giMyq~&3Eg*9 z^L^KBJ-fQ6+w)#&q^hTcR?kljO-(#(>a1cQhV;E`G41l;`(vN@f{V>2)~4dp4dapi zW7lQg{13-Ce+a}s`kok7ruY+;jxD~y!$Kxv<~l;@UH7{B+tWGeX*Vt7blV|_x8W!K zr!&*OPDx2s%E{w6EZ>mvt|;TN)Y>Wdrrg)nTqlS8AI8I~U?|dikLDQ~96PjtTjT_- z!SIRkA-FHQp69kV4(Pg7SKK0wOJw!c25=fKMc`FEgF2o-}*d^c3o>0=(wRGORVgzjt7Sy&&uHH)B2Vp z{$EAl--4mFG4IV6-Bq|8?(?7o_X?}|XCtx^I}-b8Hw z0Qsof{6Nq2)=|ZA1N^><2Zz!B0P+1w6&tdyrUHiRGKXFvlprJTkUaU({Z|lw$pZmI z8OT1W)E9+~BM(hM*aiDQZ!}A&U(4_1W4uU*~>I!LVHvM$wTDwIpWTX(r zSviR_j_w;g{0};r$55#3)hWsDRxiQTXogfEcK-lN4OwN|b(=`9xg#mF;Gsc*-0_@-%sfh@DjV0oM$_`bgHM zX6BHxhB>4-eQ)$K513d9b`_YzB13S$(Fp+s;M_H;N90~s#y=uH$6CURLrWUs0qgt9 zwj4_k931vjaUAJWKW2~Ls9y_u8MN%%nfIsdxha+^UA1wjql&6S8p~LaGe8xA2bf{W zSNp|6kV74ME;6@-SqAbwBm?v-j^UU$Vklx98#ZY3Ctn~Bl9$tTnhmMZ8=l~{-`3^7 zsq5(ODM4eX68_J%tWq?!GvHWNCdy_J}%PmqLovF&s6H zXfWXG!5VFCMdtS8wC&Sy?oH3mrsZ|H-8hjOPgzqWpc9-aW+&)-YS6qk#Hwbttz&Dh zljyA#w`F`f*6%-7bG)vXO6{R*Ph839LsJDe;;K;!Vj{GuQ2=#jW@?_{L}Qg!Hlb_* z2QVkl@7$5xO6fRu3H2PxbphAPH-paJQM}tv-uG?aY}FG}K^!!*Wg#>(0})mJ5IG}v z0Qn#jooi5`PO~!8ea5mc_aAj>kK$DTqd;80s5~590S7|Y5FmQ#*cI)w-S1U2b+T2w zl=L+;PO;OpzNCy7jDwMH3z3`*5`B-IVyN0pIT>;d_8gY(75KLSRqYI6hz9O4aU|Y7 zCz9CK+x0firIYcJ%S@9|H5acFs5H$iWj#_)uqVI2%mDg@iNkpGSjOD6&!*Pqv~hI> zd}EDAWow-hbQ@i5zLQN+@bP`x75i(b0`G9GxkB{aHWzteNiFpev$NH-V8`q8G;8Rh zlPe|^J}@lW*HmGpQ$z3QwQ*H4R5Zmg15zLntUG>wdmF9yN7gHz_}rVy)zll)*6mwG zP>u?HiFl;9(4_}8ib<~0{y0wj7@~Sn$W`QKKxO2ERk>+WX>Ab?8j=aqengdo;qea) zsa3x#oM7|i6Q=WRH48&uJ|Z^0!t4I)ud`8Fwr1V7Taud3OHm8WO(YUS6*T_AjmdXc?94%JW5-jagQep* zKqLu^T!xOrKx1W-1;jB;r{NPVXf6^bOU1m%nZ4K0pNG!2P+9t0v3AY!mboUN+Z4}N za=6t*&b20`B3fQD@jQyu({RCJ0TG4dy5)^}97huNVO^Qb0%N%v@21?M>!YiMtkdIE zFdpF&d5OGr2b7aN7C+)g;a8*=x*g}ZdY9BohS<4Y>KUzq;Z$Cd#VoF}$SLVm;hJe< zFCZ*A0@w&gJz3Ml)oWPRk(sBh#q51`=eEnAr+}>N!i#e-+GGK!JH+4C*Id`|*$uDZ zuBrDX&Fa?4y4`(Qs4te(5>kes3>eC_buAEeVv%4fhemIeW+9`KZPg!Ljt>S--pA`F zkkMSX0Zol)s>ZUA0GEDqn~?y?oj>9=ld8jfPyAF`y5YaJ?UwRd{{XP<6_Z>|HH=9^ z`%a~zRallvf?v}N3W|q`Tr0}!7~~Xea9$Tz6^ZaE<;-jjmeh&;H;*K^%ea0I4^I(9 zJ+5dnAC$=k#56=&<6OHJeq{kYQ`tLC-)-L(J)T#o%Ue+xDSMtvMG8Y8jv|z$1dI$L z(p8pb%7$kRoD7(XUxvg~z-+=q+nJCjWvfDkOnwrd6fY;l)v?G#$T2-2Ytr!B&c(Rw z>!!`#J3{9|uv40P$_t$wr=2xYaG&tfI--`IGRu;1Kp4va8&$Y`e}-yO#7<$}4^cXG z1AB$Fh~TcRR-J4hhT6u)H_~$rM4Rm8*}oRw78ZT~0PyKWQM4wSg6VdnbcLl>oq7YpuGs+Dz}g7Vz|;{uu6Bu@UB$%wwh$ux z{xKK7ec<&Mxxdby zqxCNL)cd8bvh^}BwOXj`lr->$5mQoALa{`Mq?`l9yLayH?fva_Wpf0QWT`(yx)F5i z4NZMhR>QaU#k2!*zgHDlV9K*BXc^Phm4cozh8f0516nwoTQIGXB%J`%t-LlCrYX?D z-0TZF`PC$V1e(94EgV>=mPMzAf5h- z#8fnuHyTBYZ^V$w>K3v(gyHFbbd$)Fj1I@X8_#2?cr^3o0_$m*y3D3ooRBt!^E+hj zX!lRXg?%g!Uv079H$1gB8fzs~u{8AR(oZrI&nyoK3FJr|pBUF`fPHGT*!qq#Mfvpl zEO@um!eI?20ce6ifjiiD?etv}w&o!6?_8SeYZzW?@m21-! zpIO;-yNR@j2Ko(#nsQv%@Hy0~YU?il0J-nF%ay{8$rZQoR-00qcq*!86$)Bt;=q-Z zQ;s4=^p}x5IsDr7Y%dcy>ViOF_4JuOi=X1WDcm}vX|T&sYu44uWvQ6EyT5j3Z{j5V z^XK1M)#_HPd^WbrVx1~<#&UICgVFodG+j5a(~5dUbQJ`dqGl&G5;5`EF)T-O+p+s= z$G#wFZavaA3$DO|>H-NQ4Hb{w1c1$lEUG2b8#u&T5;C^E_k>j6}59!8lWv1p(!U0~&}R$#B2F zd!$=yN%SA8(Z3tpnd0bWzM@-Io}-oS7R)Hjl6rL2GQ2Q8?f;&TIK(s*G10JZ3A_slsJOej92aK=H;f=K#j0Cv*`c2Nvy)Ae3se3G>VO*O&V zpVClTIyGQRatVh3p5zgaJ-cT>cHvJT2Pq$4(Q;qKzgPbNIavb0%VzlBgV*lRyhs4=Cldzc#$<*%3f^IR9QcO{zL zxa_9O6-_0&&3c0GSx{~;$8?gNQZqVJyqJUcW+_TAP|jpR>Oz3G^%_6SOo-CUon=E! z*{PpL3RoC7ltZ}-hpk;=NR)4{ArZqB7)e{564l5MKS5$>v zS6U6HOvtLy5f=Uio%H5mZyMDA4w>#Pw)1Q9)-(&R`fIo@H5FWDskl;CUaXY2feqQw zt}dxnQwOa)Ya=LUj!HsN8;oVb1srj%8nZ)d7cfY$E&#^x3GBK&JDNbuAl}A06Sk8- zs?pRvIlkTh0JJB0^%kKNMbic6ubIgb2U^PbnpTCkG_=BR3}>Okh6_ z+0DJJ?iL^EwO@;+R-;FTRGr9@TeU=7Yxb-l+^pm8bKp3j$&NJWrb+u0t2g>mfv?}48!o(G8w|>3t0T&$ynX`8$>d;;dyrBiWp>CduOE+K+qBxMhi&YjvJI`#x=8Em~I`WPtAS(n=NNz zUx;{NafY-4CsV$idHt5=o`x!vB6W(O6~lfZ5cVJv2w-v#(Dv=B&;xE3Pr6%F5=fV zkb>>?i5CN}Gw7gQCb+$$soP576t7P;CE|*rIir3J8!bd+Fk#?~dG^)bAZDcI^9Ss? znsGDB_Y3YHRXUBfx>HBEt8bMMQvLyIYANYz`9k%ad6bR^BM-=-Tq$A>M-kgTVM>## zxHY@4M4(MpHaQ84$Cp34!&`d4Vrzl6R8ZZjs#26z$ltKqiD8Mjl|qxq9p8(qaYbh- zmLPc6319@5bocwL<&J>n5JBrdr~1)Ot=9`3=9VhEWx|TG22#sCEa@zApdFc591t=O zZ29r2mWYW^`NfEZ>NHe`ft8~uQxmXjge? zGUk|=aNDsRpnyi}=FR5OSxwb78nF2vf4cO%56ApUjTd2fn?@pwfdo6{ zd_*6cL;nD{f9_douA^`LjTa5uu$KJ*219t+lB|m&=N#UZ)Utg^92e*@sT!r0sMz=K zlB}h{xGxnm!*Tu@{{V$?2g;y1UDH#{skYSWB_{6W_)A{mrBoc;UM%fN8hwj1V3YJx ze@#u8nols(E1TjRBDW5;T9n<(B|!7^7V`l}B(A26W$S%I*-y#=W8*!B3D$WU=&1la zmP(G(Us@Jar>F_#q?!*+NcsXm1Nj{%9Ief_IJd5gPOdVA8P4HljNI2+U6m5ccc_+@ znrY*vNAzB1l1Uo~s~Rgv**`=$@^Aqnrk@k0{8+-4IkTgP0luWj^9r@RYY0wP9H(Gx zO!7|+Y&E`=uu1B{A_9^C7_cKFu>j!z06knt7FU{yS2?~uSpHNv%SVCWXScs>e?17Y zD|G&CSaG>AYe@sX z{{U5zrVWi~&20?CUQUO50byv1ja9wZymq$a=;uy$?Sj*Cw2C_W^<@Pez(&TF1q|Md zYzdKaYob)2xDj#^c#LfxdvdK?Tmw zbXP@Yh6SBNs3#(LhF2pX;GE+J8TQE5#V6#bAoThbXT&J7r8c$gkO)47dE&R$UF#?X z5=qVw?qx^fvAMuf&5^_mk`L5&)_PA3k?s+Rq)k>hgOp7AK%ZZt-rX?hU8Am>rtM|A z*W9SK?Jd4)nJTQ5Vy0)2C4@&3lavI9c^DJRiewBDbu30K;i;OVQKb9PaX5@G;vD7+ z37$qh3fgb*vC;0BS>oJQs(tq^@`5^P zt;XtpS41E9+wUn*;hr1YP(DcMBlP<%QE%H7bX_A$rApjZhVNBNM?%d;MJP1P%_pTO za%FBvK~5>bg7GiygETq^<}!8i7LL5vYhM)VwFVu|8Cn{2zK41J7dg+=yUjN2s*1}~ zHMS|GiZm3Jvjz2(BDG30w`Y{0W-KrSgauFl9qt;Jgw_gT<3;5)>$?$%d)z-U{e9}T zCrW4PRoAI)Zm?cwzwTOhTg>u)*GBZ>q>fh&>PX7HjP62Y9P%7~ZCCN^Wk2cIiabgK zUkxPpun{pQlDOfalrglN$siw?Yi%~yT`am^VfC2wzv7c~$$YlUw{7;_uT^)q(cGe* zCW?6}=vm`oCwCDwGl7h+sT(jQutzI|z+o_WM_1wJK6q$?4vr*TYGvA;qd=}H;!Zxf z!&g5mCDWvfdRpg51od3e*6zMtdbzu*uNRxOO=UYu(m@pEP%c0O@lX^T0Hfan^VO9c zBfz-%j;o>-@VHuH;0?W%uj(spmn#UaTd)5BH~dRR_OVXmggkPxtlWq>?h4^Z?TqB( zbW(jMWs63=c}MEBhCR5c5;w4!17qejjTf_~lzUo|{{T{(mX5x$<)f>LhMVyVNeopp zQxQ#2Wp3(HMn(XRE%K7!0u9a|6;_2-)MK)dxYT_vxco)}o*}gbCljm!Bu_1EJwXQ7 zSh{q3By!rTVU~twk)9~36vpKr42KQuduvaLQYRGZth;|j(EK}&q~07bwTKUrBY82m z(MYxy>7f+!+3#0MsycXI@f4{Y5UEvu!a_%=j53Nmaz8Er@2ad`4b@_$F@Ev-6>Wp! zlaTGSy?~W(1KU zZS|gTL7%nuI3_-WA57J0V{QSt6L=OAr}M44gW*21#Sd8a{Lox#rdrEo!re&?SxQn` zNYY^tUQ7vP1-OHfTOfA_T)z*eSQ@N}5p&cXI{yF*tK)9NoGw;=X=$4o15?i2^c$(q z#*am|w7VkPcfHnJ>ni2Bt)`NF&wZBhZ=2_Rsc74bCiw7g2@J?ZbM z(L)b}tBa~A&=P$-`YD9lUfr?!W4Lyv-@9CIbd`ImrjmR5(MfOhVx^=&kj9Se!Dclw zG>G9&A&B?KY8+-MrPS(xBncC71nWHfmv_MUJFB*>8n26y0Pfvwa7QCN_JXC~2)_^( zzlMGG_WI;XoxOfVj^#X5#-gr2!mUKABVJ$$UTG0B*$Nqm_9Fv}v6PCUV)fQ(Y_LyP6lMPacPdLf z?6M>FUO_Uh2t0mV(BkXi_;nG8#5tj+-h8jGy`f6ACgE#_WG)9!n2GXW5gp);vIO?x zB(+hy%hdk>#9V+460_Q9&!`X4Y0Ez@%f$H^0D?gjKi7D5Qw*p#&>maZkFs7BLt%$8 z+M})J;T`V2W_%=3tq;Ym#^qU89j1=cX}?$0R8>Y;LWY89gK;On&rrAphJ0j_GwGZ) z!Ps^?qOap2&IXv=kJ8^&(z|+su9m@Xr;>`MIVtI3fz_g7V`Pm~sle<;JA$JhJj8!KAFkSwXej#~q1*Y-7yI=U<$znRCuezgyJUrk=fXT3hQTCY z`wx9(s@CYzPrhqnlb&wy0q^=QrTBE*^miLw-py3-AdQl>4PymBr{s}`A{6l=B7ggV z!5PPtd{u!UGZ7sP{TExqD+f(EC&_MGa?{;WC${=mDnd*~vI_K)Gyecn0G-u=?Z+9& z1mGO&&oT=_z0Pl&?Fi1ahJV8?L{ZfGng0Oh60!7{ugk=ClHe+_1RSlyytF-{MEmNtXwfx`jM=)_{{XKoK-?}M>W^MG z-u>Fu@LWA;=_zDZYP%g-WvhfVn35R*JlPAWV5f-#B~Yr3ZBd}sJ-J_gPUb)4HU{zf ztmhF)jx99cX{GPW-(@7}uI;O=>UP=P`>TG_z4nTUtUdUUz86zqjfJ=&H-7Zn0Y zL(dTs4n(^ST=llhd@$i$(iq`6V#ljY-gzG>HdWuSrTwb@X zCL_efQ!fHOTVJ6BgMN1aXeQ&ID!LQa4db}&^?gL$6xZ5GCIx6HcLhpF#CIrUG{qoO z8opfyRN!_eBP3DIADFs1+uxX8gNOLP1xF10E)xbYp}>sHYg~G2T221|^3y`I+n=Lw zCr6xw%anBW3NwSz1ga*_RXtbO>3&EqqbOxj)L289Al)OmZ`D~ za!AZ&tCSg|lAbsvXyEj@r-OJ$NEq3r@W>9ydG-(A$E_wfzW zcskE#rP{T!UaRPA*E>m|wWG2`k}Vx&EKo@pX5hbsaPnZH07DU+n_Mr#JVK==GZFH5 zj*uisu`)q}aWOw~rB@$HoAb@uBb@i!v~T3SRlP&CT`b#=tF}s-+KNhBM7Ew5?n`Zv zRTWYRdBCqE(P8Dw$;nPKiZPgR?g-uyhw#Y-(i^4uO}^z=a7tNxyIT>tZHfqPQCO+a%O!F=&SXf)@De!Ok0qaif!{jkiDneB)vYEZ z^N+gfalA#8Y6?t(A97@AKJWajcS?2!{OUAOHqhD^y~hKwQB_4q=9Nf2`A*zoUn9%* z);vW9gAX8g{e}LDZsNFVPyG42UtKya+qga)t2%4b8}{no)rm!Pp`-OFHtmu~YNbh? z)gyYkl6@pzY`?mP)RD8Fy}4=SWa{ltU?AW@T+AhrfVt{g=W!64il`T{@F ztj3e#G2~q47UeT@JvH)OCw1AiH2p!gZgF_G+v-x;RcV*khv%t=Qxo=PI8htJ8}SO< zm^XD^$52&pr{SG7RfJ|BfuZ;6H|(!d?d|7HcdD&|`$JO${H<-cQOi*rEYIpju*(@o zNRl(hfkqjZApD@~dbMoSDY5O-uFFx9+Kz*7FJFFo!pKV%=8kH5d1|O6s-8xQCll#0>URocj=UmHr$IfX?d^9Poa9JikJ@qvMyQ)!k9sG!xO+aC<-E6Y$V9-lX!# z(HK<$j}lDYo5rMktCN-h9c^JT4WRIC-139;`{=AGkZDz<@P1%4BG=aBeb>q>^^&5+ zb*iDA4>%mDAxH#!9D8=xqfo5c^uyb_^Q>kPrWUiQIB2&=!kJWptn|T zN?Jzs^T>oNAy9x4d9jKheT(!czT$cl;ns4Z4r6C zw}Ixm!{Se=w;iq3&G|v;#SEgfmVDVI@tU* zKM2;O+X6Yw^*yXUvvX?Wh^YFkoCqcK#|t2O|ZcpNfh<2i3V z{g3E8YJ)71Uvt}Y+9kfyJsYh|l@j_(Fg>JIKnp741Rhz>j{b7K zlUZP8UE%OA$lA3|S8D?C%I3uO5V*^%{aEO(@v~G|;@CAd`>K&Fce+TyuZ}=438|6U zTdaY6K_w~Rk2?SO0)CUe7|GMpnw4Sts${GnY%hkbvHe= zd#JWoG*1tzBUg@Snj-rC~$Z-8F0fow987NyKV2?m1ZvpYEsFZgRvTqe2VDZ zmGLdOI+wRz!E)+0-`N*xy4q^0yPoBvmYzEILO8}MDPl3j60C9dlZP(glBI!@Xp6R- zL~_4v{q7fw6+e zoM#W2v@sww-V1F#An&--vY**3oljZg{kK)Lrhx$UC!>0wT2Y*wgHIZvBO{Xb7zc?X zy+$dHA2t?GFkla{D#o54;zpK_#4_4xL;{j*=p0mAul&;5g1Wz^v8*p#9)a*<)!ocI%R< zDl2MicKIopBc*Fy43!e4I*vazRPw95qzq&rU#@k`;`lxz69gQl#K8hjF=-yB$#YeH z5XaUnc&^qsMu3uf$vU3jvh;85mvr2_W$e@z=qLP9VOv*zxc>T8EzkJlf${TWz!>}c zLEIX+a5PD2-OeGznew-s%E^rQPZw5+rA6XSu5l&W&Y%qrksa5PlW*_!x5sQ-mAaOa zD3$<}ml~c(0^p+)2xcAtJhS!#SgUZpGgQgN89MFt1pDToJ{kCd)bc+Yr~akou=MkB z?XAmly;0WBRV~6Kf=YX>?AOIj!bg15`qZpq^%;*fR^j|70hBQ4nNy358*q;ec1;QV z*VvE*fwt=1yd#fLU}Y>w-tHum{{ZW^tSJS1Z)h##+bp|s=~%27!*sdS!N_C(0M17f zfPJyR4*Aw94C1vO1#-qWm<7kuTDR!oej%jan-as^5`RFwb(D9wXyU!l##a9T5~?k# zJE^9khnZ0}T(hI`3zctAk#56>HXx|(EcUw&T+qv$&0x$<4m>ut9k7o|EO@b|jy@IcpFRdtw!e}6*-jY{O1u%la zIHjkkZY?y@JW(P;K)6dgKk&R>}y8asi>%@nkJt8RW&4Z&GRV>8lxnfmA+8yilk-3DFaoM zjvcqG(tCcl2HiasZD3Kfm{fj z;PPn-H=g`4$FYW?p-gy`oI!l;VE_kMyHJ1StU$~<8ng~3yI)PeJYCloh!+=~@2m*5 zm&>i(Zi%@rOLwi3zUBCd4Mj|{nHpy-S)8%%OA=3h{rmUV()edmeHK28VWbEeM@8rO z#^NZ~eJnwj0|xTE_Peb`HDpcrjtZQJ4ml@-*sp`17&?_&O?ybos?CJO)u&mmH6RJs zO%0>2ic3jTTe>PMuCg;!y(B3t@>J9)a~NphMI4(gg2syw{=HRy;&3$hg<2SYG@EQqEiVj~0+Ib&E`LC+_|HqdEq(e+ULXrk~~&_v7`GGaIN z9!m=+RyRzoG$(Og*)9^tHB@lc%M??*X~AAVtU0==FRZ(D`AI$pJV^2KeoQ{S#vd-aw(g>KulQq95XE^830R)w29oSJzgBg>VI z69>&5N8-N_%2Znou_ylk8H4(D7uI1a^{C;V`mO-zF9h@b&o3pK_?YW<>%DZc$70^U zu<2o}rh@5huBD}TZu3&rM6x8|7GFrDsT!j&Oa@n9lrS%QLXCP4J^%zAX5USH6-GVW z8oP&Lbb;{{U|#`RO*({q?<OuA-xy)s)68 z%1BWff>Z`)1&^ z+pcu;O&s+wh@|Df1uG)}0{~CWjCam6t16g!wJEuvfJ}M?q|PUWrHZFg31|+O0%Z5s z&20N__L|pg{j+7b8cEGN#*zd_!72+OR|Fp54&e9%cL3|3!(b^^#e+$vH`pLU0H%*c$w=H^8HNur-f+^OPCtqCyD|%|91xW;- zZF>Drg*XKoFLgXCWDQ7|^myri))l9f z35HsF`^6ezl}N&}FLUjXeEIT@7zg26CM2I(kFxBz<6P>|8UgQkuaq_5~&l>5-Mm1b_y9y2nw_WVT0jzRX2ztrH|`B32nU z#{1rsHFSHscRk92i_ULt;j=uHUhrE^2hY?oub8(|z^U-Fq&_*_74W>)<-nvP~qD$v?^JVTwZgZi$62~;`ke&xbs4dYK)^-yo@^4<3ClYBScZ})1- z`y|_&a@0dfSw(A>;C(7uMF*5oqc;#^m<$3-U<~-zYr~tJ{u^)d%yjlbsN5%^b>g4DD0PWU5_LB+c4ZO;n{4o4V z-D|!f`goGi(_1XH7q}=S{4XhL38*HW4>xZL@}m%{xe9w92Ssl%=?6^9C5ke8c4r@nqp5OfLAS? zyAIgzj`_#9AOQ%8GrwQ;Wx<~qn`d@cb*8dwjmo3;9aR){R)|_SUPKBNYCjJuMhXb! zAxtwD$Zl*2C|1e1hBlB5r~7u-_StkCD-BY!VYSErkVFX+1RIObJK8{n&K)|tw$AFs ziq#Ml^wp_WVXC>#ctZH(T=ohBdSyz0s=%l|0T?O|8x2ypH*8o9zUR*TmVO~lmK@W= zwWY<`r0*gia{4bXRkl6nrx!{3i)5vFcD2T(nw|*Nq>dtEQ#CZKgoxfXbQ~Ol%5pL@ zs|+3+`kfEMkq`~%mXSK|=&EsCQMe~~k94@ix1QO)o~xpM61u-&>P5oav@Z2>Qp$K$ z*=wYgxl)wo%}pLysN^yMWnc>606;qDs$r|)Tw74vPksIBwyM3jh6?lyjboov+kZ9J zR}Pii?{_tNy3E{E#u}np84gi9rxG1RM+5kjs~mR+16YGxcUAr?hM#|bvhq}P-t~39 z!8JcrZY@sRr=*b+4z1f2DAhM}o>b!Na@|MAE{rk~K)*uimwhr=V z%5D58?&Ih*x9!gzTwOuB+2|>U;q5khYATCl6fNo*3x`%&DrF1A30af?xFC`M%-WeC zv0-jkOH+5Mg#{drPEK}a_URnUqL<#;nEKj9KR4#aMVV(1kBS|0w z)p9`C!{WUc&FrsEUER+uduZ3C?bXuQh7H6Y4eom;M2I)$KAJ}*uWY{xUlF@Dc&CeCZ#r42 z7Fj5T6*J5dQpj5?8yp7WzCjJdb|7SP^>~#xyg$T~HzbgHnLhfgRO#iM_OXusOS`() z*DCG1@cXsDZdz-h+!Zr4)s|h;X_24RnO;VT`JjZ1hmfvtxZ~-8$2`VA7IBOX4h6v6 zf=ot`NWV_2&^{i*Q*-J$)(&li$9n=#Ppqv2v;Hpk-{YEtWo+%O4eq``?fV|kC90^A ze}#-t0A1I)1cQwE8t1VbGYehKekr-~>6>oEm>+&iseTUuhiNYm4UOa2SpK#AM|IO> z*0$E&*Q=G9SaXs>28tK!DwmHlFuz1O;U+bPyYZfBh`jQfRY*55huzD zwn+`mac>@`7NaSCXIe-mBp;d^1h{{Q(qcp|XNPOF?+(*ScMPf@ILSX<;%QB_=S_R5R2QbiQ>;>|&86VueV%0S=<+tZO)cV!_; zHY3r)+0v2nB;=w%FH5c2DH=6z4NL#OwfwKXKRea*G# zV5x*KrL48qK_IU{c%E^C8zlG~q*&whesRIifcU*{h^jS}I8!p69MZuvYlE4?DK;0) z%mo%Qrg9BSb2IyE9Q0YrnEwDCwJ4UmvCKdiD3r%31x^R3^WZT90lQ;9N1bzwcgB_8 z8sJ&XfZtfx?zbVV6P$M^^Z{9tX(8LywKv_hNo#awk_uTXW2r2P0alcvh~aOjjJaHV zt)BYrF#I!()5JCP@smy@jGz*E2>aOdP{Y%9BA{y?W1JtLH$HafYcG^v5IrNU+}&Eg zNwYTfUCy4l+Ttmw0!|SEVrc=5o70D%tHadd*z=MOy-x>XZ_93PLNskBzmR^B41Us;Vz6;aD1@EmdC%A*mS5yuBP z)2W2SmegxVgCVi7Er19*netHlLn`2EVeuBJeTe$s(#N1(FY!xhuyw1bmJP+UceB*& z{liXdRa=(N!K1g`<3bS`3n_`Jp;*wy3_@H23t)|Nyb1hI4~8$|v?8M&Z9Zmy?IufZ zK{waB=Nf+zP1tV|3DWZu8}gl}mgG+#+;+~{n`>Aoqqfc~?E;}LRWnwElDx??G<+c> znASM>gMda$5=KBhm*XoJIqZR&I)V26*GA8WaEzwhJ}RMkX)yvUVD;%(N7l_9@hg4<^O+xL> zuQRcm>I5D{8>~EY3ri1Di2?*f*y#~7=sv6IGSvvD5k}Q?w2>5Z6-BN$7viX%~U{ef^gs!3?rg5?V$-{oT%W(Y?(LRgI?S zzRE*aNJMa!@)RyH@2bW=<`s+RfY2AY5Ykcwh;cFlm&b3{STkmHos_&0;enRxwSE;h z2KnASEt1P@-Fte`Pq*fd-2>Ozr>wX^42out(_tuykY-rZ)lwtiJp8!Rt5Tb4hrOl5 z-XTR}1`SJ^j0lNY^@~DUM%RUb=1XcZy*X z!*6vtd1hIhgWLreFsc)fMoRur($D?$Q`}OP@Ab+x{7(HC2`L{Xeb{ zxbBbVx^3`OOqH>Rm*^^Sx2}8f-p5=w3AiD-=AgGa9V|oeJ0p6>B>iSGwChA ze{A1}TjuSgzu0OvRmzU#HOFh+sU?b~;U#ILsHdxq8J1ZUN}z1UJ02~Z>td^#+?3wg z(g-5c)7_Sj5%8+wOJ2h^8MmAIfxV}ZT5D+5Q`Gd|ukqWh64UJ;_+sAj$yZSwOth84 z>j@MyMGUfZgc-wkc%qxN;a>atBN%OxzeDHp2h z%_>NsWmy%7`MYc4sJ5;T)4^_yt7gd3jCT}veP z{l#aij{pfNFEq|P5AP(0AIrw7T|%o(*j8T<9)4i{p?XQIsHS5QMIe#5=AL$#xF_Yq zCQA}A;2e{Ik=)=Qf&pn+T3T<(Yx>KKbek&sM{&2+B_-PVd7u<2N%L^|cwK8KeBT;}AA?2}%p@rg7cXH=oU{6B}lVxIgc$w}=WC?(KAGp*(ww^=c*z7L91 z!iQ9Ieq*q+Ng7YHh#vcFxi2 zFH5R712tFFdmb66nAh*$ zlF^|?n;(#v1ZqIm4Z2RUNV3|t zm#q*2K~KK;(J)g`6C9RT$T`vfyKi=T2!uNE_Pz9>5X0K2A+ zktzC>Uo|x>K7~CE?ntX4f<7Ta2x<|O00N9-*lU}pE4A6HQIpIA_Y0(M6Nl9V(Q`!W z5D!}$twX*of~MnDcAEKTVN)wlEj16J3<~Y%g*Awk zQ(~}Gs0bCnra#2E5H`@0uIsbD7&etw!uVC(olLUD_zT1B`{c_}T?~<{N`^S1mX#g2 zNFs-l`r$E}xg!k6I5DnyBM%=dqD27Y*LG zO%T|1c5m24?k`gtE#<3UwL13^dKlsSUHRl3WMJpDz8#Hg!>0H3@A@N+8r54cay9_H zqqKczMXo*dYPht*HaP9)$KOJ5R?pbmD(`aXt^WXZ(HNw&SnH{2ZgDi3mLpNjMK=yO z^tnbOX3j%NA8a>j>{T|B9zQbcI42Nx92`AS{kI=Nc07Swt7H5VZrirc*_}wC+*@|z zx9*it)PBu|rhmsILZxFd1oVG-H>esh6kOSe97A{(ulR@+D|dB=8f&Gx}&oIus~10Ch2XvYwf!2 zlUuXyjYO6865Y{187~lFSQWs@iaeGil4X(A!o?a#7`khwLuP!!;(^R_6JS3@ujvA` zp1U4VDi-2jtz zA)@KjXrv{@MY@|=TSd3+6ycgWC$6Zg^p(C-Cm6!9A5f(K05h$?)|U`9g{$K^pcsG* zh0$LO9bfCuUf*i;*JfR)cFxz?RFGUM>S<{i6w=bMC2CwZIsI00zK11A3wPqGNYKVp zp+%3YQL;!o2{zM3vxctsJ&k3cjn7FY{WgxBcb%%__Ai2+t!#$vRZmlI-gD601hb?f zhN-DM~v(yWPyY^j04SInkT+&uaQ5{>q&LvYXCmgbQW#5xzf(LDSTgxf5wX%Dz zLkwL}pt$MeN9eU;67E1A{xwfc-XqHZ(5n(4Dc?=*v)VT;nzEFC&Qe#>&rYFo468aa zcK-Ku10Q`{)dAQ_jObPha@x&s=Dze-Ug;@o>m93Sq^32~A(E~m4LUMDI5WrrbLR)f zTd_C;UpLeNuW)I!pStwgV7ZMj3<0LPbg*9eV+J2qTIkxL$SE(V@T;}~QIL4B#z!n* zc|F0>jpaZoRd&0rBZ&Z+8ZUfZm7FLBq+5LDz6nKKrNEQj5o-=`wU8$ z4j?#4OHqp03 z!Ka7k2Da$3jvN=Z;LHQcFDJZ#&r{armGN9cC_WnIUFIhH z299xa$k}QAv9~I>6Fq`Y#oI00lDd*Qx~qN4SCJ}%lN{wH$#62kxJa`4UZ_&v!>cYI zjHK#;ltx!Ytt098(N^(HE5$tSIhxW5&>e4nT^5Vn)|&2+Z_h&A9Zja~YxO-zqkc^T zf&^h7A27izt?r~BeHBGaL47<_Oo19{srxL#l^i*y{5UxaW_bzHH#*At`_QfHQPqx| zZLQf9{{V$cgass|kpO7t4$CtKFY~EoTy_L;&vH(=mgc(&(8AHg2C|{F`|WS4nbW0N zU-_Di2q0XR4SU=B_1md|IYy2JTJfEsf?{)3=GS{bIOfnyg4B87-y z6;NfF%Xalpki-FkdtpMPI2QJkf+ri zBeVehZoLUrZ}sKFMJu5)dXY+mue!vJu9^+sr~Q-$0Tt`3IMp!;%Vz2IqN1@Ups`ZZ zBS|$iJn&OTENgo0)C|7J_5M62r2enawODsbLOm0VI>t{q$P=TNj3XCYC%p93n6FjhE6RM-4?JB6?^cmUmB9HgO{JV!ZOn z{6~+zKe~IabyJWXl}2-@pR&ZkYl6NWQ^zEqiUf*eofb=CU`3QDL~Y z-pc9!0POa(R@}P3Tel+OX)o5Qgq|4{WQ3R*B#GTywNg)Sz0Wl@R6{8YHJ#;*B67$_jbG*N zs`21)4is%-a5XSEaZorojcpd_vG5)?{CnL-pojuHX@8>Qn*EVkx-Zt7G&yIhs7Sd6 z#{}+VVtufI$@^zZh1Jhf<PZSuP$q>G0^pRC z701d6&OqbrGp|>x!nk%I2I6S~Ok7y<*?CXmaZI&0p5LOxe0kK;U-yR1N`4JZQAv== zk{M-$gg4Hvs(z?6a2OMg~;1*2xyVJOFJ(Slkej{7$hBNhLd3`qr?W&J(sRsy>WoZ@jR6EPUtyDQmT?Fp*$FH$wA4;L6_~E_rQ4^ zET4+ft~5(yY=jAH}5a-LUAmROj&T1$QISYw{0 zt~U8oi_J`GRzz$b>>GlHZvOz?;ty|ejV!Wk63o-2FD$jSl$Qu89**%>HAJ1Ir=&8Z zDo0}@t^%$;Ze9KR<#DNH5i<#wv~CsHR=L_}jFhITEUbqFiH2x3NpRa zUrQjEBFQGF=NvMs)yCz};X5YZpx>wN(wY1gYDFm7YZbu@!$*=@9KCZ@QIM5NfH1sMioMV_xtzyYZK`L z4Uqta@bj;?%dNYwJwaG^1yz5id#R-Stw%XYwsi~5J`EI9q9I-1A^`Kt;fLCrRqp$#D>8@9fF|_Nl zpy*GLU2Y1aju$Z`oqnW!f`DuelUr*(2KT<|O1rET_i8%pg!J_H21-h#qMMB{mL3>z zht+ZO51Rz|8g(kvr214wh9}I&@z|?uY0p$wY)f+O-+9sqJ=PWe4mYP+`UkM9t^2yu zK?HXC%E~(pRkh=HHC1KHNmQ)dxvViZNKmR207)#{2Z%EW{EnwOTpRDVN#?7#o*uR% z66ewUx_8|Ao=aowE|B%-ZdhZpUbc@$ciiE=TgLB1tgciF07>LkEhqqCd2(Poav%(9 z)y3fIoWnbMHs7o*PYV#~@u}t~a%1=RtgDsXEb7g|xH5Dv;m#Npiuy*~PT}#}mp(zT zeB;RX8jCSlQKd?rr}t1eXU*ta-%rtGXXw8Ayii7!9S`_+x7EVjU|`izjz8Y{Y4A>P zJC^PA)SHgOG{|*B-v0oqe}$|}wwVNflT>Sw7J9)x{o za(OAn{n%YW>IGDHn)vM2db&u3B^|%^1b11ICXh{1>`lR-e^HeOq}<67CwR#$YU$$W z;r>PfK_JY)w@k9PUq$r~h|#oO$4J=u&(&+K<+gX0)u!3Ao}g9j>+>YZU38M&TU$Jj zPZ~VtI$ufEgy|hIl4({)nd4R-lt80jyBf!|hBQ05fjvDsO076|HlcHlQ35nO_3t~! zlI0!wbJ_h>yuD`P>zpQ@o}yHz6Kz>zl~JZcE39CK`#Eo!B@?Rv^*rWY0c)O(>;I(kM=#-XXGsEQ<>Qm7($;EqVu=ABiWjA4?f)u~aU zqa?>73EIN(-?v-Z96ca>Hn?2anHG{JO}6^;(@ph1q}xK%xNIrY?f(Exx-A!~qe~gP zz}BjoCN33Te^&|UFl>p{xQ-GA3B+fA4_c*0e|@mw%H!WfTULl=Otjr2Z+7+3Zc3en zu&nzSSt<7x(A`_ob4x_iT(^TItuoT)wwh4TfS)g>@KgZNu#QDOoBY(oRef<+DGk2Y z?0-TG>~E#(u~jKyMGp|hu_8X?p3!5l8uQ~_hSW=49YqzAQZ#|lAzWc!!TmJxZ^^aq82H!)umMyz(w@9;9Qrhgc3QBv8-bBP=Dsqs61vp_K zmU%g3g0ZpgMus29#19t`WNl{2=X|mo)M{oqiw5wTbt-sNDUIZkNN?5)x@aV3T)Wl3 ziaP$HZSBWzx^4P9hUeUL4QohesQ&hu z<-09csnk_&D`Hd9U1escGeullNZE=UW;%9sj~G_u#FNM3F|hGj^)i4+jXifd`E)m3 z&JTk>#daCc9TFY+t`FrG15pHt{{Z7<%l#ecw@Y@vQ1{(GQ*N}?Hkvv*NNtr5T~lt7 zx*DvXTk!EmB!q|=Lm^@#ljT09yS@uU36G{~)^stq+gr!^4fH>0TtCE4$KYxjSZ056 z!P#^pb8(>_?6AEWxL(zF9^2{7hNE>`4fWy|iW_xhMb76+0sK8br62B<9b#s3+++zY zLWfm%1+nxnu5~wDNxih`z5b%fc-65jrCPBdfFw@hH1Ch zsi3N`*{bf%S5Zk_O!#(+iWJWmM~Y>LBcw$L1B-yQ48T>#R}}CR%=8c=tmv)(0IE8U z75@N4@>fM1u-4 zRKiri)HE?Rb2SpQDc2a53Y3m!oeIFJG_)-lj3mY&neE#IpU`>F+f~mwoLm<3Kxl%o zmiLO~N|hAwEEJrYM391Hm%p5N0N@|4J87}i8Df1ub&R!+h#spiLDFm2Ss;&VZK_|| zJBoXXB^@HFr!K&|JD=f1jhWe)@c~KtYE7+{pmVG*=#^Fn(zf5a`a94chuHoVc4Y?1 zu+vlSZOggY<-1>;2r1*0AeW4sh%Ra3UsX{+^%%UaR0D;ld4CnC;V{PO@6}l0sj~*z zcqPU@;@p8gaq79-p^;qoS3&yGw=I;?(^Xz2j^!#=5-REMVR26c7(Bjurl1isVVjhh z&m5cl8D%`VHEcmT`|0GbalA40+g7DW&hAI$2Ukv?m8~XEFkx`6^xZeDz-Xqs7-EusS z9lw#)W*Ou0H9M@&YlA^MsW#QCnu@RSRO`;BoUG9T3Hjq;B8++NP!8W+bS`I!Ma6+RI?DA9Bq&r!#V}phgT}#6ZbOR$^R6zN z=+}E3bUsVbu;f*u&>21bCSXr_3oXuCsM4SbX`z)>W=go0DGKq&rUHdMh7Jh%dl22V zreA4WA%gAKw?D7*$$PC7^Tw)Hm8oG!L}>wxO(9{}zpAcq7-!`xpM3Ymq%!hYohS1< z^!gPD>XzDzb~f4D^ThQg@wjNDnG1#GPXui&?g$Feg^gRkZsl>^wU&)P5~Esq{RX~) zZ&0h?GObW!D@=DJ05vlw^_9mxWZmu8p07(T-leLm+qQU(s?kjv7m`YNJ4q;0<2-zy zV5IrRqlhM}@;6s~w)!ro4~K6I!Uoqj{LcRX)Nkgzy(-w-s+)HI0L0tcIBktb9MD*- zRHO*##Ea?4RWSsXn4>&s9gBSIN` zoCU2uIP9Zt)a5d&bKi*R$?ES);9O% zu(ycS!ZRSdZ}q(W*I#@NU!bk{d9zu>*2)Xzw!W&>b*2?91wpDwLy3Yn%f>PUj4_{ zwn-sJU^A+0&Rbbn(XGAv>D6A9D(PvYhL}L}a3-A22#oj7&4635$vknK05y;j-Bbw< zzMTE(>*l-_GTmN{R*tSHp{XO0s(`i>C?ufslk{Vd54JE+sOHI245mntByv9fiQu^U zMmcICrxjkOqy%ufa$+(*Zv1nAex0yL?WkrNkfi1h$_bAD0HXH`yw3qO5tJtwYH8U< za=k1ZoiD#u+2u^dF#*2-^pUC_l2)v*b?`36>-|F zf+VZ_EH6;VtWqH>qDEMRU<)n_sBDps85q%4tPW^2>Q(;Re>1fE#=4!3i(h<1bixma zewS_9eXV(|irKj8X{rr6i_PvJp_^ADK!nf=#1$#Z+1s){#|l&4-1r?RPH$NH109LH(?4I&NST$X2QhT7T2Tsx&&+ra;q9yjrdxAX6dNQJFxWfZ z_0zrO1=7J?CA#rx3sFZ>zC@-nNFerPV8t0oA(e(1eSGUhnEXflE?1?UY0_J*l7nzte-!)zu;WmpmKd*OV+`JKL8k=OtLC%G$w z@b*!u;*oLpSG-po{7DUnX!@$^WjvP7nC_EEr}1^vt8a)e)^epS1#EMiM zI|KGq*eo!wU*@m?ljyM@9QE;1b(+^kBwt>WluruxF(?YC57QxX2h(0Lgbsclr0%_E z0z)X$8xSMWa~{}IW>r0aC-l{pEc~*v;lUPJx!>^@As!DD9nLZjzO))L)1GT^i6AYL zMbX+_&G7xbH|>4wTBo#ELk*(X#S~qhBNJ7Q{{S&D$2?>O?U3GZaj}JNSBTsnDbs!R z(@(7iKM`K0EMX}&SlDxqsUKtJw#W8w-XVvp*Gp8ag>E()l|(qp$qdj;0PKJIezrjJ zGwrQRO9^myBl;Qp1*^vaZ7NP1Iz2%H>kH`9QNb)y(KiX{ToOztwo88r?}6LseX)&0 zC>AAhVb1*VeyL@!Q$}j3<4L2QaFRTRLJXbGIFR7v9{$6>xb3Ck#`jSb3Awl)`7bpd z)ilfaXPV(qi7Az3teDFx=On7XvJ8a_kCY4!+C`3$DT<-8L|@*X`mbAA>OB@%Y9^;R zWsRgxTo{l+$?`tl{yS-g5RVb1Vrwjyr?|-=xYGU=SRi{4LB;_9 zf{1m7P?&Q-1W$SXKXql^`xO;SEfpogR^qXWdyJ4YgfI*_dMsn&p_miMF#rr?krs=~ zf}4wG8*bv?d#bu^y34$fq!;?jLW$N{QrB4oFFGp%sQ#rqjl_k)P*k2wIT4ID$ON^w zAwlLwpGo~=-!*=cf~+M>RdY#OP8^nzW&&4Sb zhf)uM>A7{J_7)1th`>IRS&5+H<0Cs?26^SnmwhMBRoidGp3J{oV4Z#?oR$VFr#Us@5c_rq^ghaAD z$_5ypONcDTT^<7!RrJLm0WG(ux%2gS*Ztx32FB`=zEKK*-B#H z+dipTqTV}dWmCkmU#N}`(Ej(a{PkXN)wRfd6V4iMK8N;AO}sYM(nW@kbZz>!U_W;S z@{&S(_W4A=T_c68HDUBm#crRW{gzC?k_?$dk~eSMRiuN?a0e`Yn9enT(tPMvY4-~I z($rHGmZF|$g7ys2vIhDBThG67+s>dt7dAk1U7?ldgVYNWtw@y@kt)SioOd7)pn?Z% zV;LTDe5mG{^~WVuHb9n0!+>!UvWCWdTM)iO|-hxI6OI%kWap<{9A6{NmTRFTP+mz4y9e7w^GL= zf$w0bCh>ge{s z-qm$go0nm2o8?_dLuxojyVE+qLO;JqB-{{vjt$JQU0Gv*C5ShvKiJL%}U1 znXrf?ojLyf)_SyCQmAuq>;wEpY;z-A(2dfNmGi7+TVu?UzSP?jKWzc>;tDe_2*+A3f{N6;J3<2vP*>A8^We*IJ z8z19uv}M=T28gNRIfT1on2q-%TWQN>G~V3++f@}-`_}l} zb-S-|Q&7i4X|-nX4^zwcGX9ACrTsQ(pf9FFHh_$E^|FR_ETn#1Y}&OR$6{x zhw#c?T*lp_@7(Iw8}S7?;nb+n4QY>~^fJ1WI|HjD{tWGxLwbuP~#MhXnG~so`qo zZ_FJMNp`Ut9ZyiXx-Z9Jn%vK8n?EQcPd!_1_O|e_-wgd6>AiG&nvZc-+Io>C+FDBL zOYHVZ?QcsG#^{AwSrySS2n>*t6`Tevr?t)=z8aN328*OOPrpuk{b5t_IyjtNPadlw z$57KY&}lwb=DJ$ZS<`NvS3y%tO|o|Ipm}L2WVTd9WD6>pTjs=JeL@(pC9**7NdsF3 zuw%0aHE};+)3vWx>wfCl_HLp|u+G!lDPsMq z@WzT{f~``e+C%6B;-se*Nd9F6gVAu#DE=K)wa?7m+t0tue5|xFTs`#~Sk@8$0Fl$m zT0ND+eMaf*T{}xubr4)B<*gGqr?28?RbB;TWgjx5av&B5B^w8^10NaURXCO);tN2~ zTX;`};F*J@D7n+tBVNl??|xR@mvd%xPsI9hs1hnWL}XrUp@=Q#99Jg|liN6_!@Sk3 z2IBt!va+nkvYeBth2+{%B$Nu!OCX9tf*kTu^}xU<_3`!6bb|zFrfvY&^jnXjR(<@t z(%nzein!>v;>v0*wH1vXFo?#WNb==Mm;-_cB#zknMYRJT;y*wP$8KMujFCvRG#w^) zxc4IKv^TFwx{Aw}dw);2gGXyL z$n}f2I7vHGLsGQnM`i`uGg3G(BrgOb96%eC@r-nq5P89$^t+sA6X2xQc|SYnR=8^u zw)t;p*O{I^_=M>@?7pJhmg{b~*)CTwwenHiqe!KT);y2Oj^iAa$UKQ7$Oj;7Q{z~c z)rw$cZH2Y(%~aFiJTDtb)td6+F#e+8uW;XEh!tu7K^vA}>t%n;!* zYb~kp6Vc6=)lQ&Y=r?VKmhEPtw8?NVO(c+`OtZj|2V`_Er`2)kmI}m-gN22Fx=XN|Qi{)Iptr|vii(bwl9n`r3JMs&{5(N; zq9>-S!9w=pzvqo}jycY1hJNautt8)izHcU5Sjh1Ui-Pwu4c+;_nsV!=#>? zkA0UZd|~yK_Km^%d$i;9FO^pL9`AamV1|N*LJQNu+y!S?l)Ro56e?t#u2Yi@OvT)7 z<;Z@%oad|H_)%9bGZFb`v^{Zr^h;kHux&vmoS9qy7k zVp-hNhe^~Aa%tt6!0nSBJdusZQX!d@U4NWgWq127=w`K1?g~4No(b(~O&x7D_M+Ob z)YN z-`y3rSNtaVo{End5Yt%bjKE-j46Glwe|XNhw!8rl50}5PxMfT`S^dfYp09j*Nc*g% z9h#=vjZs^CxZjL%kRq=%v8ch%E)hc#^X=HN!24%doMc>CVlQbh#s<$U$I45bW1w2< zM!>s=kVuB3xujQDm6BVDTJ>e6YeC97<>w!<+$GjTbQI4l&Yx z=PY}=ktO?i%p^A*x3=xn?Gb;+Q|@`0RDwe*hoKxm1G@rOJ&)H-&7wp}pP~9s*&@K$s+a!~h0R3=aLyusNAcfxo|1u)yaw zXVtME$C}7iUMcNz`f|YyG6qzK_wkQcC$=JA;ZfZ3Zr=U12mr(=v`C$NiTd^A6i=@& zwv(l|s{PkRPkFIgBZlQ!K!q5z2~i9Bp@9rI0AvAA&%~+Z4-;v_%UN7az5Ny<*VH)~ zBQ=RKHZl)RbE5gd@%e7JRD4QWcWn$Ua<-8Znx+zBDde75VUvks_{=fB0Kj9!j^G~4 zG_xTplA~`;@nLVQ{TC0Uup`^;7UmSm%dBPf3aA{B&E-;Y(vdeBT`nwp?kdKN(4NmZ51QWGzz^ zbtxfakbiVMfRcqAQ{gBk}oIl3~WA{ z<+1dt)Wk{rr`h_Y!SLbr-r^^6<35)ccJb8S#d5yVzS4f)yVqVsm6caG+KyQf*;*Lt z8x<30xPRRTi_<^6l=@$3f*SET1 z@eel0=uY3S+%!hrb+=N}Qe5bwnlzS)W`QN7kz!&Gr7x=rsO`a}D&!O+U7i>FbUt8V zp?Q^B46R+x7ilES7%+D0_lquk++B6)ruve$_hqa7k6x8>Lw2D)n^CO3s;R7{aNLbE zmge1$41>0!~&e z6IVR)dfdfKvd<$236GZwLi^_*PTJJV;8lBx{{WAm0b-zk?q5=&{TVO?u%z{Mxqb zoh7=SRjrOl%{&C8kW|AD8RKD+ptVy(k%58f%#Gyt$jTIJQxzE^e*X4cHChIPhiGW)6_f+ld4EC#}P=BvP_`(MpAH2G&_e?)ua%# zp8S)Xd3Cqc5(M*=?WeA2DmM2j*F#@Wu<>}8l}1Mp>Z9dO{FstR1$c!Zcqj-ogDMi`V2 zk&*K^Wdm7pJUy<%3{4wz3VtWf`&c-Q>?YCnQ_4x8c#yzZ=p~J1j!32r85kHUKs><& z9z!7Kxz4#`4Y4;{S8)>=xn6-y&mQaXY7SfvRO@0=WCJ;44Vae;sibYwb$ zo^nhP2eK({s7g|Xx@T;h$sA#Olaa_|;NbZLb{^T(AdM7*fj=+`+%$DwlyVuOhlUJ~ z6b3UkG2gK`2OcsV_S@?N5*sq)R!JY(tRgYvT_PzH#0q>_5T1%hjypK-t(=R8D-k{ z$RCg^QByn?^^foS(n;IIGarnm+^wi%tckTA?jS!xGK%tNRVUFN^59j1*K}5!j&{NVZqCVv0mi~Do z{PfaZDQl9R2bGZq2PIX3ozV9`Ha|>bADQ!{NYtrnRyO5!h%+k%dbGnKc4*K(K5R0R z+l~)|jE>rgFn}be+?V8~xWHPP`7BjTkV#l*OGOf}W?5LdQp!P8{t5fMHtcrqV$08O`V4R|i;d`E7kN{(nGB{Ha4xb`E>l++g zB-r(zE)xF_h27Ny3ryhW)1+9s8ft*ijp&eN$$GGm9M&)j$rwyw&m&X zP3dNQ|;<4!)lCP$ACw z49B0`Lf3nzf9>0SY;e(8H`eQ@^&}BVwyj>hJt0^^V~i-FB9y9voJS(ASd};h8YZwM zuMLi53I70JWZhM`ceSn{PjmbIN}t<$MJ>+5Et;)f%JtMu11~x1UZ3VxVG)u}K|?5T z%)|~rD#kLRbX@v%g-`(_n6RPZMKkvYS}I zK_X{P%^p`$i#Nk3PV8u_`z~tcQdy&|mz++fSCoTJsF0uDJ04s)cF15!Cya9(>lYLL zqg{NZa?Ep@A*KgG0Z$^?bn{%|sS4{9OUKh>Kn6Q02L+eqVx$5G94;~2P;DqF_>jHS zyJC`-p{Ifv;i*tjCJ}=qL;nCH5P1Ip=>UCmjZD%}E}d2*cWqh={jTM<8}Tzf;G>$~ zDWs+iBw|hxwL@owf4ee9{mw~Wlr|e1SbyxiRPyy&Sb!>1EYo@I_4j?3$=&C0k8JM? z%_Dv;=Br;ke~*~2;wqVCc+9f$$>!X0Nn_o->!5Bg@d90A?5(Oi4z)(MqZ}O|71Mn; z_%PdDedxB%z3vL@otp1iS1r~_E%eb;%#?1vlvLPZ@|ReWe4bt9I6@mEP~#2}<&=Ot z&Gq%$O_g>d1p2O-jJi)P{rO7Ke-<4Yi{a<03uN1q)VAHLwo_No{ymbSe&M2-UHC3r z)`~{#6k*o@05!2k7vhP~?yb0Y4y9I;+f+$u*5X0B+<)1*w?^mQJDYG_=p?DDu~XBV zb$k-E3rj6R)I}l{LKa4Nv;1noLgxVM4l=w`hFWALis9_S)L?1UOm;i{7kP?xR21>$vSbH0tHuZnrus zMK!|FQ%-BHaw1d0(aldb9hua8$sC|}?AYu^b%C{pAeO$;1bzPik41UL@J{?IO))u4 zz}5&N*4kwBmDtCH^-BSiv+D!|N3J{#m! z;&rkx^qV>D9VGpu_2{`eJTDho2!IIx05V&@lbm_LfOjQo{r&OpB^pu3WZM?|b2F_J zcP+t8)fIEi#TY6@5(E-3Xy4O9P8o18Mz#D(WS;_@opcAz_5F}H`AO8UFF%!@` zDEpTmxmO_G`|h7?+&8~dsIIo_Rj-7Vw6&AL1y$;Hs9C6}Odg|4M5Ouw(bWf{C1+ML z@)^LY!d+Yl0{4^9e(`APMC~{56`0&V5B%=@rU+|V1UbV@$5gOSz$vIR5IKibwl@d4`Jqh)m|@3PNs7FLe!Sw~q< z0eYpDpYbnGBE%V045dpE+BK2M!m5(NhEK)j5cBj(o*TxfDbpYm&cJsz3K`Ko>+uuO zn+k2)UrTE5H1pOqaGv9{>m+&P^wuWFAsgVw8iEIK7afLkTU=mkkSho$L-zwu)pf#` z3vDpk*nyY}xrNcKq!1&f<9(Lw+CLRte5S3Uq`mYG`F*U67^-E4({Q0PoaJALg`tgr zz|IIDW43dxO58sTWz^s04);9;l|C=}Z6?ki5>H5z>mGM2ulAMVzjtlg3hSQRxox`H zqXuhL&Ek?+82MH)o-Nz_dyIkyHt^Eo8*mk1b6N8>!1|Bg7J2RNcnW%|x=2^M$4*sM z{{Z`s5_9xwtmUR@2oN53^wS+xxy7-S86t@Mla z=CmHwy>5$E_UZMnbJW|d^l3CTjWxxBrwB_&AL5uga%cotL}nav0rEz*UTMCQ%`i^Z z{WY;!7;6JcjZgsA_Vw+z)o+vFRrbUNvCSp0;n%%5JaR)C!7MP7j&`+ZJCGi8*ntqXV(eJg>uj3>M z9UU`Ml;t`Vkjp2`#bb|%VlmwCQS&g?hYG@+RatQPS|q@qF6*ME9n z*59V5XzIQzZ_V#dyEi>m&a!H%x|x`TsjL}h?~=#4!!ad^?nx&k>!HQh#A6*K2DDf- z9RSgF97l-or(!0UHW^w-umg}9eb!z-y;d7^_;~<7;QBqUMNe4JtJ@T@Hu6~76hp6l=TQ^pnHTMf0 zY)df}9Z`lL{{SmaQ`9M_m4O989y{k&?rF*aP-ReG60;O{FGggP_C)>TV*?;}{d)~* zK9*sWYODoD=vMQaYHr=f)Y}fkzuPJ;u-NR>iRnxOFYMkTLog#Dy;hUc81I${d#M`5 zMUHy|n{wiPd3kH~-BMNJSZa88RHSbwUCH0D=lZUJ>jzD$F55+}P}NNLni(RdXA%~c zrd%41F3f yrJha2P~J3JrHO=(&`D2SEmTE(Z^Y1?7+Yr`?w)Q`SpQYyHesN{-BZ z8h%IscVi>qe9A);%{`AS06`k8#o#b3u3d|>t#P5{`z+ssZB{n5F>kG`q8Is|+hx4d zDlDsUNDwAV7|KkgSxE1K10m0zUs0>fZF2fSjs#^}96pbSTxB|}uTE=rrIger@~@8H z1;UDCr7|HZ&Nye0UjG2Y$PU=#aob*XiKU3dx^SX$5kFPj)x}c7wwS3%U3H+pTw2z@y{1=G+CC+PFKsN-%_C9Mh zvSL`TlfnSSJyQYLc;%7(HD8Z$G()+M(R4U+Nqs&=b|1qX@=873OSgY$J-(B0+$iCC z$Yv2qO!3Mc9yVoV=H(JTnUHIWaiLeQjYleM;CGj&6;x>g|^0 zY(sG2#oCki0#{>gZMgI{TYV)S;HbRA3=zj2bzI)O)k%QghuP=EVByC zb-!gv9bsWCQi=1}#uzG}zhF<>A7P+p)ku~Pl!!?@Q$xw0)dp9|Mg9`RW53t1>;T7; zt`p;2L$Le~xtPrj^(u7olW4M!U+Pkxw544IO+`ATG{qGU&f-}(r~r=~L$UCxGTnjC z&zu(r<5TekKnQUVVs71UZi{Z5x)bSS3AZWin_fWB%RD=y z@iR>`F<~k+v}b@w)wwP|@fZa@m|kb@8n`w#NCznCbNUEX8Nhv=pKBbjIe=u(a|4>q zZC;*IZCXOKwRIIi;zW3wq1u^QS&t~u*`FsNOGzWK2)Q{dO-(@QzcswqI1HrNY0uSV z=c6tBN(uW6ef6qYbug^51LPkXSz$Tqtu!m_c`@yhH5e*VcUC0AG-xmsoD8@m{kwKO z^Q3H?tZbLtV$`iW+$kfO&OI4s3eA(m4*2rjvGwhs3DHXMy@gCD6atNo1BP+{9lQH~ zu7qk;veK4S%LMJnm%$&?zJEPL$WpSiOqEec!f8b5$+)?5%~KtL96%%=f2ZZ#6QNE- zFHa6U*b|n=@iAfJ*k`xta=H8&5!MKaAiXPmGuat?9xxE-79PI2vxW3jz4*k6Sea@r|2ueAkm5%(3@J9=)5TCsd zk%8Z~G5H-L0ns6)k}XtH$083xQxhu6?F(ZW$pB*+@O+Rp5ge06pk7NR*70HZ)$zaoRWo@*L>-TMyea1ZeI$77^g0kQ?Gyh>>I4Ku|- zQ*S7!V|0!v>SI!HNM#H&gT=V~xfsv3o>F#%4r|vY-=j%Y<5?8*ELCK1Uy;elRt1ND z2jw^e7yxP}n37T5Twyd=Nb2N*2nKM~2Py#mKjO&o-#&5QKx`cm1Cl9Lu{%WONXQ_8 z#EyPIIT;5((;CPOXoA^K`1cby9Nao`%SH09ZsR#t&yPRT#-E6ENVE{DnyPg}PZX{U zWlnuY;!pl#lH5)RAo&>{ba9DT4FI&8q~@00G}#k-yu_5&F0tTkDdqmNa?G0qL1 z{q-y5_r&*77pc8pxiu@Hvsi8n*xY=C-v{u!6kymayhrP=eA`hV4W2ILA0QWJ6{HD}vx?LQt`~78dc)I5k zhpGOcJNo7y*e6%gg5) z&id78i9eTPuEIXPSK3v*Y8Wh5CnN(=x8!+)*OBQHVQZfW>u!^-)KT5SJ*sPM(Ps}N zafRhb_#xzURXGC$vi***)27PIG~d6zVH{J$bqJ@dx1T%c3HlY>w(ZB!Ews;>_O+Uc zP^31CXr@LPA2Z4*+G%Hzunt&&G5jaFHl~gourbudxx4RjPuOx?Yq(}UrRB%05$IkR z2b7YqTUV-D*svI(?bwzJ1#0AuRMu!L@ zK(uNG@vMCoz~FTs9xK~&H93UsA)&1U%<|oHpIiFLZ>`^S6n4F{X`qhFU0YEV4HHds zmbSWHG1XK{I08zXv?>=02N>5Z!vGG?R-fVNG=}eap0ck$4?_gs8x>fR;4bK70d}-B zOjz7suv*J~^@5_^bDq)E3&!H6xvHe{TQ8{dEz8b+2$dt`vBrJJxP$FbJ+JPmWGg-=_F z;M*nj#Ce~vQ>#s4Q#-tVBZ?K*CmX{VKC3jP37KKj=KF8^(+yo zcroSsg|hzu;@!_I6G?Z5z-osW;EIx(Y{W~2^-IYr84wl+fK}y;1|;jAtHkiNOumoQ zPtjVp1C)Ph&J){TDIR+)Fum8sa*{i*?CPp&SO+@#ON{ihF()j>m7Mx9fN}FmS^EL< zp44?KFua;zfv}Zi$}TJb>;C|xMC}GHdk7odYfHbyAhSh%sd=qeWwbnWQd=xB&nSkX zSAGpuD~zI)5pdwRW@!K{Lav!Ex61?Wwi|+IBRPrOkv>uNo}AQ@4!MDRS~_c0(yG%F zw3iFKBpM1ribSwH>C8tm6B+cT^wgGYHzXmkwxG!;(|`1_)uB%?Y>dQPUw7$v`eW0o z_Wi}U(zcTGcB!|dNhKcMwNO%5Pb{eUXKp4(Jl0TK=a14v9D?VYLZkj{fZJZb=q!SZ z*x#4{bR?1lbhnVPlY5IVHuCCy43?OrpxN80q!(&B7#c{RjjrTP%6bZZRY>`0;w6c~ z@l5{lP8!>Vcy6o+bnEZmNm|v|_WY)+K#8>4bUH@Ae@~zNU)(z%tpX}gs;G)s=T2q_^XY|GWaUF@#0u?15wQL zzP^h`?%Q4d>$WGjt3e$Rj*07S)pC(3k!56nDz{~g+NH@*#C(j!xp}T>Yfe!+!H-`t z3wIR9k>f|p^4Rklc@l5xw{OBeAgGK_0g%%=K9%p{XzG69|AwZv`JDz%>Hwwvi|VFvo>3>dr%j&aiq@t5&W za_W8ZD=alpHLi_TFZpUSMv^N30DI6b<}&VHLX7N3Bm|PWx5Gd1cyGgD#82iwrUaS6Umy$o?+2}9mxn@byc~Qdv!GnKMtR#{y7aZ!8>by7`$Ujw|p1GA6 z7W3GhRt8G!>f*~`oV{y3Ebce&Y#AI7X zs9S?=Z%XP)3r+s4$t_gz$gogX1PCTPRhT4-p&zk15wYy2RaovEag6`uH|}*6J-qKG?p}T+)H?7CHQ<%45$ndGDm!}2G*J80)^V|w6&8U6|{hZjxtHW zAO8TH0sVC<*k`a#Q}43RgW}j)j+0bRQy+L+^QFHK!=%FbTXvzU+|^a4jyfr7Yn39W z5Xmqev$9C$6={*UpdgsAMh--Xqv8xoj0OS-L%Zk?wTcgM7efrnmaiJ5*A|0A@D@L69Cc zRLQ}RVTP$VmMab#(Bu8VXd8i~@*_^sU{&7;uaB(vQlU@82hb8Z^7bWQejxglvm0zu zbn~W`r~QC#t8}^EWg)8Wvcnsq85jY{SJXUEVH2=X*pp7m^{Qs^U9>{(2M2EtYb#Xw zs<_3p1E-i5)Zen>?x9@&0BPuP?E(69V0aX!QLZ%CrLd>BG zz9WGwp9$GIG&B$Y0On5S>a~>``0-pw=R0rPVb`M5+oryYb#6P2O^(w`W}=iC#lD54 zT3UW6IeLD)uHjAz`JA5k9>Z2G29rUkdUg5*uTk{e4LT&p(#tiouP{Svrlw?&PLr<* z7>+zx;iC)N&th|){rh{<#V~R(>h$X}kmP$`to%Zlg^t zHAEF2l<>Mw9Lw0Giowx`ns?GVZgMDFQ@$&zteS3Y{9?oGE>sgT_k#n zn4^>rMo8J!l(Fx{RRBH@e0z8Fx>(=D(rIY8+uv2>c$_=wRWu^v2kq*$?&71YxnKHw zQ$esTL;)pivBGk(nurCbOhIfKw45_ni!Rt-`8dlD9dtlh9H5d+G5e2eE@V z8yvj<07Yqn#5V=vVg(@Q00VPe12-{nOhkI9uSo3I%5I@n?b&N8Q5|p5WbX*W$J7 zf8S$E#6yEaP0U^d5z0h^1Q}aa=4q&)%-NBTV4#3c^Txd@sB1;n2-zmf)wQhEa>%tZ zdbE)FRPbN(`)i!U)TV6Eu4o5=B&m$c$uZmwQ#ozQ$J9aeC;4Z#v5|F@NnTS5qMpIQ z7$QZ;AokP<=AF%#o+@Z4>5>>=jtHY1Rv2ScMIOK?00H@FK-E5~#{tdQ3_Bc>2Xoku z@FaexSl}r_LZv`K9sn2tMgaV=r`1YE$yz5?Zc0^w@AlM5gu$DuWcT^B=Vd7gK*;${ zJNxK5B19lSBp)Dn7|=wUp;@R%WZ-3xg+}b5`1fpnM?UVJ<9F#x)#IpLFi0;2kXTk1qpBi5<)e}1_l?`(WQl1KVkd@@Kv!Eb%0C5e- z=f7|O`srpML|Gpxxz!~wFf6GpIEf?-AB2*-H=hTHKf{jW$LXZoSrQGFLMrw3Pbzj* zPRlPoMB^Db_VPUHVa+8+DyS=QFod_Hu6UUV*vRPE*SV|XCwNqwv&ZQVdCJ0^wsx#duO0&cdC*> z1s2bSW_~Tmk!(;nll&yHP!H6NXRPeiTmk9&E<%+O{H$)J-~Rw5^XuVf;phJV!$$d) zuOZWFSp+Y3XwL?yX8!=gqeJI1aB|E)hBb5iOuE{sSTVVV`hNcR?7EI8h;^{j zpxpcZSJLY1-AyDDi(R-h(7HtwRT2tXRZM>plng>30YYI|frZ91s=)9JxUO8VwV{pE z)W`4osI3;~>L=|P6|I&jsACGNEi=Aq9DvNj_n*5N1q!evau1R_YY&b``0BPxX=rl~ zPuWYw>ZDV`m9taO*5JDW-jXt|IWn1sO67ng0s$lFb(1rQ(P9k*oU(sUMakbA^bNT> zMN4vzano)CW4WiurZ=gAI-v2ls^~y(-qWK00O7}j+aDp$#RB6{1ER6OMJnQ35)JMJ zx_O<-v+&PBZ{EKP^?Nwn?JX_d;d7Q+O8R-KjU#3w4NzFlB9r9AWr}z13wKs{nue2r z1ZnzT*+x2l7vp3$h#-MF+hRvOXQJnhhjfzv0M;wz)`rP71-w$l4P|Xr#SDTd8eq6c z!jSS8#}G=W;!7|911!y=TT${rk!wlrbPC%ai+u*LQvkW#=E5YKYi+0YT|;O1XPSzM zr>W~jT?I69pIVlKY*WeU#LU7r(Pn`ppt(t8sixyIify@IieTr6X9Q5lv4$wlLNWQJk%tgfR=n}dONlvK9lw<} z@VX5GS_$T7(^2*stkk;#d7-sqabG=X5fXa33)GhB>yIy)rZm2fV&t6Q;C!o$4M1^x zQ%Q6S@(`c&+%!g5^8WyO58ZihT`9EP(!257eusDpNmf;%ztL1&nUx~K!yDF2R2CRh zP>S`uco+HJ7X zM$)nV_A;`3r4)c0kU&WU@fFU+z2;mcOyKAXI!Wqg+xEZTbvCl@tF_LIEnRIT9ZMeY zQC9vWM!m3vGAfqk+qMADZ0cg8oFM7%Wr^5YOt`0~F&=U+9sY|KeA)Ds&m{BH&2=Av z{3KS%y(p=b9O0oU9AvUE{v{=p0f0N}8K;zjJ@i>vOGE-1C#mz2b^icr;@Fza0TlH$ zwKX*g=@mS;SmFca!Dx>I!GI$Ni6fHak2+uwWXVm>FOXtC^q;N7`mK4qHbvKOZR?Fe zsG_Gvf*J}6L}_ZIju_dT%{5G)JoPdX0c;!u2QJ4VHA$S&1j@}qp>ZPQ4bJ8{YzHO6 zJwM&m9UAL1*Kb&x_ASDs(p24Nx5ZHs@MUP{NZc6xN_GlxL3LkIlolg4Y-z1b3S>wc zYZI@pHJ+oJQdr@x*Ax23y%&6)zqafaivhVxH)HcR8Y!#dpn+imHgv9zm>6L#nIrw@ z9%I!E>;Uap_KI#H#x{>-Yp^<|Y@iNtI?jaL?0Q-P)_0m(?e9?Z4FNVAvQe?RK}i&p z^!3ocDg94cwGrlQ%8DS592s0RxETYf!+D9^-gJ$C^Xa^-jt^tbSe>n)>jHY;PK&{O z>y@g-W0wB_dD)j*y}h(6=q?p;TOTlbbWV{#)X6s()Il_nhKd5DGPB4Pc%+vc9<)|y zF4P`V``v0|u+-ellYM(mq{MPRnr&fq^Sga*ZR^vG#l3$88&~aG3#DWYSy>>ifYmxI zl17v8M3Sv(ih8_2$VVh&8t*Dp@t>L7^o7fu_-B@~@iXiDEJe3%ZSCFD+vUb%aQ9OIE=bnU=M!z>t)96Ono z-~whpe=U#MZ<^IGxSDlI&*7cyFL80}8$!@^Pg7l0E6Q40mpq$3SnFlES_EjcE58$q ztmo91R3=YVZV~BJDpVwZcmQM&f6qq&zyIn1-LR{#It?IgJ^J!Tv0LPPA#Z zO6qadjW(Aa{mQeoA&YQs>ovZZSuSXqGEg3LB(^@pqq%h? zS$00%vejL;MQqPSM@>tHH3mW%bCZP$h9!;wT(KZ2I;g3KEUs|{(Ayr-Z?EvW+&>ql z-Wu#3KyzFU#y-S;%e6W+(mtMaV%pH&FC(iP(hH>a_;&3H{{ZDNR={EpByc$8R2Ae^ z6Uu=Yr^_6km~C@hOAzwx^qLw!BIr&HdQ~&@6wsjmA3?vscz&o9Mhwi&9PZq-P zX8s9uB}>4i4hrHVP5YsFoAtt^tsJ<4|`Wh|uOBUqId zG8cv$u`F4)-9fEunkL3QCjMZKs)GlL#N%TVS<>ej0`N2dLF7T0wu_jz1FV~d;K~mc zsB!}zZbuo{Plpjjqo7`E#SG)?6aN4s_gSf|NhOXNvHRH-8RmFKLk!_gJ9ZfEaqph~ zb*S3M#4XTmKVRWCQ7)&L-#1t_KL}%n zx@!7mnx;_r%Bsm6bn&1W#XFOnhBP&@8dW(EARV%=K;f87OI++mBF=oc-_fI(i<3Nt zpsq=@bv~wr)g&$>@Nui^+$oQ{bzHpaPE>t>_=^V7j;K! zx6g9u)OK3hi;b$7yzxp;CYGKWc-bX$p9~+>$r(PXBz>WEr@*IJHd^mapzIqx$U!ZARCh~dlAy%F;*KL6(j=%y{Ko~2 z-UTcX7b})oNaH>-Car39T0`JNi1)YGRcXRnDO4fOf^_%p>$Kp!P$W}R9ucfABV?zI zh>U<6w-7#{CypsyNk)-?jH<6DPU9<_?eN@H zDmeDi#S$4+k7a~{=L-jP8qY;#hQoNYp2pbQme=!*eEF_ z6&C7v0(Qxj+@HR9uB*lrKI?hdmRO6aZI1T$h*{=^BLMLQNx}YluB}P5&5hR64ra_R zT=;L{8T*l~7g(&I5LP}%QZgAx{{YHC&YJKC++!ZOccUohl1tiR`1)uI!BpL$#@d!MLY2ZLP7rk>PE^l_Q>!0YEx}f zg>&$+ODj+KX#G}{EoS3G9bw98BS9m9bhkFnB&!kG|UyBXr zCdlX&=E+GypR{fiH1^=lH#DcES4dt&AwZFj7}NlMQ2e|MosdOJzc}7?8(+@qy8%h2 zqX~6{+BGB?onUL+tY^Wc0w0H6zf)tYRIYoaeD_s}pkG#~OTfb;yi&5Nz$x40P{a|2 z0Qa6Pu4BXt5F_7p3{#7-FU)QT=clOa&qdIb(aj9fGrW}y$C5_TuNcMvAQcKuP6^I& zj@TWwqz5&JRdOns<9OV{l13ena6Gv$Z=3i>4*AcK+vJDHwGNdFN(pIMG=S+6((_(JurCqPJEj4s< z`cu}VbPWYlyUEGw9zwWzy*6RQ5_yF`I}K!_D!KDbnTUhTz_;4pL@~_57P~PQ=V>RE zz3VDH@KH3izYbeQsz#xLD`nE-RV>vNv&JE4>PyKhEMyFXTmo}|JKz(o&Lc>iNMmnd z3Kc4`{v}e<0k+#ni|wtsu50M$SGs$*y4Ag`TZhxT?LEs~_-l2lw_C!eE$CYl?}ybxV-?L z`BMc{g&irL;%1qfk0fSDc!mW*$oW$Q?qBrZBHGzsUYw=eXK-=4Ld$r7sGxX`SHC$Dspj zo0|UU7-C8ucVPwgv%9yIi!lt}H%2eEYrwoW-H zz|>t1x!G*erQtR-T&LAbj_9n}7rQkLB@H#TmRRL_i*z#^oPaCH%ZCCak0p%Ezqtt> zN|s$@!>iySp-#xB-&43AE^}_j(tLg zK4@ow$MAY?N;5L}VaIn9LAaLq!ufe==hwQ&;t7U2IrAey2Ksio?5OtQ!BbmN1vHM6 z&nhH_+XIEARYI{l$;lm9D`G)`^C)E^F{(&wKma0U)f^9*9)MnFpRLq0svA200KB&5 z;}^Jp{9mrL)yC0V9+ql}(p(Wr2$zIyB#?y?BD)rmNo=nb-ogI>ZxqKoKYNhOO2oxXUxinresiSjzK9#U)loZ zqDp^OnreE5Sz#K7$*Z4{+SXi5G~sc_-77;{O1NkB58L!@pE6TVmqo;ZF!!t98Xx zg}70md_mq|#bJZlP|Uh>oC8Zu?fsqqoQVxT$BjySoQy{{Rr< zg*P*nD-3X=4n+9Xeh!JE91m|#-Eri~zZbor zj|6H+IggZsGu9(Tw`AW`TeGBnHuUZEaLr{(>I(TFj0T=(oXX8FY`-;l&wTh`Fgt6V z#L;~mOS zzta8}a#f`}G`wadNk9)TC2`zj9FNoV*JX!xY7H*6myz*WULO#w);fM;f2rr8vXegF zyIo*~SL8R1?UbXV3Uq&X-S(;cAVTh5SND6%~0qDaZwnfIFYl^2U!8 z5ruoY5#)M(7H%9#tkzg>rm?cDrL3t56m2ZBH_DNzB$Mm_*IGzulDwBvvzudeZf>34O>K(ja~GUmo&)Lch^X|$JNdGxpqwQT`P9fvR&e;x&F_% zq-}7XZ$_FpV5E(BMHitJJS!QwgtN`D+`mOd-tmp(ocbL$0 z*RNZyHs9A>;kWk|=S#hqP}Ni3=aK4BIjtRGnoeGv@t;mi;lMd%V4#fP9dEmcKA`}R zPSz7|f4Z-&PHH*s7dI*qwKr|wY3`Z}^`_@hY`js_Emb|j1|mpiQ^{N(u78*$d+NHV z@c}Nppcpc~?R+Zrv;P2yK8aX&olPP`b)Dv;x=>L@1Qhj<;bdS5$VVI`RT;;s2Yxx% zpJM0=ScfoaW8_y)gsy8-f^Ib=o2{KI-9&~!VHD-cs;K!;XXRs%d3Nkqu+MOHs$Fs# zEUa?VKPmV7EEiLDEgt^ZcWX7u2$~ATRW$_*JT5p zGmNW`ZZPQG2F(VU{%?g3JP%&a`=Ig^}$ znKPE-^wo82;lC={qmwYqrM7#mJJQCHs8#R>+g$BNk*d4^8?}3+kW1UxdjqXP0+6z> z)anDu^dR{`e{OPtMCny zL1CX`fsI78qcR_aA+yL2xzUuTnJdwQlkN4+jHs9j)Rb(alu@LTgV-~1AI}H;G>c;D zQm!IMu_$L8$oYyMz~jC%?Wb|6M1rifDjxZK=gx7Zmex*64HA^%0M2`sC$RftOR6rd ztVahd6c2Il{`+Zwr7DB~;fV#Y{e1m&vdK18Q2g=#8aPDL&A zDj^)CVk#IbH6az21fsADl0A)}{8N27}_xq0>^taIjO7l-|psc!5)l@)| zR?>QnPf#*_E^EQcoZ~E@1CV=m7}ArZqAx2-{95#q`_=uaX`|Zq8lA^>q%~$}>E=M` zMq*PUfaOCoI6$fnbKo5IofMiqW)n5J@dCmjq>HU&Es}%ltu?03O-+jUX$Wz5Ldl2irX(p|R-z-^`mG z7cg|!bMB9WzOwF1W%dh=+ozLF=v}JqR+^8)#OWH8s#cK{A&kt3l<4`5gixM3DKdI(BLvR1`pUA9C*ju-&6z;OrROK zRvKW6UR6j-FdSuWzys`i{{S!x6@f^+Mui=e^f{&W?FG5GD_Xd zrFce)Rj=@MaO`LfaBn-D#CmVg@>IBrt!Z;zE^*KXT4L8O=g^JrO|icW9VY7!M7nWv z+FOFxwD%>tzF8-V#XjjU8g-QnbyVyYmTGp6QI0@3#y(aVI(Y1E4--^6o1E7-c#wTc z*1^%l)1p~coV4}_(#Ksd7dAU`?^J#Tx`$J|tE+Z*OfD9Uvga^cDz{y><4_#uD-$G& z&bh`H4E$HS6RWyBV-4YkzO1{RQa?pf>=WBk>~U{v{mlHva&+MBj-@=cjv3bQ2?km5iEb%9zLS5F~CucP9X9m-;R+ z7=h}pU5uv(k=%bjvcc^hxpW_=mmSAdwR($DS5tkse$$>k(QdiVMNdD|~KE?DlVF*--w z{rr{N7g)Mqcc`eSP1j|lf?OCamyV%aQgF@cEQX{jG+eOCP$aS{<0FX*L|uW!Fj|>D zLqVikd+8_@8cm)@{{S6M+UP&h)g5TIbqlB$s#?yM)mkehvrYKQTCJ(RsRVY3Wn40q zc8*7p<5vbpl0_)Q4kw!HV+Pt(8h;cEL##n*GB&;R*JC`?aSngWm5w=X4UC?nNa$9j zw*LTU2U)9Qbk?0v#(I)QzIdRZyyoX16Is(W=jbv)E6)XO&)5gZgL5E64? z*ec}K*W-k>!izE0HZQEVu&X_H0 z+qBWmPi~=zrdiZ}?kLpys~A#Qo;6X*Q(wHbOV;w{iNcL9KhdHjv}q+Drr5=U&S*CBdz1vHrsU0FEhXD`TFDsjaTj zQ#yf}p>_;vCr2E;N`7ue48-|+@q4petJy^B9k$?VWLPF+#hD4rF!DnjW4IzPOBO5!CYLy7 z0Oin6&`)TUV}mVo$;$==+C4e-T!GOW#a`~}-A%UjSv~h}n`PeTHKy$;tfiIUqLt%k zic-MwAzL2&Msfxa z7>K{(0x@aU6Q7i{U^q-3Qpb+op*p$3)pMeZ#|s?(4BKTeo!dRJ*8!Kkt zN!2EVm1shmbXKm%L)Gn-QMu@%xoxQLR84fGol7LtzPbsNk9?tRW2yNHlSGv<>&H#4 zyJE?;?>37~O{FT}o;t;qxkXmOwyhwofbu+Hl_6-t5T#m{LxLGuvazAmgW6|rrM++H zQBoODv%k>a(%z~S)BA`|#!yI433$q*?zzwOKhspaMx2J#8jE_a$Kjk;gmNsZsADK4G|mfnguJ*-)((Qrt5rkC#M#Rw?Jm0yKTU18{H(hO=F$EcLly^k{SwP zdvR!JVWeE(Fpx9<02WE+aTuozX{bNK-6vD^w?(ms!?E<;nCtp}`>&n*tNSwd@#^m5 z+dDqG+jO*BKLt}AZQ7^s(ycX8$k8;4s@%$$WsS^v?u39dfzZ|C6lhRoYK=cO!U_9@ zRO}s35V5~oFQgv~T?v=rucZ_lIxCGe)}!$f+$$=a6j!O2h<{0Qks7KZuP>PKEODMA zjdmioDyys1W?8Tsz~|KNuW*=gNryDa))w4&e-PBqTp$KHL&M1UY-6^3p8hp2nZSsJ zw_zcx)iq>P;JKO@vEkkDJnJlUSi?!w6paNQ>{qnbQNddUPGg=4g2@}8Wi82AcNq)q z`D%1(8gG_ru+?dz&k}4j@3Pd*%1joK*nj2hHRvW)W{Lj*3!LIU{{UAy!gNHhGec8u ziP{HZe1H@Ys;anV>nnbqDa{#5dsgO=q$^cZhR=YQ)l=zm3eArW3Ry*0Pf(+bp~u&j zwTlYKWqZ9eC$Ik&z?;QBa@uKjY?5+BE$s}ZZ<4A+Lmt=)V{_xS=J0&T}aqZ*A zlx`E0jTY|s`1(T7-oRGc$0ABipjnttBE|0*!Bip%d zTu6-_YNB?`eRWek~LOpo_T5!OtnOuku5PIMbB)rF=b=! z3omZ?@83{1H!!3ih*=7F-kB0Pe;G3`b1hWm?6C zDt3ELu58`03hpjhA2^{TNmfNa{hf*mLmgC6y~|^B05{WuQSs~ zT4v{2)#F)ltG3xXZD_N+iqUP$ja5nYONVLNDynovjJxH`EV7PGArcUD#Y`MQYp15& zAe)bHv7f{--`Nt;I+2*(#OgG*n`*W8>DpU|f85O5qo8%yNaicfr)PCcLmbXoSQASm zk*WFBTRcI^sqcVwvqq&BT9tU^nUnQ`wJN^3n?0PsG7pd~pQ?gi{xY_f*ot~PHu&mY z9qyKSpq|aSEc6?aI$2P+Bzl*TXJs-e856q<lW> z6S!3qrf)0$%VC)M&ypGc0PF|R!0FP->|feRZ=F;2$4#nenL*5!TZAvmK7L8!4x{pZ zSLT=p*Exl=m+_MWy138IkW1ClhP5OQ;zj{U*X{)1GR%oIPU(IWHZ{?*;5@qf@u z>87`?%Krd_xiG}_)=N}W@G}k^+EDz420?XF!A5c8QLVx8Z5f40JJe${aS!X?HSOM}=1VL(A{M+X_eB(YsY@w`JwBm?XF ztb>LSB-Ml1C?#*e1QdIcp6|9dHNwF~!Q`ffdT~*Cj%CS=MKVbYBsLh9kj6ky?*a~{ z-Z!3^6=})(M^SU>{^BqdsZ|c6Q%%+fd3+yrp7kXyHQ%WxanQ!EP{!$Ut@L7*SmTPZ zk%!2rc{-p|kVxam&75ZoPIA#B$-lyprHvqFb^QJNvfSM`vR^i)){0&K0C$ehxM?Y2 zhOX)ROy20HiH{n8##2-d63$AbEBI$=T=ou%2sJh9QN>ovL8ZXn3t~G)+uq$bTlD-| zbf&S(9L~K-v>tMQWwh)&&VsV#ZjK7WQ8@;t582Q~6lSJHD5{Gbhn$8Y?A_ndMJ3OJ ztpd!G7XA+Z0HUzVZ3pr1*OJgX%d0#7i>XlU9mlpW_e(uY0Ie>-xVltB6Uc?6krVL* zPYGoKW|9w;(6S+Hi+VU*JxT_qaMC~J9!BwF%KCcO)y8;L0BDIZBv0wjaT=aWd2fxo zx2?9?*f`xNL86kbF>a=-xJnQXazDs8i6r6aj6QksWy=8iq+o&rUFvNo^!j-%-x0y3 z?mhnijqR_vS9YG@+7}xICC2q&yW1*iOqDW2`#Qa-M5rT-$Rd&$!h`86My`YZ00mio zWmakUROz^k`gI-kY>%qI8Y(w4NFz;$-u`>rWi;HI8sEO`k7=rwMFWZdbkP|g0&Ky z$yDr*Q0tOCIUPY}10aq}a8K7KSs8P6w}i?o2pWj}ZT^=Wd>_!#)%;OyN-D4g4P_Z+i$k2?ZM!e9V!a6P|GQa0kthovo~ z!cM_zZnAZ@ewf_0othi2*tFa)Ra2Up`@PaTbXNLU)Duty(hpFA!zipBv4y~HOLfEW z-Zp0mk;~ndt}39U(q1zT;^(fGk4X}~VRibN(JxfDkL(EH{{V*SD(0!TR8mfr6wD76 znIf7Z(YQ$;{{W`!6gsYQy0^s9G#<*EoqPWPE5G2F)?@HBa1MBPhS>*CmzVz2VbF~s zXltxS;UuxLm5_kw&D$dyv!Z-32+?rdN}0yJ^xPrF3rXBU=&pwJvu9ZT9`|PD-LzFx z?;YK0xl!#H;YcSm(NjY5Pg&_1JwS|Nk`pOWz-Nat`B-8e>eYodm}^KR&hsF8$3ynz zu=sZ6@g6{#01$6uaC9-Rc;>l2OmgkmduriSn42ZglC20{n{0lqWMeq*oQ-3sa9Qk+FO!ZI`|rrx`LsgsD=Lk ziZ@bK)Z^)bHG>mD%?_hbL0h;SOIcE$A%;ba^gqIv+3q23lETfDsD!Q$xnAS?a@RFp znKXljtt-^2VnD?JO`Ids_qxJdsf~8zxYgE2HANjWshiT`tQW9R?ezBVfKT66RGpI! z##10T=(uhxNV|wuodNoPr6-$eQqa~#TSpjz1Y%}_0VNOG@I?|Q5-@SifW`>~79PYN z+OGUd%S#?)oeqcSKSi|6Gbw;uVZXlJR9Ac4C@L$=6ciCrq(=?u$HB9VacmL}JNE;> zzI9`Pr&X-YRpgV_f19fAAnGkX6(+{#(?yRLS6T!}--ASR8x}sIeK?W%p4!;(L3t!= z>E^I_@kBMck5Sv|w!cE}H1}Sjn5Q#GM|ic>S*qifLnF-_!H2^I{xW`HkZ?fqahj}9 zb`qG&2P=W(E@PgXb5^vRF^=&J%w@lAcJp1W@Wb$x(H+Iq-SnvaO?rruvylx9T-rY1G}L zWZPbr{Ge*RnYcFHtI&sV+9MJ{L2ZOI#tOW}0nQF?9Ls^{ zb3Er+^ZP4W*ftjCra(Pp1N%?CR})^kxk=NjW$F#pw(GVueNL4qE3A)gtA)1pji(dT zNo$f%l3GfLYRlXwW}Q!G*N}fE9v^IaF`$f2M`W;_tzs%l`zcJYTr`; z$tT|HwWGrv#tiRhXxvHth1Qw8d~QQ#>rJlZafZXSWVl#ov|Q%7U1}ssb%LR4>D|^C z8N=dgv{VR783srLy{l+Cz7#c$KPj}^UwpTfUy8%f!d7KW@(l7900F6wQ`=S9n+vF$ zYpGQ7U3PBoweEXtd}ERARdGxpW(1E^0nJ?Fuzn)|;CanJG|tLtW}o5>A;2k14Z_XD6=N#wILOtFK3 z?dKZRCvu3o@Xb<5ARR!uRKVuE?I}IU$LFXLo{HN{p^BFbM{eEosFMLnA)B^zNQ5M6 zfOC)Pbfq{-XW~gDe=QQE0tS5hj^D0{=A1%PP%(~Ve!6KTE(j;@sP#?^A?h5AsVnc_ zPE*xec_ib2265w2(E%y-5EdmFus{U%&$fN>`f4WngzT-E@Ni@1IbpakJWswxe@}mH z76+0wSN&u>fPb6;j440i{#tt?3KM#qSP%ds$?^WDPzVG{UrW@Bfoy^2gYYDI{vbjB z0C>?SRW7MwQaGZjD93hDh5lcjbP}DDA$U=Orbc;x5d@#i=}J>7+-!)YV}dxoW^=?G z<%uNw_s?_r=eD5%HDY=pR>CHpa~z+<7NMi!26M!LpC>0L2e;*@5Kih@xh7g@>0dBI z6j<+=zyZ(H;{=}M=ju+JatVXY8KjW}tqgF-AOwYQLg(8)Pv?ywZ7L?}nVpy+k(Bo; zcmu~B{qv6BaJq;NV~tk#T@Zwsp5d7VJ5^pZ&yo8>+h8KAY~wfO^m9 zR<4WTH*Q}p63|!w0QfYmu2|f(md&Yfwp8FgOFR%(Onu4wC~fciJ1w_2SuGo~+h{G4%}r>nkyzvr{{V||aoYrU{{TWZ8OEwK z$zeWi{{Z?^{+(O?L+YZJuk6~~w6M9hZ~Fzoxpt1_OH)P2W3l9|GLGKIzin)@kBOJk zBe4heSdR|G185`BM(h6ov$v@);#;F9vHlgRPwemNg#L>guF|J60>M`GEc|=+1jSCn?l5twyN+RmKyf{X?x4&b zB;3=FFcw~q`#87k1j}E%cC=sv#bA!%RM{u~g{E8&e|&zL#O^yp=}q53`mCRU#Qy-q zdZ-oW;7hFbYlTwBwJG-$F_Mwj+wN3T#~}XztrkfmmmgR4Kr=Wu)W(d#ksy8>nT4U)4s1-?{jykdllX7boB}un+lN8OU!Wxvq;^Qk6=cV z>rur66HMz5*}oTC8+;U}sv6=iR|{Ia0#8bG942T?QbwhIRtW3J z5!mr%{MWWMP-%goR(Xu-qR_`*wriT6hQ(7;X)rTR^!GNXnWa_&F&!BT6j7DKNJB^5 zfU*3UF(rYp;%BwJMf(r3jJrMb_uhBw-)xmG?G4pW~`f(&r;~h^zefbi;&EU zk)x8|y~AU%i4Achm)Q<%YoYoMw@XE7r@dVyn%PP%vBc9Y6qLr68DTDfR5CDDGAlPI z%OrtVqbLi&9YnOXNJE{i`@)=nBVQ%zj8s!RX;C$8OERDT049XT2x6o#8ydIXqIB_Rzf?RUXsf)OHU?A z^yQIAPUH?wq=S)<(EV~XlG><3iSOGIZY`&{XzAgNC#$4vtV#THDC7YFMotuf$G?9d zXGppQmTF|vaB|^qh3FQC;?Bm4xvZ>>NmGr$c+!a zt9OT093vG^7e$gAAO}BEjeUjg6tQPBur*w|0j;dc$ zI75a<90aj|-~w^ka!A#?G1X~P45R^bg{ETPUdq$rZ@}VS%J@p4?`R|gu@?iZ?{2HA zubm9qHYUDZw--`(uIAiT6k?8gn~v$6sexRDN|lO~@}`a7lPl*X2n+LI>Cxg?+O-=@ zhA>Q6ZhNjij|&2$U*a2f=P)ic^j|D5P^C4_stEX%idR6%oDdj+jDT^EsMn#ga)~RD z#pM;8*0um7eM*z;y}3tm*}L}XRZf)>+by*1P0CdUDP*mI3x)NO+X!SC2`Y|XGOksF zEPIH_ptTxSTZ+Cbq6xYOTJe)HIJt?mY}EuN}6i0aI=@YM%S zz!E-a*nL%lDg3kVt`)5n9a5WwT!rb?u@0v~g<*4J>FyQF)YP$Vfjsk6(^F4QvLv+F zE(u?iu--=?2^kssjbXzFoIX~7NHKo*`YG{ugN+qh=niNymv7NmO>ds6+gZY*2gs$5 zIg=~o4&amAVEqoKUF>VaDmKS{OIC-77+*}>a^Lh`{j0Ss*Bzg~>#w!nvu^ggRXtsv zo=E~dT|-w>!trq_cxnpx;`GpvXlTX>O0@` z*>^urJ}`QF({7_%4fg3S-?|yM3>V-2R_2fzpTSQ>P`-~dA#cI2B3GZOQ7g6q$uSr@ zxU4%}N6hkDH%9dY?rz>%YZr-0D4!OCL`6F3a2&+f@+1T;aW3 z%?P|orb9(R3{%C*cUp+zsG1fEt`aCq0V8WJ2MX*PbJZU^tRnC^`|??_F8o8oDT&`v z>0`c~1kR#9UiCAqo8PQA_Pp<1&vM*X9KRVWrzK$x{7W2T2^ydJPyzPWM#^ksax_^` zRIO3x<~nVl9zxyusL;M#RSGS2N}(7kCTwGYOk+RvlE0B7#-)|Klm%LVKyme6Gb0~! z{PiUQ;&m(NxAr{lRZYRv&Aa%DWT~vAp}4~naWl#2$tph;BoQx#Ei5{{0dxdGk-Wc)@{{HLfOVnKAszs-cj;fIV02EIlhE*Q?Tjo|d$6^=HopWd9 z{{S1VmB0}*e_zB3%Z5-s(C1MappqpUQ0gQT`Q!__aXH4>#lvyMwLe2x#_BR{D6>s^_$ RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/README.md b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/README.md new file mode 100644 index 00000000..73087efc --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/README.md @@ -0,0 +1,19 @@ +# PPYOLO model on Pipeline Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/ppyolo_mbv3_large_coco.tar +``` + +### Start the service +``` +tar xf ppyolo_mbv3_large_coco.tar +python3 web_service.py +``` + +### Perform prediction +``` +python3 pipeline_http_client.py +``` diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/README_CN.md b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/README_CN.md new file mode 100644 index 00000000..a852a922 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/README_CN.md @@ -0,0 +1,19 @@ +# PPYOLO model on Pipeline Paddle Serving + +(简体中文|[English](./README_CN.md)) + +### 获取模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/ppyolo_mbv3_large_coco.tar +``` + +### 启动服务 +``` +tar xf ppyolo_mbv3_large_coco.tar +python3 web_service.py +``` + +### 执行预测 +``` +python3 pipeline_http_client.py +``` diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.py b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.py new file mode 100644 index 00000000..611712b6 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.py @@ -0,0 +1,132 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import yaml +import requests +import time +import json +import cv2 +import base64 + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 30} + if device == "gpu": + config["op"]["ppyolo_mbv3"]["local_service_conf"]["device_type"] = 1 + config["op"]["ppyolo_mbv3"]["local_service_conf"]["devices"] = gpu_id + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18082/ppyolo_mbv3/prediction" + with open(os.path.join(".", "000000570688.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + latency_list = [] + start = time.time() + total_num = 0 + while True: + l_start = time.time() + data = {"key": [], "value": []} + for j in range(batch_size): + data["key"].append("image_" + str(j)) + data["value"].append(image) + r = requests.post(url=url, data=json.dumps(data)) + l_end = time.time() + total_num += 1 + end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + if end - start > 70: + #print("70s end") + break + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + pass + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + gpu_id = sys.argv[5] + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.sh b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.sh new file mode 100644 index 00000000..7237a52a --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="det-PPYoloMbv3" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark_config.yaml b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark_config.yaml new file mode 100644 index 00000000..64b38c2b --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/benchmark_config.yaml @@ -0,0 +1,32 @@ + +cuda_version: "10.1" +cudnn_version: "7.6" +trt_version: "6.0" +python_version: "3.7" +gcc_version: "8.2" +paddle_version: "2.0.2" + +cpu: "Xeon 6148" +gpu: "P4" +xpu: "None" +api: "" +owner: "wangjiawei04" + +model_name: "ppyolo" +model_type: "static" +model_source: "paddledetection" +model_url: "" + +batch_size: 1 +num_of_samples: 1000 +input_shape: "3, 480, 640" + +runtime_device: "gpu" +ir_optim: true +enable_memory_optim: true +enable_tensorrt: false +precision: "fp32" +enable_mkldnn: true +cpu_math_library_num_threads: "" + + diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/config.yml b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/config.yml new file mode 100644 index 00000000..71e93f39 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/config.yml @@ -0,0 +1,30 @@ +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: false + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + tracer: + interval_s: 30 +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18082 +op: + ppyolo_mbv3: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 10 + + local_service_conf: + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + # device_type, 0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: '2' + #Fetch结果列表,以bert_seq128_model中fetch_var的alias_name为准, 如果没有设置则全部返回 + fetch_list: + - save_infer_model/scale_0.tmp_1 + #模型路径 + model_config: serving_server/ +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 9998 +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +#当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 20 diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/label_list.txt b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/pipeline_http_client.py b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/pipeline_http_client.py new file mode 100644 index 00000000..4106fdf0 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/pipeline_http_client.py @@ -0,0 +1,35 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +url = "http://127.0.0.1:18082/ppyolo_mbv3/prediction" +with open(os.path.join(".", "000000570688.jpg"), 'rb') as file: + image_data1 = file.read() +image = cv2_to_base64(image_data1) + +for i in range(1): + data = {"key": ["image"], "value": [image]} + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleDetection/ppyolo_mbv3/web_service.py b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/web_service.py new file mode 100644 index 00000000..1cfa0aee --- /dev/null +++ b/examples/Pipeline/PaddleDetection/ppyolo_mbv3/web_service.py @@ -0,0 +1,78 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import sys +import cv2 +from paddle_serving_app.reader import * +import base64 + + +class PPYoloMbvOp(Op): + def init_op(self): + self.img_preprocess = Sequential([ + BGR2RGB(), Div(255.0), + Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], False), + Resize((320, 320)), Transpose((2, 0, 1)) + ]) + self.img_postprocess = RCNNPostprocess("label_list.txt", "output") + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + imgs = [] + #print("keys", input_dict.keys()) + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + im = self.img_preprocess(im) + imgs.append({ + "image": im[np.newaxis, :], + "im_shape": + np.array(list(im.shape[1:])).reshape(-1)[np.newaxis, :], + "scale_factor": np.array([1.0, 1.0]).reshape(-1)[np.newaxis, :], + }) + + feed_dict = { + "image": np.concatenate( + [x["image"] for x in imgs], axis=0), + "im_shape": np.concatenate( + [x["im_shape"] for x in imgs], axis=0), + "scale_factor": np.concatenate( + [x["scale_factor"] for x in imgs], axis=0) + } + for key in feed_dict.keys(): + print(key, feed_dict[key].shape) + return feed_dict, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + #print(fetch_dict) + res_dict = { + "bbox_result": + str(self.img_postprocess( + fetch_dict, visualize=False)) + } + return res_dict, None, "" + + +class PPYoloMbv(WebService): + def get_pipeline_response(self, read_op): + ppyolo_mbv3_op = PPYoloMbvOp(name="ppyolo_mbv3", input_ops=[read_op]) + return ppyolo_mbv3_op + + +ppyolo_mbv3_service = PPYoloMbv(name="ppyolo_mbv3") +ppyolo_mbv3_service.prepare_pipeline_config("config.yml") +ppyolo_mbv3_service.run_service() diff --git a/examples/Pipeline/PaddleDetection/yolov3/000000570688.jpg b/examples/Pipeline/PaddleDetection/yolov3/000000570688.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb304bd56c4010c08611a30dcca58ea9140cea54 GIT binary patch literal 138365 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�?+!A9TzG~kmFEy&hslCVf_vk690B~3k7zKEJxAo@7r8-+( z%<1XzZ|2ipXZg&;6rm#b*7)(ygZQr#bbau5F$vf;k&)LWUwNBQB6ri3dx(zHg$W4J2XHlyU4+*B)Z15lq`;?J?t7al*!29 z6CQh`j<43bm4K*&QBc|UE2Bf}7g_DiNnXNqBb&Wc{YAO*Wnvyam00(|!Q372Nn8Es z8+r~mNzB9t2|R?j4@5M_A}QvpOeX}*Zd9b~(^vdP0*ypa&kL9HtO1S?(OXLl{*kk({;dT5%z1`wnueX})pabi^Tc{4>&%C90 z>V8G_;=f{67ZiRGF8cu^aGjj<#uWFCS3vwJICE?RdGhYB&TU+11ZfYP0-cf|^?Rmk z;h%sFwjo(5%~S< z^}DpsY+6*LN0emcl0}u_Dru80VcgLX6L_R-LI&Zr>5Avpm(r4A~__N~oIm8O4 zAjT|NAMM^!zBYGOB26<(0?P)1(FbjlkSWyGK^dp;Io*5Z#YfW=W^qGB7!t*#`9f!I z#JW`vr2 zJ%nl~_a7CY8gOk%N*$y`0gzx3luU-KJUr+`8~imxa0F_?5RJf`wK|R~;gi zX2J6(aNz##`n1x8wZG!hiN3xWLoF%=oe-j0xn4UXC6FiO^Y(95Ro0``r%Q&A3ew74 zAv^qNDi}u;9J+@GsXpG`u8y(D_5?pN8s|UI{zv+cufnWbk!?c~+mMAyx8vm1L}W1B zB*>2Dsyzk2W6?zNfxF(gI=5?+s=cod&BEO3CvfOBi-9rh)GTp zn~rvg4S8g5TMm0G6;83Lx)$UolXXUnMRf>ai48m_PZg1Q13_bR4gcmn{l~d2z5~H* zYYeR|g9{!!^L!AK89$t}=F(boM@uEkvo*LpRyKY$LQMMS7c7da9kg(+;Ex_m^U(am zmT~vntV7#41H132D!~SCKZ5VJj{h!nE!&^H^C`_w`Kx4C%5l|Cw>v)~%M_X_;oA%M zWJRIhN-aA8+I<9o{CB`p?V8g1$p*ajkExL;6W9K9c_bzlbrgkN#|@Fd?;4UZ6cjq>$ouM~=V z26$JcrE@nf%g^$(rSG11*N=*$k*o{|V@IM`j@`xrhessR?(hOTNMx` zIB))75`YhtpP5@}wQL^SEH}uTi?z}e6Xci}-p}~XCH}Zv6ju|8h2dzDJzi{lo9o{B z$U0{1Qnz0VM=2@pe^{M{u#v;Dxu`r@AfR8fb|+Z+>sF_^X+alF7A>V3M)<%g$Ae>q z%3O**P;aJBQ{#9vlYjg%Fu;>E$A*rBf7LdC=$VVeut*4B1ba>WQ%ybxrQcCWA=+=| z6XDMmT*y%gd}6=G3fgvv%c>kcFJJYfz}NzwbF50Bas3uXZx7AIguI`en%>JqEqG=D ziPO?<1A{fDL7T~L2)kc;EV*hAzjez3q^npx8%w*nLT$StES!ge0wclMsuIiOQ^Mc7 z+?h_6)?byJHs&ekuQijl>--xN18Xk0dMXP1A?h{P zn>HQe`Alc8ORbd#v?X>5XWe)%`i9Tn!}p{{h9nVR6)0nQV%+Jjx}qLjQKgfxi+K*P zK`BgZ|3F96xzE1~$Spr?`YiONe<6H#_r(S$&MB|McRU$Ej?GN49~Z_DIh9fY9n4Z; zFL7QxB>qK0#daM%piF_ZA%f-U%Gc~{(WPkXm#Q@=G7q^NR1w!NU?7lL->aM8NmT@W z&OQbn?|+oD)EE>v+&Y;Ow0fX}d)rf!YRI*J2Q%s-72=NvRy_9zO1MRARh3n7nRR?$ z{qwHorBX9ftRi>-MlRNrOmlW2BYf8rp7QY1tJe%bZUV>uxSG}s6DDs7eEaZ&eK>>l?q4cChA}l# z`sC>deLyu8MaesRNiru1D+vq}7Aa~3BD~%VfZ2$Q5ygE@mPT*=@%e~e8dkRl7$fxB z$xNUS4FHp-QP*fGigY?v*C6X>dn#brz-}tgX;GcrBV3Ptq zt*U>Z$(eQV0MAh8cUX#V22!BeAUS2P>BxzdVavPb6ERe3;1+)~m9 z-ZeB)>iZNpdY*^7hVODFRKs^m+@WaMLu~Kl{U+vXmo|48?T|#$>@UydU--43!~Cs- zcL_)yG2KDw2XBP&#H%uf=15qE;(8OUB*h)xH-G3_-D*1GSYG$Z8A?P&b*xb;Cb_~e zzynjuYt~L?R`N-X?bo{rrbt@&^K9o(BEPGRW0`>KHN$dy6Yx6JvKU*~eG*ovp}^;y zu{9)WZx;q8b>E$8`NE=zG6W>3V5JZj;8hk3pwNNQ3C)FhGcMFH$W)cnL-Ry zl1DB^q@b4#P`%%ZSK`AhDRBL)5y=dsnuduvt8}@AwUZACMegOUP>0Eunc3>8c#qsK zDMz;ABBQ95NjqfyznW02e>^4W)U)D04gvq^IO2`FaPl1)H)dr-f)H>)%`7w6UZ#N^STEVmGn(Xxpiwl~x zBU7b~J%;p$B;3pl{!v5UI%*V@yr)DE#1xl~HdL0dn~f4fRQT78l3a!f`Q+f&l~@Uy z;|%ZwaDrkW9Yq1YS-#}do0e;ag!-o2nQIMC=eOV}UU&mI& zZdnj^c$mo`OO=aF@wKoBzGhaSdcSpAsI`Jc*>n#Xg}h3nhl3h2mR_2uMl9dn7R2gF8pqjMycj{sGznI4}G_~#%zii6No=-{% zl&RJdTteqhnIsZIE39K2$aw7x)S0uD(vUP^ZxB6L{A>})p4PeMyW3?msFbUFUhI`g z#xet$d!`Rk=v;Z|#K$ePq!=_HU~W7P=%#v&#qf;lq&C8*z3#f7vxiQYA%(eyM0J@xbGreEAHnr2b0v+I?X2l^g90&m3{$UfQW0iwfnFX4UNLj4h9Gs&kt1y zq)mlWHGyt;4qmn*pn&v955WT9pgG~xHx&V*0ctUFvyFhFOumDWwKTekaY!wT76bU` z!cpJXo9U4EbHGQ(yXOVv&&kI~`!X?h_d{W4ls$EybZC@bc=j%0wqlq!Wp^@SMtqg%*osX z#f_^@3|df}_ZxFFx-?w1@2&{n0xgG!WoLs z#9qZUh-vPUlTNTCijcRE4_9c(Cn?E#qOx`t{(4z14JUUwVwUYjghyEfgEr%9ldY|S z#Pm&fCQ0hNIxyI+_SLYKk`_r;ZXq!?!AvrWm-z}TY%fTr3S)`h{pPHJulJWwsnmu5 zwXkpndbr?G395nr=Pf`AFU5>|74i4?1-5^n!J;tiXwk*62GN6tkpIU7_Z+&(El>WM zK;?~wR6t=(LPZ>(Xv^v&_?5^!(j0dmod|?5#;r&)vc#&qZHgON{GYvZst15J=pRR^KaW0 zbgtP}rlOp|@YIreiy&>I$iKy%1X9+msGXhSRhje!*<6Y=JDUBL-I-E$6q3F38hbcG zll?+bp2BiO7_EGFspNyR4Kz$Qxhl{Z|402AfDpH2x!?@AU|8`Qf=4(ybsTUDZk}tT z2;2lf?v$h;>cA(nK3e#;*%i9949bvc{BS|)0DQ2wOp?F-ttyrf6>lhzBe(&4`><(n z{4=(*khJ9gIV-eKgw&w$k9V`oF$=6IZUGku2G|p@ z8RDQY;H?V}L6R4>XX-FThUO|!Df#-4g8b~>@JeG+AqTMkiI&Rf26mo=S=dxd30KFb ze7&wB0jcm353cikPbJqKV0X$ln(3&On6QI6C1C{I(BbR=|AdR5o&d~^#B;hO3*3Kz z1t%sX{a*c~j5!<)u8jFO3hRl7q4O3tCB~bgpv6uR&-tyd+yqN%1gpAiNTlK_hzqPa zrn)augg1bbpB;>xz^SD(d~~R$i3<7k*U&6KII0wd#s|nrfYM-oKFGkHAZNt2OAm!f zBcV*qofJYLCt>k;-ZWa_o#KyET``)pSoBmP_63@%ctC5{%6Be}wS+bPkc<%-@C}G# zWtV?$G$nloM1E(mQZ4{MFKN_OJN&;HDU>gt#ip?hjIn`OQJ020z=p$4%eb>l5vX`+ z5KFiKZVVF7vYkYK161H?nv;w=lr-m`wnBY(te~HIn^8$iD;xn|nV&4b zy4OtM&{Z0%=&L%6a9L+(qE9zF06(Jq--;>kr8b?SdiC0r1Ej69S@H$ePGMP}qP?WJ|zpD7IY7R=Uip$#y|%rEh_+ zW_e5TAh%cancA9^Y1y8Fim`!hsr9U}HR)pMCu9y@1(^f^YNqe`c6^3dt0h1gDap(5 zBYtq5W)Gl$HxoH#LXIK282jpbj~*~Y+tqN7&MM>IyphQ4((-ih4^)~}3nrIHb^-`) z$1EMv$1H^uU4n*X!>zl@raQOSr5_bG=p!;r)HW!Je?JW<8a2?ZvU24?Ty>eaCPbCU z-QAxOpD+gqdRd1*HP5;ThU?u3UOoGx(5pfc^n&)^S?}nV+lh`-sIhC75DHTQ}1DeWoKI2DbxIbH-<5yQ$VQtRHDpM7$T_ZFnF#s!=~j z(pUHMl7)2Q=viyYr^(D4@KY80Qz9CKMFd%cwFcIpz^mtyy(mMe!oI>7aWp`}V&_s+0AF>u*VEXGeeq-FieqBR zEl;(*S*Nb?9sl8`wi`{N(7O`56L6WF$BQLraWhx4C0q3SI57IVsgNUWF5gP8bt8_1 zkvUlHRJgyyMT=0T&HPSDl9vsZJ!KCkXb&~_gZ}R>;XiAJ0Uh5D(r1(vKFPz3*}Qo~ zphHY{AE)4MC551WGre69BqY7+J6$PEkqn*vlopCnt^`cp4QwI2i1mx=nsYUiYKBUd z_Z^7$^gHl^yknl&mn=_~)C5$$VCn2f_T7_sRf^6W3#=r9y`p-_q}HUn!TK17Egdt7 zMePwg$mn`HBCQAKK(tcvR(m*|F;-yrszDc-21f=Sg@z)OFXf?AjLf105>msTDv3Y# zTn(R~AlO{PGfmH+PTF5oF?=6Fx;Rd?6#s`?C``hdm~Zl1T6NVf2Kkk6b~$}d4qk!= zI7g__`W;4M|IZj{j33uP*fmBCkNdZ#WSM8~(_3C?IEi^X7$a*AFU#(-J;W^|sRihd zNxoI2@+_3*Ys4t(xto6HHO0`$bDlIOTfTt>1OXuc-X57<9EF>b0@%D0NT~dOGcuz> ze#<(*3Z8*jJvbzO_ap~R+}`(&Y879YMi06D9Ecf(qkZ1{+o42y5Tbs^C-grjyC-%_ zibe};@#EUu)gnM@J^(LTAu>i5hL$8a6eDd)#XC#K_y4#FJLy86!^a$6V3vzNE^xBd z#sHRssN9XNC;MbxnGocmY+xVNJ1;=twp|18Z!O@BBMU$QfDi~Txok^?KuWTfcb|DL zC8OKr@c$#CP!u6){uml9IUK+DVFpZN@d_j+$QjKDh%5l6_HH^NqHNR1r{&(jrnGyt z?1!dAiI#I>2agW=FDiDTkG6=u$ok~b#m0t|-qB0Nl%EB2w=F9^C0SG*i%nS+U)S!n zLI?GD@wCzu^w4~V9v?S!rW<$bokD$E_>l4XA8Lyar6?Bb2dDWqq9(6f7(V<1IWoz$ z*9cJd8(5UpMk)`o?PM9UrO;%|89>VE5Bh|OSd-gnl4ansE$atY@k}Qz;EQBaLZx zAjt=IKnzW2RTY^XIzK4u@Eyz;Inm;~{N_CyIKG9u>LZ8A$;)r=R)OMM~vHn*8_EEenNl^VWuwPxn=)7UczfCkQz`%r4(F@RHOgLhW6}LOd6BqJ5d<50 ze(Tp#@;9*7?`+4GwPkJn6t(sII(sO)55%~8AZ06{GW^kO2tlK{wv=k}aaiKrt#@~y zi2}A-(b1weS@(_+4IT%XqVU(DK3;B1CdQr1PQ%D7BiXeoSM7N;r-wNaZ`*mF|g>2f#U7uunMXt}2Bmxs^d}O!ooMdj-A|p(%_ei$e52EN4PYFASxNkt7 z`V7APS(kJ(^5U#^oZENI)A^74grWsMn4TVWzBFXxAqT6whh%ls+BNj| zUQ?TOtfR9M6Z6DGaeFU4<70fc*j5pSnN=_;UiGPbx3JjUU$|z~$$wWJY>JlqeX8jge00A!)$Yv2JFZHp z61yYBDAX6i!qOnBAKcg=D2QwjgsHU4ht_km;RxMbu5=ks=oL$;pys6X;aX62%28M) zPe@_^S~;vIQb()8!CCw(V8;hbBAu`D*qh9(>G@9wME?)FO;lrk*u?Obx0@@goYS?G z^T!XE+Sq;if2IQ&&7BZpm>A7~sT|jeSSY7kn(S`vxSLy3GxUjt>UaBxfaglW1i8}O zZT$m7tX&P!iC-=gv0v2`uVq88p|&-K$Q?dz-Z{2#LcZ}+;6G4n>iCX@@eWxJGWW?7 z+&wFt*O3n9iQ8acyYohz*LV6a3376YULP4GwmeUS6*mLz={&Qkowet;^~r#@KF)EF zfctH|i3xVBI89OT2TYQRLg(~7xDl0jDHN!>4)NE?QcPin|lrgioGThzXo&QI)^S;whZ?y$D` z4+n)`(2$s<@OE!-u7J7f}d1 z{*1Sj%J6QJZDAUnFL*s~fjw?A!s z(;G{2u4_V>%|YB7#z|G&PlX-@zl=r0aB5z+=XcsN@bk&m1t(5Xk~~Gy&R@v4H_-<< z-_;BOgS{}R#dsde^yJORj1C!&9G^N8E@|g;3g({)OOIrlI}BtzW3|h|0%bJVo1yQh zH`#{-O_tusja{LDC}I!U?ZbBb)tcY`-AR<9xIacUb-qLfJ-mmDaBS1V;X76xG9tQ0 zgoh);ee2!CK6CLnUzMc)N!ekeRhW!SICiXZ8Mj95R7r<|5EE@)mVt4>xG0fLX~OCb z1N4XUHbTgE)EJj8-UyKiXn_i`m^cb|mtD!87@>=yZASo-87&Hu=%+hVZ1P^OD z2^GI1{0_XdXZw*2=8bpQcU~o^ko$XKM%EH$1t(h-oY0I&(cgcvD1z>UnNq`D$}7n1 zO8^H|09Z;Uk!wvDuVbr3Qo=+7vZ*tyrs*xEup|skmaKC{5cU9cP&fN<@Ok6XINR}n z4hgt!AQWo-2~pd#RMP-(BVe2YAW6kVaXa4yV!(EU!vL1A3WV5F9*-spn6T%7Zep|4 z=X$^cpIw?`%up z&Rze3F5=ftoHA?lDx(h|tF}IgXi>>ShF;c4g~?C8-kN=CPU=K#@6&gT*>B;h!Vx6s zERX9c-lFAu<|!iQUE#eI8v1d&Ah)zV+Yhkkh-J;Wv{zfy$aC`R3SQh)j zirP@@0X}vST5e9owM+??T8&7!oVd8J;!YV>hIB!~me!^Z2I zr5JE&NV{n*h0#gTFkK9*=DFtk#dJCjR`Acvz zkX)y>Om|mlIB|Ps(wM*%V6)*)Ou}XB#pM4W%FS^^u*?<#qj;0VL#cukqsY#ABzP_ z6QwxJ@*;Myn+|j$zm&BRGBq#oo1f)^&$cId0dUBLEm~0I)L3ZLc_{}lD-itmvW)W! z3dswlkYXax?s)$D$?mL1U71pqq3N^i=UE6BBkxF~9MeCL2PaFAX0eN{H!@!{888(r zb?i{0vSJpa=vuPN@(8Prv#!ph zkjmDaiMiH}pg2|+SuJig1~!gm=Y%~^S7+?phU|mN#^sr^iB4hG;CJ@QLEDTsu_y3| zHizWjs)!D7b?DQgE{Q06jXZ}a?i-rz*F0;Aa=WS$%Pw;1qqdK;sTfyo?cN}cG?*im z%8oY^#i{hRir;Omy}5K+%}`xxw*#Nyg&SdAwU7^DoKv4CV-HpIXpy)mQZS7u)3SI~ zX>BiTPWLdbH)l2v_${yr;O#z$@;S7vLcyDR=ql9dzfK&RzV>)8`n!sl9@Lh$o>Qe5 zRhgPC;BJ2M`{2h1ZNyP}VM{IlaNn0&j0ZZCPp3zZDW=P@gS8aTg0x6kz^2sv6 zlqx9=6hG#5yr1P;)B2rn^Q?=1!Er2gwH!1_9aZctM~_`bA~R(R3Z8D!>r-mhe&iTA zI#};|mEJ0gU@ztty4n3)X6jjf&DGKN9Omkc{8w77?2q%Mr$!&S4KV2iDy3iCZl!Cg zy?`dd%pm)bkSXS@WB5%b18*3RsFoNp=w#9fHKzEf=E|??&neSUR}QUw zR{pr8F;I~>(Uj&)5ZD7sbkB1y*-@dG`)Pxvms@I`*bI57BV-`d-S7v^MH z(|x|tH5rO|MbCyH7Fr{trH*=rZ3!0p8*YC<(}OVn8g`>qZ#Ho+(0yz+6+ql}hF}v* ztb9v!6e@erAWQd}f3kIubdf*&&P|?7@O%8HFQ*l#{0MhXTgTdynri#ob0;@T(;o~R z(AV!n=%-g%W^)DXa{clN%#A;45t*6=J*SB0CrdGGZ9N%b2D;Nwiv$pN#iB)56d6{` zmKMWXrIQ2@SSSf-| z=MvqMT6o{I*lUK5#cCWYCS zvp)V-f^WYr2C&qv>(kOauM!b}n8*+Q2Rbc4^|eEi0~=GK7~K@S{A|C_y`oT>gR%6^ z!lX$?=1X`5Uz;ErQCJ%{z%x8YD7;Bw#uh2uX-qU3>rJ|OaT#7sFuABA4TaDAK5%wU z0ot5o)cAlOH>0XxNl{-Q6^_H~1$gmxRe_7aX%1erq5|9QaH!WlPOzjXCcq3Kw>k@H zh6CRRwyl}e8o&v3a)!fpRS0msjYX15V`MRBVb7Lo(sWP)fEmO^)e#fWh04^qjV~vS ztE|(Y=#Twqu&=3fh>dgRlbu+3$Kr9m#Y75-9besZd?I!oDWA~sR_))Gm9-8dZ|{U=B;ZR2o3TN)!tJ7| z&{7f%f7$y7WQtdT5NyTjKS>&TgF}24fp@1s5BCYE;BmY1HQ*$~w&89U= zWhu-oyVbtIwu=4m`G<&+pl7P(k^3R}ALMXDZlapsLaV6{pB(DBCPnHTt-IMxK#lk! z3@kx&s&as81jsFCDXGZ(j8Ov100SHQpgEoPV}>+(5=Vua_?6HffUG9~FTDE847g8* zO3IjmQgl?hRa325J4s2@eSTJuw&F0sI_BFUb5C8+xCRZr$nyr>^mf`3vg@`(&dSA) zxqvmFvJU0eZmV_sM$7WXpYv5Cp$NQ!cKYS)!+Rt^vGkVGijajrznsd-v!lAM@1pr) zfpdks`DwrP{j_=pE!oxmMQbO!o*mQ5^WW@M%ZT07g-=CXq;NEu<3kKFyB2U}GaMLp z3jR6H5|q#y`K$!oPT9YC((MN?yb~N$MQ+VlAM7(T5z0(o6JT$|3Km>4T*$^c0-}8L zi@AnoH+)nrNtEvq!U;+W&JaGuG4gxh{uo&d8r-hx?)Q%R`@Z<^Ylj{MptjJwG{W*) zV?%)7;&p6tw0}eN!Q#b2mpuONWRmagc120XoNXwVeOuV)h+hMP46z_!NP>*ngSBwR zucHOz-k@XbuD{BH4`GC%;}1`W2yN|@DsYzN!8TV`(wjbsWlrLCb2UhEI$cL>Wpj>d z2gMNwY}I;m=$u|2H6!i{P84^@IzRj73q6U3HJ>Bq%pYozDX*IE8=~}k+c>>{OOMQW zg*iEYqg!?66VV_0x$l%gwr00Cu%9ltkDDYGtbzgjIFPPieo*(7D6Z)bFQuS>!yQSv znXYqRzH$8>!|^p&T`>}=RdrM-nd|z=vy3yK_cYJEybW10AOLU$Z~`K5yE^j=YXai0~^h?0v2vKMr_>$y0siSnNG4xLsgKSF&fN zuijaL2E(5Z3Eyb`Le(z(ne#mS&Yx-`D10DP?D>i9QL%Ac9wViwQ3;p+tq=&K+cH!> zNUK7nG)Cn&>{e!OD1OuqRz@j=5-xZ*F9p?qK0OF?S~=lpRocwjPz*IVNX#`@A*S`9 zk1<&L4!7)g-*ZOy6p}EZyNHc!L}`-g0B^htCx8A!XYIR@Z zWpUa(5hOY#v#cx)&wYP5xyR|Q`U6p)7HyL6gwN&>?>%{KZeAaS>GzYCG`7Cao_LsX zADhlOE%-nwG~oF9PVQ0iI#POz`252-gir}-J|_yyzFm|!Lf0r~ZgVoA!Ic6AzI+fF ztkkJ$?)--8P&P*G?ICo_mTm&CV&JALxtF0&*jXZ5KOJz%z&*^qo_8Y-U7S! zYmgXX9||)!)~fkzC?4!|**-J{qW2Ry053zkD^~#^F@PSFOw=u~K%qI2F-q`VfDS7P zYZVU;{tM;z1aSBc9t@CT;Itl6Tdo;Dt%v*mR>RqS`VFJez(n&kwTZ`TJLo z!)~!ih#(51wBFo#IxZs3Qpr>;Cgf?91Aco6zW(=rLh=)d!P?Z#s-FHks<(adqTwyptQ6($SS9L z(ZccY@X-LE^jkp7E(CB<_y6ML#EVrqzH1s?B?Sw0jvTj^05A@Z&QBBOw%s_INDkKT zm$2+yXn5Med_R^}kSng>d6&N4lj7v?J73x?i-g>VaSKkrjri6(kq+`YZY!lc3I8xc zp)jMv7W@DXD?s-MusyfPDxU(MKLU8k63cMqMuDMfX=TMm+ff-^XqhlDss;U~*~^0` zq}hAxP66cUnux#isY|Wjc8#qri|Ay{E(8HK^#F9l1=(89C_u9M&gj3p@wl}mz1Vhc z0sENMJ?K#yU8`gt@PHF}dCwPVO_sh@`>5h8p)^g~v)t9`$8vvsV3)iD8|^E|P#9Oz zylEAMcmRWcXk&K8k2RX%cSuZP&(>pW3K&}TJ|^}a`f)>kdx&k!Mz#JP z+c2x_8g%TdV3H8 zUfp#%eV9vhN)z%X?VJdW_5y}fl+0_%UP4CxiU4h0;;)C#%TVI0==?L=hz)iw*sIhL zz$kZQTeZITrKVLyP~pk)3Q1nYE7?{Bb{d9&oYkB95U-!Q5D`^7mKZcu`lI&`=OptZ zKQKtFesgT*YOY>N&bEB*)Gn9K={C8=-9#A@+uUXw8>wb zf3eaY_00rw9;XqGF270J^JwF*KQdhRk_QW(_OjFADyL{f*jH?&al6m90-mY_! zjgf|UJNYu_@84|JbDIz?QJXR=AiLpVcF}vU`Enuc<_kv14culqSF{8`S+

};%6W_W-xp35g}gD^jUa8=L60C_s3wiQN3SHb15^NWe~Zrr*s^Y$2X}Kh=5;{^n3%F!qpgAJ0KS!A zF}w?k?r=_9^ zMl1p=4uzt>lvBmZ--X|i$CU~G2eQf;@wvt5^pBS>XF7=)3Fj5`V2r2PT!0aYPYoEH z=;ZzjW&5J8y8?mjk=%+c3L`!mI$1SZtp^UbqX21BGgb|Eu$v27-igauZy5A(ciQqp%5dmfv$s-Dv7ZL_G8zpiZr_vV2`CHH^But^gjnKK0Q-clnYpBE0y*T+&Tmm5k^ z@SUDjgH5Jb*(hW#0U(7SdFKF4`C0m`IXPMWHLu}G~j$j>##|5y^AY-A`Xk+KfJp2-Mx_YKP#J;}3iaZ5X z@n7sclHS|%x*`i5fW({^I|4xlU{MFIEgO9111_DgY*LP|Gz_Kmo8M;b7vS^bPe5zjPhi zg0dU*5Jd@nBCZ%dbu_h(CHvTCLe&@ow+C>$$_of?)qAl&2tGKo;s|i?0+he;(G4ka zpeCZ|)us$HErsgz7Z=J*V_tvGBW$Pcj zgwZu>CBMk!hs7PTbfiAp?^aRQ3m0f;w0jU1UE-oH3mqgGrT|3PGc=Oj=F0iPn>|_A z6M{$>Nu5Mv`!8GR{Ka{osy`!twjPunC%W>tI-Bi8&Agw>gs}h=((utK`$i z!Bq*Lg5I#hPoJ(@gqWY3+J@6A_g%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< literal 0 HcmV?d00001 diff --git a/examples/Pipeline/PaddleDetection/yolov3/README.md b/examples/Pipeline/PaddleDetection/yolov3/README.md new file mode 100644 index 00000000..8340f106 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/README.md @@ -0,0 +1,19 @@ +# YOLOv3 model on Pipeline Paddle Serving + +([简体中文](./README_CN.md)|English) + +### Get Model +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/yolov3_darknet53_270e_coco.tar +``` + +### Start the service +``` +tar xf yolov3_darknet53_270e_coco.tar +python3 web_service.py +``` + +### Perform prediction +``` +python3 pipeline_http_client.py +``` diff --git a/examples/Pipeline/PaddleDetection/yolov3/README_CN.md b/examples/Pipeline/PaddleDetection/yolov3/README_CN.md new file mode 100644 index 00000000..aff60651 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/README_CN.md @@ -0,0 +1,19 @@ +# YOLOv3 model on Pipeline Paddle Serving + +(简体中文|[English](./README.md)) + +### 获取模型 +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/pddet_demo/2.0/yolov3_darknet53_270e_coco.tar +``` + +### 启动 WebService +``` +tar xf yolov3_darknet53_270e_coco.tar +python3 web_service.py +``` + +### 执行预测 +``` +python3 pipeline_http_client.py +``` diff --git a/examples/Pipeline/PaddleDetection/yolov3/benchmark.py b/examples/Pipeline/PaddleDetection/yolov3/benchmark.py new file mode 100644 index 00000000..cb73d2f9 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/benchmark.py @@ -0,0 +1,132 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import yaml +import requests +import time +import json +import cv2 +import base64 + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device, gpu_id): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 30} + if device == "gpu": + config["op"]["yolov3"]["local_service_conf"]["device_type"] = 1 + config["op"]["yolov3"]["local_service_conf"]["devices"] = gpu_id + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18082/yolov3/prediction" + with open(os.path.join(".", "000000570688.jpg"), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + latency_list = [] + start = time.time() + total_num = 0 + while True: + l_start = time.time() + data = {"key": [], "value": []} + for j in range(batch_size): + data["key"].append("image_" + str(j)) + data["value"].append(image) + r = requests.post(url=url, data=json.dumps(data)) + l_end = time.time() + total_num += 1 + end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + if end - start > 70: + #print("70s end") + break + return [[end - start], latency_list, [total_num]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + pass + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + gpu_id = sys.argv[5] + gen_yml(device, gpu_id) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleDetection/yolov3/benchmark.sh b/examples/Pipeline/PaddleDetection/yolov3/benchmark.sh new file mode 100644 index 00000000..e3ac2f79 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/benchmark.sh @@ -0,0 +1,44 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.6" +modelname="det-yolov3" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 8 12 16 +do + for batch_size in 1 + do + echo "----${modelname} thread num: ${thread_num} batch size: ${batch_size} mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleDetection/yolov3/benchmark_config.yaml b/examples/Pipeline/PaddleDetection/yolov3/benchmark_config.yaml new file mode 100644 index 00000000..055e96c7 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/benchmark_config.yaml @@ -0,0 +1,32 @@ + +cuda_version: "10.1" +cudnn_version: "7.6" +trt_version: "6.0" +python_version: "3.7" +gcc_version: "8.2" +paddle_version: "2.0.2" + +cpu: "Xeon 6148" +gpu: "P4" +xpu: "None" +api: "" +owner: "wangjiawei04" + +model_name: "yolov3" +model_type: "static" +model_source: "paddledetection" +model_url: "" + +batch_size: 1 +num_of_samples: 1000 +input_shape: "3, 480, 640" + +runtime_device: "gpu" +ir_optim: true +enable_memory_optim: true +enable_tensorrt: false +precision: "fp32" +enable_mkldnn: true +cpu_math_library_num_threads: "" + + diff --git a/examples/Pipeline/PaddleDetection/yolov3/config.yml b/examples/Pipeline/PaddleDetection/yolov3/config.yml new file mode 100644 index 00000000..0f6d839e --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/config.yml @@ -0,0 +1,29 @@ +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: false + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + tracer: + interval_s: 30 +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18082 +op: + yolov3: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 10 + local_service_conf: + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + # device_type, 0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: '2' + #Fetch结果列表,以bert_seq128_model中fetch_var的alias_name为准, 如果没有设置则全部返回 + fetch_list: + - save_infer_model/scale_0.tmp_1 + #模型路径 + model_config: serving_server/ +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 9998 +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +#当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 20 diff --git a/examples/Pipeline/PaddleDetection/yolov3/label_list.txt b/examples/Pipeline/PaddleDetection/yolov3/label_list.txt new file mode 100644 index 00000000..941cb4e1 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/label_list.txt @@ -0,0 +1,80 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +dining table +toilet +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/examples/Pipeline/PaddleDetection/yolov3/pipeline_http_client.py b/examples/Pipeline/PaddleDetection/yolov3/pipeline_http_client.py new file mode 100644 index 00000000..5ef29ba5 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/pipeline_http_client.py @@ -0,0 +1,35 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +url = "http://127.0.0.1:18082/yolov3/prediction" +with open(os.path.join(".", "000000570688.jpg"), 'rb') as file: + image_data1 = file.read() +image = cv2_to_base64(image_data1) + +for i in range(1): + data = {"key": ["image"], "value": [image]} + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) diff --git a/examples/Pipeline/PaddleDetection/yolov3/web_service.py b/examples/Pipeline/PaddleDetection/yolov3/web_service.py new file mode 100644 index 00000000..fa55f780 --- /dev/null +++ b/examples/Pipeline/PaddleDetection/yolov3/web_service.py @@ -0,0 +1,77 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import sys +import cv2 +from paddle_serving_app.reader import * +import base64 + + +class Yolov3Op(Op): + def init_op(self): + self.img_preprocess = Sequential([ + BGR2RGB(), Div(255.0), + Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225], False), + Resize((640, 640)), Transpose((2, 0, 1)) + ]) + self.img_postprocess = RCNNPostprocess("label_list.txt", "output") + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + imgs = [] + #print("keys", input_dict.keys()) + for key in input_dict.keys(): + data = base64.b64decode(input_dict[key].encode('utf8')) + data = np.fromstring(data, np.uint8) + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + im = self.img_preprocess(im) + imgs.append({ + "image": im[np.newaxis, :], + "im_shape": + np.array(list(im.shape[1:])).reshape(-1)[np.newaxis, :], + "scale_factor": np.array([1.0, 1.0]).reshape(-1)[np.newaxis, :], + }) + feed_dict = { + "image": np.concatenate( + [x["image"] for x in imgs], axis=0), + "im_shape": np.concatenate( + [x["im_shape"] for x in imgs], axis=0), + "scale_factor": np.concatenate( + [x["scale_factor"] for x in imgs], axis=0) + } + #for key in feed_dict.keys(): + # print(key, feed_dict[key].shape) + return feed_dict, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + #print(fetch_dict) + res_dict = { + "bbox_result": + str(self.img_postprocess( + fetch_dict, visualize=False)) + } + return res_dict, None, "" + + +class Yolov3Service(WebService): + def get_pipeline_response(self, read_op): + yolov3_op = Yolov3Op(name="yolov3", input_ops=[read_op]) + return yolov3_op + + +yolov3_service = Yolov3Service(name="yolov3") +yolov3_service.prepare_pipeline_config("config.yml") +yolov3_service.run_service() diff --git a/examples/Pipeline/PaddleNLP/bert/README.md b/examples/Pipeline/PaddleNLP/bert/README.md new file mode 100644 index 00000000..c396b77c --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/README.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +This document will takes Imagenet service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_data.sh +``` + +## Start server + +``` +python3 web_service.py &>log.txt & +``` + +## RPC test +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleNLP/bert/README_CN.md b/examples/Pipeline/PaddleNLP/bert/README_CN.md new file mode 100644 index 00000000..841abdad --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/README_CN.md @@ -0,0 +1,19 @@ +# Imagenet Pipeline WebService + +这里以 Imagenet 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_data.sh +``` + +## 启动服务 + +``` +python3 web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_rpc_client.py +``` diff --git a/examples/Pipeline/PaddleNLP/bert/benchmark.py b/examples/Pipeline/PaddleNLP/bert/benchmark.py new file mode 100644 index 00000000..ccdbbdf5 --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/benchmark.py @@ -0,0 +1,151 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency +''' +2021-03-16 10:26:01,832 ==================== TRACER ====================== +2021-03-16 10:26:01,838 Op(bert): +2021-03-16 10:26:01,838 in[5.7833 ms] +2021-03-16 10:26:01,838 prep[8.2001 ms] +2021-03-16 10:26:01,838 midp[198.79853333333332 ms] +2021-03-16 10:26:01,839 postp[0.8411 ms] +2021-03-16 10:26:01,839 out[0.9440666666666667 ms] +2021-03-16 10:26:01,839 idle[0.03135320683677345] +2021-03-16 10:26:01,839 DAGExecutor: +2021-03-16 10:26:01,839 Query count[30] +2021-03-16 10:26:01,839 QPS[3.0 q/s] +2021-03-16 10:26:01,839 Succ[1.0] +2021-03-16 10:26:01,839 Error req[] +2021-03-16 10:26:01,839 Latency: +2021-03-16 10:26:01,839 ave[237.85519999999997 ms] +2021-03-16 10:26:01,839 .50[179.937 ms] +2021-03-16 10:26:01,839 .60[179.994 ms] +2021-03-16 10:26:01,839 .70[180.515 ms] +2021-03-16 10:26:01,840 .80[180.735 ms] +2021-03-16 10:26:01,840 .90[182.275 ms] +2021-03-16 10:26:01,840 .95[182.789 ms] +2021-03-16 10:26:01,840 .99[1921.33 ms] +2021-03-16 10:26:01,840 Channel (server worker num[1]): +2021-03-16 10:26:01,840 chl0(In: ['@DAGExecutor'], Out: ['bert']) size[0/0] +2021-03-16 10:26:01,841 chl1(In: ['bert'], Out: ['@DAGExecutor']) size[0/0] +''' + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["bert"]["local_service_conf"]["device_type"] = 1 + config["op"]["bert"]["local_service_conf"]["devices"] = "2" + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18082/bert/prediction" + start = time.time() + with open("data-c.txt", 'r') as fin: + start = time.time() + lines = fin.readlines() + start_idx = 0 + while start_idx < len(lines): + end_idx = min(len(lines), start_idx + batch_size) + feed = {} + for i in range(start_idx, end_idx): + feed[str(i - start_idx)] = lines[i] + keys = list(feed.keys()) + values = [feed[x] for x in keys] + data = {"key": keys, "value": values} + r = requests.post(url=url, data=json.dumps(data)) + start_idx += batch_size + if start_idx > 2000: + break + end = time.time() + return [[end - start]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_http, thread, batch_size) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:9998']) + with open("data-c.txt", 'r') as fin: + start = time.time() + lines = fin.readlines() + start_idx = 0 + while start_idx < len(lines): + end_idx = min(len(lines), start_idx + batch_size) + feed = {} + for i in range(start_idx, end_idx): + feed[str(i - start_idx)] = lines[i] + ret = client.predict(feed_dict=feed, fetch=["res"]) + start_idx += batch_size + if start_idx > 1000: + break + end = time.time() + return [[end - start]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + gen_yml(device) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleNLP/bert/benchmark.sh b/examples/Pipeline/PaddleNLP/bert/benchmark.sh new file mode 100644 index 00000000..bff0fd8e --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/benchmark.sh @@ -0,0 +1,59 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.7" +modelname="bert" +# HTTP +ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname +for thread_num in 1 8 16 +do + for batch_size in 1 10 100 + do + echo "----Bert thread num: $thread_num batch size: $batch_size mode:http ----" >>profile_log_$modelname + rm -rf PipelineServingLogs + rm -rf cpu_utilization.py + python3 web_service.py >web.log 2>&1 & + sleep 3 + nvidia-smi --id=2 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_use.log 2>&1 & + nvidia-smi --id=2 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + python3 benchmark.py run http $thread_num $batch_size + python3 cpu_utilization.py >>profile_log_$modelname + ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 + python3 benchmark.py dump benchmark.log benchmark.tmp + mv benchmark.tmp benchmark.log + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$modelname + cat benchmark.log >> profile_log_$modelname + #rm -rf gpu_use.log gpu_utilization.log + done +done +# RPC +ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +python3 benchmark.py yaml local_predictor 1 gpu + +for thread_num in 1 8 16 +do + for batch_size in 1 10 100 + do + echo "----Bert thread num: $thread_num batch size: $batch_size mode:rpc ----" >>profile_log_$modelname + rm -rf PipelineServingLogs + rm -rf cpu_utilization.py + python3 web_service.py >web.log 2>&1 & + sleep 3 + nvidia-smi --id=2 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_use.log 2>&1 & + nvidia-smi --id=2 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + python3 benchmark.py run rpc $thread_num $batch_size + python3 cpu_utilization.py >>profile_log_$modelname + ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 + python3 benchmark.py dump benchmark.log benchmark.tmp + mv benchmark.tmp benchmark.log + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "GPU_UTILIZATION:", max}' gpu_utilization.log >> profile_log_$modelname + #rm -rf gpu_use.log gpu_utilization.log + cat benchmark.log >> profile_log_$modelname + done +done diff --git a/examples/Pipeline/PaddleNLP/bert/config.yml b/examples/Pipeline/PaddleNLP/bert/config.yml new file mode 100644 index 00000000..5f122664 --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/config.yml @@ -0,0 +1,32 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 20 +#build_dag_each_worker, False,框架在进程内创建一条DAG;True,框架会每个进程内创建多个独立的DAG +build_dag_each_worker: false + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: false + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + tracer: + interval_s: 10 +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18082 +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 9998 +op: + bert: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 2 + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + # device_type, 0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 1 + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: '2' + #Fetch结果列表,以bert_seq128_model中fetch_var的alias_name为准, 如果没有设置则全部返回 + fetch_list: + #bert模型路径 + model_config: bert_seq128_model/ diff --git a/examples/Pipeline/PaddleNLP/bert/get_data.sh b/examples/Pipeline/PaddleNLP/bert/get_data.sh new file mode 100644 index 00000000..b10a69af --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/get_data.sh @@ -0,0 +1,6 @@ +wget https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/SemanticModel/bert_chinese_L-12_H-768_A-12.tar.gz +tar -xzf bert_chinese_L-12_H-768_A-12.tar.gz +mv bert_chinese_L-12_H-768_A-12_model bert_seq128_model +mv bert_chinese_L-12_H-768_A-12_client bert_seq128_client +wget https://paddle-serving.bj.bcebos.com/bert_example/data-c.txt --no-check-certificate +wget https://paddle-serving.bj.bcebos.com/bert_example/vocab.txt --no-check-certificate diff --git a/examples/Pipeline/PaddleNLP/bert/pipeline_rpc_client.py b/examples/Pipeline/PaddleNLP/bert/pipeline_rpc_client.py new file mode 100644 index 00000000..1ce1998a --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/pipeline_rpc_client.py @@ -0,0 +1,37 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import yaml +import requests +import time +import json +from paddle_serving_server.pipeline import PipelineClient +import numpy as np + +client = PipelineClient() +client.connect(['127.0.0.1:9998']) +batch_size = 101 +with open("data-c.txt", 'r') as fin: + lines = fin.readlines() + start_idx = 0 + while start_idx < len(lines): + end_idx = min(len(lines), start_idx + batch_size) + feed = {} + for i in range(start_idx, end_idx): + feed[str(i - start_idx)] = lines[i] + ret = client.predict(feed_dict=feed, fetch=["res"]) + print(ret) + start_idx += batch_size diff --git a/examples/Pipeline/PaddleNLP/bert/web_service.py b/examples/Pipeline/PaddleNLP/bert/web_service.py new file mode 100644 index 00000000..46495a85 --- /dev/null +++ b/examples/Pipeline/PaddleNLP/bert/web_service.py @@ -0,0 +1,61 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import sys +from paddle_serving_app.reader import ChineseBertReader +_LOGGER = logging.getLogger() + + +class BertOp(Op): + def init_op(self): + self.reader = ChineseBertReader({ + "vocab_file": "vocab.txt", + "max_seq_len": 128 + }) + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + print("input dict", input_dict) + batch_size = len(input_dict.keys()) + feed_res = [] + for i in range(batch_size): + feed_dict = self.reader.process(input_dict[str(i)].encode("utf-8")) + for key in feed_dict.keys(): + feed_dict[key] = np.array(feed_dict[key]).reshape( + (1, len(feed_dict[key]), 1)) + feed_res.append(feed_dict) + feed_dict = {} + for key in feed_res[0].keys(): + feed_dict[key] = np.concatenate([x[key] for x in feed_res], axis=0) + print(key, feed_dict[key].shape) + return feed_dict, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + new_dict = {} + new_dict["pooled_output"] = str(fetch_dict["pooled_output"]) + new_dict["sequence_output"] = str(fetch_dict["sequence_output"]) + return new_dict, None, "" + + +class BertService(WebService): + def get_pipeline_response(self, read_op): + bert_op = BertOp(name="bert", input_ops=[read_op]) + return bert_op + + +bert_service = BertService(name="bert") +bert_service.prepare_pipeline_config("config.yml") +bert_service.run_service() diff --git a/examples/Pipeline/PaddleOCR/ocr/README.md b/examples/Pipeline/PaddleOCR/ocr/README.md new file mode 100644 index 00000000..4c669b3c --- /dev/null +++ b/examples/Pipeline/PaddleOCR/ocr/README.md @@ -0,0 +1,60 @@ +# OCR Pipeline WebService + +(English|[简体中文](./README_CN.md)) + +This document will take OCR as an example to show how to use Pipeline WebService to start multi-model tandem services. + +This OCR example only supports Process OP. + +## Get Model +``` +python3 -m paddle_serving_app.package --get_model ocr_rec +tar -xzvf ocr_rec.tar.gz +python3 -m paddle_serving_app.package --get_model ocr_det +tar -xzvf ocr_det.tar.gz +``` + +## Get Dataset (Optional) +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/ocr/test_imgs.tar +tar xf test_imgs.tar +``` + +## Run services + +### 1.Start a single server and client. +``` +python3 web_service.py &>log.txt & +``` + +Test +``` +python3 pipeline_http_client.py +``` + + + + +### 2.Run benchmark +``` +python3 web_service.py &>log.txt & +``` + +Test +``` +sh benchmark.sh +``` diff --git a/examples/Pipeline/PaddleOCR/ocr/README_CN.md b/examples/Pipeline/PaddleOCR/ocr/README_CN.md new file mode 100644 index 00000000..c6c2064a --- /dev/null +++ b/examples/Pipeline/PaddleOCR/ocr/README_CN.md @@ -0,0 +1,60 @@ +# OCR Pipeline WebService + +([English](./README.md)|简体中文) + +本文档将以 OCR 为例,介绍如何使用 Pipeline WebService 启动多模型串联的服务。 +本示例仅支持进程OP模式。 + +## 获取模型 +``` +python3 -m paddle_serving_app.package --get_model ocr_rec +tar -xzvf ocr_rec.tar.gz +python3 -m paddle_serving_app.package --get_model ocr_det +tar -xzvf ocr_det.tar.gz +``` + +## 获取数据集(可选) +``` +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/ocr/test_imgs.tar +tar xf test_imgs.tar +``` + +## 启动 WebService + +### 1.启动单server、单client +``` +python3 web_service.py &>log.txt & +``` + +## 测试 +``` +python3 pipeline_http_client.py +``` + + + +### 2.启动 benchmark +``` +python3 web_service.py &>log.txt & +``` + +Test +``` +sh benchmark.sh +``` diff --git a/examples/Pipeline/PaddleOCR/ocr/benchmark.py b/examples/Pipeline/PaddleOCR/ocr/benchmark.py new file mode 100644 index 00000000..3c1243a1 --- /dev/null +++ b/examples/Pipeline/PaddleOCR/ocr/benchmark.py @@ -0,0 +1,163 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import base64 +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def parse_benchmark(filein, fileout): + with open(filein, "r") as fin: + res = yaml.load(fin, yaml.FullLoader) + del_list = [] + for key in res["DAG"].keys(): + if "call" in key: + del_list.append(key) + for key in del_list: + del res["DAG"][key] + with open(fileout, "w") as fout: + yaml.dump(res, fout, default_flow_style=False) + + +def gen_yml(device): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 10} + if device == "gpu": + config["op"]["det"]["local_service_conf"]["device_type"] = 1 + config["op"]["det"]["local_service_conf"]["devices"] = "2" + config["op"]["rec"]["local_service_conf"]["device_type"] = 1 + config["op"]["rec"]["local_service_conf"]["devices"] = "2" + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:9999/ocr/prediction" + start = time.time() + test_img_dir = "imgs/" + #test_img_dir = "rctw_test/images/" + latency_list = [] + total_number = 0 + for img_file in os.listdir(test_img_dir): + l_start = time.time() + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data1 = file.read() + image = cv2_to_base64(image_data1) + data = {"key": ["image"], "value": [image]} + #for i in range(100): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + end = time.time() + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_number = total_number + 1 + return [[end - start], latency_list, [total_number]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_http, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:18090']) + start = time.time() + test_img_dir = "imgs/" + #test_img_dir = "rctw_test/images/" + latency_list = [] + total_number = 0 + for img_file in os.listdir(test_img_dir): + l_start = time.time() + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + print(ret) + l_end = time.time() + latency_list.append(l_end * 1000 - l_start * 1000) + total_number = total_number + 1 + end = time.time() + return [[end - start], latency_list, [total_number]] + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + start = time.time() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + end = time.time() + total_cost = end - start + avg_cost = 0 + total_number = 0 + for i in range(thread): + avg_cost += result[0][i] + total_number += result[2][i] + avg_cost = avg_cost / thread + print("Total cost: {}s".format(total_cost)) + print("Each thread cost: {}s. ".format(avg_cost)) + print("Total count: {}. ".format(total_number)) + print("AVG QPS: {} samples/s".format(batch_size * total_number / + total_cost)) + show_latency(result[1]) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + device = sys.argv[4] + gen_yml(device) + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) + elif sys.argv[1] == "dump": + filein = sys.argv[2] + fileout = sys.argv[3] + parse_benchmark(filein, fileout) diff --git a/examples/Pipeline/PaddleOCR/ocr/benchmark.sh b/examples/Pipeline/PaddleOCR/ocr/benchmark.sh new file mode 100644 index 00000000..e9f3b9eb --- /dev/null +++ b/examples/Pipeline/PaddleOCR/ocr/benchmark.sh @@ -0,0 +1,88 @@ +export FLAGS_profile_pipeline=1 +alias python3="python3.7" +modelname="ocr" + +# HTTP +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +rm -rf profile_log_$modelname + +echo "Starting HTTP Clients..." +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 6 8 12 16 +do + for batch_size in 1 + do + echo "----$modelname thread num: $thread_num batch size: $batch_size mode:http ----" >>profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-gpu=memory.used --format=csv -lms 1000 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 1000 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + # Start http client + python3 benchmark.py run http $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F' ' '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo '' >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi + +echo "Starting RPC Clients..." + +# RPC +#ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 + +# Create yaml,If you already have the config.yaml, ignore it. +#python3 benchmark.py yaml local_predictor 1 gpu +#rm -rf profile_log_$modelname + +# Start a client in each thread, tesing the case of multiple threads. +for thread_num in 1 2 4 6 8 12 16 +do + for batch_size in 1 + do + echo "----$modelname thread num: $thread_num batch size: $batch_size mode:rpc ----" >> profile_log_$modelname + # Start one web service, If you start the service yourself, you can ignore it here. + #python3 web_service.py >web.log 2>&1 & + #sleep 3 + + # --id is the serial number of the GPU card, Must be the same as the gpu id used by the server. + nvidia-smi --id=3 --query-compute-apps=used_memory --format=csv -lms 100 > gpu_use.log 2>&1 & + nvidia-smi --id=3 --query-gpu=utilization.gpu --format=csv -lms 100 > gpu_utilization.log 2>&1 & + echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py + + # Start http client + python3 benchmark.py run rpc $thread_num $batch_size > profile 2>&1 + + # Collect CPU metrics, Filter data that is zero momentarily, Record the maximum value of GPU memory and the average value of GPU utilization + python3 cpu_utilization.py >> profile_log_$modelname + grep -av '^0 %' gpu_utilization.log > gpu_utilization.log.tmp + awk 'BEGIN {max = 0} {if(NR>1){if ($modelname > max) max=$modelname}} END {print "MAX_GPU_MEMORY:", max}' gpu_use.log >> profile_log_$modelname + awk -F" " '{sum+=$1} END {print "GPU_UTILIZATION:", sum/NR, sum, NR }' gpu_utilization.log.tmp >> profile_log_$modelname + + # Show profiles + python3 ../../util/show_profile.py profile $thread_num >> profile_log_$modelname + tail -n 8 profile >> profile_log_$modelname + echo "" >> profile_log_$modelname + done +done + +# Kill all nvidia-smi background task. +pkill nvidia-smi diff --git a/examples/Pipeline/PaddleOCR/ocr/config.yml b/examples/Pipeline/PaddleOCR/ocr/config.yml new file mode 100644 index 00000000..2767fa77 --- /dev/null +++ b/examples/Pipeline/PaddleOCR/ocr/config.yml @@ -0,0 +1,90 @@ +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 18090 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 9999 + +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 20 + +#build_dag_each_worker, False,框架在进程内创建一条DAG;True,框架会每个进程内创建多个独立的DAG +build_dag_each_worker: false + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False + + #重试次数 + retry: 1 + + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + use_profile: false + tracer: + interval_s: 10 + +op: + det: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 6 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #det模型路径 + model_config: ocr_det_model + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["concat_1.tmp_0"] + + # device_type, 0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 0 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "" + + #use_mkldnn + #use_mkldnn: True + + #thread_num + thread_num: 2 + + #ir_optim + ir_optim: True + rec: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 3 + + #超时时间, 单位ms + timeout: -1 + + #Serving交互重试次数,默认不重试 + retry: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #client类型,包括brpc, grpc和local_predictor。local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #rec模型路径 + model_config: ocr_rec_model + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["ctc_greedy_decoder_0.tmp_0", "softmax_0.tmp_0"] + # device_type, 0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 0 + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "" + + #use_mkldnn + #use_mkldnn: True + + #thread_num + thread_num: 2 + + #ir_optim + ir_optim: True diff --git a/examples/Pipeline/PaddleOCR/ocr/imgs/1.jpg b/examples/Pipeline/PaddleOCR/ocr/imgs/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08010177fed2ee8c3709912c06c0b161ba546313 GIT binary patch literal 312292 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

AQ3qosP^V`)@F)@`gO3U;_lE z4*cCGm_AvaMiRQQ^6k6gEpO@9)bZD!4t9^7xA-_$4K4sG>f|W8#&!2s(=aW;QyX7E z$HeHZ%qiMeuC6NQMTFs{j)~K506EckDYG6|>v>Y+X}u^}>A>B(jmB}Sj$$h+*$Q|p zX{JQ>avY~7(`ltIH}(A2LwhUjnTc5?75202;athX(UMd~myWp^JU2XyM`r@d=SK=# z5VXo+?iAowcqN{!!^*)7zN;$ z>|b8?cgHQn;it*zF{{)9?DElM=Cau8F4@=Vkz&h) z&<2wd9Fclcu`ig_hC6UQY~A)9rLEo$~(oaO!Jz zm~LLNN_fjCE2CHYei;U8)-UzBA}+B7Lg`U+$@6C{>8E)yly;35tUCHOv!~lDrv=;Z zbG0ulFi^D$MK!i#QvID7F$A{m+MiWJapIzVTiV%0`AqhlVn->LId2yJYjW#iaP z1h|u)UOe(kwtgGl^TW__Fd&bbJhR9WTJ$sQ#r)L7Fqw*@hP# zde2DsDzzPQ_Z?Ys^aYXfqq(9cI1sITgIrga8P9a2dh-`Kjz9E8*^aCTK-U)-x?!Yq zutYvPc)Q1mA-`?Vt!N<8<~`8@2Vl#4yWUZMT}xsLx{of!B{Az6L66Wmwne5BwEGj4 z

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 Zxhc*+qmz5az}X*X+kPu<$o*gL{{wDD-Y) 0: + rec_batch_res = self.ocr_reader.postprocess( + fetch_data, with_score=True) + for res in rec_batch_res: + res_list.append(res[0]) + elif isinstance(fetch_data, list): + for one_batch in fetch_data: + one_batch_res = self.ocr_reader.postprocess( + one_batch, with_score=True) + for res in one_batch_res: + res_list.append(res[0]) + + res = {"res": str(res_list)} + return res, None, "" + + +class OcrService(WebService): + def get_pipeline_response(self, read_op): + det_op = DetOp(name="det", input_ops=[read_op]) + rec_op = RecOp(name="rec", input_ops=[det_op]) + return rec_op + + +ocr_service = OcrService(name="ocr") +ocr_service.prepare_pipeline_config("config.yml") +ocr_service.run_service() diff --git a/examples/Pipeline/imdb_model_ensemble/README.md b/examples/Pipeline/imdb_model_ensemble/README.md new file mode 100644 index 00000000..c72eab66 --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/README.md @@ -0,0 +1,19 @@ +# IMDB model ensemble examples + +## Get models +``` +sh get_data.sh +``` + +## Start servers + +``` +python3 -m paddle_serving_server.serve --model imdb_cnn_model --port 9292 &> cnn.log & +python3 -m paddle_serving_server.serve --model imdb_bow_model --port 9393 &> bow.log & +python3 test_pipeline_server.py &>pipeline.log & +``` + +## Start clients +``` +python3 test_pipeline_client.py +``` diff --git a/examples/Pipeline/imdb_model_ensemble/README_CN.md b/examples/Pipeline/imdb_model_ensemble/README_CN.md new file mode 100644 index 00000000..79ed5c0c --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/README_CN.md @@ -0,0 +1,19 @@ +# IMDB model ensemble 样例 + +## 获取模型 +``` +sh get_data.sh +``` + +## 启动服务 + +``` +python3 -m paddle_serving_server.serve --model imdb_cnn_model --port 9292 &> cnn.log & +python3 -m paddle_serving_server.serve --model imdb_bow_model --port 9393 &> bow.log & +python3 test_pipeline_server.py &>pipeline.log & +``` + +## 启动客户端 +``` +python3 test_pipeline_client.py +``` diff --git a/examples/Pipeline/imdb_model_ensemble/analyse.py b/examples/Pipeline/imdb_model_ensemble/analyse.py new file mode 100644 index 00000000..61511cea --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/analyse.py @@ -0,0 +1,32 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.pipeline import Analyst +import json +import logging +import sys + +logging.basicConfig(level=logging.INFO) + +if __name__ == "__main__": + if len(sys.argv) < 3: + print("Usage: python analyse.py ") + exit(1) + log_filename = sys.argv[1] + trace_filename = sys.argv[2] + analyst = Analyst(log_filename) + analyst.save_trace(trace_filename) + op_analyst = analyst.get_op_analyst() + op_concurrency = op_analyst.concurrency_analysis("analyse.yaml") + print(json.dumps(op_concurrency, indent=2, separators=(',', ':'))) diff --git a/examples/Pipeline/imdb_model_ensemble/analyse.yaml b/examples/Pipeline/imdb_model_ensemble/analyse.yaml new file mode 100644 index 00000000..9dd28f03 --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/analyse.yaml @@ -0,0 +1,4 @@ +bow: + midp: 0 +cnn: + midp: 1 diff --git a/examples/Pipeline/imdb_model_ensemble/config.yml b/examples/Pipeline/imdb_model_ensemble/config.yml new file mode 100644 index 00000000..2f25fa86 --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/config.yml @@ -0,0 +1,100 @@ +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 18070 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 18071 + +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +#当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 4 + +#build_dag_each_worker, False,框架在进程内创建一条DAG;True,框架会每个进程内创建多个独立的DAG +build_dag_each_worker: False + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: True + + #重试次数 + retry: 1 + + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + use_profile: False + + #channel的最大长度,默认为0 + channel_size: 0 + + #tracer, 跟踪框架吞吐,每个OP和channel的工作情况。无tracer时不生成数据 + tracer: + #每次trace的时间间隔,单位秒/s + interval_s: 10 +op: + bow: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #client连接类型,brpc + client_type: brpc + + #Serving交互重试次数,默认不重试 + retry: 1 + + #Serving交互超时时间, 单位ms + timeout: 3000 + + #Serving IPs + server_endpoints: ["127.0.0.1:9393"] + + #bow模型client端配置 + client_config: "imdb_bow_client_conf/serving_client_conf.prototxt" + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] + + #批量查询Serving的数量, 默认1。batch_size>1要设置auto_batching_timeout,否则不足batch_size时会阻塞 + batch_size: 1 + + #批量查询超时,与batch_size配合使用 + auto_batching_timeout: 2000 + cnn: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #client连接类型,brpc + client_type: brpc + + #Serving交互重试次数,默认不重试 + retry: 1 + + #超时时间, 单位ms + timeout: 3000 + + #Serving IPs + server_endpoints: ["127.0.0.1:9292"] + + #cnn模型client端配置 + client_config: "imdb_cnn_client_conf/serving_client_conf.prototxt" + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["prediction"] + + #批量查询Serving的数量, 默认1。batch_size>1要设置auto_batching_timeout,否则不足batch_size时会阻塞 + batch_size: 1 + + #批量查询超时,与batch_size配合使用 + auto_batching_timeout: 2000 + combine: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #Serving交互重试次数,默认不重试 + retry: 1 + + #超时时间, 单位ms + timeout: 3000 + + #批量查询Serving的数量, 默认1。batch_size>1要设置auto_batching_timeout,否则不足batch_size时会阻塞 + batch_size: 1 + + #批量查询超时,与batch_size配合使用 + auto_batching_timeout: 2000 diff --git a/examples/Pipeline/imdb_model_ensemble/get_data.sh b/examples/Pipeline/imdb_model_ensemble/get_data.sh new file mode 100644 index 00000000..81d8d5d3 --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/get_data.sh @@ -0,0 +1,4 @@ +wget --no-check-certificate https://fleet.bj.bcebos.com/text_classification_data.tar.gz +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/imdb-demo/imdb_model.tar.gz +tar -zxvf text_classification_data.tar.gz +tar -zxvf imdb_model.tar.gz diff --git a/examples/Pipeline/imdb_model_ensemble/test_pipeline_client.py b/examples/Pipeline/imdb_model_ensemble/test_pipeline_client.py new file mode 100644 index 00000000..1737f8f7 --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/test_pipeline_client.py @@ -0,0 +1,36 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.pipeline import PipelineClient +import numpy as np + +client = PipelineClient() +client.connect(['127.0.0.1:18070']) + +words = 'i am very sad | 0' + +futures = [] +for i in range(100): + futures.append( + client.predict( + feed_dict={"words": words, + "logid": 10000 + i}, + fetch=["prediction"], + asyn=True, + profile=False)) + +for f in futures: + res = f.result() + if res.err_no != 0: + print("predict failed: {}".format(res)) + print(res) diff --git a/examples/Pipeline/imdb_model_ensemble/test_pipeline_server.py b/examples/Pipeline/imdb_model_ensemble/test_pipeline_server.py new file mode 100644 index 00000000..30317f0e --- /dev/null +++ b/examples/Pipeline/imdb_model_ensemble/test_pipeline_server.py @@ -0,0 +1,111 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# pylint: disable=doc-string-missing +import numpy as np +from paddle_serving_app.reader.imdb_reader import IMDBDataset +import logging +from paddle_serving_server.web_service import WebService +from paddle_serving_server.pipeline import Op, RequestOp, ResponseOp +from paddle_serving_server.pipeline import PipelineServer +from paddle_serving_server.pipeline.proto import pipeline_service_pb2 +from paddle_serving_server.pipeline.channel import ChannelDataErrcode + +_LOGGER = logging.getLogger() +user_handler = logging.StreamHandler() +user_handler.setLevel(logging.INFO) +user_handler.setFormatter( + logging.Formatter( + "%(levelname)s %(asctime)s [%(filename)s:%(lineno)d] %(message)s")) +_LOGGER.addHandler(user_handler) + + +class ImdbRequestOp(RequestOp): + def init_op(self): + self.imdb_dataset = IMDBDataset() + self.imdb_dataset.load_resource('imdb.vocab') + + def unpack_request_package(self, request): + dictdata = {} + for idx, key in enumerate(request.key): + if key != "words": + continue + words = request.value[idx] + word_ids, _ = self.imdb_dataset.get_words_and_label(words) + word_len = len(word_ids) + dictdata[key] = np.array(word_ids).reshape(word_len, 1) + dictdata["{}.lod".format(key)] = np.array([0, word_len]) + + log_id = None + if request.logid is not None: + log_id = request.logid + return dictdata, log_id, None, "" + + +class CombineOp(Op): + def preprocess(self, input_data, data_id, log_id): + #_LOGGER.info("Enter CombineOp::preprocess") + combined_prediction = 0 + for op_name, data in input_data.items(): + _LOGGER.info("{}: {}".format(op_name, data["prediction"])) + combined_prediction += data["prediction"] + data = {"prediction": combined_prediction / 2} + return data, False, None, "" + + +class ImdbResponseOp(ResponseOp): + # Here ImdbResponseOp is consistent with the default ResponseOp implementation + def pack_response_package(self, channeldata): + resp = pipeline_service_pb2.Response() + resp.err_no = channeldata.error_code + if resp.err_no == ChannelDataErrcode.OK.value: + feed = channeldata.parse() + # ndarray to string + for name, var in feed.items(): + resp.value.append(var.__repr__()) + resp.key.append(name) + else: + resp.err_msg = channeldata.error_info + return resp + + +read_op = ImdbRequestOp() + + +class BowOp(Op): + def init_op(self): + pass + + +class CnnOp(Op): + def init_op(self): + pass + + +bow_op = BowOp("bow", input_ops=[read_op]) +cnn_op = CnnOp("cnn", input_ops=[read_op]) +combine_op = CombineOp("combine", input_ops=[bow_op, cnn_op]) + +# fetch output of bow_op +#response_op = ImdbResponseOp(input_ops=[bow_op]) + +# fetch output of combine_op +response_op = ImdbResponseOp(input_ops=[combine_op]) + +# use default ResponseOp implementation +#response_op = ResponseOp(input_ops=[combine_op]) + +server = PipelineServer() +server.set_response_op(response_op) +server.prepare_server('config.yml') +server.run_server() diff --git a/examples/Pipeline/simple_web_service/README.md b/examples/Pipeline/simple_web_service/README.md new file mode 100644 index 00000000..ce2fc841 --- /dev/null +++ b/examples/Pipeline/simple_web_service/README.md @@ -0,0 +1,19 @@ +# Simple Pipeline WebService + +This document will takes UCI service as an example to introduce how to use Pipeline WebService. + +## Get model +``` +sh get_data.sh +``` + +## Start server + +``` +python3 web_service.py &>log.txt & +``` + +## Http test +``` +curl -X POST -k http://localhost:18082/uci/prediction -d '{"key": ["x"], "value": ["0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332"]}' +``` diff --git a/examples/Pipeline/simple_web_service/README_CN.md b/examples/Pipeline/simple_web_service/README_CN.md new file mode 100644 index 00000000..b7007d36 --- /dev/null +++ b/examples/Pipeline/simple_web_service/README_CN.md @@ -0,0 +1,19 @@ +# Simple Pipeline WebService + +这里以 Uci 服务为例来介绍 Pipeline WebService 的使用。 + +## 获取模型 +``` +sh get_data.sh +``` + +## 启动服务 + +``` +python3 web_service.py &>log.txt & +``` + +## 测试 +``` +curl -X POST -k http://localhost:18082/uci/prediction -d '{"key": ["x"], "value": ["0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332"]}' +``` diff --git a/examples/Pipeline/simple_web_service/benchmark.py b/examples/Pipeline/simple_web_service/benchmark.py new file mode 100644 index 00000000..88c3ea21 --- /dev/null +++ b/examples/Pipeline/simple_web_service/benchmark.py @@ -0,0 +1,85 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os +import yaml +import requests +import time +import json + +from paddle_serving_server.pipeline import PipelineClient +import numpy as np +from paddle_serving_client.utils import MultiThreadRunner +from paddle_serving_client.utils import benchmark_args, show_latency + + +def gen_yml(): + fin = open("config.yml", "r") + config = yaml.load(fin, yaml.FullLoader) + fin.close() + config["dag"]["tracer"] = {"interval_s": 5} + with open("config2.yml", "w") as fout: + yaml.dump(config, fout, default_flow_style=False) + + +def run_http(idx, batch_size): + print("start thread ({})".format(idx)) + url = "http://127.0.0.1:18082/uci/prediction" + start = time.time() + value = "0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332" + all_value = ";".join([value for i in range(batch_size)]) + data = {"key": ["x"], "value": [all_value]} + for i in range(1000): + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + end = time.time() + return [[end - start]] + + +def multithread_http(thread, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_http, thread, batch_size) + + +def run_rpc(thread, batch_size): + client = PipelineClient() + client.connect(['127.0.0.1:9998']) + value = "0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727, -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332" + all_value = ";".join([value for i in range(batch_size)]) + data = {"key": "x", "value": all_value} + for i in range(1000): + ret = client.predict( + feed_dict={data["key"]: data["value"]}, fetch=["res"]) + print(ret) + + +def multithread_rpc(thraed, batch_size): + multi_thread_runner = MultiThreadRunner() + result = multi_thread_runner.run(run_rpc, thread, batch_size) + + +if __name__ == "__main__": + if sys.argv[1] == "yaml": + mode = sys.argv[2] # brpc/ local predictor + thread = int(sys.argv[3]) + gen_yml() + elif sys.argv[1] == "run": + mode = sys.argv[2] # http/ rpc + thread = int(sys.argv[3]) + batch_size = int(sys.argv[4]) + if mode == "http": + multithread_http(thread, batch_size) + elif mode == "rpc": + multithread_rpc(thread, batch_size) diff --git a/examples/Pipeline/simple_web_service/benchmark.sh b/examples/Pipeline/simple_web_service/benchmark.sh new file mode 100644 index 00000000..d73918f8 --- /dev/null +++ b/examples/Pipeline/simple_web_service/benchmark.sh @@ -0,0 +1,43 @@ +# HTTP +ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +python3 benchmark.py yaml local_predictor 1 + +for thread_num in 1 +do +for batch_size in 1 +do +rm -rf PipelineServingLogs +rm -rf cpu_utilization.py +python3 web_service.py >web.log 2>&1 & +sleep 3 +echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py +python3 benchmark.py run http $thread_num $batch_size +python3 cpu_utilization.py +echo "------------Fit a line pipeline benchmark (Thread: $thread_num) (BatchSize: $batch_size)" +tail -n 25 PipelineServingLogs/pipeline.tracer +ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +done +done + +# RPC +ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +sleep 3 +python3 benchmark.py yaml local_predictor 1 + +for thread_num in 1 +do +for batch_size in 1 +do +rm -rf PipelineServingLogs +rm -rf cpu_utilization.py +python3 web_service.py >web.log 2>&1 & +sleep 3 +echo "import psutil\ncpu_utilization=psutil.cpu_percent(1,False)\nprint('CPU_UTILIZATION:', cpu_utilization)\n" > cpu_utilization.py +python3 benchmark.py run rpc $thread_num $batch_size +python3 cpu_utilization.py +echo "------------Fit a line pipeline benchmark (Thread: $thread_num) (BatchSize: $batch_size)" +tail -n 25 PipelineServingLogs/pipeline.tracer +ps -ef | grep web_service | awk '{print $2}' | xargs kill -9 +done +done diff --git a/examples/Pipeline/simple_web_service/config.yml b/examples/Pipeline/simple_web_service/config.yml new file mode 100644 index 00000000..12fae64e --- /dev/null +++ b/examples/Pipeline/simple_web_service/config.yml @@ -0,0 +1,48 @@ +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 1 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +rpc_port: 9998 +http_port: 18082 + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False + + #tracer + tracer: + interval_s: 10 +op: + uci: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #uci模型路径 + model_config: uci_housing_model + + #计算硬件类型: 空缺时由devices决定(CPU/GPU),0=cpu, 1=gpu, 2=tensorRT, 3=arm cpu, 4=kunlun xpu + device_type: 0 + + #计算硬件ID,优先由device_type决定硬件类型。devices为""或空缺时为CPU预测;当为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "" # "0,1" + + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["price"] + + #precsion, 预测精度,降低预测精度可提升预测速度 + #GPU 支持: "fp32"(default), "fp16", "int8"; + #CPU 支持: "fp32"(default), "fp16", "bf16"(mkldnn); 不支持: "int8" + precision: "fp32" + + #ir_optim开关, 默认False + ir_optim: True + + #use_mkldnn开关, 默认False, use_mkldnn与ir_optim同时打开才有性能提升 + use_mkldnn: True diff --git a/examples/Pipeline/simple_web_service/get_data.sh b/examples/Pipeline/simple_web_service/get_data.sh new file mode 100644 index 00000000..84a3966a --- /dev/null +++ b/examples/Pipeline/simple_web_service/get_data.sh @@ -0,0 +1,2 @@ +wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar.gz +tar -xzf uci_housing.tar.gz diff --git a/examples/Pipeline/simple_web_service/web_service.py b/examples/Pipeline/simple_web_service/web_service.py new file mode 100644 index 00000000..5f999f94 --- /dev/null +++ b/examples/Pipeline/simple_web_service/web_service.py @@ -0,0 +1,59 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +import sys + +_LOGGER = logging.getLogger() + + +class UciOp(Op): + def init_op(self): + self.separator = "," + self.batch_separator = ";" + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + _LOGGER.error("UciOp::preprocess >>> log_id:{}, input:{}".format( + log_id, input_dict)) + x_value = input_dict["x"].split(self.batch_separator) + x_lst = [] + for x_val in x_value: + x_lst.append( + np.array([ + float(x.strip()) for x in x_val.split(self.separator) + ]).reshape(1, 13)) + input_dict["x"] = np.concatenate(x_lst, axis=0) + proc_dict = {} + return input_dict, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + _LOGGER.info( + "UciOp::postprocess >>> data_id:{}, log_id:{}, fetch_dict:{}". + format(data_id, log_id, fetch_dict)) + fetch_dict["price"] = str(fetch_dict["price"]) + return fetch_dict, None, "" + + +class UciService(WebService): + def get_pipeline_response(self, read_op): + uci_op = UciOp(name="uci", input_ops=[read_op]) + return uci_op + + +uci_service = UciService(name="uci") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/examples/Pipeline/simple_web_service/web_service_java.py b/examples/Pipeline/simple_web_service/web_service_java.py new file mode 100644 index 00000000..c4ddfb2b --- /dev/null +++ b/examples/Pipeline/simple_web_service/web_service_java.py @@ -0,0 +1,60 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from paddle_serving_server.web_service import WebService, Op +import logging +import numpy as np +from numpy import array +import sys +import base64 + +_LOGGER = logging.getLogger() +np.set_printoptions(threshold=sys.maxsize) + + +class UciOp(Op): + def init_op(self): + self.separator = "," + + def preprocess(self, input_dicts, data_id, log_id): + """ + diff with web_server.py + javaclient input type is INDArray, restful request input is list. + this function simply reshape input to the Specified shape. + """ + (_, input_dict), = input_dicts.items() + _LOGGER.error("UciOp::preprocess >>> log_id:{}, input:{}".format( + log_id, input_dict)) + proc_dict = {} + x_value = eval(input_dict["x"]) + input_dict["x"] = x_value.reshape(1, 13) + + return input_dict, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, data_id, log_id): + _LOGGER.info( + "UciOp::postprocess >>> data_id:{}, log_id:{}, fetch_dict:{}". + format(data_id, log_id, fetch_dict)) + fetch_dict["price"] = str(fetch_dict["price"][0][0]) + return fetch_dict, None, "" + + +class UciService(WebService): + def get_pipeline_response(self, read_op): + uci_op = UciOp(name="uci", input_ops=[read_op]) + return uci_op + + +uci_service = UciService(name="uci") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() -- GitLab