Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"トークナイザー","local":"tokenizers","sections":[{"title":"トークナイザを読み込む","local":"load-a-tokenizer","sections":[],"depth":2},{"title":"エンコードとデコード","local":"encode-and-decode","sections":[],"depth":2},{"title":"特殊トークン","local":"special-tokens","sections":[],"depth":2},{"title":"バッチ処理","local":"batch-processing","sections":[{"title":"パディング","local":"padding","sections":[],"depth":3},{"title":"切り詰め","local":"truncation","sections":[],"depth":3}],"depth":2},{"title":"バックエンド","local":"backends","sections":[{"title":"TokenizersBackend へのフォールバック","local":"fallback-to-tokenizersbackend","sections":[],"depth":3}],"depth":2},{"title":"トークナイザーのアーキテクチャを確認する","local":"inspect-the-tokenizer-architecture","sections":[],"depth":2},{"title":"リソース","local":"resources","sections":[],"depth":2}],"depth":1}"/> | |
| <link href="/docs/transformers/main/en/_app/immutable/entry/start.ByZEd4qm.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DHdg-_0Z.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/CBySwR1V.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/entry/app.CQqZS61p.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/Cdb1BouH.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/dUGfULTE.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DOLBYqcr.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/nodes/0.CEy2b_T8.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/Conj1S5Z.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/nodes/55.B4wMmpzn.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/DoQ7MZQh.js" rel="modulepreload"> | |
| <link href="/docs/transformers/main/en/_app/immutable/chunks/uQdIcFiG.js" rel="modulepreload"> | |
| <!--1ny7yeu--><meta name="hf:doc:metadata" content="{"title":"Tokenizers","local":"tokenizers","sections":[{"title":"Load a tokenizer","local":"load-a-tokenizer","sections":[],"depth":2},{"title":"Encode and decode","local":"encode-and-decode","sections":[],"depth":2},{"title":"Special tokens","local":"special-tokens","sections":[],"depth":2},{"title":"Batch processing","local":"batch-processing","sections":[{"title":"Padding","local":"padding","sections":[],"depth":3},{"title":"Truncation","local":"truncation","sections":[],"depth":3}],"depth":2},{"title":"Backends","local":"backends","sections":[{"title":"Fallback to TokenizersBackend","local":"fallback-to-tokenizersbackend","sections":[],"depth":3}],"depth":2},{"title":"Inspect the tokenizer architecture","local":"inspect-the-tokenizer-architecture","sections":[],"depth":2},{"title":"Resources","local":"resources","sections":[],"depth":2}],"depth":1}"/><!----> | |
| <link href="/docs/transformers/main/en/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"><div dir="ltr" class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" 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><!----></span> <span dir="auto">Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="tokenizers" 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="#tokenizers"><span><svg 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><!--]--><!----> <p>トークナイザーは、テキストをテンソルに変換します。このテンソルはモデルの入力となります。トークナイザーは、テキストの正規化と分割を行い、トークナイズアルゴリズムを適用し、特殊トークンを追加し、出力IDをテキストにデコードします。</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| tokenizer(<span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>, return_tensors=<span class="hljs-string">"pt"</span>) | |
| { | |
| <span class="hljs-string">'input_ids'</span>: tensor([[ <span class="hljs-number">2</span>, <span class="hljs-number">235277</span>, <span class="hljs-number">82913</span>, <span class="hljs-number">576</span>, <span class="hljs-number">2656</span>, <span class="hljs-number">30407</span>, <span class="hljs-number">235269</span>, <span class="hljs-number">11490</span>, <span class="hljs-number">970</span>, <span class="hljs-number">29871</span>, <span class="hljs-number">235265</span>]]), | |
| <span class="hljs-string">'attention_mask'</span>: tensor([[<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>]]) | |
| }<!----></pre></div><!----> <p>このガイドでは、読み込み、エンコード、デコード、バッチ処理、および利用可能なトークナイザーバックエンドについて説明します。</p> <!--[1--><h2 class="relative group"><a id="load-a-tokenizer" 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="#load-a-tokenizer"><span><svg 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><a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer">AutoTokenizer</a> クラスまたはモデル固有のトークナイザークラスを使用して、トークナイザを読み込みます。</p> <div class="flex space-x-2 items-center my-1.5 mr-8 h-7 !pl-0 -mx-3 md:mx-0"><!--[--><div class="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd border-gray-800 bg-black dark:bg-gray-700 text-white">AutoTokenizer</div><div class="flex items-center border rounded-lg px-1.5 py-1 leading-none select-none text-smd text-gray-500 cursor-pointer opacity-90 hover:text-gray-700 dark:hover:text-gray-200 hover:shadow-sm">モデル固有のトークナイザー</div><!--]--></div> <div class="language-select"><div><p><a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer.from_pretrained">AutoTokenizer.from_pretrained()</a> reads the model config, resolves the correct tokenizer class, and returns an instance of it. You don’t need to know the tokenizer class beforehand. Most tokenizers resolve to a subclass of <a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>, a fast Rust-based tokenizer from the <a href="https://huggingface.co/docs/tokenizers/index" rel="nofollow">Tokenizers</a> library.</p> <p><a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer">AutoTokenizer</a> を使用して読み込むのが推奨される方法です。</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>)<!----></pre></div><!----><!----></div><!----> <div hidden=""><p>モデル固有のトークナイズクラスとは、モデルが学習に使用した正確なトークナイズ設定(ノーマライザー、プレトークナイザー、特殊トークンの慣例など)を用いる、事前設定済みの<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>です。</p> <p>モデル固有のクラスを使用して、トレーニング用の空のトークナイザーを初期化するか、<code>vocab</code> や <code>merges</code> のようなモデル固有の引数を渡します(方法については、<a href="./custom_tokenizers">トークナイザーのカスタマイズ</a> ガイドを参照してください)。空のトークナイザーは最小限のもので、<code><pad></code>、<code><eos></code>、<code><bos></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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> GemmaTokenizer | |
| tokenizer = GemmaTokenizer() | |
| corpus = [ | |
| [<span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>], | |
| [<span class="hljs-string">"Pack my box with five dozen liquor jugs."</span>], | |
| [<span class="hljs-string">"How vexingly quick daft zebras jump!"</span>], | |
| ] | |
| new_tokenizer = tokenizer.train_new_from_iterator(corpus, vocab_size=<span class="hljs-number">1000</span>)<!----></pre></div><!----><!----></div><!----><!----></div><!----> <!--[1--><h2 class="relative group"><a id="encode-and-decode" 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="#encode-and-decode"><span><svg 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><a href="/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__">TokenizersBackend.<strong>call</strong>()</a> メソッドは、テキストまたはテキストのバッチを <code>input_ids</code>、<code>attention_mask</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| tokenizer(<span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>, return_tensors=<span class="hljs-string">"pt"</span>) | |
| { | |
| <span class="hljs-string">'input_ids'</span>: tensor([[ <span class="hljs-number">2</span>, <span class="hljs-number">235277</span>, <span class="hljs-number">82913</span>, <span class="hljs-number">576</span>, <span class="hljs-number">2656</span>, <span class="hljs-number">30407</span>, <span class="hljs-number">235269</span>, <span class="hljs-number">11490</span>, <span class="hljs-number">970</span>, <span class="hljs-number">29871</span>, <span class="hljs-number">235265</span>]]), | |
| <span class="hljs-string">'attention_mask'</span>: tensor([[<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>]]) | |
| }<!----></pre></div><!----> <p><a href="/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode">TokenizersBackend.encode()</a> はこれと似ていますが、<code>input_ids</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| input_ids = tokenizer.encode(<span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>) | |
| [<span class="hljs-number">2</span>, <span class="hljs-number">235277</span>, <span class="hljs-number">82913</span>, <span class="hljs-number">576</span>, <span class="hljs-number">2656</span>, <span class="hljs-number">30407</span>, <span class="hljs-number">235269</span>, <span class="hljs-number">11490</span>, <span class="hljs-number">970</span>, <span class="hljs-number">29871</span>, <span class="hljs-number">235265</span>]<!----></pre></div><!----> <p><a href="/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.decode">TokenizersBackend.decode()</a> は、トークン化された <code>input_ids</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!---->tokenizer.decode(input_ids) | |
| <span class="hljs-string">'<bos>Sphinx of black quartz, judge my vow.'</span><!----></pre></div><!----> <p><a href="/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.decode">TokenizersBackend.decode()</a> は、トークン化時のスペースを正確に保持します。句読点の前のスペースを削除するには <code>clean_up_tokenization_spaces</code> を、出力から特殊トークンを除去するには <code>skip_special_tokens</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!---->tokenizer.decode(input_ids, skip_special_tokens=<span class="hljs-literal">True</span>) | |
| <span class="hljs-string">'Sphinx of black quartz, judge my vow.'</span><!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="special-tokens" 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="#special-tokens"><span><svg 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>特殊トークンは、シーケンス内の構造的な境界(シーケンスの開始位置やパディング位置など)を示します。各モデルは独自の特殊トークンのセットを定義しています。トークナイザーを呼び出す際に、これらが追加されます。</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!---->input_ids = tokenizer.encode(<span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>) | |
| [<span class="hljs-number">2</span>, <span class="hljs-number">235277</span>, <span class="hljs-number">82913</span>, <span class="hljs-number">576</span>, <span class="hljs-number">2656</span>, <span class="hljs-number">30407</span>, <span class="hljs-number">235269</span>, <span class="hljs-number">11490</span>, <span class="hljs-number">970</span>, <span class="hljs-number">29871</span>, <span class="hljs-number">235265</span>] | |
| tokenizer.decode(input_ids) | |
| <span class="hljs-string">'<bos>Sphinx of black quartz, judge my vow.'</span><!----></pre></div><!----> <p><code>extra_special_tokens</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained( | |
| <span class="hljs-string">"google/gemma-3-4b-pt"</span>, | |
| extra_special_tokens={<span class="hljs-string">"image_token"</span>: <span class="hljs-string">"<image>"</span>} | |
| )<!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="batch-processing" 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="#batch-processing"><span><svg 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>バッチ処理では、複数のシーケンスを1回の呼び出しでトークン化します。<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>はRustベースのバックエンドがスレッド間で処理を並列化するため、大規模なバッチをより高速に処理できます。</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| tokenizer( | |
| [ | |
| <span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>, | |
| <span class="hljs-string">"Pack my box with five dozen liquor jugs."</span>, | |
| <span class="hljs-string">"How vexingly quick daft zebras jump!"</span> | |
| ], | |
| return_tensors=<span class="hljs-string">"pt"</span> | |
| )<!----></pre></div><!----> <p>バッチ処理では、すべてのシーケンスが同じ長さである必要があります。パディングと切り詰めは、長さが異なるシーケンスを扱うための戦略です。</p> <!--[2--><h3 class="relative group"><a id="padding" 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="#padding"><span><svg 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></h3><!--]--><!----> <p>Paddingは、バッチ内の最長シーケンスに短めのシーケンスを合わせるために特殊トークンを付加します。Attention maskは、パディングの位置を<code>0</code>としてマークし、モデルがそれらを無視するようにします。<code>padding=True</code>を設定すると最長シーケンスに合わせてパディングが行われ、<code>max_length</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| tokenizer( | |
| [ | |
| <span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>, | |
| <span class="hljs-string">"Pack my box with five dozen liquor jugs."</span>, | |
| <span class="hljs-string">"How vexingly quick daft zebras jump!"</span> | |
| ], | |
| return_tensors=<span class="hljs-string">"pt"</span>, | |
| padding=<span class="hljs-literal">True</span>, | |
| ) | |
| { | |
| <span class="hljs-string">'input_ids'</span>: tensor([ | |
| [ <span class="hljs-number">2</span>, <span class="hljs-number">235277</span>, <span class="hljs-number">82913</span>, <span class="hljs-number">576</span>, <span class="hljs-number">2656</span>, <span class="hljs-number">30407</span>, <span class="hljs-number">235269</span>, <span class="hljs-number">11490</span>, <span class="hljs-number">970</span>, <span class="hljs-number">29871</span>, <span class="hljs-number">235265</span>], | |
| [ <span class="hljs-number">0</span>, <span class="hljs-number">2</span>, <span class="hljs-number">6519</span>, <span class="hljs-number">970</span>, <span class="hljs-number">3741</span>, <span class="hljs-number">675</span>, <span class="hljs-number">4105</span>, <span class="hljs-number">25955</span>, <span class="hljs-number">42184</span>, <span class="hljs-number">225789</span>, <span class="hljs-number">235265</span>], | |
| [ <span class="hljs-number">0</span>, <span class="hljs-number">2</span>, <span class="hljs-number">2299</span>, <span class="hljs-number">73378</span>, <span class="hljs-number">17844</span>, <span class="hljs-number">4320</span>, <span class="hljs-number">224463</span>, <span class="hljs-number">4949</span>, <span class="hljs-number">48977</span>, <span class="hljs-number">9902</span>, <span class="hljs-number">235341</span>] | |
| ]), | |
| <span class="hljs-string">'attention_mask'</span>: tensor([ | |
| [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>], | |
| [<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>], | |
| [<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>] | |
| ]) | |
| }<!----></pre></div><!----> <blockquote class="note"><p>大規模言語モデルは、<em>右</em>側から次のトークンを予測する生成を妨げないよう、<em>左</em>側にパディングを行います。</p></blockquote> <!--[2--><h3 class="relative group"><a id="truncation" 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="#truncation"><span><svg 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></h3><!--]--><!----> <p>Truncationは、シーケンスが最大長に収まるようにトークンを切り詰めます。これを有効にするには、<code>truncation=True</code>を設定し、<code>max_length</code>を指定します。</p> <p>Paddingとtruncationは連携して動作します。短いシーケンスにはpaddingトークンが追加され、長いシーケンスからは末尾のトークンが削除されます。これにより、詰められた長方形のテンソルが生成されます。</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| tokenizer( | |
| [ | |
| <span class="hljs-string">"Sphinx of black quartz, judge my vow."</span>, | |
| <span class="hljs-string">"Pack my box with five dozen liquor jugs."</span>, | |
| <span class="hljs-string">"How vexingly quick daft zebras jump!"</span> | |
| ], | |
| return_tensors=<span class="hljs-string">"pt"</span>, | |
| padding=<span class="hljs-literal">True</span>, | |
| truncation=<span class="hljs-literal">True</span>, | |
| max_length=<span class="hljs-number">5</span> | |
| ) | |
| { | |
| <span class="hljs-string">'input_ids'</span>: tensor([ | |
| [ <span class="hljs-number">2</span>, <span class="hljs-number">235277</span>, <span class="hljs-number">82913</span>, <span class="hljs-number">576</span>, <span class="hljs-number">2656</span>], | |
| [ <span class="hljs-number">2</span>, <span class="hljs-number">6519</span>, <span class="hljs-number">970</span>, <span class="hljs-number">3741</span>, <span class="hljs-number">675</span>], | |
| [ <span class="hljs-number">2</span>, <span class="hljs-number">2299</span>, <span class="hljs-number">73378</span>, <span class="hljs-number">17844</span>, <span class="hljs-number">4320</span>] | |
| ]), | |
| <span class="hljs-string">'attention_mask'</span>: tensor([ | |
| [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>], | |
| [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>], | |
| [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>] | |
| ]) | |
| }<!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="backends" 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="#backends"><span><svg 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>各モデルのトークナイザーは単一のファイルで定義され、4つのトークナイズバックエンドをサポートしています。</p> <table><thead><tr><th>バックエンド</th><th>実装</th><th>説明</th></tr></thead><tbody><tr><td><a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a></td><td><a href="https://huggingface.co/docs/tokenizers" rel="nofollow">トークナイザー</a></td><td>ほとんどのモデルのデフォルト</td></tr><tr><td><a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.SentencePieceBackend">SentencePieceBackend</a></td><td><a href="https://github.com/google/sentencepiece" rel="nofollow">SentencePiece</a></td><td>SentencePieceを必要とするモデル</td></tr><tr><td><a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.PythonBackend">PythonBackend</a></td><td>Python</td><td>特殊なカスタムトークナイザーを必要とするモデル</td></tr><tr><td><a href="/docs/transformers/main/ja/model_doc/mistral#transformers.MistralCommonBackend">MistralCommonBackend</a></td><td><a href="https://mistralai.github.io/mistral-common/" rel="nofollow">mistral-common</a></td><td>Mistral と Pixtral モデル</td></tr></tbody></table> <p>すべてのバックエンドは <a href="/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase">PreTrainedTokenizerBase</a> を継承しており、エンコード、デコード、パディング、切り詰め、保存、読み込みの API を共有しています。違いは、その下で実行されるトークナイズ処理パイプラインです。</p> <p><a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer">AutoTokenizer</a> は、<a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer.from_pretrained">from_pretrained()</a> を呼び出す際に、利用可能な最適なバックエンドを選択します。</p> <ol><li><code>tokenizer_class</code> フィールドのために、<code>tokenizer_config.json</code> ファイルを読み取ります。</li> <li>レジストリは<code>tokenizer_class</code>をクラス名に一致させます。解決されたクラスは、4つのバックエンドのいずれかを継承します。例えば、<a href="/docs/transformers/main/ja/model_doc/gemma#transformers.GemmaTokenizer">GemmaTokenizer</a>は<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>を継承し、<a href="/docs/transformers/main/ja/model_doc/siglip#transformers.SiglipTokenizer">SiglipTokenizer</a>は<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.SentencePieceBackend">SentencePieceBackend</a>を継承します。 | |
| GLMのような一部のモデルは、<code>tokenizer.json</code>ファイルがパイプラインを完全に記述しているため、<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>に直接マッピングされます。<a href="/docs/transformers/main/ja/model_doc/gemma#transformers.GemmaTokenizer">GemmaTokenizer</a>は、<code>tokenizer.json</code>では表現できない追加のモデル固有の設定をPythonで定義しているため、サブクラスとして存在します。 | |
| mistral-commonのようなバックエンドがインストールされていない場合、<a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer">AutoTokenizer</a>は<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>にフォールバックします。</li></ol> <!--[2--><h3 class="relative group"><a id="fallback-to-tokenizersbackend" 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="#fallback-to-tokenizersbackend"><span><svg 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><!---->TokenizersBackend へのフォールバック<!----></span></h3><!--]--><!----> <p>一部のモデルには専用のトークナイザークラスがなく、また一部のチェックポイントには、実際の<code>tokenizer.json</code>ファイルと一致しない<code>tokenizer_class</code>が含まれています。<a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer">AutoTokenizer</a>は、汎用的な<a href="/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend">TokenizersBackend</a>を通じて<code>tokenizer.json</code>からパイプラインを読み込むことで、これらの両方のケースに対応します。Hubからのクラス名よりもシリアライズされたトークナイザーを優先するため、<code>tokenizer_class</code>の不一致によって誤ったトークンIDが生成されるような問題を修正できます。</p> <p>チェックポイントが汎用の<code>TokenizersBackend</code>に解決されるのは、以下の3つの理由のいずれかです。</p> <table><thead><tr><th>理由</th><th>動作</th><th>例</th></tr></thead><tbody><tr><td>専用のトークナイザークラスはありません</td><td>モデルタイプは、<code>tokenizer.json</code> がパイプラインを完全に記述しているため、そのまま <code>TokenizersBackend</code> にマッピングされます。</td><td>GLM、Granite、OLMo 2、GPT BigCode</td></tr><tr><td>Hubのトークナイザークラスが誤って認識されている</td><td>Hub に記録されている <code>tokenizer_class</code> がモデルタイプに対して誤っているため、<code>AutoTokenizer</code> はこれを無視し、代わりに <code>tokenizer.json</code> を読み込みます。</td><td>DeepSeek V3、LLaVA、Qwen2、ModernBERT</td></tr><tr><td>特定のチェックポイントの上書き</td><td>Hub の設定がまだ修正が必要なチェックポイントは、モデル ID で一致させられ、バックエンドに強制適用されます。</td><td><code>deepseek-ai/DeepSeek-R1-Distill-*</code>, <code>Salesforce/blip2-*</code>, <code>google/umt5-small</code></td></tr></tbody></table> <p>設定が Hub 上で修正されるにつれて、影響を受けるモデルタイプとチェックポイントの数は増加していきます。現在のセットについては、<a href="https://github.com/huggingface/transformers/blob/main/src/transformers/models/auto/tokenization_auto.py" rel="nofollow">tokenization_auto.py</a> 内の <code>MODELS_WITH_INCORRECT_HUB_TOKENIZER_CLASS</code> および <code>MODEL_IDS_TO_TOKENIZERS_BACKEND</code> の定義を参照してください。</p> <p>フォールバックは自動で行われ、<a href="/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer.from_pretrained">from_pretrained()</a>の呼び出し方法は変更されません。生成されるトークナイザーは、<code>tokenizer.json</code>で指定されたとおりにエンコードおよびデコードを行います。</p> <p><code>backend</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| tokenizer.backend | |
| <span class="hljs-string">'tokenizers'</span><!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="inspect-the-tokenizer-architecture" 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="#inspect-the-tokenizer-architecture"><span><svg 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><code>_tokenizer</code> 属性を使用して、トークナイザーの内部コンポーネント(normalizer、pre-tokenizer、model、decoder)を調べます。</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 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> コピーしました</div><!----></button><!----></div> <pre class="language-py "><!----><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"google/gemma-2-2b"</span>) | |
| <span class="hljs-built_in">print</span>(tokenizer._tokenizer.normalizer) | |
| <span class="hljs-built_in">print</span>(tokenizer._tokenizer.pre_tokenizer) | |
| <span class="hljs-built_in">print</span>(tokenizer._tokenizer.model) | |
| <span class="hljs-built_in">print</span>(tokenizer._tokenizer.decoder)<!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="resources" 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="#resources"><span><svg 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><!--]--><!----> <ul><li><a href="https://huggingface.co/blog/tokenizers" rel="nofollow">Transformers v5におけるトークナイズ</a>という記事では、新しいトークナイズバックエンドの背景にある動機について説明しています。</li> <li>トークン化の変更点の概要については、<a href="https://github.com/huggingface/transformers/blob/main/MIGRATION_GUIDE_V5.md#tokenization" rel="nofollow">マイグレーションガイド</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/en/fast_tokenizers.md" target="_blank"><svg class="mr-1" 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="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]--> | |
| <script> | |
| { | |
| __sveltekit_1y3v6y9 = { | |
| base: "/docs/transformers/main/en", | |
| assets: "/docs/transformers/main/en" | |
| }; | |
| const element = document.currentScript.parentElement; | |
| Promise.all([ | |
| import("/docs/transformers/main/en/_app/immutable/entry/start.ByZEd4qm.js"), | |
| import("/docs/transformers/main/en/_app/immutable/entry/app.CQqZS61p.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 55], | |
| data: [null,null], | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 64.6 kB
- Xet hash:
- bfd4f1cdb86ef7d01f0ed9f52fcdd0a6bc6e31159f62d02037d45eecc6f0848a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.