Buckets:
| import{s as ot,o as it}from"../chunks/scheduler.505acc25.js";import{S as pt,i as mt,e as w,s as p,c as u,h as ct,a as g,d as a,b as m,f as at,g as M,j as G,k as nt,l as dt,m as n,n as y,o as c,E as Ve,t as d,p as f,F as Xe}from"../chunks/index.e22abd30.js";import{C as ut,H as ae,E as Mt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a144e953.js";import{Y as yt}from"../chunks/Youtube.7545e4b1.js";import{C as R}from"../chunks/CodeBlock.f6688f67.js";import{C as rt}from"../chunks/CourseFloatingBanner.f0a2dc21.js";import{F as ft}from"../chunks/FrameworkSwitchCourse.c2af54e8.js";function bt(b){let l,r;return l=new rt({props:{chapter:7,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter7/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter7/section3_tf.ipynb"}]}}),{c(){u(l.$$.fragment)},l(t){M(l.$$.fragment,t)},m(t,o){y(l,t,o),r=!0},i(t){r||(d(l.$$.fragment,t),r=!0)},o(t){c(l.$$.fragment,t),r=!1},d(t){f(l,t)}}}function Ut(b){let l,r;return l=new rt({props:{chapter:7,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter7/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter7/section3_pt.ipynb"}]}}),{c(){u(l.$$.fragment)},l(t){M(l.$$.fragment,t)},m(t,o){y(l,t,o),r=!0},i(t){r||(d(l.$$.fragment,t),r=!0)},o(t){c(l.$$.fragment,t),r=!1},d(t){f(l,t)}}}function ht(b){let l,r;return l=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0lMEElMEFtb2RlbF9jaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQlMjIlMEFtb2RlbCUyMCUzRCUyMFRGQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKG1vZGVsX2NoZWNrcG9pbnQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForMaskedLM | |
| model_checkpoint = <span class="hljs-string">"distilbert-base-uncased"</span> | |
| model = TFAutoModelForMaskedLM.from_pretrained(model_checkpoint)`,wrap:!1}}),{c(){u(l.$$.fragment)},l(t){M(l.$$.fragment,t)},m(t,o){y(l,t,o),r=!0},i(t){r||(d(l.$$.fragment,t),r=!0)},o(t){c(l.$$.fragment,t),r=!1},d(t){f(l,t)}}}function wt(b){let l,r;return l=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvck1hc2tlZExNJTBBJTBBbW9kZWxfY2hlY2twb2ludCUyMCUzRCUyMCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkJTIyJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JNYXNrZWRMTS5mcm9tX3ByZXRyYWluZWQobW9kZWxfY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForMaskedLM | |
| model_checkpoint = <span class="hljs-string">"distilbert-base-uncased"</span> | |
| model = AutoModelForMaskedLM.from_pretrained(model_checkpoint)`,wrap:!1}}),{c(){u(l.$$.fragment)},l(t){M(l.$$.fragment,t)},m(t,o){y(l,t,o),r=!0},i(t){r||(d(l.$$.fragment,t),r=!0)},o(t){c(l.$$.fragment,t),r=!1},d(t){f(l,t)}}}function gt(b){let l,r;return l=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvckxhbmd1YWdlTW9kZWxpbmclMEElMEFkYXRhX2NvbGxhdG9yJTIwJTNEJTIwRGF0YUNvbGxhdG9yRm9yTGFuZ3VhZ2VNb2RlbGluZyglMEElMjAlMjAlMjAlMjB0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMjBtbG1fcHJvYmFiaWxpdHklM0QwLjE1JTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJ0ZiUyMiUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForLanguageModeling | |
| data_collator = DataCollatorForLanguageModeling( | |
| tokenizer=tokenizer, mlm_probability=<span class="hljs-number">0.15</span>, return_tensors=<span class="hljs-string">"tf"</span> | |
| )`,wrap:!1}}),{c(){u(l.$$.fragment)},l(t){M(l.$$.fragment,t)},m(t,o){y(l,t,o),r=!0},i(t){r||(d(l.$$.fragment,t),r=!0)},o(t){c(l.$$.fragment,t),r=!1},d(t){f(l,t)}}}function Tt(b){let l,r;return l=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvckxhbmd1YWdlTW9kZWxpbmclMEElMEFkYXRhX2NvbGxhdG9yJTIwJTNEJTIwRGF0YUNvbGxhdG9yRm9yTGFuZ3VhZ2VNb2RlbGluZyh0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMjBtbG1fcHJvYmFiaWxpdHklM0QwLjE1KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForLanguageModeling | |
| data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm_probability=<span class="hljs-number">0.15</span>)`,wrap:!1}}),{c(){u(l.$$.fragment)},l(t){M(l.$$.fragment,t)},m(t,o){y(l,t,o),r=!0},i(t){r||(d(l.$$.fragment,t),r=!0)},o(t){c(l.$$.fragment,t),r=!1},d(t){f(l,t)}}}function Jt(b){let l,r="En TensorFlow preparamos un <code>tf.data.Dataset</code> y entrenamos con <code>model.fit()</code>, apoyándonos en la pérdida interna del modelo:",t,o,U;return o=new R({props:{code:"dGZfdHJhaW5fZGF0YXNldCUyMCUzRCUyMG1vZGVsLnByZXBhcmVfdGZfZGF0YXNldCglMEElMjAlMjAlMjAlMjBsbV9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTJDJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMjBzaHVmZmxlJTNEVHJ1ZSUyQyUyMGJhdGNoX3NpemUlM0QzMiUwQSk=",highlighted:`tf_train_dataset = model.prepare_tf_dataset( | |
| lm_datasets[<span class="hljs-string">"train"</span>], collate_fn=data_collator, shuffle=<span class="hljs-literal">True</span>, batch_size=<span class="hljs-number">32</span> | |
| )`,wrap:!1}}),{c(){l=w("p"),l.innerHTML=r,t=p(),u(o.$$.fragment)},l(i){l=g(i,"P",{"data-svelte-h":!0}),G(l)!=="svelte-1gukdfz"&&(l.innerHTML=r),t=m(i),M(o.$$.fragment,i)},m(i,h){n(i,l,h),n(i,t,h),y(o,i,h),U=!0},i(i){U||(d(o.$$.fragment,i),U=!0)},o(i){c(o.$$.fragment,i),U=!1},d(i){i&&(a(l),a(t)),f(o,i)}}}function $t(b){let l,r="En PyTorch podemos entrenar con <code>Trainer</code>, igual que en capítulos anteriores. La diferencia es que el modelo ahora predice los tokens enmascarados en lugar de una clase:",t,o,U;return o=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXIlMkMlMjBUcmFpbmluZ0FyZ3VtZW50cyUwQSUwQWFyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyglMEElMjAlMjAlMjAlMjBvdXRwdXRfZGlyJTNEJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLWltZGIlMjIlMkMlMEElMjAlMjAlMjAlMjBldmFsdWF0aW9uX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTNEMmUtNSUyQyUwQSUyMCUyMCUyMCUyMHdlaWdodF9kZWNheSUzRDAuMDElMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer, TrainingArguments | |
| args = TrainingArguments( | |
| output_dir=<span class="hljs-string">"distilbert-base-uncased-finetuned-imdb"</span>, | |
| evaluation_strategy=<span class="hljs-string">"epoch"</span>, | |
| learning_rate=<span class="hljs-number">2e-5</span>, | |
| weight_decay=<span class="hljs-number">0.01</span>, | |
| )`,wrap:!1}}),{c(){l=w("p"),l.innerHTML=r,t=p(),u(o.$$.fragment)},l(i){l=g(i,"P",{"data-svelte-h":!0}),G(l)!=="svelte-1qustx0"&&(l.innerHTML=r),t=m(i),M(o.$$.fragment,i)},m(i,h){n(i,l,h),n(i,t,h),y(o,i,h),U=!0},i(i){U||(d(o.$$.fragment,i),U=!0)},o(i){c(o.$$.fragment,i),U=!1},d(i){i&&(a(l),a(t)),f(o,i)}}}function jt(b){let l,r,t,o,U,i,h,me,I,ce,T,J,ne,E,ze="En muchas aplicaciones de PLN, basta con tomar un modelo preentrenado y ajustarlo para una tarea concreta. Pero si tus datos pertenecen a un dominio muy específico, como textos legales o artículos científicos, suele ser útil adaptar primero el modelo de lenguaje a ese dominio.",de,V,ue,X,Qe="Este proceso se conoce como <em>adaptación de dominio</em>. En esta sección ajustaremos DistilBERT sobre el conjunto IMDb para crear un modelo de lenguaje enmascarado más cercano al dominio de las reseñas de películas.",Me,W,ye,x,Fe='Usaremos <a href="https://huggingface.co/distilbert-base-uncased" rel="nofollow">DistilBERT</a>, que es más pequeño que BERT y, por tanto, más rápido de entrenar.',fe,$,j,re,v,be,B,Ue,z,he,Q,Ne="Nos interesan sobre todo los textos, ya que para modelado de lenguaje no necesitamos las etiquetas de sentimiento.",we,F,ge,N,Ae="Primero tokenizamos sin truncar para no perder información y, si el tokenizador lo permite, guardamos también <code>word_ids</code> para poder aplicar whole word masking:",Te,A,Je,Y,Ye="Luego concatenamos todos los ejemplos y los dividimos en fragmentos de tamaño fijo:",$e,S,je,H,ke,L,Se="Para MLM usamos <code>DataCollatorForLanguageModeling</code>, que aplica máscaras de forma aleatoria durante el entrenamiento:",_e,k,_,oe,q,Ce,C,Z,ie,D,Ze,P,He="Tras el ajuste, el modelo sustituye <code>[MASK]</code> por palabras más apropiadas para reseñas de películas que para el inglés general de Wikipedia. Esa es precisamente la idea de la adaptación de dominio: acercar el modelo al vocabulario y a los patrones reales de tu corpus.",Ge,K,Le="Si luego entrenas una tarea específica, por ejemplo clasificación de sentimiento, partirás de una base más adecuada al dominio.",Re,O,Ie,pe,Ee;U=new ft({props:{fw:b[0]}}),h=new ut({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),I=new ae({props:{title:"Ajuste de un modelo de lenguaje enmascarado",local:"fine-tuning-a-masked-language-model",headingTag:"h1"}});const qe=[Ut,bt],ee=[];function De(e,s){return e[0]==="pt"?0:1}T=De(b),J=ee[T]=qe[T](b),V=new yt({props:{id:"mqElG5QJWUg"}}),W=new ae({props:{title:"Elegir un modelo base",local:"picking-a-pretrained-model-for-masked-language-modeling",headingTag:"h2"}});const Pe=[wt,ht],te=[];function Ke(e,s){return e[0]==="pt"?0:1}$=Ke(b),j=te[$]=Pe[$](b),v=new ae({props:{title:"El conjunto de datos IMDb",local:"the-dataset",headingTag:"h2"}}),B=new R({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBaW1kYl9kYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMmltZGIlMjIpJTBBaW1kYl9kYXRhc2V0",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset | |
| imdb_dataset = load_dataset(<span class="hljs-string">"imdb"</span>) | |
| imdb_dataset`,wrap:!1}}),z=new R({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ3RleHQnJTJDJTIwJ2xhYmVsJyU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwMjUwMDAlMEElMjAlMjAlMjAlMjAlN0QpJTBBJTIwJTIwJTIwJTIwdGVzdCUzQSUyMERhdGFzZXQoJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZmVhdHVyZXMlM0ElMjAlNUIndGV4dCclMkMlMjAnbGFiZWwnJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbnVtX3Jvd3MlM0ElMjAyNTAwMCUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB1bnN1cGVydmlzZWQlM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ3RleHQnJTJDJTIwJ2xhYmVsJyU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwNTAwMDAlMEElMjAlMjAlMjAlMjAlN0QpJTBBJTdEKQ==",highlighted:`DatasetDict({ | |
| train: Dataset({ | |
| features: [<span class="hljs-string">'text'</span>, <span class="hljs-string">'label'</span>], | |
| num_rows: <span class="hljs-number">25000</span> | |
| }) | |
| test: Dataset({ | |
| features: [<span class="hljs-string">'text'</span>, <span class="hljs-string">'label'</span>], | |
| num_rows: <span class="hljs-number">25000</span> | |
| }) | |
| unsupervised: Dataset({ | |
| features: [<span class="hljs-string">'text'</span>, <span class="hljs-string">'label'</span>], | |
| num_rows: <span class="hljs-number">50000</span> | |
| }) | |
| })`,wrap:!1}}),F=new ae({props:{title:"Preprocesamiento",local:"preprocessing-the-data",headingTag:"h2"}}),A=new R({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChtb2RlbF9jaGVja3BvaW50KSUwQSUwQSUwQWRlZiUyMHRva2VuaXplX2Z1bmN0aW9uKGV4YW1wbGVzKSUzQSUwQSUyMCUyMCUyMCUyMHJlc3VsdCUyMCUzRCUyMHRva2VuaXplcihleGFtcGxlcyU1QiUyMnRleHQlMjIlNUQpJTBBJTIwJTIwJTIwJTIwaWYlMjB0b2tlbml6ZXIuaXNfZmFzdCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdCU1QiUyMndvcmRfaWRzJTIyJTVEJTIwJTNEJTIwJTVCcmVzdWx0LndvcmRfaWRzKGkpJTIwZm9yJTIwaSUyMGluJTIwcmFuZ2UobGVuKHJlc3VsdCU1QiUyMmlucHV0X2lkcyUyMiU1RCkpJTVEJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwcmVzdWx0JTBBJTBBJTBBdG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwaW1kYl9kYXRhc2V0Lm1hcCglMEElMjAlMjAlMjAlMjB0b2tlbml6ZV9mdW5jdGlvbiUyQyUyMGJhdGNoZWQlM0RUcnVlJTJDJTIwcmVtb3ZlX2NvbHVtbnMlM0QlNUIlMjJ0ZXh0JTIyJTJDJTIwJTIybGFiZWwlMjIlNUQlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained(model_checkpoint) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">examples</span>): | |
| result = tokenizer(examples[<span class="hljs-string">"text"</span>]) | |
| <span class="hljs-keyword">if</span> tokenizer.is_fast: | |
| result[<span class="hljs-string">"word_ids"</span>] = [result.word_ids(i) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(result[<span class="hljs-string">"input_ids"</span>]))] | |
| <span class="hljs-keyword">return</span> result | |
| tokenized_datasets = imdb_dataset.<span class="hljs-built_in">map</span>( | |
| tokenize_function, batched=<span class="hljs-literal">True</span>, remove_columns=[<span class="hljs-string">"text"</span>, <span class="hljs-string">"label"</span>] | |
| )`,wrap:!1}}),S=new R({props:{code:"Y2h1bmtfc2l6ZSUyMCUzRCUyMDEyOCUwQSUwQSUwQWRlZiUyMGdyb3VwX3RleHRzKGV4YW1wbGVzKSUzQSUwQSUyMCUyMCUyMCUyMGNvbmNhdGVuYXRlZF9leGFtcGxlcyUyMCUzRCUyMCU3QmslM0ElMjBzdW0oZXhhbXBsZXMlNUJrJTVEJTJDJTIwJTVCJTVEKSUyMGZvciUyMGslMjBpbiUyMGV4YW1wbGVzLmtleXMoKSU3RCUwQSUyMCUyMCUyMCUyMHRvdGFsX2xlbmd0aCUyMCUzRCUyMGxlbihjb25jYXRlbmF0ZWRfZXhhbXBsZXMlNUIlMjJpbnB1dF9pZHMlMjIlNUQpJTBBJTIwJTIwJTIwJTIwdG90YWxfbGVuZ3RoJTIwJTNEJTIwKHRvdGFsX2xlbmd0aCUyMCUyRiUyRiUyMGNodW5rX3NpemUpJTIwKiUyMGNodW5rX3NpemUlMEElMjAlMjAlMjAlMjByZXN1bHQlMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBrJTNBJTIwJTVCdCU1QmklMjAlM0ElMjBpJTIwJTJCJTIwY2h1bmtfc2l6ZSU1RCUyMGZvciUyMGklMjBpbiUyMHJhbmdlKDAlMkMlMjB0b3RhbF9sZW5ndGglMkMlMjBjaHVua19zaXplKSU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZvciUyMGslMkMlMjB0JTIwaW4lMjBjb25jYXRlbmF0ZWRfZXhhbXBsZXMuaXRlbXMoKSUwQSUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMHJldHVybiUyMHJlc3VsdCUwQSUwQSUwQWxtX2RhdGFzZXRzJTIwJTNEJTIwdG9rZW5pemVkX2RhdGFzZXRzLm1hcChncm91cF90ZXh0cyUyQyUyMGJhdGNoZWQlM0RUcnVlKQ==",highlighted:`chunk_size = <span class="hljs-number">128</span> | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">group_texts</span>(<span class="hljs-params">examples</span>): | |
| concatenated_examples = {k: <span class="hljs-built_in">sum</span>(examples[k], []) <span class="hljs-keyword">for</span> k <span class="hljs-keyword">in</span> examples.keys()} | |
| total_length = <span class="hljs-built_in">len</span>(concatenated_examples[<span class="hljs-string">"input_ids"</span>]) | |
| total_length = (total_length // chunk_size) * chunk_size | |
| result = { | |
| k: [t[i : i + chunk_size] <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">0</span>, total_length, chunk_size)] | |
| <span class="hljs-keyword">for</span> k, t <span class="hljs-keyword">in</span> concatenated_examples.items() | |
| } | |
| <span class="hljs-keyword">return</span> result | |
| lm_datasets = tokenized_datasets.<span class="hljs-built_in">map</span>(group_texts, batched=<span class="hljs-literal">True</span>)`,wrap:!1}}),H=new ae({props:{title:"Enmascarado dinámico",local:"data-collation",headingTag:"h2"}});const Oe=[Tt,gt],le=[];function et(e,s){return e[0]==="pt"?0:1}k=et(b),_=le[k]=Oe[k](b),q=new ae({props:{title:"Entrenamiento",local:"fine-tuning-the-model",headingTag:"h2"}});const tt=[$t,Jt],se=[];function lt(e,s){return e[0]==="pt"?0:1}return C=lt(b),Z=se[C]=tt[C](b),D=new ae({props:{title:"¿Qué obtenemos?",local:"what-do-we-get",headingTag:"h2"}}),O=new Mt({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter7/3.mdx"}}),{c(){l=w("meta"),r=p(),t=w("p"),o=p(),u(U.$$.fragment),i=p(),u(h.$$.fragment),me=p(),u(I.$$.fragment),ce=p(),J.c(),ne=p(),E=w("p"),E.textContent=ze,de=p(),u(V.$$.fragment),ue=p(),X=w("p"),X.innerHTML=Qe,Me=p(),u(W.$$.fragment),ye=p(),x=w("p"),x.innerHTML=Fe,fe=p(),j.c(),re=p(),u(v.$$.fragment),be=p(),u(B.$$.fragment),Ue=p(),u(z.$$.fragment),he=p(),Q=w("p"),Q.textContent=Ne,we=p(),u(F.$$.fragment),ge=p(),N=w("p"),N.innerHTML=Ae,Te=p(),u(A.$$.fragment),Je=p(),Y=w("p"),Y.textContent=Ye,$e=p(),u(S.$$.fragment),je=p(),u(H.$$.fragment),ke=p(),L=w("p"),L.innerHTML=Se,_e=p(),_.c(),oe=p(),u(q.$$.fragment),Ce=p(),Z.c(),ie=p(),u(D.$$.fragment),Ze=p(),P=w("p"),P.innerHTML=He,Ge=p(),K=w("p"),K.textContent=Le,Re=p(),u(O.$$.fragment),Ie=p(),pe=w("p"),this.h()},l(e){const s=ct("svelte-u9bgzb",document.head);l=g(s,"META",{name:!0,content:!0}),s.forEach(a),r=m(e),t=g(e,"P",{}),at(t).forEach(a),o=m(e),M(U.$$.fragment,e),i=m(e),M(h.$$.fragment,e),me=m(e),M(I.$$.fragment,e),ce=m(e),J.l(e),ne=m(e),E=g(e,"P",{"data-svelte-h":!0}),G(E)!=="svelte-17i7bol"&&(E.textContent=ze),de=m(e),M(V.$$.fragment,e),ue=m(e),X=g(e,"P",{"data-svelte-h":!0}),G(X)!=="svelte-ekgsu8"&&(X.innerHTML=Qe),Me=m(e),M(W.$$.fragment,e),ye=m(e),x=g(e,"P",{"data-svelte-h":!0}),G(x)!=="svelte-xeu1kq"&&(x.innerHTML=Fe),fe=m(e),j.l(e),re=m(e),M(v.$$.fragment,e),be=m(e),M(B.$$.fragment,e),Ue=m(e),M(z.$$.fragment,e),he=m(e),Q=g(e,"P",{"data-svelte-h":!0}),G(Q)!=="svelte-1qh7b4s"&&(Q.textContent=Ne),we=m(e),M(F.$$.fragment,e),ge=m(e),N=g(e,"P",{"data-svelte-h":!0}),G(N)!=="svelte-vhutz4"&&(N.innerHTML=Ae),Te=m(e),M(A.$$.fragment,e),Je=m(e),Y=g(e,"P",{"data-svelte-h":!0}),G(Y)!=="svelte-6may2z"&&(Y.textContent=Ye),$e=m(e),M(S.$$.fragment,e),je=m(e),M(H.$$.fragment,e),ke=m(e),L=g(e,"P",{"data-svelte-h":!0}),G(L)!=="svelte-14scur8"&&(L.innerHTML=Se),_e=m(e),_.l(e),oe=m(e),M(q.$$.fragment,e),Ce=m(e),Z.l(e),ie=m(e),M(D.$$.fragment,e),Ze=m(e),P=g(e,"P",{"data-svelte-h":!0}),G(P)!=="svelte-12pb398"&&(P.innerHTML=He),Ge=m(e),K=g(e,"P",{"data-svelte-h":!0}),G(K)!=="svelte-12kwi2h"&&(K.textContent=Le),Re=m(e),M(O.$$.fragment,e),Ie=m(e),pe=g(e,"P",{}),at(pe).forEach(a),this.h()},h(){nt(l,"name","hf:doc:metadata"),nt(l,"content",kt)},m(e,s){dt(document.head,l),n(e,r,s),n(e,t,s),n(e,o,s),y(U,e,s),n(e,i,s),y(h,e,s),n(e,me,s),y(I,e,s),n(e,ce,s),ee[T].m(e,s),n(e,ne,s),n(e,E,s),n(e,de,s),y(V,e,s),n(e,ue,s),n(e,X,s),n(e,Me,s),y(W,e,s),n(e,ye,s),n(e,x,s),n(e,fe,s),te[$].m(e,s),n(e,re,s),y(v,e,s),n(e,be,s),y(B,e,s),n(e,Ue,s),y(z,e,s),n(e,he,s),n(e,Q,s),n(e,we,s),y(F,e,s),n(e,ge,s),n(e,N,s),n(e,Te,s),y(A,e,s),n(e,Je,s),n(e,Y,s),n(e,$e,s),y(S,e,s),n(e,je,s),y(H,e,s),n(e,ke,s),n(e,L,s),n(e,_e,s),le[k].m(e,s),n(e,oe,s),y(q,e,s),n(e,Ce,s),se[C].m(e,s),n(e,ie,s),y(D,e,s),n(e,Ze,s),n(e,P,s),n(e,Ge,s),n(e,K,s),n(e,Re,s),y(O,e,s),n(e,Ie,s),n(e,pe,s),Ee=!0},p(e,[s]){const st={};s&1&&(st.fw=e[0]),U.$set(st);let We=T;T=De(e),T!==We&&(Xe(),c(ee[We],1,1,()=>{ee[We]=null}),Ve(),J=ee[T],J||(J=ee[T]=qe[T](e),J.c()),d(J,1),J.m(ne.parentNode,ne));let xe=$;$=Ke(e),$!==xe&&(Xe(),c(te[xe],1,1,()=>{te[xe]=null}),Ve(),j=te[$],j||(j=te[$]=Pe[$](e),j.c()),d(j,1),j.m(re.parentNode,re));let ve=k;k=et(e),k!==ve&&(Xe(),c(le[ve],1,1,()=>{le[ve]=null}),Ve(),_=le[k],_||(_=le[k]=Oe[k](e),_.c()),d(_,1),_.m(oe.parentNode,oe));let Be=C;C=lt(e),C!==Be&&(Xe(),c(se[Be],1,1,()=>{se[Be]=null}),Ve(),Z=se[C],Z||(Z=se[C]=tt[C](e),Z.c()),d(Z,1),Z.m(ie.parentNode,ie))},i(e){Ee||(d(U.$$.fragment,e),d(h.$$.fragment,e),d(I.$$.fragment,e),d(J),d(V.$$.fragment,e),d(W.$$.fragment,e),d(j),d(v.$$.fragment,e),d(B.$$.fragment,e),d(z.$$.fragment,e),d(F.$$.fragment,e),d(A.$$.fragment,e),d(S.$$.fragment,e),d(H.$$.fragment,e),d(_),d(q.$$.fragment,e),d(Z),d(D.$$.fragment,e),d(O.$$.fragment,e),Ee=!0)},o(e){c(U.$$.fragment,e),c(h.$$.fragment,e),c(I.$$.fragment,e),c(J),c(V.$$.fragment,e),c(W.$$.fragment,e),c(j),c(v.$$.fragment,e),c(B.$$.fragment,e),c(z.$$.fragment,e),c(F.$$.fragment,e),c(A.$$.fragment,e),c(S.$$.fragment,e),c(H.$$.fragment,e),c(_),c(q.$$.fragment,e),c(Z),c(D.$$.fragment,e),c(O.$$.fragment,e),Ee=!1},d(e){e&&(a(r),a(t),a(o),a(i),a(me),a(ce),a(ne),a(E),a(de),a(ue),a(X),a(Me),a(ye),a(x),a(fe),a(re),a(be),a(Ue),a(he),a(Q),a(we),a(ge),a(N),a(Te),a(Je),a(Y),a($e),a(je),a(ke),a(L),a(_e),a(oe),a(Ce),a(ie),a(Ze),a(P),a(Ge),a(K),a(Re),a(Ie),a(pe)),a(l),f(U,e),f(h,e),f(I,e),ee[T].d(e),f(V,e),f(W,e),te[$].d(e),f(v,e),f(B,e),f(z,e),f(F,e),f(A,e),f(S,e),f(H,e),le[k].d(e),f(q,e),se[C].d(e),f(D,e),f(O,e)}}}const kt='{"title":"Ajuste de un modelo de lenguaje enmascarado","local":"fine-tuning-a-masked-language-model","sections":[{"title":"Elegir un modelo base","local":"picking-a-pretrained-model-for-masked-language-modeling","sections":[],"depth":2},{"title":"El conjunto de datos IMDb","local":"the-dataset","sections":[],"depth":2},{"title":"Preprocesamiento","local":"preprocessing-the-data","sections":[],"depth":2},{"title":"Enmascarado dinámico","local":"data-collation","sections":[],"depth":2},{"title":"Entrenamiento","local":"fine-tuning-the-model","sections":[],"depth":2},{"title":"¿Qué obtenemos?","local":"what-do-we-get","sections":[],"depth":2}],"depth":1}';function _t(b,l,r){let t="pt";return it(()=>{const o=new URLSearchParams(window.location.search);r(0,t=o.get("fw")||"pt")}),[t]}class Xt extends pt{constructor(l){super(),mt(this,l,_t,jt,ot,{})}}export{Xt as component}; | |
Xet Storage Details
- Size:
- 21.5 kB
- Xet hash:
- 6c123c58eb18a81c8755ef914ac418cc32a709ec12507ba2dfc3da70df8af517
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.