Buckets:
| import{s as dl,n as ml,o as hl}from"../chunks/scheduler.78382b47.js";import{S as yl,i as Jl,e as p,s as a,c as i,h as ul,a as o,d as s,b as n,f as cl,g as r,j as h,k as Fe,l as Tl,m as t,n as M,t as c,o as d,p as m}from"../chunks/index.6dd35eb6.js";import{C as wl,H as le,E as fl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.d25d6883.js";import{C as y}from"../chunks/CodeBlock.147ab5db.js";function Ul(Ae){let J,ae,se,ne,w,pe,f,oe,U,qe='<a href="../conceptual_guides/ia3">IA3</a> multiplies the model’s activations (the keys and values in the self-attention and encoder-decoder attention blocks, and the intermediate activation of the position-wise feedforward network) by three learned vectors. This PEFT method introduces an even smaller number of trainable parameters than LoRA which introduces weight matrices instead of vectors. The original model’s parameters are kept frozen and only these vectors are updated. As a result, it is faster, cheaper and more efficient to finetune for a new downstream task.',ie,b,Se="This guide will show you how to train a sequence-to-sequence model with IA3 to <em>generate a sentiment</em> given some financial news.",re,u,Le='<p>Some familiarity with the general process of training a sequence-to-sequence would be really helpful and allow you to focus on how to apply IA3. If you’re new, we recommend taking a look at the <a href="https://huggingface.co/docs/transformers/tasks/translation" rel="nofollow">Translation</a> and <a href="https://huggingface.co/docs/transformers/tasks/summarization" rel="nofollow">Summarization</a> guides first from the Transformers documentation. When you’re ready, come back and see how easy it is to drop PEFT in to your training!</p>',Me,j,ce,I,Ke='You’ll use the <a href="https://huggingface.co/datasets/zeroshot/twitter-financial-news-sentiment" rel="nofollow">zeroshot/twitter-financial-news-sentiment</a> dataset. This dataset contains financial tweets labeled with sentiment (bearish, bullish, or neutral). Take a look at the <a href="https://huggingface.co/datasets/zeroshot/twitter-financial-news-sentiment/viewer" rel="nofollow">dataset viewer</a> for a better idea of the data and sentences you’ll be working with.',de,g,Pe='Load the dataset with the <a href="https://huggingface.co/docs/datasets/main/en/package_reference/loading_methods#datasets.load_dataset" rel="nofollow">load_dataset</a> function. This dataset only contains a train split, so use the <code>train_test_split</code> function to create a train and validation split. Create a new <code>text_label</code> column so it is easier to understand what the <code>label</code> values <code>0</code>, <code>1</code>, and <code>2</code> mean.',me,_,he,C,De="Load a tokenizer and create a preprocessing function that:",ye,Z,Oe="<li>tokenizes the inputs, pads and truncates the sequence to the <code>max_length</code></li> <li>apply the same tokenizer to the labels but with a shorter <code>max_length</code> that corresponds to the label</li> <li>mask the padding tokens</li>",Je,G,ue,k,el='Use the <a href="https://huggingface.co/docs/datasets/main/en/package_reference/main_classes#datasets.Dataset.map" rel="nofollow">map</a> function to apply the preprocessing function to the entire dataset.',Te,B,we,W,ll='Create a training and evaluation <a href="https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader" rel="nofollow"><code>DataLoader</code></a>, and set <code>pin_memory=True</code> to speed up data transfer to the accelerator during training if your dataset samples are on a CPU.',fe,v,Ue,V,be,R,sl='Now you can load a pretrained model to use as the base model for IA3. This guide uses the <a href="https://huggingface.co/bigscience/mt0-large" rel="nofollow">bigscience/mt0-large</a> model, but you can use any sequence-to-sequence model you like.',je,N,Ie,Y,ge,X,tl='All PEFT methods need a configuration that contains and specifies all the parameters for how the PEFT method should be applied. Create an <a href="/docs/peft/pr_3207/en/package_reference/ia3#peft.IA3Config">IA3Config</a> with the task type and set the inference mode to <code>False</code>. You can find additional parameters for this configuration in the <a href="../package_reference/ia3#ia3config">API reference</a>.',_e,T,al='<p>Call the <a href="/docs/peft/pr_3207/en/package_reference/peft_model#peft.PeftModel.print_trainable_parameters">print_trainable_parameters()</a> method to compare the number of trainable parameters of <a href="/docs/peft/pr_3207/en/package_reference/peft_model#peft.PeftModel">PeftModel</a> versus the number of parameters in the base model!</p>',Ce,$,nl='Once the configuration is setup, pass it to the <a href="/docs/peft/pr_3207/en/package_reference/peft_model#peft.get_peft_model">get_peft_model()</a> function along with the base model to create a trainable <a href="/docs/peft/pr_3207/en/package_reference/peft_model#peft.PeftModel">PeftModel</a>.',Ze,x,Ge,z,ke,Q,pl="Set up an optimizer and learning rate scheduler.",Be,H,We,E,ol="Move the model to the accelerator and create a training loop that reports the loss and perplexity for each epoch.",ve,F,Ve,A,Re,q,il='After training is complete, you can upload your model to the Hub with the <a href="https://huggingface.co/docs/transformers/main/en/main_classes/model#transformers.PreTrainedModel.push_to_hub" rel="nofollow">push_to_hub</a> method. You’ll need to login to your Hugging Face account first and enter your token when prompted.',Ne,S,Ye,L,Xe,K,rl='To load the model for inference, use the <a href="/docs/peft/pr_3207/en/package_reference/auto_class#peft.AutoPeftModel.from_pretrained">from_pretrained()</a> method. Let’s also load a sentence of financial news from the dataset to generate a sentiment for.',$e,P,xe,D,Ml='Call the <a href="https://huggingface.co/docs/transformers/main/en/main_classes/text_generation#transformers.GenerationMixin.generate" rel="nofollow">generate</a> method to generate the predicted sentiment label.',ze,O,Qe,ee,He,te,Ee;return w=new wl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),f=new le({props:{title:"IA3",local:"ia3",headingTag:"h1"}}),j=new le({props:{title:"Dataset",local:"dataset",headingTag:"h2"}}),_=new y({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZHMlMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTIyemVyb3Nob3QlMkZ0d2l0dGVyLWZpbmFuY2lhbC1uZXdzLXNlbnRpbWVudCUyMiklMEFkcyUyMCUzRCUyMGRzJTVCJTIydHJhaW4lMjIlNUQudHJhaW5fdGVzdF9zcGxpdCh0ZXN0X3NpemUlM0QwLjEpJTBBZHMlNUIlMjJ2YWxpZGF0aW9uJTIyJTVEJTIwJTNEJTIwZHMlNUIlMjJ0ZXN0JTIyJTVEJTBBZGVsJTIwZHMlNUIlMjJ0ZXN0JTIyJTVEJTBBJTBBY2xhc3NlcyUyMCUzRCUyMGRzJTVCJTIydHJhaW4lMjIlNUQuZmVhdHVyZXMlNUIlMjJsYWJlbCUyMiU1RC5uYW1lcyUwQWRzJTIwJTNEJTIwZHMubWFwKCUwQSUyMCUyMCUyMCUyMGxhbWJkYSUyMHglM0ElMjAlN0IlMjJ0ZXh0X2xhYmVsJTIyJTNBJTIwJTVCY2xhc3NlcyU1QmxhYmVsJTVEJTIwZm9yJTIwbGFiZWwlMjBpbiUyMHglNUIlMjJsYWJlbCUyMiU1RCU1RCU3RCUyQyUwQSUyMCUyMCUyMCUyMGJhdGNoZWQlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwbnVtX3Byb2MlM0QxJTJDJTBBKSUwQSUwQWRzJTVCJTIydHJhaW4lMjIlNUQlNUIwJTVEJTBBJTdCJ3RleHQnJTNBJTIwJ01vcnJpc29ucyUyMHJlcG9ydHMlMjBmaXJzdCUyMHNhbGVzJTIwcmlzZSUyMGluJTIwZm91ciUyMHllYXJzJyUyQyUwQSUyMCdsYWJlbCclM0ElMjAxJTJDJTBBJTIwJ3RleHRfbGFiZWwnJTNBJTIwJ2J1bGxpc2gnJTdE",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset | |
| ds = load_dataset(<span class="hljs-string">"zeroshot/twitter-financial-news-sentiment"</span>) | |
| ds = ds[<span class="hljs-string">"train"</span>].train_test_split(test_size=<span class="hljs-number">0.1</span>) | |
| ds[<span class="hljs-string">"validation"</span>] = ds[<span class="hljs-string">"test"</span>] | |
| <span class="hljs-keyword">del</span> ds[<span class="hljs-string">"test"</span>] | |
| classes = ds[<span class="hljs-string">"train"</span>].features[<span class="hljs-string">"label"</span>].names | |
| ds = ds.<span class="hljs-built_in">map</span>( | |
| <span class="hljs-keyword">lambda</span> x: {<span class="hljs-string">"text_label"</span>: [classes[label] <span class="hljs-keyword">for</span> label <span class="hljs-keyword">in</span> x[<span class="hljs-string">"label"</span>]]}, | |
| batched=<span class="hljs-literal">True</span>, | |
| num_proc=<span class="hljs-number">1</span>, | |
| ) | |
| ds[<span class="hljs-string">"train"</span>][<span class="hljs-number">0</span>] | |
| {<span class="hljs-string">'text'</span>: <span class="hljs-string">'Morrisons reports first sales rise in four years'</span>, | |
| <span class="hljs-string">'label'</span>: <span class="hljs-number">1</span>, | |
| <span class="hljs-string">'text_label'</span>: <span class="hljs-string">'bullish'</span>}`,wrap:!1}}),G=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0ZXh0X2NvbHVtbiUyMCUzRCUyMCUyMnRleHQlMjIlMEFsYWJlbF9jb2x1bW4lMjAlM0QlMjAlMjJ0ZXh0X2xhYmVsJTIyJTBBbWF4X2xlbmd0aCUyMCUzRCUyMDEyOCUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmJpZ3NjaWVuY2UlMkZtdDAtbGFyZ2UlMjIpJTBBJTBBZGVmJTIwcHJlcHJvY2Vzc19mdW5jdGlvbihleGFtcGxlcyklM0ElMEElMjAlMjAlMjAlMjBpbnB1dHMlMjAlM0QlMjBleGFtcGxlcyU1QnRleHRfY29sdW1uJTVEJTBBJTIwJTIwJTIwJTIwdGFyZ2V0cyUyMCUzRCUyMGV4YW1wbGVzJTVCbGFiZWxfY29sdW1uJTVEJTBBJTIwJTIwJTIwJTIwbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKGlucHV0cyUyQyUyMG1heF9sZW5ndGglM0RtYXhfbGVuZ3RoJTJDJTIwcGFkZGluZyUzRCUyMm1heF9sZW5ndGglMjIlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBJTIwJTIwJTIwJTIwbGFiZWxzJTIwJTNEJTIwdG9rZW5pemVyKHRhcmdldHMlMkMlMjBtYXhfbGVuZ3RoJTNEMyUyQyUyMHBhZGRpbmclM0QlMjJtYXhfbGVuZ3RoJTIyJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQSUyMCUyMCUyMCUyMGxhYmVscyUyMCUzRCUyMGxhYmVscyU1QiUyMmlucHV0X2lkcyUyMiU1RCUwQSUyMCUyMCUyMCUyMGxhYmVscyU1QmxhYmVscyUyMCUzRCUzRCUyMHRva2VuaXplci5wYWRfdG9rZW5faWQlNUQlMjAlM0QlMjAtMTAwJTBBJTIwJTIwJTIwJTIwbW9kZWxfaW5wdXRzJTVCJTIybGFiZWxzJTIyJTVEJTIwJTNEJTIwbGFiZWxzJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwbW9kZWxfaW5wdXRz",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| text_column = <span class="hljs-string">"text"</span> | |
| label_column = <span class="hljs-string">"text_label"</span> | |
| max_length = <span class="hljs-number">128</span> | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"bigscience/mt0-large"</span>) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">preprocess_function</span>(<span class="hljs-params">examples</span>): | |
| inputs = examples[text_column] | |
| targets = examples[label_column] | |
| model_inputs = tokenizer(inputs, max_length=max_length, padding=<span class="hljs-string">"max_length"</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">"pt"</span>) | |
| labels = tokenizer(targets, max_length=<span class="hljs-number">3</span>, padding=<span class="hljs-string">"max_length"</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">"pt"</span>) | |
| labels = labels[<span class="hljs-string">"input_ids"</span>] | |
| labels[labels == tokenizer.pad_token_id] = -<span class="hljs-number">100</span> | |
| model_inputs[<span class="hljs-string">"labels"</span>] = labels | |
| <span class="hljs-keyword">return</span> model_inputs`,wrap:!1}}),B=new y({props:{code:"cHJvY2Vzc2VkX2RzJTIwJTNEJTIwZHMubWFwKCUwQSUyMCUyMCUyMCUyMHByZXByb2Nlc3NfZnVuY3Rpb24lMkMlMEElMjAlMjAlMjAlMjBiYXRjaGVkJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMG51bV9wcm9jJTNEMSUyQyUwQSUyMCUyMCUyMCUyMHJlbW92ZV9jb2x1bW5zJTNEZHMlNUIlMjJ0cmFpbiUyMiU1RC5jb2x1bW5fbmFtZXMlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Zyb21fY2FjaGVfZmlsZSUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwZGVzYyUzRCUyMlJ1bm5pbmclMjB0b2tlbml6ZXIlMjBvbiUyMGRhdGFzZXQlMjIlMkMlMEEp",highlighted:`processed_ds = ds.<span class="hljs-built_in">map</span>( | |
| preprocess_function, | |
| batched=<span class="hljs-literal">True</span>, | |
| num_proc=<span class="hljs-number">1</span>, | |
| remove_columns=ds[<span class="hljs-string">"train"</span>].column_names, | |
| load_from_cache_file=<span class="hljs-literal">False</span>, | |
| desc=<span class="hljs-string">"Running tokenizer on dataset"</span>, | |
| )`,wrap:!1}}),v=new y({props:{code:"ZnJvbSUyMHRvcmNoLnV0aWxzLmRhdGElMjBpbXBvcnQlMjBEYXRhTG9hZGVyJTBBZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMGRlZmF1bHRfZGF0YV9jb2xsYXRvciUwQSUwQXRyYWluX2RzJTIwJTNEJTIwcHJvY2Vzc2VkX2RzJTVCJTIydHJhaW4lMjIlNUQlMEFldmFsX2RzJTIwJTNEJTIwcHJvY2Vzc2VkX2RzJTVCJTIydmFsaWRhdGlvbiUyMiU1RCUwQSUwQWJhdGNoX3NpemUlMjAlM0QlMjA4JTBBJTBBdHJhaW5fZGF0YWxvYWRlciUyMCUzRCUyMERhdGFMb2FkZXIoJTBBJTIwJTIwJTIwJTIwdHJhaW5fZHMlMkMlMjBzaHVmZmxlJTNEVHJ1ZSUyQyUyMGNvbGxhdGVfZm4lM0RkZWZhdWx0X2RhdGFfY29sbGF0b3IlMkMlMjBiYXRjaF9zaXplJTNEYmF0Y2hfc2l6ZSUyQyUyMHBpbl9tZW1vcnklM0RUcnVlJTBBKSUwQWV2YWxfZGF0YWxvYWRlciUyMCUzRCUyMERhdGFMb2FkZXIoZXZhbF9kcyUyQyUyMGNvbGxhdGVfZm4lM0RkZWZhdWx0X2RhdGFfY29sbGF0b3IlMkMlMjBiYXRjaF9zaXplJTNEYmF0Y2hfc2l6ZSUyQyUyMHBpbl9tZW1vcnklM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">from</span> torch.utils.data <span class="hljs-keyword">import</span> DataLoader | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> default_data_collator | |
| train_ds = processed_ds[<span class="hljs-string">"train"</span>] | |
| eval_ds = processed_ds[<span class="hljs-string">"validation"</span>] | |
| batch_size = <span class="hljs-number">8</span> | |
| train_dataloader = DataLoader( | |
| train_ds, shuffle=<span class="hljs-literal">True</span>, collate_fn=default_data_collator, batch_size=batch_size, pin_memory=<span class="hljs-literal">True</span> | |
| ) | |
| eval_dataloader = DataLoader(eval_ds, collate_fn=default_data_collator, batch_size=batch_size, pin_memory=<span class="hljs-literal">True</span>)`,wrap:!1}}),V=new le({props:{title:"Model",local:"model",headingTag:"h2"}}),N=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcTJTZXFMTSUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxMlNlcUxNLmZyb21fcHJldHJhaW5lZCglMjJiaWdzY2llbmNlJTJGbXQwLWxhcmdlJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSeq2SeqLM | |
| model = AutoModelForSeq2SeqLM.from_pretrained(<span class="hljs-string">"bigscience/mt0-large"</span>)`,wrap:!1}}),Y=new le({props:{title:"PEFT configuration and model",local:"peft-configuration-and-model",headingTag:"h3"}}),x=new y({props:{code:"ZnJvbSUyMHBlZnQlMjBpbXBvcnQlMjBJQTNDb25maWclMkMlMjBnZXRfcGVmdF9tb2RlbCUwQSUwQXBlZnRfY29uZmlnJTIwJTNEJTIwSUEzQ29uZmlnKHRhc2tfdHlwZSUzRCUyMlNFUV8yX1NFUV9MTSUyMiklMEFtb2RlbCUyMCUzRCUyMGdldF9wZWZ0X21vZGVsKG1vZGVsJTJDJTIwcGVmdF9jb25maWcpJTBBbW9kZWwucHJpbnRfdHJhaW5hYmxlX3BhcmFtZXRlcnMoKSUwQSUyMnRyYWluYWJsZSUyMHBhcmFtcyUzQSUyMDI4MiUyQzYyNCUyMCU3QyU3QyUyMGFsbCUyMHBhcmFtcyUzQSUyMDElMkMyMjklMkM4NjMlMkM5MzYlMjAlN0MlN0MlMjB0cmFpbmFibGUlMjUlM0ElMjAwLjAyMjk4MDEwMzA2MDc2NjU1MyUyMg==",highlighted:`<span class="hljs-keyword">from</span> peft <span class="hljs-keyword">import</span> IA3Config, get_peft_model | |
| peft_config = IA3Config(task_type=<span class="hljs-string">"SEQ_2_SEQ_LM"</span>) | |
| model = get_peft_model(model, peft_config) | |
| model.print_trainable_parameters() | |
| <span class="hljs-string">"trainable params: 282,624 || all params: 1,229,863,936 || trainable%: 0.022980103060766553"</span>`,wrap:!1}}),z=new le({props:{title:"Training",local:"training",headingTag:"h3"}}),H=new y({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwZ2V0X2xpbmVhcl9zY2hlZHVsZV93aXRoX3dhcm11cCUwQSUwQWxyJTIwJTNEJTIwOGUtMyUwQW51bV9lcG9jaHMlMjAlM0QlMjAzJTBBJTBBb3B0aW1pemVyJTIwJTNEJTIwdG9yY2gub3B0aW0uQWRhbVcobW9kZWwucGFyYW1ldGVycygpJTJDJTIwbHIlM0RsciklMEFscl9zY2hlZHVsZXIlMjAlM0QlMjBnZXRfbGluZWFyX3NjaGVkdWxlX3dpdGhfd2FybXVwKCUwQSUyMCUyMCUyMCUyMG9wdGltaXplciUzRG9wdGltaXplciUyQyUwQSUyMCUyMCUyMCUyMG51bV93YXJtdXBfc3RlcHMlM0QwJTJDJTBBJTIwJTIwJTIwJTIwbnVtX3RyYWluaW5nX3N0ZXBzJTNEKGxlbih0cmFpbl9kYXRhbG9hZGVyKSUyMColMjBudW1fZXBvY2hzKSUyQyUwQSk=",highlighted:`<span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> get_linear_schedule_with_warmup | |
| lr = <span class="hljs-number">8e-3</span> | |
| num_epochs = <span class="hljs-number">3</span> | |
| optimizer = torch.optim.AdamW(model.parameters(), lr=lr) | |
| lr_scheduler = get_linear_schedule_with_warmup( | |
| optimizer=optimizer, | |
| num_warmup_steps=<span class="hljs-number">0</span>, | |
| num_training_steps=(<span class="hljs-built_in">len</span>(train_dataloader) * num_epochs), | |
| )`,wrap:!1}}),F=new y({props:{code:"ZnJvbSUyMHRxZG0lMjBpbXBvcnQlMjB0cWRtJTBBJTBBZGV2aWNlJTIwJTNEJTIwdG9yY2guYWNjZWxlcmF0b3IuY3VycmVudF9hY2NlbGVyYXRvcigpLnR5cGUlMjBpZiUyMGhhc2F0dHIodG9yY2glMkMlMjAlMjJhY2NlbGVyYXRvciUyMiklMjBlbHNlJTIwJTIyY3VkYSUyMiUwQW1vZGVsJTIwJTNEJTIwbW9kZWwudG8oZGV2aWNlKSUwQSUwQWZvciUyMGVwb2NoJTIwaW4lMjByYW5nZShudW1fZXBvY2hzKSUzQSUwQSUyMCUyMCUyMCUyMG1vZGVsLnRyYWluKCklMEElMjAlMjAlMjAlMjB0b3RhbF9sb3NzJTIwJTNEJTIwMCUwQSUyMCUyMCUyMCUyMGZvciUyMHN0ZXAlMkMlMjBiYXRjaCUyMGluJTIwZW51bWVyYXRlKHRxZG0odHJhaW5fZGF0YWxvYWRlcikpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKipiYXRjaCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsb3NzJTIwJTNEJTIwb3V0cHV0cy5sb3NzJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdG90YWxfbG9zcyUyMCUyQiUzRCUyMGxvc3MuZGV0YWNoKCkuZmxvYXQoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxvc3MuYmFja3dhcmQoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG9wdGltaXplci5zdGVwKCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBscl9zY2hlZHVsZXIuc3RlcCgpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3B0aW1pemVyLnplcm9fZ3JhZCgpJTBBJTBBJTIwJTIwJTIwJTIwbW9kZWwuZXZhbCgpJTBBJTIwJTIwJTIwJTIwZXZhbF9sb3NzJTIwJTNEJTIwMCUwQSUyMCUyMCUyMCUyMGV2YWxfcHJlZHMlMjAlM0QlMjAlNUIlNUQlMEElMjAlMjAlMjAlMjBmb3IlMjBzdGVwJTJDJTIwYmF0Y2glMjBpbiUyMGVudW1lcmF0ZSh0cWRtKGV2YWxfZGF0YWxvYWRlcikpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjAlN0JrJTNBJTIwdi50byhkZXZpY2UpJTIwZm9yJTIwayUyQyUyMHYlMjBpbiUyMGJhdGNoLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB3aXRoJTIwdG9yY2gubm9fZ3JhZCgpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqYmF0Y2gpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9zcyUyMCUzRCUyMG91dHB1dHMubG9zcyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGV2YWxfbG9zcyUyMCUyQiUzRCUyMGxvc3MuZGV0YWNoKCkuZmxvYXQoKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGV2YWxfcHJlZHMuZXh0ZW5kKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRva2VuaXplci5iYXRjaF9kZWNvZGUodG9yY2guYXJnbWF4KG91dHB1dHMubG9naXRzJTJDJTIwLTEpLmRldGFjaCgpLmNwdSgpLm51bXB5KCklMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTBBJTIwJTIwJTIwJTIwZXZhbF9lcG9jaF9sb3NzJTIwJTNEJTIwZXZhbF9sb3NzJTIwJTJGJTIwbGVuKGV2YWxfZGF0YWxvYWRlciklMEElMjAlMjAlMjAlMjBldmFsX3BwbCUyMCUzRCUyMHRvcmNoLmV4cChldmFsX2Vwb2NoX2xvc3MpJTBBJTIwJTIwJTIwJTIwdHJhaW5fZXBvY2hfbG9zcyUyMCUzRCUyMHRvdGFsX2xvc3MlMjAlMkYlMjBsZW4odHJhaW5fZGF0YWxvYWRlciklMEElMjAlMjAlMjAlMjB0cmFpbl9wcGwlMjAlM0QlMjB0b3JjaC5leHAodHJhaW5fZXBvY2hfbG9zcyklMEElMjAlMjAlMjAlMjBwcmludChmJTIyJTdCZXBvY2glM0QlN0QlM0ElMjAlN0J0cmFpbl9wcGwlM0QlN0QlMjAlN0J0cmFpbl9lcG9jaF9sb3NzJTNEJTdEJTIwJTdCZXZhbF9wcGwlM0QlN0QlMjAlN0JldmFsX2Vwb2NoX2xvc3MlM0QlN0QlMjIp",highlighted:`<span class="hljs-keyword">from</span> tqdm <span class="hljs-keyword">import</span> tqdm | |
| device = torch.accelerator.current_accelerator().<span class="hljs-built_in">type</span> <span class="hljs-keyword">if</span> <span class="hljs-built_in">hasattr</span>(torch, <span class="hljs-string">"accelerator"</span>) <span class="hljs-keyword">else</span> <span class="hljs-string">"cuda"</span> | |
| model = model.to(device) | |
| <span class="hljs-keyword">for</span> epoch <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(num_epochs): | |
| model.train() | |
| total_loss = <span class="hljs-number">0</span> | |
| <span class="hljs-keyword">for</span> step, batch <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(tqdm(train_dataloader)): | |
| batch = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()} | |
| outputs = model(**batch) | |
| loss = outputs.loss | |
| total_loss += loss.detach().<span class="hljs-built_in">float</span>() | |
| loss.backward() | |
| optimizer.step() | |
| lr_scheduler.step() | |
| optimizer.zero_grad() | |
| model.<span class="hljs-built_in">eval</span>() | |
| eval_loss = <span class="hljs-number">0</span> | |
| eval_preds = [] | |
| <span class="hljs-keyword">for</span> step, batch <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(tqdm(eval_dataloader)): | |
| batch = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()} | |
| <span class="hljs-keyword">with</span> torch.no_grad(): | |
| outputs = model(**batch) | |
| loss = outputs.loss | |
| eval_loss += loss.detach().<span class="hljs-built_in">float</span>() | |
| eval_preds.extend( | |
| tokenizer.batch_decode(torch.argmax(outputs.logits, -<span class="hljs-number">1</span>).detach().cpu().numpy(), skip_special_tokens=<span class="hljs-literal">True</span>) | |
| ) | |
| eval_epoch_loss = eval_loss / <span class="hljs-built_in">len</span>(eval_dataloader) | |
| eval_ppl = torch.exp(eval_epoch_loss) | |
| train_epoch_loss = total_loss / <span class="hljs-built_in">len</span>(train_dataloader) | |
| train_ppl = torch.exp(train_epoch_loss) | |
| <span class="hljs-built_in">print</span>(<span class="hljs-string">f"<span class="hljs-subst">{epoch=}</span>: <span class="hljs-subst">{train_ppl=}</span> <span class="hljs-subst">{train_epoch_loss=}</span> <span class="hljs-subst">{eval_ppl=}</span> <span class="hljs-subst">{eval_epoch_loss=}</span>"</span>)`,wrap:!1}}),A=new le({props:{title:"Share your model",local:"share-your-model",headingTag:"h2"}}),S=new y({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBYWNjb3VudCUyMCUzRCUyMCUzQ3lvdXItaGYtYWNjb3VudC1uYW1lJTNFJTBBcGVmdF9tb2RlbF9pZCUyMCUzRCUyMGYlMjIlN0JhY2NvdW50JTdEJTJGbXQwLWxhcmdlLWlhMyUyMiUwQW1vZGVsLnB1c2hfdG9faHViKHBlZnRfbW9kZWxfaWQp",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login | |
| account = <your-hf-account-name> | |
| peft_model_id = <span class="hljs-string">f"<span class="hljs-subst">{account}</span>/mt0-large-ia3"</span> | |
| model.push_to_hub(peft_model_id)`,wrap:!1}}),L=new le({props:{title:"Inference",local:"inference",headingTag:"h2"}}),P=new y({props:{code:"ZnJvbSUyMHBlZnQlMjBpbXBvcnQlMjBBdXRvUGVmdE1vZGVsRm9yU2VxMlNlcUxNJTBBJTBBZGV2aWNlJTIwJTNEJTIwdG9yY2guYWNjZWxlcmF0b3IuY3VycmVudF9hY2NlbGVyYXRvcigpLnR5cGUlMjBpZiUyMGhhc2F0dHIodG9yY2glMkMlMjAlMjJhY2NlbGVyYXRvciUyMiklMjBlbHNlJTIwJTIyY3VkYSUyMiUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b1BlZnRNb2RlbEZvclNlcTJTZXFMTS5mcm9tX3ByZXRyYWluZWQoJTIyJTNDeW91ci1oZi1hY2NvdW50LW5hbWUlM0UlMkZtdDAtbGFyZ2UtaWEzJTIyKS50byhkZXZpY2UpJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyYmlnc2NpZW5jZSUyRm10MC1sYXJnZSUyMiklMEElMEFpJTIwJTNEJTIwMTUlMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoZHMlNUIlMjJ2YWxpZGF0aW9uJTIyJTVEJTVCdGV4dF9jb2x1bW4lNUQlNUJpJTVEJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFwcmludChkcyU1QiUyMnZhbGlkYXRpb24lMjIlNUQlNUJ0ZXh0X2NvbHVtbiU1RCU1QmklNUQpJTBBJTIyVGhlJTIwcm9idXN0JTIwZ3Jvd3RoJTIwd2FzJTIwdGhlJTIwcmVzdWx0JTIwb2YlMjB0aGUlMjBpbmNsdXNpb24lMjBvZiUyMGNsb3RoaW5nJTIwY2hhaW4lMjBMaW5kZXglMjBpbiUyMHRoZSUyMEdyb3VwJTIwaW4lMjBEZWNlbWJlciUyMDIwMDclMjAuJTIy",highlighted:`<span class="hljs-keyword">from</span> peft <span class="hljs-keyword">import</span> AutoPeftModelForSeq2SeqLM | |
| device = torch.accelerator.current_accelerator().<span class="hljs-built_in">type</span> <span class="hljs-keyword">if</span> <span class="hljs-built_in">hasattr</span>(torch, <span class="hljs-string">"accelerator"</span>) <span class="hljs-keyword">else</span> <span class="hljs-string">"cuda"</span> | |
| model = AutoPeftModelForSeq2SeqLM.from_pretrained(<span class="hljs-string">"<your-hf-account-name>/mt0-large-ia3"</span>).to(device) | |
| tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">"bigscience/mt0-large"</span>) | |
| i = <span class="hljs-number">15</span> | |
| inputs = tokenizer(ds[<span class="hljs-string">"validation"</span>][text_column][i], return_tensors=<span class="hljs-string">"pt"</span>) | |
| <span class="hljs-built_in">print</span>(ds[<span class="hljs-string">"validation"</span>][text_column][i]) | |
| <span class="hljs-string">"The robust growth was the result of the inclusion of clothing chain Lindex in the Group in December 2007 ."</span>`,wrap:!1}}),O=new y({props:{code:"d2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMCU3QmslM0ElMjB2LnRvKGRldmljZSklMjBmb3IlMjBrJTJDJTIwdiUyMGluJTIwaW5wdXRzLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGUoaW5wdXRfaWRzJTNEaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTJDJTIwbWF4X25ld190b2tlbnMlM0QxMCklMEElMjAlMjAlMjAlMjBwcmludCh0b2tlbml6ZXIuYmF0Y2hfZGVjb2RlKG91dHB1dHMuZGV0YWNoKCkuY3B1KCkubnVtcHkoKSUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSklMEElNUIncG9zaXRpdmUnJTVE",highlighted:`<span class="hljs-keyword">with</span> torch.no_grad(): | |
| inputs = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> inputs.items()} | |
| outputs = model.generate(input_ids=inputs[<span class="hljs-string">"input_ids"</span>], max_new_tokens=<span class="hljs-number">10</span>) | |
| <span class="hljs-built_in">print</span>(tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=<span class="hljs-literal">True</span>)) | |
| [<span class="hljs-string">'positive'</span>]`,wrap:!1}}),ee=new fl({props:{source:"https://github.com/huggingface/peft/blob/main/docs/source/task_guides/ia3.md"}}),{c(){J=p("meta"),ae=a(),se=p("p"),ne=a(),i(w.$$.fragment),pe=a(),i(f.$$.fragment),oe=a(),U=p("p"),U.innerHTML=qe,ie=a(),b=p("p"),b.innerHTML=Se,re=a(),u=p("blockquote"),u.innerHTML=Le,Me=a(),i(j.$$.fragment),ce=a(),I=p("p"),I.innerHTML=Ke,de=a(),g=p("p"),g.innerHTML=Pe,me=a(),i(_.$$.fragment),he=a(),C=p("p"),C.textContent=De,ye=a(),Z=p("ol"),Z.innerHTML=Oe,Je=a(),i(G.$$.fragment),ue=a(),k=p("p"),k.innerHTML=el,Te=a(),i(B.$$.fragment),we=a(),W=p("p"),W.innerHTML=ll,fe=a(),i(v.$$.fragment),Ue=a(),i(V.$$.fragment),be=a(),R=p("p"),R.innerHTML=sl,je=a(),i(N.$$.fragment),Ie=a(),i(Y.$$.fragment),ge=a(),X=p("p"),X.innerHTML=tl,_e=a(),T=p("blockquote"),T.innerHTML=al,Ce=a(),$=p("p"),$.innerHTML=nl,Ze=a(),i(x.$$.fragment),Ge=a(),i(z.$$.fragment),ke=a(),Q=p("p"),Q.textContent=pl,Be=a(),i(H.$$.fragment),We=a(),E=p("p"),E.textContent=ol,ve=a(),i(F.$$.fragment),Ve=a(),i(A.$$.fragment),Re=a(),q=p("p"),q.innerHTML=il,Ne=a(),i(S.$$.fragment),Ye=a(),i(L.$$.fragment),Xe=a(),K=p("p"),K.innerHTML=rl,$e=a(),i(P.$$.fragment),xe=a(),D=p("p"),D.innerHTML=Ml,ze=a(),i(O.$$.fragment),Qe=a(),i(ee.$$.fragment),He=a(),te=p("p"),this.h()},l(e){const l=ul("svelte-u9bgzb",document.head);J=o(l,"META",{name:!0,content:!0}),l.forEach(s),ae=n(e),se=o(e,"P",{}),cl(se).forEach(s),ne=n(e),r(w.$$.fragment,e),pe=n(e),r(f.$$.fragment,e),oe=n(e),U=o(e,"P",{"data-svelte-h":!0}),h(U)!=="svelte-s2qd7"&&(U.innerHTML=qe),ie=n(e),b=o(e,"P",{"data-svelte-h":!0}),h(b)!=="svelte-xoc01f"&&(b.innerHTML=Se),re=n(e),u=o(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),h(u)!=="svelte-teq66z"&&(u.innerHTML=Le),Me=n(e),r(j.$$.fragment,e),ce=n(e),I=o(e,"P",{"data-svelte-h":!0}),h(I)!=="svelte-1nk73qc"&&(I.innerHTML=Ke),de=n(e),g=o(e,"P",{"data-svelte-h":!0}),h(g)!=="svelte-hq1ruh"&&(g.innerHTML=Pe),me=n(e),r(_.$$.fragment,e),he=n(e),C=o(e,"P",{"data-svelte-h":!0}),h(C)!=="svelte-aqyjx7"&&(C.textContent=De),ye=n(e),Z=o(e,"OL",{"data-svelte-h":!0}),h(Z)!=="svelte-1xhy766"&&(Z.innerHTML=Oe),Je=n(e),r(G.$$.fragment,e),ue=n(e),k=o(e,"P",{"data-svelte-h":!0}),h(k)!=="svelte-ww7yef"&&(k.innerHTML=el),Te=n(e),r(B.$$.fragment,e),we=n(e),W=o(e,"P",{"data-svelte-h":!0}),h(W)!=="svelte-kwwkxd"&&(W.innerHTML=ll),fe=n(e),r(v.$$.fragment,e),Ue=n(e),r(V.$$.fragment,e),be=n(e),R=o(e,"P",{"data-svelte-h":!0}),h(R)!=="svelte-1d06z94"&&(R.innerHTML=sl),je=n(e),r(N.$$.fragment,e),Ie=n(e),r(Y.$$.fragment,e),ge=n(e),X=o(e,"P",{"data-svelte-h":!0}),h(X)!=="svelte-rlstu1"&&(X.innerHTML=tl),_e=n(e),T=o(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),h(T)!=="svelte-1gmi3mo"&&(T.innerHTML=al),Ce=n(e),$=o(e,"P",{"data-svelte-h":!0}),h($)!=="svelte-1ie59t8"&&($.innerHTML=nl),Ze=n(e),r(x.$$.fragment,e),Ge=n(e),r(z.$$.fragment,e),ke=n(e),Q=o(e,"P",{"data-svelte-h":!0}),h(Q)!=="svelte-tlkvop"&&(Q.textContent=pl),Be=n(e),r(H.$$.fragment,e),We=n(e),E=o(e,"P",{"data-svelte-h":!0}),h(E)!=="svelte-166cxn8"&&(E.textContent=ol),ve=n(e),r(F.$$.fragment,e),Ve=n(e),r(A.$$.fragment,e),Re=n(e),q=o(e,"P",{"data-svelte-h":!0}),h(q)!=="svelte-q5liq1"&&(q.innerHTML=il),Ne=n(e),r(S.$$.fragment,e),Ye=n(e),r(L.$$.fragment,e),Xe=n(e),K=o(e,"P",{"data-svelte-h":!0}),h(K)!=="svelte-uypnpm"&&(K.innerHTML=rl),$e=n(e),r(P.$$.fragment,e),xe=n(e),D=o(e,"P",{"data-svelte-h":!0}),h(D)!=="svelte-1dkx89x"&&(D.innerHTML=Ml),ze=n(e),r(O.$$.fragment,e),Qe=n(e),r(ee.$$.fragment,e),He=n(e),te=o(e,"P",{}),cl(te).forEach(s),this.h()},h(){Fe(J,"name","hf:doc:metadata"),Fe(J,"content",bl),Fe(u,"class","tip"),Fe(T,"class","tip")},m(e,l){Tl(document.head,J),t(e,ae,l),t(e,se,l),t(e,ne,l),M(w,e,l),t(e,pe,l),M(f,e,l),t(e,oe,l),t(e,U,l),t(e,ie,l),t(e,b,l),t(e,re,l),t(e,u,l),t(e,Me,l),M(j,e,l),t(e,ce,l),t(e,I,l),t(e,de,l),t(e,g,l),t(e,me,l),M(_,e,l),t(e,he,l),t(e,C,l),t(e,ye,l),t(e,Z,l),t(e,Je,l),M(G,e,l),t(e,ue,l),t(e,k,l),t(e,Te,l),M(B,e,l),t(e,we,l),t(e,W,l),t(e,fe,l),M(v,e,l),t(e,Ue,l),M(V,e,l),t(e,be,l),t(e,R,l),t(e,je,l),M(N,e,l),t(e,Ie,l),M(Y,e,l),t(e,ge,l),t(e,X,l),t(e,_e,l),t(e,T,l),t(e,Ce,l),t(e,$,l),t(e,Ze,l),M(x,e,l),t(e,Ge,l),M(z,e,l),t(e,ke,l),t(e,Q,l),t(e,Be,l),M(H,e,l),t(e,We,l),t(e,E,l),t(e,ve,l),M(F,e,l),t(e,Ve,l),M(A,e,l),t(e,Re,l),t(e,q,l),t(e,Ne,l),M(S,e,l),t(e,Ye,l),M(L,e,l),t(e,Xe,l),t(e,K,l),t(e,$e,l),M(P,e,l),t(e,xe,l),t(e,D,l),t(e,ze,l),M(O,e,l),t(e,Qe,l),M(ee,e,l),t(e,He,l),t(e,te,l),Ee=!0},p:ml,i(e){Ee||(c(w.$$.fragment,e),c(f.$$.fragment,e),c(j.$$.fragment,e),c(_.$$.fragment,e),c(G.$$.fragment,e),c(B.$$.fragment,e),c(v.$$.fragment,e),c(V.$$.fragment,e),c(N.$$.fragment,e),c(Y.$$.fragment,e),c(x.$$.fragment,e),c(z.$$.fragment,e),c(H.$$.fragment,e),c(F.$$.fragment,e),c(A.$$.fragment,e),c(S.$$.fragment,e),c(L.$$.fragment,e),c(P.$$.fragment,e),c(O.$$.fragment,e),c(ee.$$.fragment,e),Ee=!0)},o(e){d(w.$$.fragment,e),d(f.$$.fragment,e),d(j.$$.fragment,e),d(_.$$.fragment,e),d(G.$$.fragment,e),d(B.$$.fragment,e),d(v.$$.fragment,e),d(V.$$.fragment,e),d(N.$$.fragment,e),d(Y.$$.fragment,e),d(x.$$.fragment,e),d(z.$$.fragment,e),d(H.$$.fragment,e),d(F.$$.fragment,e),d(A.$$.fragment,e),d(S.$$.fragment,e),d(L.$$.fragment,e),d(P.$$.fragment,e),d(O.$$.fragment,e),d(ee.$$.fragment,e),Ee=!1},d(e){e&&(s(ae),s(se),s(ne),s(pe),s(oe),s(U),s(ie),s(b),s(re),s(u),s(Me),s(ce),s(I),s(de),s(g),s(me),s(he),s(C),s(ye),s(Z),s(Je),s(ue),s(k),s(Te),s(we),s(W),s(fe),s(Ue),s(be),s(R),s(je),s(Ie),s(ge),s(X),s(_e),s(T),s(Ce),s($),s(Ze),s(Ge),s(ke),s(Q),s(Be),s(We),s(E),s(ve),s(Ve),s(Re),s(q),s(Ne),s(Ye),s(Xe),s(K),s($e),s(xe),s(D),s(ze),s(Qe),s(He),s(te)),s(J),m(w,e),m(f,e),m(j,e),m(_,e),m(G,e),m(B,e),m(v,e),m(V,e),m(N,e),m(Y,e),m(x,e),m(z,e),m(H,e),m(F,e),m(A,e),m(S,e),m(L,e),m(P,e),m(O,e),m(ee,e)}}}const bl='{"title":"IA3","local":"ia3","sections":[{"title":"Dataset","local":"dataset","sections":[],"depth":2},{"title":"Model","local":"model","sections":[{"title":"PEFT configuration and model","local":"peft-configuration-and-model","sections":[],"depth":3},{"title":"Training","local":"training","sections":[],"depth":3}],"depth":2},{"title":"Share your model","local":"share-your-model","sections":[],"depth":2},{"title":"Inference","local":"inference","sections":[],"depth":2}],"depth":1}';function jl(Ae){return hl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Zl extends yl{constructor(J){super(),Jl(this,J,jl,Ul,dl,{})}}export{Zl as component}; | |
Xet Storage Details
- Size:
- 32.5 kB
- Xet hash:
- 3e55a16f7e21fcb3978c0b02e2e94673a4f6de810e75f5e70176e7bb4e34a530
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.