Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"基准测试","local":"基准测试","sections":[{"title":"如何对🤗 Transformers模型进行基准测试","local":"如何对-transformers模型进行基准测试","sections":[],"depth":2},{"title":"基准测试的推荐策略","local":"基准测试的推荐策略","sections":[],"depth":2},{"title":"分享您的基准测试结果","local":"分享您的基准测试结果","sections":[],"depth":2}],"depth":1}"> | |
| <link href="/docs/transformers/main/zh/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/entry/start.fa6fe8dc.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/scheduler.25b97de1.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/singletons.3b84b2f1.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/index.e188933d.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/paths.f0da887a.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/entry/app.d6ba0f9a.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/index.d9030fc9.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/nodes/0.ac077612.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/each.e59479a4.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/nodes/8.566cfcd4.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/Tip.baa67368.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/CodeBlock.e6cd0d95.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/DocNotebookDropdown.5ea6cb78.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/globals.7f7f1b26.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/Markdown.d8c1b6cc.js"> | |
| <link rel="modulepreload" href="/docs/transformers/main/zh/_app/immutable/chunks/EditOnGithub.91d95064.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{"title":"基准测试","local":"基准测试","sections":[{"title":"如何对🤗 Transformers模型进行基准测试","local":"如何对-transformers模型进行基准测试","sections":[],"depth":2},{"title":"基准测试的推荐策略","local":"基准测试的推荐策略","sections":[],"depth":2},{"title":"分享您的基准测试结果","local":"分享您的基准测试结果","sections":[],"depth":2}],"depth":1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <h1 class="relative group"><a id="基准测试" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#基准测试"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>基准测试</span></h1> <div class="course-tip course-tip-orange bg-gradient-to-br dark:bg-gradient-to-r before:border-orange-500 dark:before:border-orange-800 from-orange-50 dark:from-gray-900 to-white dark:to-gray-950 border border-orange-50 text-orange-700 dark:text-gray-400"><p data-svelte-h="svelte-1noh5hz">小提示:Hugging Face的基准测试工具已经不再更新,建议使用外部基准测试库来衡量Transformer模 | |
| 型的速度和内存复杂度。</p></div> <div class="flex space-x-1 absolute z-10 right-0 top-0"> <div class="relative colab-dropdown "> <button class=" " type="button"> <img alt="Open In Colab" class="!m-0" src="https://colab.research.google.com/assets/colab-badge.svg"> </button> </div> <div class="relative colab-dropdown "> <button class=" " type="button"> <img alt="Open In Studio Lab" class="!m-0" src="https://studiolab.sagemaker.aws/studiolab.svg"> </button> </div></div> <p data-svelte-h="svelte-3vgl82">让我们来看看如何对🤗 Transformers模型进行基准测试,以及进行测试的推荐策略和已有的基准测试结果。</p> <p data-svelte-h="svelte-9kt0o2">如果您需要更详细的回答,可以在<a href="https://github.com/huggingface/notebooks/tree/main/examples/benchmark.ipynb" rel="nofollow">这里</a>找到更多关于基准测试的内容。</p> <h2 class="relative group"><a id="如何对-transformers模型进行基准测试" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#如何对-transformers模型进行基准测试"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>如何对🤗 Transformers模型进行基准测试</span></h2> <p data-svelte-h="svelte-10rp26e">使用<code>PyTorchBenchmark</code>和<code>TensorFlowBenchmark</code>类可以灵活地对🤗 Transformers模型进行基准测试。这些基准测试类可以衡量模型在<strong>推理</strong>和<strong>训练</strong>过程中所需的<strong>峰值内存</strong>和<strong>时间</strong>。</p> <div class="course-tip bg-gradient-to-br dark:bg-gradient-to-r before:border-green-500 dark:before:border-green-800 from-green-50 dark:from-gray-900 to-white dark:to-gray-950 border border-green-50 text-green-700 dark:text-gray-400"><p data-svelte-h="svelte-nmhj">这里的<strong>推理</strong>指的是一次前向传播(forward pass),而训练则指一次前向传播和反向传播(backward pass)。</p></div> <p data-svelte-h="svelte-mgrxc0">基准测试类 <code>PyTorchBenchmark</code> 和 <code>TensorFlowBenchmark</code> 需要分别传入 <code>PyTorchBenchmarkArguments</code> 和 <code>TensorFlowBenchmarkArguments</code> 类型的对象来进行实例化。这些类是数据类型,包含了所有相关的配置参数,用于其对应的基准测试类。</p> <p data-svelte-h="svelte-1lozh36">在下面的示例中,我们展示了如何对类型为 <strong>bert-base-cased</strong> 的BERT模型进行基准测试:</p> <div class="space-y-10 py-6 2xl:py-8 2xl:-mx-4"> <div class="border border-gray-200 rounded-xl px-4 relative"><div class="flex h-[22px] mt-[-12.5px] justify-between leading-none"><div class="flex px-1 items-center space-x-1 bg-white dark:bg-gray-950"><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><defs><clipPath id="a"><rect x="3.05" y="0.5" width="25.73" height="31" fill="none"></rect></clipPath></defs><g clip-path="url(#a)"><path d="M24.94,9.51a12.81,12.81,0,0,1,0,18.16,12.68,12.68,0,0,1-18,0,12.81,12.81,0,0,1,0-18.16l9-9V5l-.84.83-6,6a9.58,9.58,0,1,0,13.55,0ZM20.44,9a1.68,1.68,0,1,1,1.67-1.67A1.68,1.68,0,0,1,20.44,9Z" fill="#ee4c2c"></path></g></svg> <span>Pytorch</span></div> <div class="cursor-pointer flex items-center justify-center space-x-1 text-sm px-2 bg-white dark:bg-gray-950 hover:underline leading-none"><svg class="" width="0.9em" height="0.9em" viewBox="0 0 10 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M1.39125 1.9725L0.0883333 0.669997L0.677917 0.0804138L8.9275 8.33041L8.33792 8.91958L6.95875 7.54041C6.22592 8.00523 5.37572 8.25138 4.50792 8.25C2.26125 8.25 0.392083 6.63333 0 4.5C0.179179 3.52946 0.667345 2.64287 1.39167 1.9725H1.39125ZM5.65667 6.23833L5.04667 5.62833C4.81335 5.73996 4.55116 5.77647 4.29622 5.73282C4.04129 5.68918 3.80617 5.56752 3.62328 5.38463C3.44039 5.20175 3.31874 4.96663 3.27509 4.71169C3.23144 4.45676 3.26795 4.19456 3.37958 3.96125L2.76958 3.35125C2.50447 3.75187 2.38595 4.2318 2.4341 4.70978C2.48225 5.18777 2.6941 5.63442 3.0338 5.97411C3.37349 6.31381 3.82015 6.52567 4.29813 6.57382C4.77611 6.62197 5.25605 6.50345 5.65667 6.23833ZM2.83042 1.06666C3.35 0.862497 3.91625 0.749997 4.50792 0.749997C6.75458 0.749997 8.62375 2.36666 9.01583 4.5C8.88816 5.19404 8.60119 5.84899 8.1775 6.41333L6.56917 4.805C6.61694 4.48317 6.58868 4.15463 6.48664 3.84569C6.3846 3.53675 6.21162 3.256 5.98156 3.02594C5.7515 2.79588 5.47075 2.6229 5.16181 2.52086C4.85287 2.41882 4.52433 2.39056 4.2025 2.43833L2.83042 1.06708V1.06666Z" fill="currentColor"></path></svg> <span>Hide Pytorch content</span></div></div> <div class="framework-content"> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> PyTorchBenchmark, PyTorchBenchmarkArguments | |
| <span class="hljs-meta">>>> </span>args = PyTorchBenchmarkArguments(models=[<span class="hljs-string">"google-bert/bert-base-uncased"</span>], batch_sizes=[<span class="hljs-number">8</span>], sequence_lengths=[<span class="hljs-number">8</span>, <span class="hljs-number">32</span>, <span class="hljs-number">128</span>, <span class="hljs-number">512</span>]) | |
| <span class="hljs-meta">>>> </span>benchmark = PyTorchBenchmark(args)<!-- HTML_TAG_END --></pre></div></div></div> <div class="border border-gray-200 rounded-xl px-4 relative"><div class="flex h-[22px] mt-[-12.5px] justify-between leading-none"><div class="flex px-1 items-center space-x-1 bg-white dark:bg-gray-950"><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="0.94em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 274"><path d="M145.726 42.065v42.07l72.861 42.07v-42.07l-72.86-42.07zM0 84.135v42.07l36.43 21.03V105.17L0 84.135zm109.291 21.035l-36.43 21.034v126.2l36.43 21.035v-84.135l36.435 21.035v-42.07l-36.435-21.034V105.17z" fill="#E55B2D"></path><path d="M145.726 42.065L36.43 105.17v42.065l72.861-42.065v42.065l36.435-21.03v-84.14zM255.022 63.1l-36.435 21.035v42.07l36.435-21.035V63.1zm-72.865 84.135l-36.43 21.035v42.07l36.43-21.036v-42.07zm-36.43 63.104l-36.436-21.035v84.135l36.435-21.035V210.34z" fill="#ED8E24"></path><path d="M145.726 0L0 84.135l36.43 21.035l109.296-63.105l72.861 42.07L255.022 63.1L145.726 0zm0 126.204l-36.435 21.03l36.435 21.036l36.43-21.035l-36.43-21.03z" fill="#F8BF3C"></path></svg> <span>TensorFlow</span></div> <div class="cursor-pointer flex items-center justify-center space-x-1 text-sm px-2 bg-white dark:bg-gray-950 hover:underline leading-none"><svg class="" width="0.9em" height="0.9em" viewBox="0 0 10 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M1.39125 1.9725L0.0883333 0.669997L0.677917 0.0804138L8.9275 8.33041L8.33792 8.91958L6.95875 7.54041C6.22592 8.00523 5.37572 8.25138 4.50792 8.25C2.26125 8.25 0.392083 6.63333 0 4.5C0.179179 3.52946 0.667345 2.64287 1.39167 1.9725H1.39125ZM5.65667 6.23833L5.04667 5.62833C4.81335 5.73996 4.55116 5.77647 4.29622 5.73282C4.04129 5.68918 3.80617 5.56752 3.62328 5.38463C3.44039 5.20175 3.31874 4.96663 3.27509 4.71169C3.23144 4.45676 3.26795 4.19456 3.37958 3.96125L2.76958 3.35125C2.50447 3.75187 2.38595 4.2318 2.4341 4.70978C2.48225 5.18777 2.6941 5.63442 3.0338 5.97411C3.37349 6.31381 3.82015 6.52567 4.29813 6.57382C4.77611 6.62197 5.25605 6.50345 5.65667 6.23833ZM2.83042 1.06666C3.35 0.862497 3.91625 0.749997 4.50792 0.749997C6.75458 0.749997 8.62375 2.36666 9.01583 4.5C8.88816 5.19404 8.60119 5.84899 8.1775 6.41333L6.56917 4.805C6.61694 4.48317 6.58868 4.15463 6.48664 3.84569C6.3846 3.53675 6.21162 3.256 5.98156 3.02594C5.7515 2.79588 5.47075 2.6229 5.16181 2.52086C4.85287 2.41882 4.52433 2.39056 4.2025 2.43833L2.83042 1.06708V1.06666Z" fill="currentColor"></path></svg> <span>Hide TensorFlow content</span></div></div> <div class="framework-content"> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TensorFlowBenchmark, TensorFlowBenchmarkArguments | |
| <span class="hljs-meta">>>> </span>args = TensorFlowBenchmarkArguments( | |
| <span class="hljs-meta">... </span> models=[<span class="hljs-string">"google-bert/bert-base-uncased"</span>], batch_sizes=[<span class="hljs-number">8</span>], sequence_lengths=[<span class="hljs-number">8</span>, <span class="hljs-number">32</span>, <span class="hljs-number">128</span>, <span class="hljs-number">512</span>] | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>benchmark = TensorFlowBenchmark(args)<!-- HTML_TAG_END --></pre></div> </div></div> </div> <p data-svelte-h="svelte-19ddgzb">在这里,基准测试的参数数据类接受了三个主要的参数,即 <code>models</code>、<code>batch_sizes</code> 和<code>sequence_lengths</code>。其中,<code>models</code> 是必需的参数,它期望一个来自<a href="https://huggingface.co/models" rel="nofollow">模型库</a>的模型标识符列表。<code>batch_sizes</code> 和 <code>sequence_lengths</code> 是列表类型的参数,定义了进行基准测试时 <code>input_ids</code> 的批量大小和序列长度。</p> <p data-svelte-h="svelte-ui49s5">这些是基准测试数据类中可以配置的一些主要参数。除此之外,基准测试数据类中还可以配置很多其他参数。如需要查看更详细的配置参数,可以直接查看以下文件:</p> <ul data-svelte-h="svelte-o6s2b1"><li><code>src/transformers/benchmark/benchmark_args_utils.py</code></li> <li><code>src/transformers/benchmark/benchmark_args.py</code>(针对 PyTorch)</li> <li><code>src/transformers/benchmark/benchmark_args_tf.py</code>(针对 TensorFlow)</li></ul> <p data-svelte-h="svelte-wojbtq">另外,您还可以通过在根目录下运行以下命令,查看针对 PyTorch 和 TensorFlow 的所有可配置参数的描述列表: | |
| <code>bash python examples/pytorch/benchmarking/run_benchmark.py --help</code> | |
| 这些命令将列出所有可以配置的参数,它们可以帮助您更加灵活地进行基准测试。</p> <div class="space-y-10 py-6 2xl:py-8 2xl:-mx-4"> <div class="border border-gray-200 rounded-xl px-4 relative"><div class="flex h-[22px] mt-[-12.5px] justify-between leading-none"><div class="flex px-1 items-center space-x-1 bg-white dark:bg-gray-950"><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><defs><clipPath id="a"><rect x="3.05" y="0.5" width="25.73" height="31" fill="none"></rect></clipPath></defs><g clip-path="url(#a)"><path d="M24.94,9.51a12.81,12.81,0,0,1,0,18.16,12.68,12.68,0,0,1-18,0,12.81,12.81,0,0,1,0-18.16l9-9V5l-.84.83-6,6a9.58,9.58,0,1,0,13.55,0ZM20.44,9a1.68,1.68,0,1,1,1.67-1.67A1.68,1.68,0,0,1,20.44,9Z" fill="#ee4c2c"></path></g></svg> <span>Pytorch</span></div> <div class="cursor-pointer flex items-center justify-center space-x-1 text-sm px-2 bg-white dark:bg-gray-950 hover:underline leading-none"><svg class="" width="0.9em" height="0.9em" viewBox="0 0 10 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M1.39125 1.9725L0.0883333 0.669997L0.677917 0.0804138L8.9275 8.33041L8.33792 8.91958L6.95875 7.54041C6.22592 8.00523 5.37572 8.25138 4.50792 8.25C2.26125 8.25 0.392083 6.63333 0 4.5C0.179179 3.52946 0.667345 2.64287 1.39167 1.9725H1.39125ZM5.65667 6.23833L5.04667 5.62833C4.81335 5.73996 4.55116 5.77647 4.29622 5.73282C4.04129 5.68918 3.80617 5.56752 3.62328 5.38463C3.44039 5.20175 3.31874 4.96663 3.27509 4.71169C3.23144 4.45676 3.26795 4.19456 3.37958 3.96125L2.76958 3.35125C2.50447 3.75187 2.38595 4.2318 2.4341 4.70978C2.48225 5.18777 2.6941 5.63442 3.0338 5.97411C3.37349 6.31381 3.82015 6.52567 4.29813 6.57382C4.77611 6.62197 5.25605 6.50345 5.65667 6.23833ZM2.83042 1.06666C3.35 0.862497 3.91625 0.749997 4.50792 0.749997C6.75458 0.749997 8.62375 2.36666 9.01583 4.5C8.88816 5.19404 8.60119 5.84899 8.1775 6.41333L6.56917 4.805C6.61694 4.48317 6.58868 4.15463 6.48664 3.84569C6.3846 3.53675 6.21162 3.256 5.98156 3.02594C5.7515 2.79588 5.47075 2.6229 5.16181 2.52086C4.85287 2.41882 4.52433 2.39056 4.2025 2.43833L2.83042 1.06708V1.06666Z" fill="currentColor"></path></svg> <span>Hide Pytorch content</span></div></div> <div class="framework-content"> <p data-svelte-h="svelte-85mb6o">以下代码通过<code>PyTorchBenchmarkArguments</code>设置模型批处理大小和序列长度,然后调用<code>benchmark.run()</code>执行基准测试。</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span>results = benchmark.run() | |
| <span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(results) | |
| ==================== INFERENCE - SPEED - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Time <span class="hljs-keyword">in</span> s | |
| -------------------------------------------------------------------------------- | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.006</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.006</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.018</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.088</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== INFERENCE - MEMORY - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Memory <span class="hljs-keyword">in</span> MB | |
| -------------------------------------------------------------------------------- | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1227</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1281</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1307</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1539</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== ENVIRONMENT INFORMATION ==================== | |
| - transformers_version: <span class="hljs-number">2.11</span><span class="hljs-number">.0</span> | |
| - framework: PyTorch | |
| - use_torchscript: <span class="hljs-literal">False</span> | |
| - framework_version: <span class="hljs-number">1.4</span><span class="hljs-number">.0</span> | |
| - python_version: <span class="hljs-number">3.6</span><span class="hljs-number">.10</span> | |
| - system: Linux | |
| - cpu: x86_64 | |
| - architecture: 64bit | |
| - date: <span class="hljs-number">2020</span>-06-<span class="hljs-number">29</span> | |
| - time: 08:<span class="hljs-number">58</span>:<span class="hljs-number">43.371351</span> | |
| - fp16: <span class="hljs-literal">False</span> | |
| - use_multiprocessing: <span class="hljs-literal">True</span> | |
| - only_pretrain_model: <span class="hljs-literal">False</span> | |
| - cpu_ram_mb: <span class="hljs-number">32088</span> | |
| - use_gpu: <span class="hljs-literal">True</span> | |
| - num_gpus: <span class="hljs-number">1</span> | |
| - gpu: TITAN RTX | |
| - gpu_ram_mb: <span class="hljs-number">24217</span> | |
| - gpu_power_watts: <span class="hljs-number">280.0</span> | |
| - gpu_performance_state: <span class="hljs-number">2</span> | |
| - use_tpu: <span class="hljs-literal">False</span><!-- HTML_TAG_END --></pre></div></div></div> <div class="border border-gray-200 rounded-xl px-4 relative"><div class="flex h-[22px] mt-[-12.5px] justify-between leading-none"><div class="flex px-1 items-center space-x-1 bg-white dark:bg-gray-950"><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="0.94em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 274"><path d="M145.726 42.065v42.07l72.861 42.07v-42.07l-72.86-42.07zM0 84.135v42.07l36.43 21.03V105.17L0 84.135zm109.291 21.035l-36.43 21.034v126.2l36.43 21.035v-84.135l36.435 21.035v-42.07l-36.435-21.034V105.17z" fill="#E55B2D"></path><path d="M145.726 42.065L36.43 105.17v42.065l72.861-42.065v42.065l36.435-21.03v-84.14zM255.022 63.1l-36.435 21.035v42.07l36.435-21.035V63.1zm-72.865 84.135l-36.43 21.035v42.07l36.43-21.036v-42.07zm-36.43 63.104l-36.436-21.035v84.135l36.435-21.035V210.34z" fill="#ED8E24"></path><path d="M145.726 0L0 84.135l36.43 21.035l109.296-63.105l72.861 42.07L255.022 63.1L145.726 0zm0 126.204l-36.435 21.03l36.435 21.036l36.43-21.035l-36.43-21.03z" fill="#F8BF3C"></path></svg> <span>TensorFlow</span></div> <div class="cursor-pointer flex items-center justify-center space-x-1 text-sm px-2 bg-white dark:bg-gray-950 hover:underline leading-none"><svg class="" width="0.9em" height="0.9em" viewBox="0 0 10 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M1.39125 1.9725L0.0883333 0.669997L0.677917 0.0804138L8.9275 8.33041L8.33792 8.91958L6.95875 7.54041C6.22592 8.00523 5.37572 8.25138 4.50792 8.25C2.26125 8.25 0.392083 6.63333 0 4.5C0.179179 3.52946 0.667345 2.64287 1.39167 1.9725H1.39125ZM5.65667 6.23833L5.04667 5.62833C4.81335 5.73996 4.55116 5.77647 4.29622 5.73282C4.04129 5.68918 3.80617 5.56752 3.62328 5.38463C3.44039 5.20175 3.31874 4.96663 3.27509 4.71169C3.23144 4.45676 3.26795 4.19456 3.37958 3.96125L2.76958 3.35125C2.50447 3.75187 2.38595 4.2318 2.4341 4.70978C2.48225 5.18777 2.6941 5.63442 3.0338 5.97411C3.37349 6.31381 3.82015 6.52567 4.29813 6.57382C4.77611 6.62197 5.25605 6.50345 5.65667 6.23833ZM2.83042 1.06666C3.35 0.862497 3.91625 0.749997 4.50792 0.749997C6.75458 0.749997 8.62375 2.36666 9.01583 4.5C8.88816 5.19404 8.60119 5.84899 8.1775 6.41333L6.56917 4.805C6.61694 4.48317 6.58868 4.15463 6.48664 3.84569C6.3846 3.53675 6.21162 3.256 5.98156 3.02594C5.7515 2.79588 5.47075 2.6229 5.16181 2.52086C4.85287 2.41882 4.52433 2.39056 4.2025 2.43833L2.83042 1.06708V1.06666Z" fill="currentColor"></path></svg> <span>Hide TensorFlow content</span></div></div> <div class="framework-content"> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->python examples/tensorflow/benchmarking/run_benchmark_tf.py --<span class="hljs-built_in">help</span><!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-f27lw6">接下来,只需要调用 <code>benchmark.run()</code> 就能轻松运行已经实例化的基准测试对象。</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span>results = benchmark.run() | |
| <span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(results) | |
| <span class="hljs-meta">>>> </span>results = benchmark.run() | |
| <span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(results) | |
| ==================== INFERENCE - SPEED - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Time <span class="hljs-keyword">in</span> s | |
| -------------------------------------------------------------------------------- | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.005</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.008</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.022</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.105</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== INFERENCE - MEMORY - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Memory <span class="hljs-keyword">in</span> MB | |
| -------------------------------------------------------------------------------- | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1330</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1330</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1330</span> | |
| google-bert/bert-base-uncased <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1770</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== ENVIRONMENT INFORMATION ==================== | |
| - transformers_version: <span class="hljs-number">2.11</span><span class="hljs-number">.0</span> | |
| - framework: Tensorflow | |
| - use_xla: <span class="hljs-literal">False</span> | |
| - framework_version: <span class="hljs-number">2.2</span><span class="hljs-number">.0</span> | |
| - python_version: <span class="hljs-number">3.6</span><span class="hljs-number">.10</span> | |
| - system: Linux | |
| - cpu: x86_64 | |
| - architecture: 64bit | |
| - date: <span class="hljs-number">2020</span>-06-<span class="hljs-number">29</span> | |
| - time: 09:<span class="hljs-number">26</span>:<span class="hljs-number">35.617317</span> | |
| - fp16: <span class="hljs-literal">False</span> | |
| - use_multiprocessing: <span class="hljs-literal">True</span> | |
| - only_pretrain_model: <span class="hljs-literal">False</span> | |
| - cpu_ram_mb: <span class="hljs-number">32088</span> | |
| - use_gpu: <span class="hljs-literal">True</span> | |
| - num_gpus: <span class="hljs-number">1</span> | |
| - gpu: TITAN RTX | |
| - gpu_ram_mb: <span class="hljs-number">24217</span> | |
| - gpu_power_watts: <span class="hljs-number">280.0</span> | |
| - gpu_performance_state: <span class="hljs-number">2</span> | |
| - use_tpu: <span class="hljs-literal">False</span><!-- HTML_TAG_END --></pre></div> </div></div> </div> <p data-svelte-h="svelte-zqe8jg">在一般情况下,基准测试会测量推理(inference)的<strong>时间</strong>和<strong>所需内存</strong>。在上面的示例输出中,前两部分显示了与<strong>推理时间</strong>和<strong>推理内存</strong>对应的结果。与此同时,关于计算环境的所有相关信息(例如 GPU 类型、系统、库版本等)会在第三部分的<strong>环境信息</strong>中打印出来。你可以通过在 <code>PyTorchBenchmarkArguments</code> 和 <code>TensorFlowBenchmarkArguments</code> 中添加 <code>save_to_csv=True</code>参数,将这些信息保存到一个 .csv 文件中。在这种情况下,每一部分的信息会分别保存在不同的 .csv 文件中。每个 .csv 文件的路径也可以通过参数数据类进行定义。</p> <p data-svelte-h="svelte-1j76weh">您可以选择不通过预训练模型的模型标识符(如 <code>google-bert/bert-base-uncased</code>)进行基准测试,而是对任何可用模型类的任意配置进行基准测试。在这种情况下,我们必须将一系列配置与基准测试参数一起传入,方法如下:</p> <div class="space-y-10 py-6 2xl:py-8 2xl:-mx-4"> <div class="border border-gray-200 rounded-xl px-4 relative"><div class="flex h-[22px] mt-[-12.5px] justify-between leading-none"><div class="flex px-1 items-center space-x-1 bg-white dark:bg-gray-950"><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><defs><clipPath id="a"><rect x="3.05" y="0.5" width="25.73" height="31" fill="none"></rect></clipPath></defs><g clip-path="url(#a)"><path d="M24.94,9.51a12.81,12.81,0,0,1,0,18.16,12.68,12.68,0,0,1-18,0,12.81,12.81,0,0,1,0-18.16l9-9V5l-.84.83-6,6a9.58,9.58,0,1,0,13.55,0ZM20.44,9a1.68,1.68,0,1,1,1.67-1.67A1.68,1.68,0,0,1,20.44,9Z" fill="#ee4c2c"></path></g></svg> <span>Pytorch</span></div> <div class="cursor-pointer flex items-center justify-center space-x-1 text-sm px-2 bg-white dark:bg-gray-950 hover:underline leading-none"><svg class="" width="0.9em" height="0.9em" viewBox="0 0 10 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M1.39125 1.9725L0.0883333 0.669997L0.677917 0.0804138L8.9275 8.33041L8.33792 8.91958L6.95875 7.54041C6.22592 8.00523 5.37572 8.25138 4.50792 8.25C2.26125 8.25 0.392083 6.63333 0 4.5C0.179179 3.52946 0.667345 2.64287 1.39167 1.9725H1.39125ZM5.65667 6.23833L5.04667 5.62833C4.81335 5.73996 4.55116 5.77647 4.29622 5.73282C4.04129 5.68918 3.80617 5.56752 3.62328 5.38463C3.44039 5.20175 3.31874 4.96663 3.27509 4.71169C3.23144 4.45676 3.26795 4.19456 3.37958 3.96125L2.76958 3.35125C2.50447 3.75187 2.38595 4.2318 2.4341 4.70978C2.48225 5.18777 2.6941 5.63442 3.0338 5.97411C3.37349 6.31381 3.82015 6.52567 4.29813 6.57382C4.77611 6.62197 5.25605 6.50345 5.65667 6.23833ZM2.83042 1.06666C3.35 0.862497 3.91625 0.749997 4.50792 0.749997C6.75458 0.749997 8.62375 2.36666 9.01583 4.5C8.88816 5.19404 8.60119 5.84899 8.1775 6.41333L6.56917 4.805C6.61694 4.48317 6.58868 4.15463 6.48664 3.84569C6.3846 3.53675 6.21162 3.256 5.98156 3.02594C5.7515 2.79588 5.47075 2.6229 5.16181 2.52086C4.85287 2.41882 4.52433 2.39056 4.2025 2.43833L2.83042 1.06708V1.06666Z" fill="currentColor"></path></svg> <span>Hide Pytorch content</span></div></div> <div class="framework-content"> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> PyTorchBenchmark, PyTorchBenchmarkArguments, BertConfig | |
| <span class="hljs-meta">>>> </span>args = PyTorchBenchmarkArguments( | |
| <span class="hljs-meta">... </span> models=[<span class="hljs-string">"bert-base"</span>, <span class="hljs-string">"bert-384-hid"</span>, <span class="hljs-string">"bert-6-lay"</span>], batch_sizes=[<span class="hljs-number">8</span>], sequence_lengths=[<span class="hljs-number">8</span>, <span class="hljs-number">32</span>, <span class="hljs-number">128</span>, <span class="hljs-number">512</span>] | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>config_base = BertConfig() | |
| <span class="hljs-meta">>>> </span>config_384_hid = BertConfig(hidden_size=<span class="hljs-number">384</span>) | |
| <span class="hljs-meta">>>> </span>config_6_lay = BertConfig(num_hidden_layers=<span class="hljs-number">6</span>) | |
| <span class="hljs-meta">>>> </span>benchmark = PyTorchBenchmark(args, configs=[config_base, config_384_hid, config_6_lay]) | |
| <span class="hljs-meta">>>> </span>benchmark.run() | |
| ==================== INFERENCE - SPEED - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Time <span class="hljs-keyword">in</span> s | |
| -------------------------------------------------------------------------------- | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.006</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.006</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.018</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.088</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.006</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.006</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.011</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.054</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.003</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.004</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.009</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.044</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== INFERENCE - MEMORY - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Memory <span class="hljs-keyword">in</span> MB | |
| -------------------------------------------------------------------------------- | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1277</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1281</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1307</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1539</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1005</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1027</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1035</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1255</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1097</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1101</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1127</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1359</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== ENVIRONMENT INFORMATION ==================== | |
| - transformers_version: <span class="hljs-number">2.11</span><span class="hljs-number">.0</span> | |
| - framework: PyTorch | |
| - use_torchscript: <span class="hljs-literal">False</span> | |
| - framework_version: <span class="hljs-number">1.4</span><span class="hljs-number">.0</span> | |
| - python_version: <span class="hljs-number">3.6</span><span class="hljs-number">.10</span> | |
| - system: Linux | |
| - cpu: x86_64 | |
| - architecture: 64bit | |
| - date: <span class="hljs-number">2020</span>-06-<span class="hljs-number">29</span> | |
| - time: 09:<span class="hljs-number">35</span>:<span class="hljs-number">25.143267</span> | |
| - fp16: <span class="hljs-literal">False</span> | |
| - use_multiprocessing: <span class="hljs-literal">True</span> | |
| - only_pretrain_model: <span class="hljs-literal">False</span> | |
| - cpu_ram_mb: <span class="hljs-number">32088</span> | |
| - use_gpu: <span class="hljs-literal">True</span> | |
| - num_gpus: <span class="hljs-number">1</span> | |
| - gpu: TITAN RTX | |
| - gpu_ram_mb: <span class="hljs-number">24217</span> | |
| - gpu_power_watts: <span class="hljs-number">280.0</span> | |
| - gpu_performance_state: <span class="hljs-number">2</span> | |
| - use_tpu: <span class="hljs-literal">False</span><!-- HTML_TAG_END --></pre></div></div></div> <div class="border border-gray-200 rounded-xl px-4 relative"><div class="flex h-[22px] mt-[-12.5px] justify-between leading-none"><div class="flex px-1 items-center space-x-1 bg-white dark:bg-gray-950"><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" role="img" width="0.94em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 274"><path d="M145.726 42.065v42.07l72.861 42.07v-42.07l-72.86-42.07zM0 84.135v42.07l36.43 21.03V105.17L0 84.135zm109.291 21.035l-36.43 21.034v126.2l36.43 21.035v-84.135l36.435 21.035v-42.07l-36.435-21.034V105.17z" fill="#E55B2D"></path><path d="M145.726 42.065L36.43 105.17v42.065l72.861-42.065v42.065l36.435-21.03v-84.14zM255.022 63.1l-36.435 21.035v42.07l36.435-21.035V63.1zm-72.865 84.135l-36.43 21.035v42.07l36.43-21.036v-42.07zm-36.43 63.104l-36.436-21.035v84.135l36.435-21.035V210.34z" fill="#ED8E24"></path><path d="M145.726 0L0 84.135l36.43 21.035l109.296-63.105l72.861 42.07L255.022 63.1L145.726 0zm0 126.204l-36.435 21.03l36.435 21.036l36.43-21.035l-36.43-21.03z" fill="#F8BF3C"></path></svg> <span>TensorFlow</span></div> <div class="cursor-pointer flex items-center justify-center space-x-1 text-sm px-2 bg-white dark:bg-gray-950 hover:underline leading-none"><svg class="" width="0.9em" height="0.9em" viewBox="0 0 10 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M1.39125 1.9725L0.0883333 0.669997L0.677917 0.0804138L8.9275 8.33041L8.33792 8.91958L6.95875 7.54041C6.22592 8.00523 5.37572 8.25138 4.50792 8.25C2.26125 8.25 0.392083 6.63333 0 4.5C0.179179 3.52946 0.667345 2.64287 1.39167 1.9725H1.39125ZM5.65667 6.23833L5.04667 5.62833C4.81335 5.73996 4.55116 5.77647 4.29622 5.73282C4.04129 5.68918 3.80617 5.56752 3.62328 5.38463C3.44039 5.20175 3.31874 4.96663 3.27509 4.71169C3.23144 4.45676 3.26795 4.19456 3.37958 3.96125L2.76958 3.35125C2.50447 3.75187 2.38595 4.2318 2.4341 4.70978C2.48225 5.18777 2.6941 5.63442 3.0338 5.97411C3.37349 6.31381 3.82015 6.52567 4.29813 6.57382C4.77611 6.62197 5.25605 6.50345 5.65667 6.23833ZM2.83042 1.06666C3.35 0.862497 3.91625 0.749997 4.50792 0.749997C6.75458 0.749997 8.62375 2.36666 9.01583 4.5C8.88816 5.19404 8.60119 5.84899 8.1775 6.41333L6.56917 4.805C6.61694 4.48317 6.58868 4.15463 6.48664 3.84569C6.3846 3.53675 6.21162 3.256 5.98156 3.02594C5.7515 2.79588 5.47075 2.6229 5.16181 2.52086C4.85287 2.41882 4.52433 2.39056 4.2025 2.43833L2.83042 1.06708V1.06666Z" fill="currentColor"></path></svg> <span>Hide TensorFlow content</span></div></div> <div class="framework-content"> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TensorFlowBenchmark, TensorFlowBenchmarkArguments, BertConfig | |
| <span class="hljs-meta">>>> </span>args = TensorFlowBenchmarkArguments( | |
| <span class="hljs-meta">... </span> models=[<span class="hljs-string">"bert-base"</span>, <span class="hljs-string">"bert-384-hid"</span>, <span class="hljs-string">"bert-6-lay"</span>], batch_sizes=[<span class="hljs-number">8</span>], sequence_lengths=[<span class="hljs-number">8</span>, <span class="hljs-number">32</span>, <span class="hljs-number">128</span>, <span class="hljs-number">512</span>] | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>config_base = BertConfig() | |
| <span class="hljs-meta">>>> </span>config_384_hid = BertConfig(hidden_size=<span class="hljs-number">384</span>) | |
| <span class="hljs-meta">>>> </span>config_6_lay = BertConfig(num_hidden_layers=<span class="hljs-number">6</span>) | |
| <span class="hljs-meta">>>> </span>benchmark = TensorFlowBenchmark(args, configs=[config_base, config_384_hid, config_6_lay]) | |
| <span class="hljs-meta">>>> </span>benchmark.run() | |
| ==================== INFERENCE - SPEED - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Time <span class="hljs-keyword">in</span> s | |
| -------------------------------------------------------------------------------- | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.005</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.008</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.022</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.106</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.005</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.007</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.018</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.064</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">0.002</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">0.003</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">0.0011</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">0.074</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== INFERENCE - MEMORY - RESULT ==================== | |
| -------------------------------------------------------------------------------- | |
| Model Name Batch Size Seq Length Memory <span class="hljs-keyword">in</span> MB | |
| -------------------------------------------------------------------------------- | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1330</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1330</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1330</span> | |
| bert-base <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1770</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1330</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1330</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1330</span> | |
| bert-<span class="hljs-number">384</span>-hid <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1540</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">8</span> <span class="hljs-number">1330</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">32</span> <span class="hljs-number">1330</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">128</span> <span class="hljs-number">1330</span> | |
| bert-<span class="hljs-number">6</span>-lay <span class="hljs-number">8</span> <span class="hljs-number">512</span> <span class="hljs-number">1540</span> | |
| -------------------------------------------------------------------------------- | |
| ==================== ENVIRONMENT INFORMATION ==================== | |
| - transformers_version: <span class="hljs-number">2.11</span><span class="hljs-number">.0</span> | |
| - framework: Tensorflow | |
| - use_xla: <span class="hljs-literal">False</span> | |
| - framework_version: <span class="hljs-number">2.2</span><span class="hljs-number">.0</span> | |
| - python_version: <span class="hljs-number">3.6</span><span class="hljs-number">.10</span> | |
| - system: Linux | |
| - cpu: x86_64 | |
| - architecture: 64bit | |
| - date: <span class="hljs-number">2020</span>-06-<span class="hljs-number">29</span> | |
| - time: 09:<span class="hljs-number">38</span>:<span class="hljs-number">15.487125</span> | |
| - fp16: <span class="hljs-literal">False</span> | |
| - use_multiprocessing: <span class="hljs-literal">True</span> | |
| - only_pretrain_model: <span class="hljs-literal">False</span> | |
| - cpu_ram_mb: <span class="hljs-number">32088</span> | |
| - use_gpu: <span class="hljs-literal">True</span> | |
| - num_gpus: <span class="hljs-number">1</span> | |
| - gpu: TITAN RTX | |
| - gpu_ram_mb: <span class="hljs-number">24217</span> | |
| - gpu_power_watts: <span class="hljs-number">280.0</span> | |
| - gpu_performance_state: <span class="hljs-number">2</span> | |
| - use_tpu: <span class="hljs-literal">False</span><!-- HTML_TAG_END --></pre></div> </div></div> </div> <p data-svelte-h="svelte-1u4dkw4"><strong>推理时间</strong>和<strong>推理所需内存</strong>会被重新测量,不过这次是针对 <code>BertModel</code> 类的自定义配置进行基准测试。这个功能在决定模型应该使用哪种配置进行训练时尤其有用。</p> <h2 class="relative group"><a id="基准测试的推荐策略" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#基准测试的推荐策略"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>基准测试的推荐策略</span></h2> <p data-svelte-h="svelte-zynf54">本节列出了一些在对模型进行基准测试时比较推荐的策略:</p> <ul data-svelte-h="svelte-igohop"><li>目前,该模块只支持单设备基准测试。在进行 GPU 基准测试时,建议用户通过设置 <code>CUDA_VISIBLE_DEVICES</code> 环境变量来指定代码应在哪个设备上运行,例如在运行代码前执行 <code>export CUDA_VISIBLE_DEVICES=0</code>。</li> <li><code>no_multi_processing</code> 选项仅应在测试和调试时设置为 <code>True</code>。为了确保内存测量的准确性,建议将每个内存基准测试单独运行在一个进程中,并确保 <code>no_multi_processing</code> 设置为 <code>True</code>。</li> <li>当您分享模型基准测试结果时,应始终提供环境信息。由于 GPU 设备、库版本等之间可能存在较大差异,单独的基准测试结果对社区的帮助有限。</li></ul> <h2 class="relative group"><a id="分享您的基准测试结果" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#分享您的基准测试结果"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>分享您的基准测试结果</span></h2> <p data-svelte-h="svelte-g6gd81">先前的所有可用的核心模型(当时有10个)都已针对 <strong>推理时间</strong> 进行基准测试,涵盖了多种不同的设置:使用 PyTorch(包不包含 TorchScript),使用 TensorFlow(包不包含 XLA)。所有的测试都在 CPU(除了 TensorFlow XLA)和 GPU 上进行。</p> <p data-svelte-h="svelte-1div4zq">这种方法的详细信息可以在 <a href="https://medium.com/huggingface/benchmarking-transformers-pytorch-and-tensorflow-e2917fb891c2" rel="nofollow">这篇博客</a> 中找到,测试结果可以在 <a href="https://docs.google.com/spreadsheets/d/1sryqufw2D0XlUH4sq3e9Wnxu5EAQkaohzrJbd5HdQ_w/edit?usp=sharing" rel="nofollow">这里</a> 查看。</p> <p data-svelte-h="svelte-1yrml7z">您可以借助新的 <strong>基准测试</strong> 工具比以往任何时候都更容易地分享您的基准测试结果!</p> <ul data-svelte-h="svelte-953mda"><li><a href="https://github.com/huggingface/transformers/tree/main/examples/pytorch/benchmarking/README.md" rel="nofollow">PyTorch 基准测试结果</a></li> <li><a href="https://github.com/huggingface/transformers/tree/main/examples/tensorflow/benchmarking/README.md" rel="nofollow">TensorFlow 基准测试结果</a></li></ul> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/transformers/blob/main/docs/source/zh/benchmarks.md" target="_blank"><span data-svelte-h="svelte-1kd6by1"><</span> <span data-svelte-h="svelte-x0xyl0">></span> <span data-svelte-h="svelte-1dajgef"><span class="underline ml-1.5">Update</span> on GitHub</span></a> <p></p> | |
| <script> | |
| { | |
| __sveltekit_jm8f22 = { | |
| assets: "/docs/transformers/main/zh", | |
| base: "/docs/transformers/main/zh", | |
| env: {} | |
| }; | |
| const element = document.currentScript.parentElement; | |
| const data = [null,null]; | |
| Promise.all([ | |
| import("/docs/transformers/main/zh/_app/immutable/entry/start.fa6fe8dc.js"), | |
| import("/docs/transformers/main/zh/_app/immutable/entry/app.d6ba0f9a.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 8], | |
| data, | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 64.7 kB
- Xet hash:
- ae3afcf6e48ee0675695cc12b46c9e18be1545e6d4c2f98274f888264059f4b9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.