Buckets:

rtrm's picture
download
raw
33.5 kB
import{s as Dt,o as Pt,n as Kt}from"../chunks/scheduler.987d3921.js";import{S as Ot,i as en,g as i,s as l,r as p,A as tn,h as r,f as n,c as a,j as Yt,u,x as o,k as bt,y as nn,a as s,v as m,d as g,t as d,w as c}from"../chunks/index.c8b1fed4.js";import{T as sn}from"../chunks/Tip.6bc1e794.js";import{C as T}from"../chunks/CodeBlock.18094d58.js";import{D as ln}from"../chunks/DocNotebookDropdown.8be6c56e.js";import{H as M,E as an}from"../chunks/EditOnGithub.a3fde557.js";function rn(ye){let h,j='Wenn Sie an der grundlegenden Verwendung von LLMs interessiert sind, ist unsere High-Level-Schnittstelle <a href="pipeline_tutorial"><code>Pipeline</code></a> ein guter Ausgangspunkt. LLMs erfordern jedoch oft fortgeschrittene Funktionen wie Quantisierung und Feinsteuerung des Token-Auswahlschritts, was am besten über <code>generate()</code> erfolgt. Die autoregressive Generierung mit LLMs ist ebenfalls ressourcenintensiv und sollte für einen angemessenen Durchsatz auf einer GPU ausgeführt werden.';return{c(){h=i("p"),h.innerHTML=j},l(f){h=r(f,"P",{"data-svelte-h":!0}),o(h)!=="svelte-ea0vwr"&&(h.innerHTML=j)},m(f,Me){s(f,h,Me)},p:Kt,d(f){f&&n(h)}}}function on(ye){let h,j,f,Me,k,we,J,Te,v,yt="LLMs (Large Language Models) sind die Schlüsselkomponente bei der Texterstellung. Kurz gesagt, bestehen sie aus großen, vortrainierten Transformationsmodellen, die darauf trainiert sind, das nächste Wort (oder genauer gesagt Token) aus einem Eingabetext vorherzusagen. Da sie jeweils ein Token vorhersagen, müssen Sie etwas Aufwändigeres tun, um neue Sätze zu generieren, als nur das Modell aufzurufen - Sie müssen eine autoregressive Generierung durchführen.",je,U,wt="Die autoregressive Generierung ist ein Verfahren zur Inferenzzeit, bei dem ein Modell mit seinen eigenen generierten Ausgaben iterativ aufgerufen wird, wenn einige anfängliche Eingaben vorliegen. In 🤗 Transformers wird dies von der Methode <code>generate()</code> übernommen, die allen Modellen mit generativen Fähigkeiten zur Verfügung steht.",ke,z,Tt="Dieses Tutorial zeigt Ihnen, wie Sie:",Je,$,jt="<li>Text mit einem LLM generieren</li> <li>Vermeiden Sie häufige Fallstricke</li> <li>Nächste Schritte, damit Sie das Beste aus Ihrem LLM herausholen können</li>",ve,Z,kt="Bevor Sie beginnen, stellen Sie sicher, dass Sie alle erforderlichen Bibliotheken installiert haben:",Ue,_,ze,G,$e,I,Jt='Ein Sprachmodell, das für <a href="tasks/language_modeling">causal language modeling</a> trainiert wurde, nimmt eine Folge von Text-Token als Eingabe und gibt die Wahrscheinlichkeitsverteilung für das nächste Token zurück.',Ze,b,vt='<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>',_e,W,Ut="Ein wichtiger Aspekt der autoregressiven Generierung mit LLMs ist die Auswahl des nächsten Tokens aus dieser Wahrscheinlichkeitsverteilung. In diesem Schritt ist alles möglich, solange Sie am Ende ein Token für die nächste Iteration haben. Das heißt, es kann so einfach sein wie die Auswahl des wahrscheinlichsten Tokens aus der Wahrscheinlichkeitsverteilung oder so komplex wie die Anwendung von einem Dutzend Transformationen vor der Stichprobenziehung aus der resultierenden Verteilung.",Ge,y,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;Die autoregressive Generierung wählt iterativ das nächste Token aus einer Wahrscheinlichkeitsverteilung aus, um Text zu erzeugen&quot;</figcaption>',Ie,C,$t="Der oben dargestellte Prozess wird iterativ wiederholt, bis eine bestimmte Abbruchbedingung erreicht ist. Im Idealfall wird die Abbruchbedingung vom Modell vorgegeben, das lernen sollte, wann es ein Ende-der-Sequenz-Token (EOS) ausgeben muss. Ist dies nicht der Fall, stoppt die Generierung, wenn eine vordefinierte Maximallänge erreicht ist.",We,V,Zt="Damit sich Ihr Modell so verhält, wie Sie es für Ihre Aufgabe erwarten, müssen Sie den Schritt der Token-Auswahl und die Abbruchbedingung richtig einstellen. Aus diesem Grund haben wir zu jedem Modell eine <code>GenerationConfig</code>-Datei, die eine gute generative Standardparametrisierung enthält und zusammen mit Ihrem Modell geladen wird.",Ce,x,_t="Lassen Sie uns über Code sprechen!",Ve,w,xe,L,Gt="Zunächst müssen Sie das Modell laden.",Le,R,Re,X,It="Sie werden zwei Flags in dem Aufruf <code>from_pretrained</code> bemerken:",Xe,B,Wt='<li><code>device_map</code> stellt sicher, dass das Modell auf Ihre GPU(s) übertragen wird</li> <li><code>load_in_4bit</code> wendet <a href="main_classes/quantization">dynamische 4-Bit-Quantisierung</a> an, um die Ressourcenanforderungen massiv zu reduzieren</li>',Be,S,Ct="Es gibt noch andere Möglichkeiten, ein Modell zu initialisieren, aber dies ist eine gute Grundlage, um mit einem LLM zu beginnen.",Se,H,Vt='Als nächstes müssen Sie Ihre Texteingabe mit einem <a href="tokenizer_summary">tokenizer</a> vorverarbeiten.',He,F,Fe,E,xt="Die Variable <code>model_inputs</code> enthält die tokenisierte Texteingabe sowie die Aufmerksamkeitsmaske. Obwohl <code>generate()</code> sein Bestes tut, um die Aufmerksamkeitsmaske abzuleiten, wenn sie nicht übergeben wird, empfehlen wir, sie für optimale Ergebnisse wann immer möglich zu übergeben.",Ee,A,Lt="Rufen Sie schließlich die Methode <code>generate()</code> auf, um die generierten Token zurückzugeben, die vor dem Drucken in Text umgewandelt werden sollten.",Ae,Q,Qe,N,Rt="Und das war’s! Mit ein paar Zeilen Code können Sie sich die Macht eines LLM zunutze machen.",Ne,q,qe,Y,Xt='Es gibt viele <a href="generation_strategies">Generierungsstrategien</a>, und manchmal sind die Standardwerte für Ihren Anwendungsfall vielleicht nicht geeignet. Wenn Ihre Ausgaben nicht mit dem übereinstimmen, was Sie erwarten, haben wir eine Liste der häufigsten Fallstricke erstellt und wie Sie diese vermeiden können.',Ye,D,De,P,Pe,K,Bt='Wenn in der Datei <code>GenerationConfig</code> nichts angegeben ist, gibt <code>generate</code> standardmäßig bis zu 20 Token zurück. Wir empfehlen dringend, <code>max_new_tokens</code> in Ihrem <code>generate</code>-Aufruf manuell zu setzen, um die maximale Anzahl neuer Token zu kontrollieren, die zurückgegeben werden können. Beachten Sie, dass LLMs (genauer gesagt, <a href="https://huggingface.co/learn/nlp-course/chapter1/6?fw=pt" rel="nofollow">decoder-only models</a>) auch die Eingabeaufforderung als Teil der Ausgabe zurückgeben.',Ke,O,Oe,ee,et,te,St='Standardmäßig und sofern nicht in der Datei <code>GenerationConfig</code> angegeben, wählt <code>generate</code> bei jeder Iteration das wahrscheinlichste Token aus (gierige Dekodierung). Je nach Aufgabe kann dies unerwünscht sein; kreative Aufgaben wie Chatbots oder das Schreiben eines Aufsatzes profitieren vom Sampling. Andererseits profitieren Aufgaben, bei denen es auf die Eingabe ankommt, wie z.B. Audiotranskription oder Übersetzung, von der gierigen Dekodierung. Aktivieren Sie das Sampling mit <code>do_sample=True</code>. Mehr zu diesem Thema erfahren Sie in diesem <a href="https://huggingface.co/blog/how-to-generate" rel="nofollow">Blogbeitrag</a>.',tt,ne,nt,se,st,le,Ht='LLMs sind <a href="https://huggingface.co/learn/nlp-course/chapter1/6?fw=pt" rel="nofollow">decoder-only</a>-Architekturen, d.h. sie iterieren weiter über Ihre Eingabeaufforderung. Wenn Ihre Eingaben nicht die gleiche Länge haben, müssen sie aufgefüllt werden. Da LLMs nicht darauf trainiert sind, mit aufgefüllten Token fortzufahren, muss Ihre Eingabe links aufgefüllt werden. Vergessen Sie auch nicht, die Aufmerksamkeitsmaske an generate zu übergeben!',lt,ae,at,ie,it,re,Ft="Während der Prozess der autoregressiven Generierung relativ einfach ist, kann die optimale Nutzung Ihres LLM ein schwieriges Unterfangen sein, da es viele bewegliche Teile gibt. Für Ihre nächsten Schritte, die Ihnen helfen, tiefer in die LLM-Nutzung und das Verständnis einzutauchen:",rt,oe,ot,pe,Et='<li><a href="generation_strategies">Leitfaden</a> zur Steuerung verschiedener Generierungsmethoden, zur Einrichtung der Generierungskonfigurationsdatei und zum Streaming der Ausgabe;</li> <li>API-Referenz zu <code>GenerationConfig</code>, <code>generate()</code> und <a href="internal/generation_utils">generate-bezogene Klassen</a>.</li>',pt,ue,ut,me,At='<li><a href="https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard" rel="nofollow">Open LLM Leaderboard</a>, das sich auf die Qualität der Open-Source-Modelle konzentriert;</li> <li><a href="https://huggingface.co/spaces/optimum/llm-perf-leaderboard" rel="nofollow">Open LLM-Perf Leaderboard</a>, das sich auf den LLM-Durchsatz konzentriert.</li>',mt,ge,gt,de,Qt='<li><a href="main_classes/quantization">Leitfaden</a> zur dynamischen Quantisierung, der Ihnen zeigt, wie Sie Ihren Speicherbedarf drastisch reduzieren können.</li>',dt,ce,ct,he,Nt='<li><a href="https://github.com/huggingface/text-generation-inference" rel="nofollow">text-generation-inference</a>, ein produktionsreifer Server für LLMs;</li> <li><a href="https://github.com/huggingface/optimum" rel="nofollow"><code>optimum</code></a>, eine Erweiterung von 🤗 Transformers, die für bestimmte Hardware-Geräte optimiert.</li>',ht,fe,ft,be,Mt;return k=new M({props:{title:"Generation with LLMs",local:"generation-with-llms",headingTag:"h1"}}),J=new ln({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/de/llm_tutorial.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/pytorch/llm_tutorial.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/de/tensorflow/llm_tutorial.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/llm_tutorial.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/pytorch/llm_tutorial.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/de/tensorflow/llm_tutorial.ipynb"}]}}),_=new T({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGJpdHNhbmRieXRlcyUzRSUzRDAuMzkuMCUyMC1x",highlighted:"pip install transformers bitsandbytes&gt;=0.39.0 -q",wrap:!1}}),G=new M({props:{title:"Text generieren",local:"text-generieren",headingTag:"h2"}}),w=new sn({props:{$$slots:{default:[rn]},$$scope:{ctx:ye}}}),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}}),F=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}}),Q=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}}),q=new M({props:{title:"Häufige Fallstricke",local:"häufige-fallstricke",headingTag:"h2"}}),D=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}}),P=new M({props:{title:"Generierte Ausgabe ist zu kurz/lang",local:"generierte-ausgabe-ist-zu-kurzlang",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 M({props:{title:"Falscher Generierungsmodus",local:"falscher-generierungsmodus",headingTag:"h3"}}),ne=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}}),se=new M({props:{title:"Falsche Auffüllseite",local:"falsche-auffüllseite",headingTag:"h3"}}),ae=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 M({props:{title:"Weitere Ressourcen",local:"weitere-ressourcen",headingTag:"h2"}}),oe=new M({props:{title:"Fortgeschrittene Nutzung generieren",local:"fortgeschrittene-nutzung-generieren",headingTag:"h3"}}),ue=new M({props:{title:"LLM-Ranglisten",local:"llm-ranglisten",headingTag:"h3"}}),ge=new M({props:{title:"Latenz und Durchsatz",local:"latenz-und-durchsatz",headingTag:"h3"}}),ce=new M({props:{title:"Verwandte Bibliotheken",local:"verwandte-bibliotheken",headingTag:"h3"}}),fe=new an({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/de/llm_tutorial.md"}}),{c(){h=i("meta"),j=l(),f=i("p"),Me=l(),p(k.$$.fragment),we=l(),p(J.$$.fragment),Te=l(),v=i("p"),v.textContent=yt,je=l(),U=i("p"),U.innerHTML=wt,ke=l(),z=i("p"),z.textContent=Tt,Je=l(),$=i("ul"),$.innerHTML=jt,ve=l(),Z=i("p"),Z.textContent=kt,Ue=l(),p(_.$$.fragment),ze=l(),p(G.$$.fragment),$e=l(),I=i("p"),I.innerHTML=Jt,Ze=l(),b=i("figure"),b.innerHTML=vt,_e=l(),W=i("p"),W.textContent=Ut,Ge=l(),y=i("figure"),y.innerHTML=zt,Ie=l(),C=i("p"),C.textContent=$t,We=l(),V=i("p"),V.innerHTML=Zt,Ce=l(),x=i("p"),x.textContent=_t,Ve=l(),p(w.$$.fragment),xe=l(),L=i("p"),L.textContent=Gt,Le=l(),p(R.$$.fragment),Re=l(),X=i("p"),X.innerHTML=It,Xe=l(),B=i("ul"),B.innerHTML=Wt,Be=l(),S=i("p"),S.textContent=Ct,Se=l(),H=i("p"),H.innerHTML=Vt,He=l(),p(F.$$.fragment),Fe=l(),E=i("p"),E.innerHTML=xt,Ee=l(),A=i("p"),A.innerHTML=Lt,Ae=l(),p(Q.$$.fragment),Qe=l(),N=i("p"),N.textContent=Rt,Ne=l(),p(q.$$.fragment),qe=l(),Y=i("p"),Y.innerHTML=Xt,Ye=l(),p(D.$$.fragment),De=l(),p(P.$$.fragment),Pe=l(),K=i("p"),K.innerHTML=Bt,Ke=l(),p(O.$$.fragment),Oe=l(),p(ee.$$.fragment),et=l(),te=i("p"),te.innerHTML=St,tt=l(),p(ne.$$.fragment),nt=l(),p(se.$$.fragment),st=l(),le=i("p"),le.innerHTML=Ht,lt=l(),p(ae.$$.fragment),at=l(),p(ie.$$.fragment),it=l(),re=i("p"),re.textContent=Ft,rt=l(),p(oe.$$.fragment),ot=l(),pe=i("ol"),pe.innerHTML=Et,pt=l(),p(ue.$$.fragment),ut=l(),me=i("ol"),me.innerHTML=At,mt=l(),p(ge.$$.fragment),gt=l(),de=i("ol"),de.innerHTML=Qt,dt=l(),p(ce.$$.fragment),ct=l(),he=i("ol"),he.innerHTML=Nt,ht=l(),p(fe.$$.fragment),ft=l(),be=i("p"),this.h()},l(e){const t=tn("svelte-u9bgzb",document.head);h=r(t,"META",{name:!0,content:!0}),t.forEach(n),j=a(e),f=r(e,"P",{}),Yt(f).forEach(n),Me=a(e),u(k.$$.fragment,e),we=a(e),u(J.$$.fragment,e),Te=a(e),v=r(e,"P",{"data-svelte-h":!0}),o(v)!=="svelte-140yavd"&&(v.textContent=yt),je=a(e),U=r(e,"P",{"data-svelte-h":!0}),o(U)!=="svelte-1nh5cju"&&(U.innerHTML=wt),ke=a(e),z=r(e,"P",{"data-svelte-h":!0}),o(z)!=="svelte-ipf9gg"&&(z.textContent=Tt),Je=a(e),$=r(e,"UL",{"data-svelte-h":!0}),o($)!=="svelte-imc6q0"&&($.innerHTML=jt),ve=a(e),Z=r(e,"P",{"data-svelte-h":!0}),o(Z)!=="svelte-28fang"&&(Z.textContent=kt),Ue=a(e),u(_.$$.fragment,e),ze=a(e),u(G.$$.fragment,e),$e=a(e),I=r(e,"P",{"data-svelte-h":!0}),o(I)!=="svelte-zi1jgg"&&(I.innerHTML=Jt),Ze=a(e),b=r(e,"FIGURE",{class:!0,"data-svelte-h":!0}),o(b)!=="svelte-hjgddv"&&(b.innerHTML=vt),_e=a(e),W=r(e,"P",{"data-svelte-h":!0}),o(W)!=="svelte-1ilwa1m"&&(W.textContent=Ut),Ge=a(e),y=r(e,"FIGURE",{class:!0,"data-svelte-h":!0}),o(y)!=="svelte-4pjbi0"&&(y.innerHTML=zt),Ie=a(e),C=r(e,"P",{"data-svelte-h":!0}),o(C)!=="svelte-1j4vblf"&&(C.textContent=$t),We=a(e),V=r(e,"P",{"data-svelte-h":!0}),o(V)!=="svelte-5vhx9n"&&(V.innerHTML=Zt),Ce=a(e),x=r(e,"P",{"data-svelte-h":!0}),o(x)!=="svelte-wo8rtu"&&(x.textContent=_t),Ve=a(e),u(w.$$.fragment,e),xe=a(e),L=r(e,"P",{"data-svelte-h":!0}),o(L)!=="svelte-16f5yf"&&(L.textContent=Gt),Le=a(e),u(R.$$.fragment,e),Re=a(e),X=r(e,"P",{"data-svelte-h":!0}),o(X)!=="svelte-1qd47t5"&&(X.innerHTML=It),Xe=a(e),B=r(e,"UL",{"data-svelte-h":!0}),o(B)!=="svelte-dbmx59"&&(B.innerHTML=Wt),Be=a(e),S=r(e,"P",{"data-svelte-h":!0}),o(S)!=="svelte-7wdmxs"&&(S.textContent=Ct),Se=a(e),H=r(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-1wuri71"&&(H.innerHTML=Vt),He=a(e),u(F.$$.fragment,e),Fe=a(e),E=r(e,"P",{"data-svelte-h":!0}),o(E)!=="svelte-9ebqu0"&&(E.innerHTML=xt),Ee=a(e),A=r(e,"P",{"data-svelte-h":!0}),o(A)!=="svelte-pk2vcp"&&(A.innerHTML=Lt),Ae=a(e),u(Q.$$.fragment,e),Qe=a(e),N=r(e,"P",{"data-svelte-h":!0}),o(N)!=="svelte-5a0hj7"&&(N.textContent=Rt),Ne=a(e),u(q.$$.fragment,e),qe=a(e),Y=r(e,"P",{"data-svelte-h":!0}),o(Y)!=="svelte-e1t2cj"&&(Y.innerHTML=Xt),Ye=a(e),u(D.$$.fragment,e),De=a(e),u(P.$$.fragment,e),Pe=a(e),K=r(e,"P",{"data-svelte-h":!0}),o(K)!=="svelte-ps2fr5"&&(K.innerHTML=Bt),Ke=a(e),u(O.$$.fragment,e),Oe=a(e),u(ee.$$.fragment,e),et=a(e),te=r(e,"P",{"data-svelte-h":!0}),o(te)!=="svelte-niimxq"&&(te.innerHTML=St),tt=a(e),u(ne.$$.fragment,e),nt=a(e),u(se.$$.fragment,e),st=a(e),le=r(e,"P",{"data-svelte-h":!0}),o(le)!=="svelte-1epu98s"&&(le.innerHTML=Ht),lt=a(e),u(ae.$$.fragment,e),at=a(e),u(ie.$$.fragment,e),it=a(e),re=r(e,"P",{"data-svelte-h":!0}),o(re)!=="svelte-g7p5pv"&&(re.textContent=Ft),rt=a(e),u(oe.$$.fragment,e),ot=a(e),pe=r(e,"OL",{"data-svelte-h":!0}),o(pe)!=="svelte-rbjkud"&&(pe.innerHTML=Et),pt=a(e),u(ue.$$.fragment,e),ut=a(e),me=r(e,"OL",{"data-svelte-h":!0}),o(me)!=="svelte-aeb0ps"&&(me.innerHTML=At),mt=a(e),u(ge.$$.fragment,e),gt=a(e),de=r(e,"OL",{"data-svelte-h":!0}),o(de)!=="svelte-1txeeui"&&(de.innerHTML=Qt),dt=a(e),u(ce.$$.fragment,e),ct=a(e),he=r(e,"OL",{"data-svelte-h":!0}),o(he)!=="svelte-1ex27cn"&&(he.innerHTML=Nt),ht=a(e),u(fe.$$.fragment,e),ft=a(e),be=r(e,"P",{}),Yt(be).forEach(n),this.h()},h(){bt(h,"name","hf:doc:metadata"),bt(h,"content",pn),bt(b,"class","image table text-center m-0 w-full"),bt(y,"class","image table text-center m-0 w-full")},m(e,t){nn(document.head,h),s(e,j,t),s(e,f,t),s(e,Me,t),m(k,e,t),s(e,we,t),m(J,e,t),s(e,Te,t),s(e,v,t),s(e,je,t),s(e,U,t),s(e,ke,t),s(e,z,t),s(e,Je,t),s(e,$,t),s(e,ve,t),s(e,Z,t),s(e,Ue,t),m(_,e,t),s(e,ze,t),m(G,e,t),s(e,$e,t),s(e,I,t),s(e,Ze,t),s(e,b,t),s(e,_e,t),s(e,W,t),s(e,Ge,t),s(e,y,t),s(e,Ie,t),s(e,C,t),s(e,We,t),s(e,V,t),s(e,Ce,t),s(e,x,t),s(e,Ve,t),m(w,e,t),s(e,xe,t),s(e,L,t),s(e,Le,t),m(R,e,t),s(e,Re,t),s(e,X,t),s(e,Xe,t),s(e,B,t),s(e,Be,t),s(e,S,t),s(e,Se,t),s(e,H,t),s(e,He,t),m(F,e,t),s(e,Fe,t),s(e,E,t),s(e,Ee,t),s(e,A,t),s(e,Ae,t),m(Q,e,t),s(e,Qe,t),s(e,N,t),s(e,Ne,t),m(q,e,t),s(e,qe,t),s(e,Y,t),s(e,Ye,t),m(D,e,t),s(e,De,t),m(P,e,t),s(e,Pe,t),s(e,K,t),s(e,Ke,t),m(O,e,t),s(e,Oe,t),m(ee,e,t),s(e,et,t),s(e,te,t),s(e,tt,t),m(ne,e,t),s(e,nt,t),m(se,e,t),s(e,st,t),s(e,le,t),s(e,lt,t),m(ae,e,t),s(e,at,t),m(ie,e,t),s(e,it,t),s(e,re,t),s(e,rt,t),m(oe,e,t),s(e,ot,t),s(e,pe,t),s(e,pt,t),m(ue,e,t),s(e,ut,t),s(e,me,t),s(e,mt,t),m(ge,e,t),s(e,gt,t),s(e,de,t),s(e,dt,t),m(ce,e,t),s(e,ct,t),s(e,he,t),s(e,ht,t),m(fe,e,t),s(e,ft,t),s(e,be,t),Mt=!0},p(e,[t]){const qt={};t&2&&(qt.$$scope={dirty:t,ctx:e}),w.$set(qt)},i(e){Mt||(g(k.$$.fragment,e),g(J.$$.fragment,e),g(_.$$.fragment,e),g(G.$$.fragment,e),g(w.$$.fragment,e),g(R.$$.fragment,e),g(F.$$.fragment,e),g(Q.$$.fragment,e),g(q.$$.fragment,e),g(D.$$.fragment,e),g(P.$$.fragment,e),g(O.$$.fragment,e),g(ee.$$.fragment,e),g(ne.$$.fragment,e),g(se.$$.fragment,e),g(ae.$$.fragment,e),g(ie.$$.fragment,e),g(oe.$$.fragment,e),g(ue.$$.fragment,e),g(ge.$$.fragment,e),g(ce.$$.fragment,e),g(fe.$$.fragment,e),Mt=!0)},o(e){d(k.$$.fragment,e),d(J.$$.fragment,e),d(_.$$.fragment,e),d(G.$$.fragment,e),d(w.$$.fragment,e),d(R.$$.fragment,e),d(F.$$.fragment,e),d(Q.$$.fragment,e),d(q.$$.fragment,e),d(D.$$.fragment,e),d(P.$$.fragment,e),d(O.$$.fragment,e),d(ee.$$.fragment,e),d(ne.$$.fragment,e),d(se.$$.fragment,e),d(ae.$$.fragment,e),d(ie.$$.fragment,e),d(oe.$$.fragment,e),d(ue.$$.fragment,e),d(ge.$$.fragment,e),d(ce.$$.fragment,e),d(fe.$$.fragment,e),Mt=!1},d(e){e&&(n(j),n(f),n(Me),n(we),n(Te),n(v),n(je),n(U),n(ke),n(z),n(Je),n($),n(ve),n(Z),n(Ue),n(ze),n($e),n(I),n(Ze),n(b),n(_e),n(W),n(Ge),n(y),n(Ie),n(C),n(We),n(V),n(Ce),n(x),n(Ve),n(xe),n(L),n(Le),n(Re),n(X),n(Xe),n(B),n(Be),n(S),n(Se),n(H),n(He),n(Fe),n(E),n(Ee),n(A),n(Ae),n(Qe),n(N),n(Ne),n(qe),n(Y),n(Ye),n(De),n(Pe),n(K),n(Ke),n(Oe),n(et),n(te),n(tt),n(nt),n(st),n(le),n(lt),n(at),n(it),n(re),n(rt),n(ot),n(pe),n(pt),n(ut),n(me),n(mt),n(gt),n(de),n(dt),n(ct),n(he),n(ht),n(ft),n(be)),n(h),c(k,e),c(J,e),c(_,e),c(G,e),c(w,e),c(R,e),c(F,e),c(Q,e),c(q,e),c(D,e),c(P,e),c(O,e),c(ee,e),c(ne,e),c(se,e),c(ae,e),c(ie,e),c(oe,e),c(ue,e),c(ge,e),c(ce,e),c(fe,e)}}}const pn='{"title":"Generation with LLMs","local":"generation-with-llms","sections":[{"title":"Text generieren","local":"text-generieren","sections":[],"depth":2},{"title":"Häufige Fallstricke","local":"häufige-fallstricke","sections":[{"title":"Generierte Ausgabe ist zu kurz/lang","local":"generierte-ausgabe-ist-zu-kurzlang","sections":[],"depth":3},{"title":"Falscher Generierungsmodus","local":"falscher-generierungsmodus","sections":[],"depth":3},{"title":"Falsche Auffüllseite","local":"falsche-auffüllseite","sections":[],"depth":3}],"depth":2},{"title":"Weitere Ressourcen","local":"weitere-ressourcen","sections":[{"title":"Fortgeschrittene Nutzung generieren","local":"fortgeschrittene-nutzung-generieren","sections":[],"depth":3},{"title":"LLM-Ranglisten","local":"llm-ranglisten","sections":[],"depth":3},{"title":"Latenz und Durchsatz","local":"latenz-und-durchsatz","sections":[],"depth":3},{"title":"Verwandte Bibliotheken","local":"verwandte-bibliotheken","sections":[],"depth":3}],"depth":2}],"depth":1}';function un(ye){return Pt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Mn extends Ot{constructor(h){super(),en(this,h,un,on,Dt,{})}}export{Mn as component};

Xet Storage Details

Size:
33.5 kB
·
Xet hash:
60ed79f4b88d46e7ffbacc7c1ad43336b7a78b84cc8f445702e59e9d68591619

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