{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "05-benchmark", "provenance": [], "collapsed_sections": [], "authorship_tag": "ABX9TyOAUMA92fdE4FM6A349/FWI", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { "975f42d7b55c4d0caf229cd4c16df5d2": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { "_view_name": "HBoxView", "_dom_classes": [], "_model_name": "HBoxModel", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", "layout": "IPY_MODEL_69b36685703342eaa80b6f0e01f94e04", "_model_module": "@jupyter-widgets/controls", "children": [ "IPY_MODEL_c8acb33d6a254607a6340c0aa33446f3", "IPY_MODEL_a6c3647736554beea36db798827203b2" ] } }, "69b36685703342eaa80b6f0e01f94e04": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "c8acb33d6a254607a6340c0aa33446f3": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_e812aaf8214c4ad983f41804cb82562b", "_dom_classes": [], "description": "Downloading: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", "max": 908, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 908, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_eed2ce14188a453ca296601ca39133b6" } }, "a6c3647736554beea36db798827203b2": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_548f91729b8d4f3aa81f78c7a1620101", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": " 908/908 [00:00<00:00, 30.1kB/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_900c1cb473f54b48a59226c61fafd626" } }, "e812aaf8214c4ad983f41804cb82562b": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "initial", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "eed2ce14188a453ca296601ca39133b6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "548f91729b8d4f3aa81f78c7a1620101": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "900c1cb473f54b48a59226c61fafd626": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } } } } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "jG-SjOQTskcX", "colab_type": "text" }, "source": [ "## **How to benchmark models with Transformers**\n", "\n", "With ever-larger language models, it is no longer enough to just \n", "compare models on their performance on a specific task. One should always be aware of the computational cost that is attached to a specific model. For a given computation environment (*e.g.* type of GPU), the computational cost of training a model or deploying it in inference usually depends only on **the required memory** and **the required time**. \n", "\n", "Being able to accurately benchmark language models on both *speed* and *required memory* is therefore very important.\n", "\n", "HuggingFace's Transformer library allows users to benchmark models for both TensorFlow 2 and PyTorch using the `PyTorchBenchmark` and `TensorFlowBenchmark` classes.\n", "\n", "The currently available features for `PyTorchBenchmark` are summarized in the following table.\n", "\n", "\n", "| | CPU | CPU + torchscript | GPU | GPU + torchscript | GPU + FP16 | TPU |\n", ":-- | :--- | :--- | :--- | :--- | :--- | :--- |\n", "**Speed - Inference** | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |\n", "**Memory - Inference** | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ |\n", "**Speed - Train** | ✔ | ✘ | ✔ | ✘ | ✔ | ✔ |\n", "**Memory - Train** | ✔ | ✘ | ✔ | ✘ | ✔ | ✘ |\n", "\n", "\n", "* *FP16* stands for mixed-precision meaning that computations within the model are done using a mixture of 16-bit and 32-bit floating-point operations, see [here](https://pytorch.org/docs/stable/nn.html#torch.nn.Module.half) for more detail.\n", "\n", "* *torchscript* corresponds to PyTorch's torchscript format, see [here](https://pytorch.org/docs/stable/jit.html).\n", "\n", "The currently available features for `TensorFlowBenchmark` are summarized in the following table.\n", "\n", "| | CPU | CPU + eager execution | GPU | GPU + eager execution | GPU + XLA | GPU + FP16 | TPU |\n", ":-- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |\n", "**Speed - Inference** | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✔ |\n", "**Memory - Inference** | ✔ | ✔ | ✔ | ✔ | ✔ | ✘ | ✘ |\n", "**Speed - Train** | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ | ✔ |\n", "**Memory - Train** | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ | ✘ |\n", "\n", "* *eager execution* means that the function is run in the eager execution environment of TensorFlow 2, see [here](https://www.tensorflow.org/guide/eager).\n", "\n", "* *XLA* stands for TensorFlow's Accelerated Linear Algebra (XLA) compiler, see [here](https://www.tensorflow.org/xla)\n", "\n", "* *FP16* stands for TensorFlow's mixed-precision package and is analogous to PyTorch's FP16 feature, see [here](https://www.tensorflow.org/guide/mixed_precision).\n", "\n", "***Note***: Benchmark training in TensorFlow is not included in v3.0.2, but available in master.\n", "\n", "\n", "This notebook will show the user how to use `PyTorchBenchmark` and `TensorFlowBenchmark` for two different scenarios:\n", "\n", "1. **Inference - Pre-trained Model Comparison** - *A user wants to implement a pre-trained model in production for inference. She wants to compare different models on speed and required memory.*\n", "\n", "2. **Training - Configuration Comparison** - *A user wants to train a specific model and searches that for himself most effective model configuration.*\n" ] }, { "cell_type": "markdown", "metadata": { "id": "j-jvAvZ1-GIh", "colab_type": "text" }, "source": [ "### **Inference - Pre-trained Model Comparison**\n", "\n", "Let's say we want to employ a question-answering model in production. The questions are expected to be of the same format as in **SQuAD v2**, so that the model to choose should have been fine-tuned on this dataset. \n", "\n", "HuggingFace's new dataset [webpage](https://huggingface.co/datasets) lets the user see all relevant information about a dataset and even links the models that have been fine-tuned on this specific dataset. Let's check out the dataset webpage of SQuAD v2 [here](https://huggingface.co/datasets/squad_v2).\n", "\n", "Nice, we can see that there are 7 available models.\n", "\n", "![Texte alternatif…](https://raw.githubusercontent.com/patrickvonplaten/scientific_images/master/squad_v2_dataset.png)\n", "\n", "Let's assume that we have decided to restrict our pipeline to \"encoder-only\" models so that we are left with:\n", "\n", "- `a-ware/roberta-large-squad-classification`\n", "- `a-ware/xlmroberta-squadv2`\n", "- `aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2`\n", "- `deepset/roberta-base-squad2`\n", "- `mrm8488/longformer-base-4096-finetuned-squadv2`\n", "\n", "Great! In this notebook, we will now benchmark these models on both peak memory consumption and inference time to decide which model should be employed in production.\n", "\n", "***Note***: None of the models has been tested on performance so that we will just assume that all models perform more or less equally well. The purpose of this notebook is not to find the best model for SQuAD v2, but to showcase how Transformers benchmarking tools can be leveraged.\n", "\n", "First, we assume to be limited by the available GPU on this google colab, which in this copy amounts to 16 GB of RAM." ] }, { "cell_type": "markdown", "metadata": { "id": "2l9C7d7K5-G4", "colab_type": "text" }, "source": [ "In a first step, we will check which models are the most memory-efficient ones.\n", "Let's make sure 100% of the GPU is available to us in this notebook." ] }, { "cell_type": "code", "metadata": { "id": "M7cQmgM5TvlO", "colab_type": "code", "cellView": "form", "colab": { "base_uri": "https://localhost:8080/", "height": 67 }, "outputId": "2797c14e-a62d-42cc-97a6-6c61b015d569" }, "source": [ "#@title Check available memory of GPU\n", "# Check that we are using 100% of GPU\n", "# memory footprint support libraries/code\n", "!ln -sf /opt/bin/nvidia-smi /usr/bin/nvidia-smi\n", "!pip -q install gputil\n", "!pip -q install psutil\n", "!pip -q install humanize\n", "import psutil\n", "import humanize\n", "import os\n", "import GPUtil as GPU\n", "GPUs = GPU.getGPUs()\n", "# XXX: only one GPU on Colab and isn’t guaranteed\n", "gpu = GPUs[0]\n", "def printm():\n", " process = psutil.Process(os.getpid())\n", " print(\"Gen RAM Free: \" + humanize.naturalsize( psutil.virtual_memory().available ), \" | Proc size: \" + humanize.naturalsize( process.memory_info().rss))\n", " print(\"GPU RAM Free: {0:.0f}MB | Used: {1:.0f}MB | Util {2:3.0f}% | Total {3:.0f}MB\".format(gpu.memoryFree, gpu.memoryUsed, gpu.memoryUtil*100, gpu.memoryTotal))\n", "printm()" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ " Building wheel for gputil (setup.py) ... \u001b[?25l\u001b[?25hdone\n", "Gen RAM Free: 12.8 GB | Proc size: 160.0 MB\n", "GPU RAM Free: 16280MB | Used: 0MB | Util 0% | Total 16280MB\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "NuS2CKuQ4qSk", "colab_type": "code", "colab": {} }, "source": [ "# If GPU RAM Util > 0% => crash notebook on purpose\n", "# !kill -9 -1" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "ikdYDXsj6Nzv", "colab_type": "text" }, "source": [ "Looks good! Now we import `transformers` and download the scripts `run_benchmark.py`, `run_benchmark_tf.py`, and `plot_csv_file.py` which can be found under `transformers/examples/benchmarking`.\n", "\n", "`run_benchmark_tf.py` and `run_benchmark.py` are very simple scripts leveraging the `PyTorchBenchmark` and `TensorFlowBenchmark` classes, respectively." ] }, { "cell_type": "code", "metadata": { "id": "Dylftiyd1IG1", "colab_type": "code", "cellView": "both", "colab": {} }, "source": [ "# install transformes\n", "!pip uninstall -y transformers\n", "!pip install -q git+https://github.com/huggingface/transformers.git\n", "\n", "# install py3nvml to track GPU memory usage\n", "!pip install -q py3nvml\n", "\n", "!rm -f run_benchmark.py\n", "!rm -f run_benchmark_tf.py\n", "!rm -f plot_csv_file.py\n", "!wget https://raw.githubusercontent.com/huggingface/transformers/master/examples/benchmarking/run_benchmark.py -qq\n", "!wget https://raw.githubusercontent.com/huggingface/transformers/master/examples/benchmarking/run_benchmark_tf.py -qq\n", "!wget https://raw.githubusercontent.com/huggingface/transformers/master/examples/benchmarking/plot_csv_file.py -qq\n", "\n", "# import pandas to pretty print csv files\n", "import pandas as pd" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "C4nz5nGFkOrK", "colab_type": "text" }, "source": [ "Information about the input arguments to the *run_benchmark* scripts can be accessed by running `!python run_benchmark.py --help` for PyTorch and `!python run_benchmark_tf.py --help` for TensorFlow." ] }, { "cell_type": "code", "metadata": { "id": "zu7Oufe0jcAj", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "outputId": "bc52dea5-b721-410c-cf3b-8a7b983a558e" }, "source": [ "!python run_benchmark.py --help" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 11:51:47.129203: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n", "usage: run_benchmark.py [-h] [--models MODELS [MODELS ...]]\n", " [--batch_sizes BATCH_SIZES [BATCH_SIZES ...]]\n", " [--sequence_lengths SEQUENCE_LENGTHS [SEQUENCE_LENGTHS ...]]\n", " [--no_inference] [--no_cuda] [--no_tpu] [--fp16]\n", " [--training] [--verbose] [--no_speed] [--no_memory]\n", " [--trace_memory_line_by_line] [--save_to_csv]\n", " [--log_print] [--no_env_print] [--no_multi_process]\n", " [--with_lm_head]\n", " [--inference_time_csv_file INFERENCE_TIME_CSV_FILE]\n", " [--inference_memory_csv_file INFERENCE_MEMORY_CSV_FILE]\n", " [--train_time_csv_file TRAIN_TIME_CSV_FILE]\n", " [--train_memory_csv_file TRAIN_MEMORY_CSV_FILE]\n", " [--env_info_csv_file ENV_INFO_CSV_FILE]\n", " [--log_filename LOG_FILENAME] [--repeat REPEAT]\n", " [--only_pretrain_model] [--torchscript]\n", " [--torch_xla_tpu_print_metrics]\n", " [--fp16_opt_level FP16_OPT_LEVEL]\n", "\n", "optional arguments:\n", " -h, --help show this help message and exit\n", " --models MODELS [MODELS ...]\n", " Model checkpoints to be provided to the AutoModel\n", " classes. Leave blank to benchmark the base version of\n", " all available models\n", " --batch_sizes BATCH_SIZES [BATCH_SIZES ...]\n", " List of batch sizes for which memory and time\n", " performance will be evaluated\n", " --sequence_lengths SEQUENCE_LENGTHS [SEQUENCE_LENGTHS ...]\n", " List of sequence lengths for which memory and time\n", " performance will be evaluated\n", " --no_inference Don't benchmark inference of model\n", " --no_cuda Whether to run on available cuda devices\n", " --no_tpu Whether to run on available tpu devices\n", " --fp16 Use FP16 to accelerate inference.\n", " --training Benchmark training of model\n", " --verbose Verbose memory tracing\n", " --no_speed Don't perform speed measurments\n", " --no_memory Don't perform memory measurments\n", " --trace_memory_line_by_line\n", " Trace memory line by line\n", " --save_to_csv Save result to a CSV file\n", " --log_print Save all print statements in a log file\n", " --no_env_print Don't print environment information\n", " --no_multi_process Don't use multiprocessing for memory and speed\n", " measurement. It is highly recommended to use\n", " multiprocessing for accurate CPU and GPU memory\n", " measurements. This option should only be used for\n", " debugging / testing and on TPU.\n", " --with_lm_head Use model with its language model head\n", " (MODEL_WITH_LM_HEAD_MAPPING instead of MODEL_MAPPING)\n", " --inference_time_csv_file INFERENCE_TIME_CSV_FILE\n", " CSV filename used if saving time results to csv.\n", " --inference_memory_csv_file INFERENCE_MEMORY_CSV_FILE\n", " CSV filename used if saving memory results to csv.\n", " --train_time_csv_file TRAIN_TIME_CSV_FILE\n", " CSV filename used if saving time results to csv for\n", " training.\n", " --train_memory_csv_file TRAIN_MEMORY_CSV_FILE\n", " CSV filename used if saving memory results to csv for\n", " training.\n", " --env_info_csv_file ENV_INFO_CSV_FILE\n", " CSV filename used if saving environment information.\n", " --log_filename LOG_FILENAME\n", " Log filename used if print statements are saved in\n", " log.\n", " --repeat REPEAT Times an experiment will be run.\n", " --only_pretrain_model\n", " Instead of loading the model as defined in\n", " `config.architectures` if exists, just load the\n", " pretrain model weights.\n", " --torchscript Trace the models using torchscript\n", " --torch_xla_tpu_print_metrics\n", " Print Xla/PyTorch tpu metrics\n", " --fp16_opt_level FP16_OPT_LEVEL\n", " For fp16: Apex AMP optimization level selected in\n", " ['O0', 'O1', 'O2', and 'O3'].See details at\n", " https://nvidia.github.io/apex/amp.html\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "Q_3TZshjcrjP", "colab_type": "text" }, "source": [ "Great, we are ready to run our first memory benchmark. By default, both the *required memory* and *time* for inference is enabled. To disable benchmarking on *time*, we add `--no_speed`.\n", "\n", "The only required parameter is `--models` which expects a list of model identifiers as defined on the [model hub](https://huggingface.co/models). Here we add the five model identifiers listed above.\n", "\n", "Next, we define the `sequence_lengths` and `batch_sizes` for which the peak memory is calculated.\n", "\n", "Finally, because the results should be stored in a *CSV* file, the option `--save_to_csv` is added and the path to save the results is added via the `--inference_memory_csv_file` argument. \n", "Whenever a benchmark is run, the environment information, *e.g.* GPU type, library versions, ... can be saved using the `--env_info_csv_file` argument." ] }, { "cell_type": "code", "metadata": { "id": "ykJqt7MEbHIq", "colab_type": "code", "colab": {} }, "source": [ "# create plots folder in content\n", "!mkdir -p plots_pt" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "TSJgpQxBe-Fj", "colab_type": "code", "colab": {} }, "source": [ "# run benchmark\n", "!python run_benchmark.py --no_speed --save_to_csv \\\n", " --models a-ware/roberta-large-squad-classification \\\n", " a-ware/xlmroberta-squadv2 \\\n", " aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2 \\\n", " deepset/roberta-base-squad2 \\\n", " mrm8488/longformer-base-4096-finetuned-squadv2 \\\n", " --sequence_lengths 32 128 512 1024 \\\n", " --batch_sizes 32 \\\n", " --inference_memory_csv_file plots_pt/required_memory.csv \\\n", " --env_info_csv_file plots_pt/env.csv >/dev/null 2>&1 # redirect all prints" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "ESHrlnKik396", "colab_type": "text" }, "source": [ "Under `plots_pt`, two files are now created: `required_memory.csv` and `env.csv`. Let's check out `required_memory.csv` first." ] }, { "cell_type": "code", "metadata": { "id": "rPg_7fPnuDUa", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 639 }, "outputId": "b6272763-7235-43c6-c457-0a4a13bb02e5" }, "source": [ "df = pd.read_csv('plots_pt/required_memory.csv')\n", "df" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modelbatch_sizesequence_lengthresult
0a-ware/roberta-large-squad-classification32322219.0
1a-ware/roberta-large-squad-classification321282455.0
2a-ware/roberta-large-squad-classification325123641.0
3a-ware/roberta-large-squad-classification321024NaN
4a-ware/xlmroberta-squadv232322999.0
5a-ware/xlmroberta-squadv2321283235.0
6a-ware/xlmroberta-squadv2325124421.0
7a-ware/xlmroberta-squadv2321024NaN
8aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200...32321025.0
9aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200...321281143.0
10aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200...325121719.0
11aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200...321024NaN
12deepset/roberta-base-squad232321373.0
13deepset/roberta-base-squad2321281533.0
14deepset/roberta-base-squad2325122433.0
15deepset/roberta-base-squad2321024NaN
16mrm8488/longformer-base-4096-finetuned-squadv232323783.0
17mrm8488/longformer-base-4096-finetuned-squadv2321283783.0
18mrm8488/longformer-base-4096-finetuned-squadv2325123783.0
19mrm8488/longformer-base-4096-finetuned-squadv23210246427.0
\n", "
" ], "text/plain": [ " model ... result\n", "0 a-ware/roberta-large-squad-classification ... 2219.0\n", "1 a-ware/roberta-large-squad-classification ... 2455.0\n", "2 a-ware/roberta-large-squad-classification ... 3641.0\n", "3 a-ware/roberta-large-squad-classification ... NaN\n", "4 a-ware/xlmroberta-squadv2 ... 2999.0\n", "5 a-ware/xlmroberta-squadv2 ... 3235.0\n", "6 a-ware/xlmroberta-squadv2 ... 4421.0\n", "7 a-ware/xlmroberta-squadv2 ... NaN\n", "8 aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200... ... 1025.0\n", "9 aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200... ... 1143.0\n", "10 aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200... ... 1719.0\n", "11 aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200... ... NaN\n", "12 deepset/roberta-base-squad2 ... 1373.0\n", "13 deepset/roberta-base-squad2 ... 1533.0\n", "14 deepset/roberta-base-squad2 ... 2433.0\n", "15 deepset/roberta-base-squad2 ... NaN\n", "16 mrm8488/longformer-base-4096-finetuned-squadv2 ... 3783.0\n", "17 mrm8488/longformer-base-4096-finetuned-squadv2 ... 3783.0\n", "18 mrm8488/longformer-base-4096-finetuned-squadv2 ... 3783.0\n", "19 mrm8488/longformer-base-4096-finetuned-squadv2 ... 6427.0\n", "\n", "[20 rows x 4 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 7 } ] }, { "cell_type": "markdown", "metadata": { "id": "o2LnaVpyW9TB", "colab_type": "text" }, "source": [ "Each row in the csv file lists one data point showing the *peak memory* usage for a given model, batch_size and sequence_length. As can be seen, some values have a *NaN* result meaning that an *Out-of-Memory* Error occurred. To better visualize the results, one can make use of the `plot_csv_file.py` script.\n", "\n", "Before, let's take a look at the information about our computation environment." ] }, { "cell_type": "code", "metadata": { "id": "y6n49pbIXI6E", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 639 }, "outputId": "495f011c-87c9-43a1-e1d4-a6501c327e76" }, "source": [ "df = pd.read_csv('plots_pt/env.csv')\n", "df" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
transformers_version2.11.0
0frameworkPyTorch
1use_torchscriptFalse
2framework_version1.5.1+cu101
3python_version3.6.9
4systemLinux
5cpux86_64
6architecture64bit
7date2020-06-26
8time11:56:37.277009
9fp16False
10use_multiprocessingTrue
11only_pretrain_modelFalse
12cpu_ram_mb13021
13use_gpuTrue
14num_gpus1
15gpuTesla P100-PCIE-16GB
16gpu_ram_mb16280
17gpu_power_watts250.0
18gpu_performance_state0
19use_tpuFalse
\n", "
" ], "text/plain": [ " transformers_version 2.11.0\n", "0 framework PyTorch\n", "1 use_torchscript False\n", "2 framework_version 1.5.1+cu101\n", "3 python_version 3.6.9\n", "4 system Linux\n", "5 cpu x86_64\n", "6 architecture 64bit\n", "7 date 2020-06-26\n", "8 time 11:56:37.277009\n", "9 fp16 False\n", "10 use_multiprocessing True\n", "11 only_pretrain_model False\n", "12 cpu_ram_mb 13021\n", "13 use_gpu True\n", "14 num_gpus 1\n", "15 gpu Tesla P100-PCIE-16GB\n", "16 gpu_ram_mb 16280\n", "17 gpu_power_watts 250.0\n", "18 gpu_performance_state 0\n", "19 use_tpu False" ] }, "metadata": { "tags": [] }, "execution_count": 8 } ] }, { "cell_type": "markdown", "metadata": { "id": "z316Xf2oXTZz", "colab_type": "text" }, "source": [ "We can see all relevant information here: the PyTorch version, the Python version, the system, the type of GPU, and available RAM on the GPU, etc...\n", "\n", "**Note**: A different GPU is likely assigned to a copy of this notebook, so that all of the following results may be different. It is very important to always include the environment information when benchmarking your models for both reproducibility and transparency to other users.\n", "\n", "Alright, let's plot the results." ] }, { "cell_type": "code", "metadata": { "id": "yHYUqRzWy8sp", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 534 }, "outputId": "22499f33-bafc-42b3-f1b7-fcb202df9cd2" }, "source": [ "# plot graph and save as image\n", "!python plot_csv_file.py --csv_file plots_pt/required_memory.csv --figure_png_file=plots_pt/required_memory_plot.png --no_log_scale --short_model_names a-ware-roberta a-aware-xlm aodiniz-bert deepset-roberta mrm8488-long\n", "\n", "# show image\n", "from IPython.display import Image\n", "Image('plots_pt/required_memory_plot.png')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 11:56:39.671579: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 9 } ] }, { "cell_type": "markdown", "metadata": { "id": "RKZhRMmJmNH_", "colab_type": "text" }, "source": [ "At this point, it is important to understand how the peak memory is measured. The benchmarking tools measure the peak memory usage the same way the command `nvidia-smi` does - see [here](https://developer.nvidia.com/nvidia-system-management-interface) for more information. \n", "In short, all memory that is allocated for a given *model identifier*, *batch size* and *sequence length* is measured in a separate process. This way it can be ensured that there is no previously unreleased memory falsely included in the measurement. One should also note that the measured memory even includes the memory allocated by the CUDA driver to load PyTorch and TensorFlow and is, therefore, higher than library-specific memory measurement function, *e.g.* this one for [PyTorch](https://pytorch.org/docs/stable/cuda.html#torch.cuda.max_memory_allocated).\n", "\n", "Alright, let's analyze the results. It can be noted that the models `aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2` and `deepset/roberta-base-squad2` require significantly less memory than the other three models. Besides `mrm8488/longformer-base-4096-finetuned-squadv2` all models more or less follow the same memory consumption pattern with `aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2` seemingly being able to better scale to larger sequence lengths. \n", "`mrm8488/longformer-base-4096-finetuned-squadv2` is a *Longformer* model, which makes use of *LocalAttention* (check [this](https://huggingface.co/blog/reformer) blog post to learn more about local attention) so that the model scales much better to longer input sequences.\n", "\n", "For the sake of this notebook, we assume that the longest required input will be less than 512 tokens so that we settle on the models `aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2` and `deepset/roberta-base-squad2`. \n", "\n", "To better understand how many API requests of our *question-answering* pipeline can be run in parallel, we are interested in finding out how many batches the two models run out of memory." ] }, { "cell_type": "code", "metadata": { "id": "9Nwmb57M4wIG", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 356 }, "outputId": "4c074607-5200-4cca-bbd5-c39d32ce0451" }, "source": [ "!python run_benchmark.py --no_speed --save_to_csv \\\n", " --inference_memory_csv_file plots_pt/required_memory_2.csv \\\n", " --env_info_csv_file plots_pt/env.csv \\\n", " --models aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2 \\\n", " deepset/roberta-base-squad2 \\\n", " --sequence_lengths 512 \\\n", " --batch_sizes 64 128 256 512\\\n", " --no_env_print" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 11:56:44.781155: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n", "1 / 2\n", "2 / 2\n", "Doesn't fit on GPU. CUDA out of memory. Tried to allocate 6.00 GiB (GPU 0; 15.90 GiB total capacity; 9.47 GiB already allocated; 5.60 GiB free; 9.52 GiB reserved in total by PyTorch)\n", "\n", "==================== INFERENCE - MEMORY - RESULT ====================\n", "--------------------------------------------------------------------------------\n", " Model Name Batch Size Seq Length Memory in MB \n", "--------------------------------------------------------------------------------\n", "aodiniz/bert_uncased_L-10_H-51 64 512 2455 \n", "aodiniz/bert_uncased_L-10_H-51 128 512 3929 \n", "aodiniz/bert_uncased_L-10_H-51 256 512 6875 \n", "aodiniz/bert_uncased_L-10_H-51 512 512 12783 \n", " deepset/roberta-base-squad2 64 512 3539 \n", " deepset/roberta-base-squad2 128 512 5747 \n", " deepset/roberta-base-squad2 256 512 10167 \n", " deepset/roberta-base-squad2 512 512 N/A \n", "--------------------------------------------------------------------------------\n", "Saving results to csv.\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "P4JFKLZXqmss", "colab_type": "text" }, "source": [ "Let's plot the results again, this time changing the x-axis to `batch_size` however." ] }, { "cell_type": "code", "metadata": { "id": "tNtvHpE67pgH", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 534 }, "outputId": "092c4dac-5002-4603-8eba-cd4bca727744" }, "source": [ "# plot graph and save as image\n", "!python plot_csv_file.py --csv_file plots_pt/required_memory_2.csv \\\n", " --figure_png_file=plots_pt/required_memory_plot_2.png \\\n", " --no_log_scale \\\n", " --short_model_names aodiniz-bert deepset-roberta \\\n", " --plot_along_batch\n", "\n", "# show image\n", "from IPython.display import Image\n", "Image('plots_pt/required_memory_plot_2.png')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 11:57:51.876810: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 11 } ] }, { "cell_type": "markdown", "metadata": { "id": "bdoTRF7Yq8oV", "colab_type": "text" }, "source": [ "Interesting! `aodiniz/bert_uncased_L-10_H-51` clearly scales better for higher batch sizes and does not even run out of memory for 512 tokens.\n", "\n", "For comparison, let's run the same benchmarking on TensorFlow." ] }, { "cell_type": "code", "metadata": { "id": "752y4onm-gpy", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 726 }, "outputId": "a65c4bc1-f88e-46ae-cb80-27e29a0a1954" }, "source": [ "# create plots folder in content\n", "!mkdir -p plots_tf\n", "\n", "!TF_CPP_MIN_LOG_LEVEL=3 python run_benchmark_tf.py --no_speed --save_to_csv \\\n", " --inference_memory_csv_file plots_tf/required_memory_2.csv \\\n", " --env_info_csv_file plots_tf/env.csv \\\n", " --models aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2 \\\n", " deepset/roberta-base-squad2 \\\n", " --sequence_lengths 512 \\\n", " --batch_sizes 64 128 256 512 \\\n", " --no_env_print \\" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "1 / 2\n", "Doesn't fit on GPU. OOM when allocating tensor with shape[512,8,512,512] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc\n", "\t [[node tf_bert_model/bert/encoder/layer_._0/attention/self/Softmax (defined at /usr/local/lib/python3.6/dist-packages/transformers/modeling_tf_bert.py:267) ]]\n", "Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.\n", " [Op:__inference_run_in_graph_mode_4243]\n", "\n", "Errors may have originated from an input operation.\n", "Input Source operations connected to node tf_bert_model/bert/encoder/layer_._0/attention/self/Softmax:\n", " tf_bert_model/bert/encoder/layer_._0/attention/self/add (defined at /usr/local/lib/python3.6/dist-packages/transformers/modeling_tf_bert.py:264)\n", "\n", "Function call stack:\n", "run_in_graph_mode\n", "\n", "2 / 2\n", "Doesn't fit on GPU. OOM when allocating tensor with shape[512,12,512,512] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc\n", "\t [[node tf_roberta_model/roberta/encoder/layer_._0/attention/self/Softmax (defined at /usr/local/lib/python3.6/dist-packages/transformers/modeling_tf_bert.py:267) ]]\n", "Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.\n", " [Op:__inference_run_in_graph_mode_5047]\n", "\n", "Errors may have originated from an input operation.\n", "Input Source operations connected to node tf_roberta_model/roberta/encoder/layer_._0/attention/self/Softmax:\n", " tf_roberta_model/roberta/encoder/layer_._0/attention/self/add (defined at /usr/local/lib/python3.6/dist-packages/transformers/modeling_tf_bert.py:264)\n", "\n", "Function call stack:\n", "run_in_graph_mode\n", "\n", "\n", "==================== INFERENCE - MEMORY - RESULT ====================\n", "--------------------------------------------------------------------------------\n", " Model Name Batch Size Seq Length Memory in MB \n", "--------------------------------------------------------------------------------\n", "aodiniz/bert_uncased_L-10_H-51 64 512 2885 \n", "aodiniz/bert_uncased_L-10_H-51 128 512 4933 \n", "aodiniz/bert_uncased_L-10_H-51 256 512 9029 \n", "aodiniz/bert_uncased_L-10_H-51 512 512 N/A \n", " deepset/roberta-base-squad2 64 512 4933 \n", " deepset/roberta-base-squad2 128 512 9029 \n", " deepset/roberta-base-squad2 256 512 15391 \n", " deepset/roberta-base-squad2 512 512 N/A \n", "--------------------------------------------------------------------------------\n", "Saving results to csv.\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "3h5JqW2osAQ7", "colab_type": "text" }, "source": [ "Let's see the same plot for TensorFlow." ] }, { "cell_type": "code", "metadata": { "id": "hkw-EOOvA52R", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 534 }, "outputId": "3947ccf0-b91c-43bf-8569-d6afe0232185" }, "source": [ "# plot graph and save as image\n", "!python plot_csv_file.py --csv_file plots_tf/required_memory_2.csv --figure_png_file=plots_tf/required_memory_plot_2.png --no_log_scale --short_model_names aodiniz-bert deepset-roberta --plot_along_batch\n", "\n", "# show image\n", "from IPython.display import Image\n", "Image('plots_tf/required_memory_plot_2.png')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 11:59:28.790462: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 13 } ] }, { "cell_type": "markdown", "metadata": { "id": "ybqol62LsVrF", "colab_type": "text" }, "source": [ "The model implemented in TensorFlow requires more memory than the one implemented in PyTorch. Let's say for whatever reason we have decided to use TensorFlow instead of PyTorch. \n", "\n", "The next step is to measure the inference time of these two models. Instead of disabling time measurement with `--no_speed`, we will now disable memory measurement with `--no_memory`." ] }, { "cell_type": "code", "metadata": { "id": "m8qfllt9uPZg", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 302 }, "outputId": "b185f547-fbe6-4287-b8a0-6229d3eec377" }, "source": [ "!TF_CPP_MIN_LOG_LEVEL=3 python run_benchmark_tf.py --no_memory --save_to_csv \\\n", " --inference_time_csv_file plots_tf/time_2.csv \\\n", " --env_info_csv_file plots_tf/env.csv \\\n", " --models aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2 \\\n", " deepset/roberta-base-squad2 \\\n", " --sequence_lengths 8 32 128 512 \\\n", " --batch_sizes 256 \\\n", " --no_env_print \\" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "1 / 2\n", "2 / 2\n", "\n", "==================== INFERENCE - SPEED - RESULT ====================\n", "--------------------------------------------------------------------------------\n", " Model Name Batch Size Seq Length Time in s \n", "--------------------------------------------------------------------------------\n", "aodiniz/bert_uncased_L-10_H-51 256 8 0.033 \n", "aodiniz/bert_uncased_L-10_H-51 256 32 0.119 \n", "aodiniz/bert_uncased_L-10_H-51 256 128 0.457 \n", "aodiniz/bert_uncased_L-10_H-51 256 512 2.21 \n", " deepset/roberta-base-squad2 256 8 0.064 \n", " deepset/roberta-base-squad2 256 32 0.25 \n", " deepset/roberta-base-squad2 256 128 1.01 \n", " deepset/roberta-base-squad2 256 512 4.65 \n", "--------------------------------------------------------------------------------\n", "Saving results to csv.\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "-bPClv873lrW", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 534 }, "outputId": "152f14c7-288a-4471-9cc0-5108cb24804c" }, "source": [ "# plot graph and save as image\n", "!python plot_csv_file.py --csv_file plots_tf/time_2.csv --figure_png_file=plots_tf/time_plot_2.png --no_log_scale --short_model_names aodiniz-bert deepset-roberta --is_time\n", "\n", "# show image\n", "from IPython.display import Image\n", "Image('plots_tf/time_plot_2.png')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 12:04:58.002654: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 15 } ] }, { "cell_type": "markdown", "metadata": { "id": "f9sIjRWd4Me1", "colab_type": "text" }, "source": [ "Ok, this took some time... time measurements take much longer than memory measurements because the forward pass is called multiple times for stable results. Timing measurements leverage Python's [timeit module](https://docs.python.org/2/library/timeit.html#timeit.Timer.repeat) and run 10 times the value given to the `--repeat` argument (defaults to 3), so in our case 30 times.\n", "\n", "Let's focus on the resulting plot. It becomes obvious that `aodiniz/bert_uncased_L-10_H-51` is around twice as fast as `deepset/roberta-base-squad2`. Given that the model is also more memory efficient and assuming that the model performs reasonably well, for the sake of this notebook we will settle on `aodiniz/bert_uncased_L-10_H-51`. Our model should be able to process input sequences of up to 512 tokens. Latency time of around 2 seconds might be too long though, so let's compare the time for different batch sizes and using TensorFlows XLA package for more speed." ] }, { "cell_type": "code", "metadata": { "id": "aPeMsHJb3t2g", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 202 }, "outputId": "56276801-6d56-444c-8ac8-75471136aa84" }, "source": [ "!TF_CPP_MIN_LOG_LEVEL=3 python run_benchmark_tf.py --no_memory --save_to_csv \\\n", " --inference_time_csv_file plots_tf/time_xla_1.csv \\\n", " --env_info_csv_file plots_tf/env.csv \\\n", " --models aodiniz/bert_uncased_L-10_H-512_A-8_cord19-200616_squad2 \\\n", " --sequence_lengths 512 \\\n", " --batch_sizes 8 64 256 \\\n", " --no_env_print \\\n", " --use_xla" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "1 / 1\n", "\n", "==================== INFERENCE - SPEED - RESULT ====================\n", "--------------------------------------------------------------------------------\n", " Model Name Batch Size Seq Length Time in s \n", "--------------------------------------------------------------------------------\n", "aodiniz/bert_uncased_L-10_H-51 8 512 0.056 \n", "aodiniz/bert_uncased_L-10_H-51 64 512 0.402 \n", "aodiniz/bert_uncased_L-10_H-51 256 512 1.591 \n", "--------------------------------------------------------------------------------\n", "Saving results to csv.\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "_KrzL6y_6Z2T", "colab_type": "text" }, "source": [ "First of all, it can be noted that XLA reduces latency time by a factor of ca. 1.3 (which is more than observed for other models by TensorFlow [here](https://www.tensorflow.org/xla)). A batch size of 64 looks like a good choice. More or less half a second for the forward pass is good enough.\n", "\n", "Cool, now it should be straightforward to benchmark your favorite models. All the inference time measurements can also be done using the `run_benchmark.py` script for PyTorch." ] }, { "cell_type": "markdown", "metadata": { "id": "Drht35ylINuK", "colab_type": "text" }, "source": [ "### **Training - Configuration Comparison**\n", "\n", "Next, we will look at how a model can be benchmarked on different configurations. This is especially helpful when one wants to decide how to most efficiently choose the model's configuration parameters for training.\n", "In the following different configurations of a *Bart MNLI* model will be compared to each other using `PyTorchBenchmark`. \n", "\n", "Training in `PyTorchBenchmark` is defined by running one forward pass to compute the loss: `loss = model(input_ids, labels=labels)[0]` and one backward pass to compute the gradients `loss.backward()`.\n", "\n", "Let's see how to most efficiently train a Bart MNLI model from scratch." ] }, { "cell_type": "code", "metadata": { "id": "YTKW0Ml3Wpwq", "colab_type": "code", "colab": {} }, "source": [ "# Imports\n", "from transformers import BartConfig, PyTorchBenchmark, PyTorchBenchmarkArguments" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "6Uw92tMRq6MV", "colab_type": "text" }, "source": [ "For the sake of the notebook, we assume that we are looking for a more efficient version of Facebook's `bart-large-mnli` model.\n", "Let's load its configuration and check out the important parameters." ] }, { "cell_type": "code", "metadata": { "id": "nukyLU7iXBzN", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 637, "referenced_widgets": [ "975f42d7b55c4d0caf229cd4c16df5d2", "69b36685703342eaa80b6f0e01f94e04", "c8acb33d6a254607a6340c0aa33446f3", "a6c3647736554beea36db798827203b2", "e812aaf8214c4ad983f41804cb82562b", "eed2ce14188a453ca296601ca39133b6", "548f91729b8d4f3aa81f78c7a1620101", "900c1cb473f54b48a59226c61fafd626" ] }, "outputId": "ae4ecae5-bd30-4eb4-e4b3-34447036e98d" }, "source": [ "BartConfig.from_pretrained(\"facebook/bart-large-mnli\").to_diff_dict()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "975f42d7b55c4d0caf229cd4c16df5d2", "version_minor": 0, "version_major": 2 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=908.0, style=ProgressStyle(description_…" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "{'_num_labels': 3,\n", " 'activation_dropout': 0.0,\n", " 'activation_function': 'gelu',\n", " 'add_bias_logits': False,\n", " 'add_final_layer_norm': False,\n", " 'attention_dropout': 0.0,\n", " 'bos_token_id': 0,\n", " 'classifier_dropout': 0.0,\n", " 'd_model': 1024,\n", " 'decoder_attention_heads': 16,\n", " 'decoder_ffn_dim': 4096,\n", " 'decoder_layerdrop': 0.0,\n", " 'decoder_layers': 12,\n", " 'dropout': 0.1,\n", " 'encoder_attention_heads': 16,\n", " 'encoder_ffn_dim': 4096,\n", " 'encoder_layerdrop': 0.0,\n", " 'encoder_layers': 12,\n", " 'eos_token_id': 2,\n", " 'extra_pos_embeddings': 2,\n", " 'id2label': {0: 'contradiction', 1: 'neutral', 2: 'entailment'},\n", " 'init_std': 0.02,\n", " 'is_encoder_decoder': True,\n", " 'label2id': {'contradiction': 0, 'entailment': 2, 'neutral': 1},\n", " 'max_position_embeddings': 1024,\n", " 'model_type': 'bart',\n", " 'normalize_before': False,\n", " 'normalize_embedding': True,\n", " 'num_hidden_layers': 12,\n", " 'output_past': False,\n", " 'pad_token_id': 1,\n", " 'scale_embedding': False,\n", " 'static_position_embeddings': False,\n", " 'vocab_size': 50265}" ] }, "metadata": { "tags": [] }, "execution_count": 18 } ] }, { "cell_type": "markdown", "metadata": { "id": "3t4ZOmg5sTrx", "colab_type": "text" }, "source": [ "Alright! The important configuration parameters are usually the number of layers `config.encoder_num_layers` and `config.decoder_num_layers`, the model's hidden size: `config.d_model`, the number of attention heads `config.encoder_attention_heads` and `config.decoder_attention_heads` and the vocabulary size `config.vocab_size`.\n", "\n", "Let's create 4 configurations different from the baseline and see how they compare in terms of peak memory consumption." ] }, { "cell_type": "code", "metadata": { "id": "qA0d1RvGYAEE", "colab_type": "code", "colab": {} }, "source": [ "config_baseline = BartConfig.from_pretrained(\"facebook/bart-large-mnli\")\n", "config_768_hidden = BartConfig.from_pretrained(\"facebook/bart-large-mnli\", d_model=768)\n", "config_8_heads = BartConfig.from_pretrained(\"facebook/bart-large-mnli\", decoder_attention_heads=8, encoder_attention_heads=8)\n", "config_10000_vocab = BartConfig.from_pretrained(\"facebook/bart-large-mnli\", vocab_size=10000)\n", "config_8_layers = BartConfig.from_pretrained(\"facebook/bart-large-mnli\", encoder_layers=8, decoder_layers=8)" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "RhefJji1rU07", "colab_type": "text" }, "source": [ "Cool, now we can benchmark these configs against the baseline config. This time, instead of using the benchmarking script we will directly use the `PyTorchBenchmark` class. The class expects the argument `args` which has to be of type `PyTorchBenchmarkArguments` and optionally a list of configs.\n", "\n", "First, we define the `args` and give the different configurations appropriate model names. The model names must be in the same order as the configs that are directly passed to `PyTorchBenchMark`.\n", "\n", "If no `configs` are provided to `PyTorchBenchmark`, it is assumed that the model names `[\"bart-base\", \"bart-768-hid\", \"bart-8-head\", \"bart-10000-voc\", \"bart-8-lay\"]` correspond to official model identifiers and their corresponding configs are loaded as was shown in the previous section.\n", "\n", "It is assumed that the model will be trained on half-precision, so we add the option `fp16=True` for the following benchmarks." ] }, { "cell_type": "code", "metadata": { "id": "Lv_WvM2jr79r", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 554 }, "outputId": "939dc355-036f-45ad-c996-e6cb136c7a59" }, "source": [ "# define args\n", "args = PyTorchBenchmarkArguments(models=[\"bart-base\", \"bart-768-hid\", \"bart-8-head\", \"bart-10000-voc\", \"bart-8-lay\"], \n", " no_speed=True,\n", " no_inference=True,\n", " training=True, \n", " train_memory_csv_file=\"plots_pt/training_mem_fp16.csv\", \n", " save_to_csv=True, \n", " env_info_csv_file=\"plots_pt/env.csv\",\n", " sequence_lengths=[64, 128, 256, 512],\n", " batch_sizes=[8],\n", " no_env_print=True,\n", " fp16=True) # let's train on fp16\n", "\n", "# create benchmark\n", "benchmark = PyTorchBenchmark(configs=[config_baseline, config_768_hidden, config_8_heads, config_10000_vocab, config_8_layers], args=args)\n", "\n", "# run benchmark\n", "result = benchmark.run()" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "1 / 5\n", "2 / 5\n", "3 / 5\n", "4 / 5\n", "5 / 5\n", "\n", "==================== TRAIN - MEMORY - RESULTS ====================\n", "--------------------------------------------------------------------------------\n", " Model Name Batch Size Seq Length Memory in MB \n", "--------------------------------------------------------------------------------\n", " bart-base 8 64 2905 \n", " bart-base 8 128 3199 \n", " bart-base 8 256 5401 \n", " bart-base 8 512 11929 \n", " bart-768-hid 8 64 2441 \n", " bart-768-hid 8 128 2891 \n", " bart-768-hid 8 256 4963 \n", " bart-768-hid 8 512 10865 \n", " bart-8-head 8 64 2869 \n", " bart-8-head 8 128 3059 \n", " bart-8-head 8 256 4825 \n", " bart-8-head 8 512 9625 \n", " bart-10000-voc 8 64 2607 \n", " bart-10000-voc 8 128 2801 \n", " bart-10000-voc 8 256 4687 \n", " bart-10000-voc 8 512 10575 \n", " bart-8-lay 8 64 2445 \n", " bart-8-lay 8 128 2591 \n", " bart-8-lay 8 256 4187 \n", " bart-8-lay 8 512 8813 \n", "--------------------------------------------------------------------------------\n", "Saving results to csv.\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "DJWs_tDjxzuO", "colab_type": "text" }, "source": [ "Nice, let's plot the results again." ] }, { "cell_type": "code", "metadata": { "id": "0r-r-R1lxEr0", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 534 }, "outputId": "5dbeb7f7-c996-4db2-a560-735354a5b76f" }, "source": [ "# plot graph and save as image\n", "!python plot_csv_file.py --csv_file plots_pt/training_mem_fp16.csv --figure_png_file=plots_pt/training_mem_fp16.png --no_log_scale\n", "\n", "# show image\n", "from IPython.display import Image\n", "Image('plots_pt/training_mem_fp16.png')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 12:11:47.558303: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "image/png": "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AagPP/zQU6aurk7dc889Kjg4WPn5+akrr7xS5efnN9rPrl271GWXXaZ8fX1VWFiYeuCBB5Tdbj/DV3NuGDt2rIqPAU0h1QAABi1JREFUj1dGo1GFh4erwYMHe8KfUnI/vMGfA6DckzNrzJgxKioqShmNRhUTE6PGjBmjtm/f7lkv98N7aZRSqmXqHoUQQgghREuQNoBCCCGEEK2MBEAhhBBCiFZGAqAQQgghRCsjAVAIIYQQopWRACiEEEII0cpIABRCCCGEaGUkAAohhBBCtDISAIUQXmPgwIFMmTKlpU/juGg0GubMmdPSpyGEECdFAqAQwmt89dVXPP300822v+LiYoxGIzU1Ndjtdvz9/cnNzW1URoKcEKI10rf0CQghxEEhISHNur9Vq1aRmpqKv78/q1evJiQkhLi4uGY9hhBCnI2kBlAI4TX+/Ai4bdu2PPfcc4wdO5aAgADi4uJ49913j3t/K1eupF+/fgAsX77c8/fh+we48sor0Wg0ntcAb7/9Nu3bt8doNNKhQwc+/vjjYx7r8ccfJyoqig0bNniO179/f3x9fYmNjWXSpEnU1NQc97U1NDQwceJEoqKi8PHxIT4+nmnTph33tQshxDG19GTEQghx0IABA9TkyZM9r+Pj41VISIh68803VU5Ojpo2bZrSarVq69atR93H7t27VWBgoAoMDFQGg0H5+PiowMBAZTQalclkUoGBgeruu+9WSilVVFSkAPXhhx+q/Px8VVRUpJRS6quvvlIGg0G9+eabKjs7W7300ktKp9OpRYsWeY4DqNmzZyuXy6UmTpyo2rZtq3JycpRSSm3fvl35+/urV155RW3btk2tWLFCde/eXd16663HfW0vvviiio2NVcuWLVO7du1SP/30k5o5c2bzvdlCiFZNo5RSLR1ChRAC3DWA3bp149VXXwXctWT9+/f31L4ppbBarTz55JPcddddR9yHw+Fgz549VFZW0qtXL3799Vf8/f3p1q0bc+fOJS4uDrPZTFhYGOBuAzh79mxGjhzp2Ue/fv3o3Llzoxq5a665hpqaGubOnevZbtasWcyePZvff/+dzMxMYmJiABg3bhw6nY7p06d7tl++fDkDBgygpqYGHx+fv7y2SZMmkZWVxY8//ohGo2mut1gIIQB5BCyE8HJdu3b1/K3RaLBarRQVFR21vF6vp23btmzdupXevXvTtWtXCgoKiIyM5KKLLqJt27ae8Hc0W7ZsafK4uF+/fmzZsqXRsvvuu4/Vq1ezbNkyT/gDWL9+PTNmzMBsNnt+hgwZgsvlYufOncd1bbfeeivr1q2jQ4cOTJo0iR9++OGY5yyEECdCOoEIIbyawWBo9Fqj0eByuY5avnPnzuzevRu73Y7L5cJsNuNwOHA4HJjNZuLj48nKymqWc7vkkkv49NNPWbBgATfccINneXV1NePHj2fSpElNtjm8E8qxrq1Hjx7s3LmTefPm8eOPP3LNNdeQnp7Ol19+2SznLoRo3SQACiHOKd9//z12u53Bgwfzwgsv0LNnT6699lpuvfVWLr300iahy2Aw4HQ6Gy3r1KkTK1as4JZbbvEsW7FiBcnJyY3KjRgxguHDh3P99dej0+m49tprAXd427x5M4mJiad0LRaLhTFjxjBmzBiuuuoqLr30UsrKypq9t7QQovWRACiEOKfEx8dTUFBAYWEhV1xxBRqNhqysLEaPHk1UVFST8m3btmXhwoX069cPk8lEcHAwDz74INdccw3du3cnPT2db7/9lq+++ooff/yxyfZXXnklH3/8MTfddBN6vZ6rrrqKqVOn0rdvXyZOnMi4cePw9/dn8+bNZGZm8sYbbxzXdbz88stERUXRvXt3tFots2bNwmq1EhQUdMrvkRBCSAAUQpxzlixZQu/e/799OzZVIArCMPqzJptYgSZiDRsKliAibGQNC6Z2IBoYG9iFuViGiZWoDRg8eOGcU8DAzb6BuV3ats3j8ch0Ov0Zf0lyOp2y2+1yuVwymUzyer2yWq1yPp9zPB4zDENms1mu12uWy+XPGZvNJu/3O9vtNk3TZL1e536/Z7/fZ7FY5PP5ZD6fp+/7P79hPB7ncDjk+XxmNBql67rcbrc0jdNt4P/8AgYAKMYqCQBQjAAEAChGAAIAFCMAAQCKEYAAAMUIQACAYgQgAEAxAhAAoBgBCABQjAAEAChGAAIAFCMAAQCK+QLRT294X0EVeAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 21 } ] }, { "cell_type": "markdown", "metadata": { "id": "5xTuRPBCx-dw", "colab_type": "text" }, "source": [ "As expected the model of the baseline config requires the most memory. \n", "\n", "It is interesting to see that the \"bart-8-head\" model initially requires more memory than `bart-10000-voc`, but then clearly outperforms `bart-10000-voc` at an input length of 512. \n", "Less surprising is that the \"bart-8-lay\" is by far the most memory-efficient model when reminding oneself that during the forward pass every layer has to store its activations for the backward pass.\n", "\n", "Alright, given the data above, let's say we narrow our candidates down to only the \"bart-8-head\" and \"bart-8-lay\" models. \n", " \n", "Let's compare these models again on training time." ] }, { "cell_type": "code", "metadata": { "id": "c9xSoCUZ0Hlz", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 269 }, "outputId": "7054af8a-3050-4aca-f503-e229ed365cb0" }, "source": [ "# define args\n", "args = PyTorchBenchmarkArguments(models=[\"bart-8-head\", \"bart-8-lay\"], \n", " no_inference=True,\n", " training=True,\n", " no_memory=True,\n", " train_time_csv_file=\"plots_pt/training_speed_fp16.csv\", \n", " save_to_csv=True, \n", " env_info_csv_file=\"plots_pt/env.csv\",\n", " sequence_lengths=[32, 128, 512],\n", " batch_sizes=[8],\n", " no_env_print=True,\n", " repeat=1, # to make speed measurement faster but less accurate\n", " no_multi_process=True, # google colab has problems with multi processing\n", " fp16=True\n", " )\n", "\n", "# create benchmark\n", "benchmark = PyTorchBenchmark(configs=[config_8_heads, config_8_layers], args=args)\n", "\n", "# run benchmark\n", "result = benchmark.run()" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "1 / 2\n", "2 / 2\n", "\n", "==================== TRAIN - SPEED - RESULTS ====================\n", "--------------------------------------------------------------------------------\n", " Model Name Batch Size Seq Length Time in s \n", "--------------------------------------------------------------------------------\n", " bart-8-head 8 32 0.127 \n", " bart-8-head 8 128 0.398 \n", " bart-8-head 8 512 1.567 \n", " bart-8-lay 8 32 0.088 \n", " bart-8-lay 8 128 0.284 \n", " bart-8-lay 8 512 1.153 \n", "--------------------------------------------------------------------------------\n", "Saving results to csv.\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "UseFqLiuRQuX", "colab_type": "text" }, "source": [ "The option `no_multi_process` disabled multi-processing here. This option should in general only be used for testing or debugging. Enabling multi-processing is crucial to ensure accurate memory consumption measurement, but is less important when only measuring speed. The main reason it is disabled here is that google colab sometimes raises \"CUDA initialization\" due to the notebook's environment. \n", "This problem does not arise when running benchmarks outside of a notebook.\n", "\n", "Alright, let's plot the last speed results as well." ] }, { "cell_type": "code", "metadata": { "id": "8c6fjmWLU0Rx", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 534 }, "outputId": "8a4b4db7-abed-47c4-da61-c3b1ccae66f1" }, "source": [ "# plot graph and save as image\n", "!python plot_csv_file.py --csv_file plots_pt/training_speed_fp16.csv --figure_png_file=plots_pt/training_speed_fp16.png --no_log_scale --is_time\n", "\n", "# show image\n", "from IPython.display import Image\n", "Image('plots_pt/training_speed_fp16.png')" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "2020-06-26 12:13:17.849561: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "image/png": "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zz/vuby0tDSD6YyMDFWtWjXVtGlTfdnevXvzTbZ69eqVJwHs06eP8vDwUFeuXDGo27VrV+Xk5JRnfXdr1KiRCgwMNChbs2aNAtSHH35oUN6pUyel0WjUqVOn9GWAMjMzU3///fc913Pn+vJLAP39/VV6erq+fMaMGQpQhw4d0pflHot///1XX/YgxzciIkIBavjw4QZ1d+7cqQC1aNEig/INGzbkKff29laA2rFjh77s8uXLysrKSr377rv6sjFjxihArVq1Ks8+0Ol0SimlYmNjlZmZmdq5c6fB+7NmzVKA+vXXX/PMe6dGjRopQH366af6svT0dFWjRg3l7u6uT1yzsrIM9q1SSl2/fl2VLVvW4Msv92/N0dFRXb582aD+n3/+qQA1b968e8Z0p0uXLqlmzZopQP9ydXUt1Je9Uv8d77u/oF966SX11FNP6afj4+OVVqtVH330kUG9Q4cOKXNzc4Py/P4eJk2apDQajTp79qy+rEaNGsrDw8PgM2fTpk0KuG8CmJSUlOd8UEqpKVOmGKxn2rRpec7nR1Haz4f8EsD8jmf//v2Vra2t/jtAKaXq1q2rateubVBv1apVClDbtm0r9DaIx0MuAQsDnTt3xsnJST9du3ZtIKd/obm5uUF5RkYG58+fB3Iusdy4cYNu3bpx5coV/Uur1VK7du08lz0eVm6/tLVr15KZmVlgvTsvdVy/fp2kpCQaNmzIvn379OW5l1DfeOMNg3nffPNNg2mlFCtXriQsLAyllMH2tWrViqSkJIPlFta6devQarUMHjzYoPzdd99FKcX69esNyhs1akRAQMADr+dOr776qkH/wIYNGwJw5syZe873MMf39ddfN5hevnw5Tk5OtGjRwmAZwcHB2Nvb51lGQECAPj7IuSTt5+dnEOvKlSupXr06L730Up71514CW758Of7+/lStWtVgvU2bNgUo1Llpbm5O//799dOWlpb079+fy5cvs3fvXgC0Wq1+3+p0Oq5du0ZWVhYhISH5nh8dO3bEzc3tvuu+H1tbW/z8/IiIiGD58uV8/fXXeHh48PLLLxtc3r+fAQMGGEw3bNiQq1evkpycDMCqVavQ6XR06dLFYD+WK1cOX19fg/14599famoqV65coV69eiil2L9/PwCJiYkcOHCAiIgIg8+cFi1aFOo8d3R0JDQ0lGXLlhl0mfj222+p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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 23 } ] }, { "cell_type": "markdown", "metadata": { "id": "b6T7I4lnVCpk", "colab_type": "text" }, "source": [ "Unsurprisingly, \"bart-8-lay\" is faster than \"bart-8-head\" by a factor of ca. 1.3. It might very well be that reducing the layers by a factor of 2 leads to much more performance degradation than reducing the number of heads by a factor of 2.\n", "For more information on computational efficient Bart models, check out the new *distilbart* model [here](https://huggingface.co/models?search=distilbart)" ] }, { "cell_type": "markdown", "metadata": { "id": "S4cG0NwfNugm", "colab_type": "text" }, "source": [ "Alright, that's it! Now you should be able to benchmark your favorite models on your favorite configurations. \n", "\n", "Feel free to share your results with the community [here](https://github.com/huggingface/transformers/blob/master/examples/benchmarking/README.md) or by tweeting us https://twitter.com/HuggingFace 🤗." ] } ] }