| |
| .. DO NOT EDIT. THIS FILE WAS AUTOMATICALLY GENERATED BY |
| .. TVM'S MONKEY-PATCHED VERSION OF SPHINX-GALLERY. TO MAKE |
| .. CHANGES, EDIT THE SOURCE PYTHON FILE: |
| .. "how_to/compile_models/from_paddle.py" |
| |
| .. only:: html |
| |
| .. note:: |
| :class: sphx-glr-download-link-note |
| |
| This tutorial can be used interactively with Google Colab! You can also click |
| :ref:`here <sphx_glr_download_how_to_compile_models_from_paddle.py>` to run the Jupyter notebook locally. |
| |
| .. image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/utilities/colab_button.svg |
| :align: center |
| :target: https://colab.research.google.com/github/apache/tvm-site/blob/asf-site/docs/_downloads/a608d8b69371e9bc149dd89f6db2c38e/from_paddle.ipynb |
| :width: 300px |
| |
| .. rst-class:: sphx-glr-example-title |
| |
| .. _sphx_glr_how_to_compile_models_from_paddle.py: |
| |
| |
| Compile PaddlePaddle Models |
| =========================== |
| **Author**: `Ziyuan Ma <https://github.com/ZiyuanMa/>`_ |
| |
| This article is an introductory tutorial to deploy PaddlePaddle models with Relay. |
| To begin, we'll install PaddlePaddle>=2.1.3: |
| |
| .. code-block:: bash |
| |
| %%shell |
| pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple |
| |
| For more details, refer to the official install instructions at: |
| https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 33-41 |
| |
| .. code-block:: default |
| |
| |
| import tarfile |
| import paddle |
| import numpy as np |
| import tvm |
| from tvm import relay |
| from tvm.contrib.download import download_testdata |
| |
| |
| |
| |
| |
| |
| |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 42-45 |
| |
| Load pretrained ResNet50 model |
| --------------------------------------------- |
| We load a pretrained ResNet50 provided by PaddlePaddle. |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 45-55 |
| |
| .. code-block:: default |
| |
| url = "https://bj.bcebos.com/x2paddle/models/paddle_resnet50.tar" |
| model_path = download_testdata(url, "paddle_resnet50.tar", module="model") |
| |
| with tarfile.open(model_path) as tar: |
| names = tar.getnames() |
| for name in names: |
| tar.extract(name, "./") |
| |
| model = paddle.jit.load("./paddle_resnet50/model") |
| |
| |
| |
| |
| |
| |
| |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 56-59 |
| |
| Load a test image |
| --------------------------------------------- |
| A single cat dominates the examples! |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 59-80 |
| |
| .. code-block:: default |
| |
| |
| from PIL import Image |
| import paddle.vision.transforms as T |
| |
| |
| transforms = T.Compose( |
| [ |
| T.Resize((256, 256)), |
| T.CenterCrop(224), |
| T.ToTensor(), |
| T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), |
| ] |
| ) |
| |
| img_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true" |
| img_path = download_testdata(img_url, "cat.png", module="data") |
| img = Image.open(img_path).resize((224, 224)) |
| |
| img = transforms(img) |
| img = np.expand_dims(img, axis=0) |
| |
| |
| |
| |
| |
| |
| |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 81-83 |
| |
| Compile the model with relay |
| --------------------------------------------- |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 83-93 |
| |
| .. code-block:: default |
| |
| |
| target = "llvm" |
| shape_dict = {"inputs": img.shape} |
| mod, params = relay.frontend.from_paddle(model, shape_dict) |
| |
| with tvm.transform.PassContext(opt_level=3): |
| executor = relay.build_module.create_executor( |
| "graph", mod, tvm.cpu(0), target, params |
| ).evaluate() |
| |
| |
| |
| |
| |
| |
| |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 94-96 |
| |
| Execute on TVM |
| --------------------------------------------- |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 96-99 |
| |
| .. code-block:: default |
| |
| dtype = "float32" |
| tvm_output = executor(tvm.nd.array(img.astype(dtype))).numpy() |
| |
| |
| |
| |
| |
| |
| |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 100-103 |
| |
| Look up synset name |
| --------------------------------------------- |
| Look up prediction top 1 index in 1000 class synset. |
| |
| .. GENERATED FROM PYTHON SOURCE LINES 103-119 |
| |
| .. code-block:: default |
| |
| |
| synset_url = "".join( |
| [ |
| "https://gist.githubusercontent.com/zhreshold/", |
| "4d0b62f3d01426887599d4f7ede23ee5/raw/", |
| "596b27d23537e5a1b5751d2b0481ef172f58b539/", |
| "imagenet1000_clsid_to_human.txt", |
| ] |
| ) |
| synset_name = "imagenet1000_clsid_to_human.txt" |
| synset_path = download_testdata(synset_url, synset_name, module="data") |
| with open(synset_path) as f: |
| synset = f.readlines() |
| |
| top1 = np.argmax(tvm_output[0]) |
| print(f"TVM prediction top-1 id: {top1}, class name: {synset[top1]}") |
| |
| |
| |
| |
| .. rst-class:: sphx-glr-script-out |
| |
| .. code-block:: none |
| |
| TVM prediction top-1 id: 282, class name: 282: 'tiger cat', |
| |
| |
| |
| |
| |
| |
| .. rst-class:: sphx-glr-timing |
| |
| **Total running time of the script:** ( 1 minutes 10.711 seconds) |
| |
| |
| .. _sphx_glr_download_how_to_compile_models_from_paddle.py: |
| |
| .. only:: html |
| |
| .. container:: sphx-glr-footer sphx-glr-footer-example |
| |
| |
| .. container:: sphx-glr-download sphx-glr-download-python |
| |
| :download:`Download Python source code: from_paddle.py <from_paddle.py>` |
| |
| .. container:: sphx-glr-download sphx-glr-download-jupyter |
| |
| :download:`Download Jupyter notebook: from_paddle.ipynb <from_paddle.ipynb>` |
| |
| |
| .. only:: html |
| |
| .. rst-class:: sphx-glr-signature |
| |
| `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_ |