Buckets:

rtrm's picture
download
raw
35.4 kB
import{s as Pt,o as Kt,n as Dt}from"../chunks/scheduler.9bc65507.js";import{S as Ot,i as es,g as i,s as a,r as o,A as ts,h as p,f as s,c as n,j as At,u as m,x as r,k as yt,y as ss,a as l,v as g,d as c,t as u,w as d}from"../chunks/index.707bf1b6.js";import{T as ls}from"../chunks/Tip.c2ecdbf4.js";import{C as T}from"../chunks/CodeBlock.54a9f38d.js";import{D as as}from"../chunks/DocNotebookDropdown.41f65cb5.js";import{H as h,E as ns}from"../chunks/EditOnGithub.922df6ba.js";function is(be){let M,J='基本的なLLMの使用に興味がある場合、高レベルの <a href="pipeline_tutorial"><code>Pipeline</code></a> インターフェースが良い出発点です。ただし、LLMはしばしば量子化やトークン選択ステップの細かい制御などの高度な機能が必要であり、これは <a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationMixin.generate">generate()</a> を介して最良に行われます。LLMとの自己回帰生成はリソースが多く必要であり、適切なスループットのためにGPUで実行する必要があります。';return{c(){M=i("p"),M.innerHTML=J},l(f){M=p(f,"P",{"data-svelte-h":!0}),r(M)!=="svelte-1ebm3b2"&&(M.innerHTML=J)},m(f,he){l(f,M,he)},p:Dt,d(f){f&&s(M)}}}function ps(be){let M,J,f,he,w,je,_,Te,U,bt="LLM、またはLarge Language Models(大規模言語モデル)は、テキスト生成の鍵となる要素です。要するに、これらは大規模な事前訓練済みトランスフォーマーモデルで、与えられた入力テキストに基づいて次の単語(または、より正確にはトークン)を予測するように訓練されています。トークンを1つずつ予測するため、モデルを呼び出すだけでは新しい文を生成するために何かより精巧なことをする必要があります。自己回帰生成を行う必要があります。",Je,$,jt='自己回帰生成は、推論時の手続きで、いくつかの初期入力を与えた状態で、モデルを反復的に呼び出す手法です。🤗 Transformersでは、これは<a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationMixin.generate">generate()</a>メソッドによって処理され、これは生成能力を持つすべてのモデルで利用可能です。',we,Z,Tt="このチュートリアルでは、以下のことを示します:",_e,k,Jt="<li>LLMを使用してテキストを生成する方法</li> <li>一般的な落とし穴を回避する方法</li> <li>LLMを最大限に活用するための次のステップ</li>",Ue,G,wt="始める前に、必要なライブラリがすべてインストールされていることを確認してください:",$e,v,Ze,C,ke,I,_t='<a href="tasks/language_modeling">因果言語モデリング</a>のためにトレーニングされた言語モデルは、テキストトークンのシーケンスを入力として受け取り、次のトークンの確率分布を返します。',Ge,y,Ut='<video style="max-width: 90%; margin: auto;" autoplay="" loop="" muted="" playsinline="" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/assisted-generation/gif_1_1080p.mov"></video> <figcaption>&quot;Forward pass of an LLM&quot;</figcaption>',ve,x,$t="LLM(Language Model)による自己回帰生成の重要な側面の1つは、この確率分布から次のトークンを選択する方法です。このステップでは、次のイテレーションのためのトークンが得られる限り、何でも可能です。これは、確率分布から最も可能性の高いトークンを選択するだけのシンプルな方法から、結果の分布からサンプリングする前に数々の変換を適用するほど複雑な方法まで、あらゆる方法が考えられます。",Ce,b,Zt='<video style="max-width: 90%; margin: auto;" autoplay="" loop="" muted="" playsinline="" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/assisted-generation/gif_2_1080p.mov"></video> <figcaption>&quot;Autoregressive generation iteratively selects the next token from a probability distribution to generate text&quot;</figcaption>',Ie,W,kt="上記のプロセスは、ある停止条件が満たされるまで反復的に繰り返されます。理想的には、停止条件はモデルによって指示され、モデルは終了シーケンス(<code>EOS</code>)トークンを出力するタイミングを学習すべきです。これがそうでない場合、生成はあらかじめ定義された最大長に達したときに停止します。",xe,L,Gt='トークン選択ステップと停止条件を適切に設定することは、モデルがタスクで期待どおりに振る舞うために重要です。それが、各モデルに関連付けられた <a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationConfig">GenerationConfig</a> ファイルがある理由であり、これには優れたデフォルトの生成パラメータ化が含まれ、モデルと一緒に読み込まれます。',We,V,vt="コードについて話しましょう!",Le,j,Ve,X,Ct="まず、モデルを読み込む必要があります。",Xe,R,Re,z,It="<code>from_pretrained</code> 呼び出しで2つのフラグがあることに注意してください:",ze,B,xt='<li><code>device_map</code> はモデルをあなたのGPUに移動させます</li> <li><code>load_in_4bit</code> は<a href="main_classes/quantization">4ビットの動的量子化</a>を適用してリソース要件を大幅に削減します</li>',Be,H,Wt="モデルを初期化する他の方法もありますが、これはLLMを始めるための良い基準です。",He,F,Lt='次に、<a href="tokenizer_summary">トークナイザ</a>を使用してテキスト入力を前処理する必要があります。',Fe,q,qe,E,Vt='<code>model_inputs</code> 変数は、トークン化されたテキスト入力とアテンションマスクを保持しています。 <a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationMixin.generate">generate()</a> は、アテンションマスクが渡されていない場合でも、最善の努力をしてそれを推測しようとしますが、できる限り渡すことをお勧めします。最適な結果を得るためです。',Ee,Q,Xt='最後に、<a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationMixin.generate">generate()</a> メソッドを呼び出して生成されたトークンを取得し、それを表示する前にテキストに変換する必要があります。',Qe,N,Ne,Y,Rt="これで完了です!わずかなコード行数で、LLM(Large Language Model)のパワーを活用できます。",Ye,S,Se,A,zt='<a href="generation_strategies">生成戦略</a>はたくさんあり、デフォルトの値があなたのユースケースに適していないことがあります。出力が期待通りでない場合、最も一般的な落とし穴とその回避方法のリストを作成しました。',Ae,P,Pe,K,Ke,D,Bt='<a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationConfig">GenerationConfig</a> ファイルで指定されていない場合、<code>generate</code> はデフォルトで最大で 20 トークンまで返します。我々は <code>generate</code> コールで <code>max_new_tokens</code> を手動で設定することを強くお勧めします。これにより、返される新しいトークンの最大数を制御できます。LLM(正確には、<a href="https://huggingface.co/learn/nlp-course/chapter1/6?fw=pt" rel="nofollow">デコーダー専用モデル</a>)も出力の一部として入力プロンプトを返すことに注意してください。',De,O,Oe,ee,et,te,Ht='デフォルトでは、 <a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationConfig">GenerationConfig</a> ファイルで指定されていない限り、<code>generate</code> は各イテレーションで最も可能性の高いトークンを選択します(貪欲デコーディング)。タスクに応じて、これは望ましくないことがあります。チャットボットやエッセイのような創造的なタスクでは、サンプリングが有益です。一方、音声の転写や翻訳のような入力に基づくタスクでは、貪欲デコーディングが有益です。<code>do_sample=True</code> でサンプリングを有効にできます。このトピックについての詳細は、この<a href="https://huggingface.co/blog/how-to-generate" rel="nofollow">ブログポスト</a>で学ぶことができます。',tt,se,st,le,lt,ae,Ft='LLM(Large Language Models)は<a href="https://huggingface.co/learn/nlp-course/chapter1/6?fw=pt" rel="nofollow">デコーダー専用</a>のアーキテクチャであり、入力プロンプトを繰り返し処理することを意味します。入力が同じ長さでない場合、それらをパディングする必要があります。LLMはパッドトークンからの続きを学習していないため、入力は左パディングする必要があります。また、生成に対して注目マスクを渡し忘れないようにしてください!',at,ne,nt,ie,it,pe,qt="オートリグレッシブ生成プロセスは比較的簡単ですが、LLMを最大限に活用することは多くの要素が絡むため、挑戦的な試みとなります。LLMの使用と理解をさらに深めるための次のステップについては以下のリソースをご覧ください。",pt,re,rt,oe,Et='<li><a href="generation_strategies">ガイド</a>:異なる生成方法を制御する方法、生成構成ファイルの設定方法、出力のストリーミング方法についてのガイド;</li> <li><a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationConfig">GenerationConfig</a>、<a href="/docs/transformers/pr_33512/ja/main_classes/text_generation#transformers.GenerationMixin.generate">generate()</a>、および<a href="internal/generation_utils">生成関連クラス</a>に関するAPIリファレンス。</li>',ot,me,mt,ge,Qt='<li><a href="https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard" rel="nofollow">Open LLM リーダーボード</a>:オープンソースモデルの品質に焦点を当てたリーダーボード;</li> <li><a href="https://huggingface.co/spaces/optimum/llm-perf-leaderboard" rel="nofollow">Open LLM-Perf リーダーボード</a>:LLMのスループットに焦点を当てたリーダーボード。</li>',gt,ce,ct,ue,Nt='<li><a href="main_classes/quantization">ガイド</a>:ダイナミッククオンタイズに関するガイド。これによりメモリ要件を劇的に削減する方法が示されています。</li>',ut,de,dt,Me,Yt='<li><a href="https://github.com/huggingface/text-generation-inference" rel="nofollow"><code>text-generation-inference</code></a>:LLM用の本番向けサーバー;</li> <li><a href="https://github.com/huggingface/optimum" rel="nofollow"><code>optimum</code></a>:特定のハードウェアデバイス向けに最適化された🤗 Transformersの拡張。</li>',Mt,fe,ft,ye,ht;return w=new h({props:{title:"Generation with LLMs",local:"generation-with-llms",headingTag:"h1"}}),_=new as({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/llm_tutorial.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/pytorch/llm_tutorial.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/tensorflow/llm_tutorial.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/llm_tutorial.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/pytorch/llm_tutorial.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/tensorflow/llm_tutorial.ipynb"}]}}),v=new T({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGJpdHNhbmRieXRlcyUzRSUzRDAuMzkuMCUyMC1x",highlighted:"pip install transformers bitsandbytes&gt;=0.39.0 -q",wrap:!1}}),C=new h({props:{title:"Generate text",local:"generate-text",headingTag:"h2"}}),j=new ls({props:{$$slots:{default:[is]},$$scope:{ctx:be}}}),R=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNhdXNhbExNJTBBJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIyb3BlbmxtLXJlc2VhcmNoJTJGb3Blbl9sbGFtYV83YiUyMiUyQyUyMGRldmljZV9tYXAlM0QlMjJhdXRvJTIyJTJDJTIwbG9hZF9pbl80Yml0JTNEVHJ1ZSUwQSk=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM
<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForCausalLM.from_pretrained(
<span class="hljs-meta">... </span> <span class="hljs-string">&quot;openlm-research/open_llama_7b&quot;</span>, device_map=<span class="hljs-string">&quot;auto&quot;</span>, load_in_4bit=<span class="hljs-literal">True</span>
<span class="hljs-meta">... </span>)`,wrap:!1}}),q=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJvcGVubG0tcmVzZWFyY2glMkZvcGVuX2xsYW1hXzdiJTIyKSUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplciglNUIlMjJBJTIwbGlzdCUyMG9mJTIwY29sb3JzJTNBJTIwcmVkJTJDJTIwYmx1ZSUyMiU1RCUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpLnRvKCUyMmN1ZGElMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;openlm-research/open_llama_7b&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model_inputs = tokenizer([<span class="hljs-string">&quot;A list of colors: red, blue&quot;</span>], return_tensors=<span class="hljs-string">&quot;pt&quot;</span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)`,wrap:!1}}),N=new T({props:{code:"Z2VuZXJhdGVkX2lkcyUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCoqbW9kZWxfaW5wdXRzKSUwQXRva2VuaXplci5iYXRjaF9kZWNvZGUoZ2VuZXJhdGVkX2lkcyUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSU1QjAlNUQ=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;A list of colors: red, blue, green, yellow, black, white, and brown&#x27;</span>`,wrap:!1}}),S=new h({props:{title:"Common pitfalls",local:"common-pitfalls",headingTag:"h2"}}),P=new T({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNhdXNhbExNJTJDJTIwQXV0b1Rva2VuaXplciUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMm9wZW5sbS1yZXNlYXJjaCUyRm9wZW5fbGxhbWFfN2IlMjIpJTBBdG9rZW5pemVyLnBhZF90b2tlbiUyMCUzRCUyMHRva2VuaXplci5lb3NfdG9rZW4lMjAlMjAlMjMlMjBMbGFtYSUyMGhhcyUyMG5vJTIwcGFkJTIwdG9rZW4lMjBieSUyMGRlZmF1bHQlMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvckNhdXNhbExNLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJvcGVubG0tcmVzZWFyY2glMkZvcGVuX2xsYW1hXzdiJTIyJTJDJTIwZGV2aWNlX21hcCUzRCUyMmF1dG8lMjIlMkMlMjBsb2FkX2luXzRiaXQlM0RUcnVlJTBBKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM, AutoTokenizer
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;openlm-research/open_llama_7b&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.pad_token = tokenizer.eos_token <span class="hljs-comment"># Llama has no pad token by default</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForCausalLM.from_pretrained(
<span class="hljs-meta">... </span> <span class="hljs-string">&quot;openlm-research/open_llama_7b&quot;</span>, device_map=<span class="hljs-string">&quot;auto&quot;</span>, load_in_4bit=<span class="hljs-literal">True</span>
<span class="hljs-meta">... </span>)`,wrap:!1}}),K=new h({props:{title:"Generated output is too short/long",local:"generated-output-is-too-shortlong",headingTag:"h3"}}),O=new T({props:{code:"bW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKCU1QiUyMkElMjBzZXF1ZW5jZSUyMG9mJTIwbnVtYmVycyUzQSUyMDElMkMlMjAyJTIyJTVEJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMikudG8oJTIyY3VkYSUyMiklMEElMEElMjMlMjBCeSUyMGRlZmF1bHQlMkMlMjB0aGUlMjBvdXRwdXQlMjB3aWxsJTIwY29udGFpbiUyMHVwJTIwdG8lMjAyMCUyMHRva2VucyUwQWdlbmVyYXRlZF9pZHMlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKm1vZGVsX2lucHV0cyklMEF0b2tlbml6ZXIuYmF0Y2hfZGVjb2RlKGdlbmVyYXRlZF9pZHMlMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklNUIwJTVEJTBBJTBBJTIzJTIwU2V0dGluZyUyMCU2MG1heF9uZXdfdG9rZW5zJTYwJTIwYWxsb3dzJTIweW91JTIwdG8lMjBjb250cm9sJTIwdGhlJTIwbWF4aW11bSUyMGxlbmd0aCUwQWdlbmVyYXRlZF9pZHMlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKm1vZGVsX2lucHV0cyUyQyUyMG1heF9uZXdfdG9rZW5zJTNENTApJTBBdG9rZW5pemVyLmJhdGNoX2RlY29kZShnZW5lcmF0ZWRfaWRzJTJDJTIwc2tpcF9zcGVjaWFsX3Rva2VucyUzRFRydWUpJTVCMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>model_inputs = tokenizer([<span class="hljs-string">&quot;A sequence of numbers: 1, 2&quot;</span>], return_tensors=<span class="hljs-string">&quot;pt&quot;</span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># By default, the output will contain up to 20 tokens</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;A sequence of numbers: 1, 2, 3, 4, 5&#x27;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Setting \`max_new_tokens\` allows you to control the maximum length</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs, max_new_tokens=<span class="hljs-number">50</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;A sequence of numbers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,&#x27;</span>`,wrap:!1}}),ee=new h({props:{title:"Incorrect generation mode",local:"incorrect-generation-mode",headingTag:"h3"}}),se=new T({props:{code:"JTIzJTIwU2V0JTIwc2VlZCUyMG9yJTIwcmVwcm9kdWNpYmlsaXR5JTIwLS0lMjB5b3UlMjBkb24ndCUyMG5lZWQlMjB0aGlzJTIwdW5sZXNzJTIweW91JTIwd2FudCUyMGZ1bGwlMjByZXByb2R1Y2liaWxpdHklMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwc2V0X3NlZWQlMEFzZXRfc2VlZCgwKSUwQSUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplciglNUIlMjJJJTIwYW0lMjBhJTIwY2F0LiUyMiU1RCUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpLnRvKCUyMmN1ZGElMjIpJTBBJTBBJTIzJTIwTExNJTIwJTJCJTIwZ3JlZWR5JTIwZGVjb2RpbmclMjAlM0QlMjByZXBldGl0aXZlJTJDJTIwYm9yaW5nJTIwb3V0cHV0JTBBZ2VuZXJhdGVkX2lkcyUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCoqbW9kZWxfaW5wdXRzKSUwQXRva2VuaXplci5iYXRjaF9kZWNvZGUoZ2VuZXJhdGVkX2lkcyUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSU1QjAlNUQlMEElMEElMjMlMjBXaXRoJTIwc2FtcGxpbmclMkMlMjB0aGUlMjBvdXRwdXQlMjBiZWNvbWVzJTIwbW9yZSUyMGNyZWF0aXZlISUwQWdlbmVyYXRlZF9pZHMlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKm1vZGVsX2lucHV0cyUyQyUyMGRvX3NhbXBsZSUzRFRydWUpJTBBdG9rZW5pemVyLmJhdGNoX2RlY29kZShnZW5lcmF0ZWRfaWRzJTJDJTIwc2tpcF9zcGVjaWFsX3Rva2VucyUzRFRydWUpJTVCMCU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Set seed or reproducibility -- you don&#x27;t need this unless you want full reproducibility</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> set_seed
<span class="hljs-meta">&gt;&gt;&gt; </span>set_seed(<span class="hljs-number">0</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model_inputs = tokenizer([<span class="hljs-string">&quot;I am a cat.&quot;</span>], return_tensors=<span class="hljs-string">&quot;pt&quot;</span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># LLM + greedy decoding = repetitive, boring output</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;I am a cat. I am a cat. I am a cat. I am a cat&#x27;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># With sampling, the output becomes more creative!</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs, do_sample=<span class="hljs-literal">True</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;I am a cat.\\nI just need to be. I am always.\\nEvery time&#x27;</span>`,wrap:!1}}),le=new h({props:{title:"Wrong padding side",local:"wrong-padding-side",headingTag:"h3"}}),ne=new T({props:{code:"JTIzJTIwVGhlJTIwdG9rZW5pemVyJTIwaW5pdGlhbGl6ZWQlMjBhYm92ZSUyMGhhcyUyMHJpZ2h0LXBhZGRpbmclMjBhY3RpdmUlMjBieSUyMGRlZmF1bHQlM0ElMjB0aGUlMjAxc3QlMjBzZXF1ZW5jZSUyQyUwQSUyMyUyMHdoaWNoJTIwaXMlMjBzaG9ydGVyJTJDJTIwaGFzJTIwcGFkZGluZyUyMG9uJTIwdGhlJTIwcmlnaHQlMjBzaWRlLiUyMEdlbmVyYXRpb24lMjBmYWlscy4lMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoJTBBJTIwJTIwJTIwJTIwJTVCJTIyMSUyQyUyMDIlMkMlMjAzJTIyJTJDJTIwJTIyQSUyQyUyMEIlMkMlMjBDJTJDJTIwRCUyQyUyMEUlMjIlNUQlMkMlMjBwYWRkaW5nJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIlMEEpLnRvKCUyMmN1ZGElMjIpJTBBZ2VuZXJhdGVkX2lkcyUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKCoqbW9kZWxfaW5wdXRzKSUwQXRva2VuaXplci5iYXRjaF9kZWNvZGUoZ2VuZXJhdGVkX2lkcyU1QjAlNUQlMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklNUIwJTVEJTBBJTBBJTIzJTIwV2l0aCUyMGxlZnQtcGFkZGluZyUyQyUyMGl0JTIwd29ya3MlMjBhcyUyMGV4cGVjdGVkISUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMm9wZW5sbS1yZXNlYXJjaCUyRm9wZW5fbGxhbWFfN2IlMjIlMkMlMjBwYWRkaW5nX3NpZGUlM0QlMjJsZWZ0JTIyKSUwQXRva2VuaXplci5wYWRfdG9rZW4lMjAlM0QlMjB0b2tlbml6ZXIuZW9zX3Rva2VuJTIwJTIwJTIzJTIwTGxhbWElMjBoYXMlMjBubyUyMHBhZCUyMHRva2VuJTIwYnklMjBkZWZhdWx0JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKCUwQSUyMCUyMCUyMCUyMCU1QiUyMjElMkMlMjAyJTJDJTIwMyUyMiUyQyUyMCUyMkElMkMlMjBCJTJDJTIwQyUyQyUyMEQlMkMlMjBFJTIyJTVEJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyJTBBKS50byglMjJjdWRhJTIyKSUwQWdlbmVyYXRlZF9pZHMlMjAlM0QlMjBtb2RlbC5nZW5lcmF0ZSgqKm1vZGVsX2lucHV0cyklMEF0b2tlbml6ZXIuYmF0Y2hfZGVjb2RlKGdlbmVyYXRlZF9pZHMlMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklNUIwJTVE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># The tokenizer initialized above has right-padding active by default: the 1st sequence,</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># which is shorter, has padding on the right side. Generation fails.</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>model_inputs = tokenizer(
<span class="hljs-meta">... </span> [<span class="hljs-string">&quot;1, 2, 3&quot;</span>, <span class="hljs-string">&quot;A, B, C, D, E&quot;</span>], padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>
<span class="hljs-meta">... </span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids[<span class="hljs-number">0</span>], skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;&#x27;</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># With left-padding, it works as expected!</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;openlm-research/open_llama_7b&quot;</span>, padding_side=<span class="hljs-string">&quot;left&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.pad_token = tokenizer.eos_token <span class="hljs-comment"># Llama has no pad token by default</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>model_inputs = tokenizer(
<span class="hljs-meta">... </span> [<span class="hljs-string">&quot;1, 2, 3&quot;</span>, <span class="hljs-string">&quot;A, B, C, D, E&quot;</span>], padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>
<span class="hljs-meta">... </span>).to(<span class="hljs-string">&quot;cuda&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>generated_ids = model.generate(**model_inputs)
<span class="hljs-meta">&gt;&gt;&gt; </span>tokenizer.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-string">&#x27;1, 2, 3, 4, 5, 6,&#x27;</span>`,wrap:!1}}),ie=new h({props:{title:"Further resources",local:"further-resources",headingTag:"h2"}}),re=new h({props:{title:"Advanced generate usage",local:"advanced-generate-usage",headingTag:"h3"}}),me=new h({props:{title:"LLM leaderboards",local:"llm-leaderboards",headingTag:"h3"}}),ce=new h({props:{title:"Latency and throughput",local:"latency-and-throughput",headingTag:"h3"}}),de=new h({props:{title:"Related libraries",local:"related-libraries",headingTag:"h3"}}),fe=new ns({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ja/llm_tutorial.md"}}),{c(){M=i("meta"),J=a(),f=i("p"),he=a(),o(w.$$.fragment),je=a(),o(_.$$.fragment),Te=a(),U=i("p"),U.textContent=bt,Je=a(),$=i("p"),$.innerHTML=jt,we=a(),Z=i("p"),Z.textContent=Tt,_e=a(),k=i("ul"),k.innerHTML=Jt,Ue=a(),G=i("p"),G.textContent=wt,$e=a(),o(v.$$.fragment),Ze=a(),o(C.$$.fragment),ke=a(),I=i("p"),I.innerHTML=_t,Ge=a(),y=i("figure"),y.innerHTML=Ut,ve=a(),x=i("p"),x.textContent=$t,Ce=a(),b=i("figure"),b.innerHTML=Zt,Ie=a(),W=i("p"),W.innerHTML=kt,xe=a(),L=i("p"),L.innerHTML=Gt,We=a(),V=i("p"),V.textContent=vt,Le=a(),o(j.$$.fragment),Ve=a(),X=i("p"),X.textContent=Ct,Xe=a(),o(R.$$.fragment),Re=a(),z=i("p"),z.innerHTML=It,ze=a(),B=i("ul"),B.innerHTML=xt,Be=a(),H=i("p"),H.textContent=Wt,He=a(),F=i("p"),F.innerHTML=Lt,Fe=a(),o(q.$$.fragment),qe=a(),E=i("p"),E.innerHTML=Vt,Ee=a(),Q=i("p"),Q.innerHTML=Xt,Qe=a(),o(N.$$.fragment),Ne=a(),Y=i("p"),Y.textContent=Rt,Ye=a(),o(S.$$.fragment),Se=a(),A=i("p"),A.innerHTML=zt,Ae=a(),o(P.$$.fragment),Pe=a(),o(K.$$.fragment),Ke=a(),D=i("p"),D.innerHTML=Bt,De=a(),o(O.$$.fragment),Oe=a(),o(ee.$$.fragment),et=a(),te=i("p"),te.innerHTML=Ht,tt=a(),o(se.$$.fragment),st=a(),o(le.$$.fragment),lt=a(),ae=i("p"),ae.innerHTML=Ft,at=a(),o(ne.$$.fragment),nt=a(),o(ie.$$.fragment),it=a(),pe=i("p"),pe.textContent=qt,pt=a(),o(re.$$.fragment),rt=a(),oe=i("ol"),oe.innerHTML=Et,ot=a(),o(me.$$.fragment),mt=a(),ge=i("ol"),ge.innerHTML=Qt,gt=a(),o(ce.$$.fragment),ct=a(),ue=i("ol"),ue.innerHTML=Nt,ut=a(),o(de.$$.fragment),dt=a(),Me=i("ol"),Me.innerHTML=Yt,Mt=a(),o(fe.$$.fragment),ft=a(),ye=i("p"),this.h()},l(e){const t=ts("svelte-u9bgzb",document.head);M=p(t,"META",{name:!0,content:!0}),t.forEach(s),J=n(e),f=p(e,"P",{}),At(f).forEach(s),he=n(e),m(w.$$.fragment,e),je=n(e),m(_.$$.fragment,e),Te=n(e),U=p(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-1p8oyus"&&(U.textContent=bt),Je=n(e),$=p(e,"P",{"data-svelte-h":!0}),r($)!=="svelte-1vfqqi2"&&($.innerHTML=jt),we=n(e),Z=p(e,"P",{"data-svelte-h":!0}),r(Z)!=="svelte-10d5jzs"&&(Z.textContent=Tt),_e=n(e),k=p(e,"UL",{"data-svelte-h":!0}),r(k)!=="svelte-114gruu"&&(k.innerHTML=Jt),Ue=n(e),G=p(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-5jpx9c"&&(G.textContent=wt),$e=n(e),m(v.$$.fragment,e),Ze=n(e),m(C.$$.fragment,e),ke=n(e),I=p(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-1kvqgos"&&(I.innerHTML=_t),Ge=n(e),y=p(e,"FIGURE",{class:!0,"data-svelte-h":!0}),r(y)!=="svelte-hjgddv"&&(y.innerHTML=Ut),ve=n(e),x=p(e,"P",{"data-svelte-h":!0}),r(x)!=="svelte-1vvn9v3"&&(x.textContent=$t),Ce=n(e),b=p(e,"FIGURE",{class:!0,"data-svelte-h":!0}),r(b)!=="svelte-1uqc9hk"&&(b.innerHTML=Zt),Ie=n(e),W=p(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-1q7bq18"&&(W.innerHTML=kt),xe=n(e),L=p(e,"P",{"data-svelte-h":!0}),r(L)!=="svelte-1icf37s"&&(L.innerHTML=Gt),We=n(e),V=p(e,"P",{"data-svelte-h":!0}),r(V)!=="svelte-1gzvd9k"&&(V.textContent=vt),Le=n(e),m(j.$$.fragment,e),Ve=n(e),X=p(e,"P",{"data-svelte-h":!0}),r(X)!=="svelte-1mik2gq"&&(X.textContent=Ct),Xe=n(e),m(R.$$.fragment,e),Re=n(e),z=p(e,"P",{"data-svelte-h":!0}),r(z)!=="svelte-dj98s8"&&(z.innerHTML=It),ze=n(e),B=p(e,"UL",{"data-svelte-h":!0}),r(B)!=="svelte-k3ww82"&&(B.innerHTML=xt),Be=n(e),H=p(e,"P",{"data-svelte-h":!0}),r(H)!=="svelte-1ved9f1"&&(H.textContent=Wt),He=n(e),F=p(e,"P",{"data-svelte-h":!0}),r(F)!=="svelte-1vkr8y3"&&(F.innerHTML=Lt),Fe=n(e),m(q.$$.fragment,e),qe=n(e),E=p(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-x6f6fg"&&(E.innerHTML=Vt),Ee=n(e),Q=p(e,"P",{"data-svelte-h":!0}),r(Q)!=="svelte-1r464t2"&&(Q.innerHTML=Xt),Qe=n(e),m(N.$$.fragment,e),Ne=n(e),Y=p(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-1fgh7wz"&&(Y.textContent=Rt),Ye=n(e),m(S.$$.fragment,e),Se=n(e),A=p(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-k0wny5"&&(A.innerHTML=zt),Ae=n(e),m(P.$$.fragment,e),Pe=n(e),m(K.$$.fragment,e),Ke=n(e),D=p(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-1xigo70"&&(D.innerHTML=Bt),De=n(e),m(O.$$.fragment,e),Oe=n(e),m(ee.$$.fragment,e),et=n(e),te=p(e,"P",{"data-svelte-h":!0}),r(te)!=="svelte-dsxkkj"&&(te.innerHTML=Ht),tt=n(e),m(se.$$.fragment,e),st=n(e),m(le.$$.fragment,e),lt=n(e),ae=p(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-fd0pc8"&&(ae.innerHTML=Ft),at=n(e),m(ne.$$.fragment,e),nt=n(e),m(ie.$$.fragment,e),it=n(e),pe=p(e,"P",{"data-svelte-h":!0}),r(pe)!=="svelte-1d601do"&&(pe.textContent=qt),pt=n(e),m(re.$$.fragment,e),rt=n(e),oe=p(e,"OL",{"data-svelte-h":!0}),r(oe)!=="svelte-45xzb4"&&(oe.innerHTML=Et),ot=n(e),m(me.$$.fragment,e),mt=n(e),ge=p(e,"OL",{"data-svelte-h":!0}),r(ge)!=="svelte-1mag1j5"&&(ge.innerHTML=Qt),gt=n(e),m(ce.$$.fragment,e),ct=n(e),ue=p(e,"OL",{"data-svelte-h":!0}),r(ue)!=="svelte-1d7xcac"&&(ue.innerHTML=Nt),ut=n(e),m(de.$$.fragment,e),dt=n(e),Me=p(e,"OL",{"data-svelte-h":!0}),r(Me)!=="svelte-1v1y2ns"&&(Me.innerHTML=Yt),Mt=n(e),m(fe.$$.fragment,e),ft=n(e),ye=p(e,"P",{}),At(ye).forEach(s),this.h()},h(){yt(M,"name","hf:doc:metadata"),yt(M,"content",rs),yt(y,"class","image table text-center m-0 w-full"),yt(b,"class","image table text-center m-0 w-full")},m(e,t){ss(document.head,M),l(e,J,t),l(e,f,t),l(e,he,t),g(w,e,t),l(e,je,t),g(_,e,t),l(e,Te,t),l(e,U,t),l(e,Je,t),l(e,$,t),l(e,we,t),l(e,Z,t),l(e,_e,t),l(e,k,t),l(e,Ue,t),l(e,G,t),l(e,$e,t),g(v,e,t),l(e,Ze,t),g(C,e,t),l(e,ke,t),l(e,I,t),l(e,Ge,t),l(e,y,t),l(e,ve,t),l(e,x,t),l(e,Ce,t),l(e,b,t),l(e,Ie,t),l(e,W,t),l(e,xe,t),l(e,L,t),l(e,We,t),l(e,V,t),l(e,Le,t),g(j,e,t),l(e,Ve,t),l(e,X,t),l(e,Xe,t),g(R,e,t),l(e,Re,t),l(e,z,t),l(e,ze,t),l(e,B,t),l(e,Be,t),l(e,H,t),l(e,He,t),l(e,F,t),l(e,Fe,t),g(q,e,t),l(e,qe,t),l(e,E,t),l(e,Ee,t),l(e,Q,t),l(e,Qe,t),g(N,e,t),l(e,Ne,t),l(e,Y,t),l(e,Ye,t),g(S,e,t),l(e,Se,t),l(e,A,t),l(e,Ae,t),g(P,e,t),l(e,Pe,t),g(K,e,t),l(e,Ke,t),l(e,D,t),l(e,De,t),g(O,e,t),l(e,Oe,t),g(ee,e,t),l(e,et,t),l(e,te,t),l(e,tt,t),g(se,e,t),l(e,st,t),g(le,e,t),l(e,lt,t),l(e,ae,t),l(e,at,t),g(ne,e,t),l(e,nt,t),g(ie,e,t),l(e,it,t),l(e,pe,t),l(e,pt,t),g(re,e,t),l(e,rt,t),l(e,oe,t),l(e,ot,t),g(me,e,t),l(e,mt,t),l(e,ge,t),l(e,gt,t),g(ce,e,t),l(e,ct,t),l(e,ue,t),l(e,ut,t),g(de,e,t),l(e,dt,t),l(e,Me,t),l(e,Mt,t),g(fe,e,t),l(e,ft,t),l(e,ye,t),ht=!0},p(e,[t]){const St={};t&2&&(St.$$scope={dirty:t,ctx:e}),j.$set(St)},i(e){ht||(c(w.$$.fragment,e),c(_.$$.fragment,e),c(v.$$.fragment,e),c(C.$$.fragment,e),c(j.$$.fragment,e),c(R.$$.fragment,e),c(q.$$.fragment,e),c(N.$$.fragment,e),c(S.$$.fragment,e),c(P.$$.fragment,e),c(K.$$.fragment,e),c(O.$$.fragment,e),c(ee.$$.fragment,e),c(se.$$.fragment,e),c(le.$$.fragment,e),c(ne.$$.fragment,e),c(ie.$$.fragment,e),c(re.$$.fragment,e),c(me.$$.fragment,e),c(ce.$$.fragment,e),c(de.$$.fragment,e),c(fe.$$.fragment,e),ht=!0)},o(e){u(w.$$.fragment,e),u(_.$$.fragment,e),u(v.$$.fragment,e),u(C.$$.fragment,e),u(j.$$.fragment,e),u(R.$$.fragment,e),u(q.$$.fragment,e),u(N.$$.fragment,e),u(S.$$.fragment,e),u(P.$$.fragment,e),u(K.$$.fragment,e),u(O.$$.fragment,e),u(ee.$$.fragment,e),u(se.$$.fragment,e),u(le.$$.fragment,e),u(ne.$$.fragment,e),u(ie.$$.fragment,e),u(re.$$.fragment,e),u(me.$$.fragment,e),u(ce.$$.fragment,e),u(de.$$.fragment,e),u(fe.$$.fragment,e),ht=!1},d(e){e&&(s(J),s(f),s(he),s(je),s(Te),s(U),s(Je),s($),s(we),s(Z),s(_e),s(k),s(Ue),s(G),s($e),s(Ze),s(ke),s(I),s(Ge),s(y),s(ve),s(x),s(Ce),s(b),s(Ie),s(W),s(xe),s(L),s(We),s(V),s(Le),s(Ve),s(X),s(Xe),s(Re),s(z),s(ze),s(B),s(Be),s(H),s(He),s(F),s(Fe),s(qe),s(E),s(Ee),s(Q),s(Qe),s(Ne),s(Y),s(Ye),s(Se),s(A),s(Ae),s(Pe),s(Ke),s(D),s(De),s(Oe),s(et),s(te),s(tt),s(st),s(lt),s(ae),s(at),s(nt),s(it),s(pe),s(pt),s(rt),s(oe),s(ot),s(mt),s(ge),s(gt),s(ct),s(ue),s(ut),s(dt),s(Me),s(Mt),s(ft),s(ye)),s(M),d(w,e),d(_,e),d(v,e),d(C,e),d(j,e),d(R,e),d(q,e),d(N,e),d(S,e),d(P,e),d(K,e),d(O,e),d(ee,e),d(se,e),d(le,e),d(ne,e),d(ie,e),d(re,e),d(me,e),d(ce,e),d(de,e),d(fe,e)}}}const rs='{"title":"Generation with LLMs","local":"generation-with-llms","sections":[{"title":"Generate text","local":"generate-text","sections":[],"depth":2},{"title":"Common pitfalls","local":"common-pitfalls","sections":[{"title":"Generated output is too short/long","local":"generated-output-is-too-shortlong","sections":[],"depth":3},{"title":"Incorrect generation mode","local":"incorrect-generation-mode","sections":[],"depth":3},{"title":"Wrong padding side","local":"wrong-padding-side","sections":[],"depth":3}],"depth":2},{"title":"Further resources","local":"further-resources","sections":[{"title":"Advanced generate usage","local":"advanced-generate-usage","sections":[],"depth":3},{"title":"LLM leaderboards","local":"llm-leaderboards","sections":[],"depth":3},{"title":"Latency and throughput","local":"latency-and-throughput","sections":[],"depth":3},{"title":"Related libraries","local":"related-libraries","sections":[],"depth":3}],"depth":2}],"depth":1}';function os(be){return Kt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fs extends Ot{constructor(M){super(),es(this,M,os,ps,Pt,{})}}export{fs as component};

Xet Storage Details

Size:
35.4 kB
·
Xet hash:
dc8a838e833e90fa9db40354c4e0c4a6496c1ef84c1c20d83f332cd384cfff03

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.