From ab69b69a59d6ca6074df7e6d4014f07eb48dedba Mon Sep 17 00:00:00 2001 From: Ankith Gunapal Date: Thu, 21 Sep 2023 13:00:14 -0700 Subject: [PATCH] Example showing how to run TorchServe's backend code only (#2605) * Example showing how to run TorchServe backend code only * Example showing how to run TorchServe backend code only * Example showing how to run TorchServe backend code only * Example showing how to run TorchServe backend code only * review comments * include a screenshot of debugger * Works with pytest too * Works with pytest too --- docs/getting_started.md | 4 + examples/image_classifier/resnet_18/README.md | 64 +++++++++++++++- .../debugging_backend/debugger_screenshot.png | Bin 0 -> 117755 bytes .../debugging_backend/test_handler.py | 70 ++++++++++++++++++ .../unit_tests/test_utils/mock_context.py | 2 + 5 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 examples/image_classifier/resnet_18/debugging_backend/debugger_screenshot.png create mode 100644 examples/image_classifier/resnet_18/debugging_backend/test_handler.py diff --git a/docs/getting_started.md b/docs/getting_started.md index 11daf6db7b..7354f5515b 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -170,6 +170,10 @@ All the logs you've seen as output to stdout related to model registration, mana High level performance data like Throughput or Percentile Precision can be generated with [Benchmark](https://github.com/pytorch/serve/tree/master/benchmarks/README.md) and visualized in a report. +## Debugging Handler Code + +If you want to debug your handler code, you can run TorchServe with just the backend and hence use any python debugger. You can refer to an example defined [here](../examples/image_classifier/resnet_18/README.md#debug-torchserve-backend) + ### Contributing If you plan to develop with TorchServe and change some source code, follow the [contributing guide](https://github.com/pytorch/serve/blob/master/CONTRIBUTING.md). diff --git a/examples/image_classifier/resnet_18/README.md b/examples/image_classifier/resnet_18/README.md index 5611b14811..1c5bbe3639 100644 --- a/examples/image_classifier/resnet_18/README.md +++ b/examples/image_classifier/resnet_18/README.md @@ -35,8 +35,8 @@ curl http://127.0.0.1:8080/predictions/resnet-18 -T ./examples/image_classifier/ example_input = torch.rand(1, 3, 224, 224) traced_script_module = torch.jit.trace(model, example_input) traced_script_module.save("resnet-18.pt") - ``` - + ``` + * Use following commands to register Resnet18 torchscript model on TorchServe and run image prediction ```bash @@ -46,3 +46,63 @@ curl http://127.0.0.1:8080/predictions/resnet-18 -T ./examples/image_classifier/ torchserve --start --model-store model_store --models resnet-18=resnet-18.mar curl http://127.0.0.1:8080/predictions/resnet-18 -T ./serve/examples/image_classifier/kitten.jpg ``` + +### Debug TorchServe Backend + +If you want to test your handler code, you can use the example in `debugging_backend/test_handler.py` + +``` +python debugging_backend/test_handler.py --batch_size 2 +``` + +results in + +``` +Torch TensorRT not enabled +DEBUG:ts.torch_handler.base_handler:Model file /home/ubuntu/serve/examples/image_classifier/resnet_18/resnet-18.pt loaded successfully +INFO:__main__:Result is [{'tabby': 0.4096629023551941, 'tiger_cat': 0.34670525789260864, 'Egyptian_cat': 0.13002872467041016, 'lynx': 0.02391958236694336, 'bucket': 0.011532173492014408}, {'tabby': 0.4096629023551941, 'tiger_cat': 0.34670525789260864, 'Egyptian_cat': 0.13002872467041016, 'lynx': 0.02391958236694336, 'bucket': 0.011532173492014408}] +``` + +If this doesn't work, you can use a debugger to find the problem in your backend handler code. +Once you are confident this works, you can use your handler to deploy the model using TorchServe + +Below is a screenshot of debugger running with this handler + +![image info](./debugging_backend/debugger_screenshot.png) + +You can also use this with pytest + +``` +pytest debugging_backend/test_handler.py +``` + +results in + +``` +================================================================================== test session starts =================================================================================== +platform linux -- Python 3.8.18, pytest-7.3.1, pluggy-1.0.0 +rootdir: /home/ubuntu/serve +plugins: mock-3.10.0, anyio-3.6.1, cov-4.1.0, hypothesis-6.54.3 +collected 1 item + +debugging_backend/test_handler.py . [100%] + +==================================================================================== warnings summary ==================================================================================== +../../../../anaconda3/envs/torchserve/lib/python3.8/site-packages/ts/torch_handler/base_handler.py:13 + /home/ubuntu/anaconda3/envs/torchserve/lib/python3.8/site-packages/ts/torch_handler/base_handler.py:13: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html + from pkg_resources import packaging + +../../../../anaconda3/envs/torchserve/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 + /home/ubuntu/anaconda3/envs/torchserve/lib/python3.8/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('mpl_toolkits')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + declare_namespace(pkg) + +../../../../anaconda3/envs/torchserve/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 +../../../../anaconda3/envs/torchserve/lib/python3.8/site-packages/pkg_resources/__init__.py:2871 + /home/ubuntu/anaconda3/envs/torchserve/lib/python3.8/site-packages/pkg_resources/__init__.py:2871: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('ruamel')`. + Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages + declare_namespace(pkg) + +-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html +============================================================================= 1 passed, 4 warnings in 2.29s ============================================================================== +``` diff --git a/examples/image_classifier/resnet_18/debugging_backend/debugger_screenshot.png b/examples/image_classifier/resnet_18/debugging_backend/debugger_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f3eb7f113f6c62a0bc5c2b33be6292c67014d8 GIT binary patch literal 117755 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

F&pijJ8x+rm~=otrgN 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

B!5fNoh7G>R<&@Q=p4QUA~s5DxtVMU9I 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 DsTg`v literal 0 HcmV?d00001 diff --git a/examples/image_classifier/resnet_18/debugging_backend/test_handler.py b/examples/image_classifier/resnet_18/debugging_backend/test_handler.py new file mode 100644 index 0000000000..f777e748fa --- /dev/null +++ b/examples/image_classifier/resnet_18/debugging_backend/test_handler.py @@ -0,0 +1,70 @@ +import argparse +import io +import logging +from pathlib import Path + +import torch + +from ts.torch_handler.image_classifier import ImageClassifier +from ts.torch_handler.unit_tests.test_utils.mock_context import MockContext + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.DEBUG) + +CURR_FILE_PATH = Path(__file__).parent.absolute() +REPO_ROOT_DIR = CURR_FILE_PATH.parents[3] +EXAMPLE_ROOT_DIR = REPO_ROOT_DIR.joinpath("examples", "image_classifier", "resnet_18") +TEST_DATA = REPO_ROOT_DIR.joinpath("examples", "image_classifier", "kitten.jpg") +MODEL_PT_FILE = "resnet-18.pt" + + +def prepare_data(batch_size): + """ + Function to prepare data based on the desired batch size + """ + f = io.open(TEST_DATA, "rb", buffering=0) + read_data = f.read() + data = [] + for i in range(batch_size): + tmp = {} + tmp["data"] = read_data + data.append(tmp) + return data + + +def test_resnet18(batch_size=1): + # Define your handler + handler = ImageClassifier() + + # Context definition + ctx = MockContext( + model_pt_file=MODEL_PT_FILE, + model_dir=EXAMPLE_ROOT_DIR.as_posix(), + model_file=None, + ) + + torch.manual_seed(42 * 42) + handler.initialize(ctx) + handler.context = ctx + + data = prepare_data(batch_size) + + # Here we are using the BaseHandler's handle method. You can define your own + result = handler.handle(data, ctx) + logger.info(f"Result is {result}") + + # Can be used with pytest + value = max(result[0], key=result[0].get) + assert value == "tabby" + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--batch_size", + default=1, + type=int, + help="Batch size for testing inference", + ) + args = parser.parse_args() + test_resnet18(args.batch_size) diff --git a/ts/torch_handler/unit_tests/test_utils/mock_context.py b/ts/torch_handler/unit_tests/test_utils/mock_context.py index 287074c6eb..b9bd7ededa 100644 --- a/ts/torch_handler/unit_tests/test_utils/mock_context.py +++ b/ts/torch_handler/unit_tests/test_utils/mock_context.py @@ -2,11 +2,13 @@ Mocks for adding model context without loading all of Torchserve """ +import os import uuid import torch from ts.metrics.metrics_store import MetricsStore +from ts.utils.util import get_yaml_config class MockContext: