import{s as ls,o as as,n as ns}from"../chunks/scheduler.36a0863c.js";import{S as ps,i as is,g as p,s as a,r,A as os,h as i,f as s,c as n,j as ss,u as m,x as o,k as Ct,y as rs,a as l,v as c,d as M,t as d,w as u}from"../chunks/index.f891bdb2.js";import{T as ms}from"../chunks/Tip.a8272f7f.js";import{C as y}from"../chunks/CodeBlock.3ec784ea.js";import{D as cs}from"../chunks/DocNotebookDropdown.81c1f0fb.js";import{H as je}from"../chunks/Heading.3fb90772.js";function Ms(ge){let b,T="Muchos conjuntos de datos de subtítulos de imágenes contienen múltiples subtítulos por imagen. En esos casos, una estrategia común es muestrear aleatoriamente un subtítulo entre los disponibles durante el entrenamiento.";return{c(){b=p("p"),b.textContent=T},l(J){b=i(J,"P",{"data-svelte-h":!0}),o(b)!=="svelte-1paeijy"&&(b.textContent=T)},m(J,Te){l(J,b,Te)},p:ns,d(J){J&&s(b)}}}function ds(ge){let b,T,J,Te,U,he,g,$e,h,_t=`Los subtítulos de imágenes es la tarea de predecir un subtítulo para una imagen dada. Las aplicaciones comunes en el mundo real incluyen
ayudar a personas con discapacidad visual que les puede ayudar a navegar a través de diferentes situaciones. Por lo tanto, los subtítulos de imágenes
ayuda a mejorar la accesibilidad del contenido para las personas describiéndoles imágenes.`,Ce,$,kt="Esta guía te mostrará cómo:",_e,C,vt="<li>Ajustar un modelo de subtítulos de imágenes.</li> <li>Usar el modelo ajustado para inferencia.</li>",ke,_,It="Antes de comenzar, asegúrate de tener todas las bibliotecas necesarias instaladas:",ve,k,Ie,v,Bt="Te animamos a que inicies sesión en tu cuenta de Hugging Face para que puedas subir y compartir tu modelo con la comunidad. Cuando se te solicite, ingresa tu token para iniciar sesión:",Be,I,We,B,Ze,W,Wt=`Utiliza la biblioteca 🤗 Dataset para cargar un conjunto de datos que consiste en pares {image-caption}. Para crear tu propio conjunto de datos de subtítulos de imágenes
en PyTorch, puedes seguir <a href="https://github.com/NielsRogge/Transformers-Tutorials/blob/master/GIT/Fine_tune_GIT_on_an_image_captioning_dataset.ipynb" rel="nofollow">este cuaderno</a>.`,Ge,Z,Re,G,xe,R,Zt="El conjunto de datos tiene dos características, <code>image</code> y <code>text</code>.",Xe,f,He,x,Gt="Divide el conjunto de entrenamiento del conjunto de datos en un conjunto de entrenamiento y de prueba con el método <code>train_test_split</code>:",Ve,X,Ee,H,Rt="Vamos a visualizar un par de muestras del conjunto de entrenamiento.",Ye,V,ze,w,xt='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/sample_training_images_image_cap.png" alt="Sample training images"/>',Qe,E,Ne,Y,Xt="Dado que el conjunto de datos tiene dos modalidades (imagen y texto), el proceso de preprocesamiento preprocesará las imágenes y los subtítulos.",Fe,z,Ht="Para hacerlo, carga la clase de procesador asociada con el modelo que estás a punto de ajustar.",Ae,Q,qe,N,Vt="El procesador preprocesará internamente la imagen (lo que incluye el cambio de tamaño y la escala de píxeles) y tokenizará el subtítulo.",Se,F,Le,A,Et="Con el conjunto de datos listo, ahora puedes configurar el modelo para el ajuste fino.",Pe,q,Ke,S,Yt='Carga <a href="https://huggingface.co/microsoft/git-base" rel="nofollow">“microsoft/git-base”</a> en un objeto <a href="https://huggingface.co/docs/transformers/model_doc/auto#transformers.AutoModelForCausalLM" rel="nofollow"><code>AutoModelForCausalLM</code></a>.',De,L,Oe,P,et,K,zt='Los modelos de subtítulos de imágenes se evalúan típicamente con el <a href="https://huggingface.co/spaces/evaluate-metric/rouge" rel="nofollow">Rouge Score</a> o Tasa de Error de Palabra (<a href="https://huggingface.co/spaces/evaluate-metric/wer" rel="nofollow">Word Error Rate</a>, por sus siglas en inglés). Para esta guía, utilizarás la Tasa de Error de Palabra (WER).',tt,D,Qt='Usamos la biblioteca 🤗 Evaluate para hacerlo. Para conocer las limitaciones potenciales y otros problemas del WER, consulta <a href="https://huggingface.co/spaces/evaluate-metric/wer" rel="nofollow">esta guía</a>.',st,O,lt,ee,at,te,Nt="Ahora, estás listo para comenzar a ajustar el modelo. Utilizarás el 🤗 <code>Trainer</code> para esto.",nt,se,Ft="Primero, define los argumentos de entrenamiento usando <code>TrainingArguments</code>.",pt,le,it,ae,At="Luego pásalos junto con los conjuntos de datos y el modelo al 🤗 Trainer.",ot,ne,rt,pe,qt="Para comenzar el entrenamiento, simplemente llama a <code>train()</code> en el objeto <code>Trainer</code>.",mt,ie,ct,oe,St="Deberías ver cómo disminuye suavemente la pérdida de entrenamiento a medida que avanza el entrenamiento.",Mt,re,Lt="Una vez completado el entrenamiento, comparte tu modelo en el Hub con el método <code>push_to_hub()</code> para que todos puedan usar tu modelo:",dt,me,ut,ce,yt,Me,Pt="Toma una imagen de muestra de test_ds para probar el modelo.",bt,de,Jt,j,Kt='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/test_image_image_cap.png" alt="Test image"/>',ft,ue,Dt="Prepara la imagen para el modelo.",wt,ye,jt,be,Ot="Llama a <code>generate</code> y decodifica las predicciones.",Tt,Je,Ut,fe,gt,we,es="¡Parece que el modelo ajustado generó un subtítulo bastante bueno!",ht,Ue,$t;return U=new je({props:{title:"Subtítulos de Imágenes",local:"subtítulos-de-imágenes",headingTag:"h1"}}),g=new cs({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/es/image_captioning.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/es/pytorch/image_captioning.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/es/tensorflow/image_captioning.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/es/image_captioning.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/es/pytorch/image_captioning.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/es/tensorflow/image_captioning.ipynb"}]}}),k=new y({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGRhdGFzZXRzJTIwZXZhbHVhdGUlMjAtcSUwQXBpcCUyMGluc3RhbGwlMjBqaXdlciUyMC1x",highlighted:`pip install transformers datasets evaluate -q
pip install jiwer -q`,wrap:!1}}),I=new y({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`,wrap:!1}}),B=new je({props:{title:"Cargar el conjunto de datos de subtítulos BLIP de Pokémon",local:"cargar-el-conjunto-de-datos-de-subtítulos-blip-de-pokémon",headingTag:"h2"}}),Z=new y({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZHMlMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTIybGFtYmRhbGFicyUyRnBva2Vtb24tYmxpcC1jYXB0aW9ucyUyMiklMEFkcw==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

ds = load_dataset(<span class="hljs-string">&quot;lambdalabs/pokemon-blip-captions&quot;</span>)
ds`,wrap:!1}}),G=new y({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2ltYWdlJyUyQyUyMCd0ZXh0JyU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwODMzJTBBJTIwJTIwJTIwJTIwJTdEKSUwQSU3RCk=",highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;image&#x27;</span>, <span class="hljs-string">&#x27;text&#x27;</span>],
        num_rows: 833
    })
})`,wrap:!1}}),f=new ms({props:{$$slots:{default:[Ms]},$$scope:{ctx:ge}}}),X=new y({props:{code:"ZHMlMjAlM0QlMjBkcyU1QiUyMnRyYWluJTIyJTVELnRyYWluX3Rlc3Rfc3BsaXQodGVzdF9zaXplJTNEMC4xKSUwQXRyYWluX2RzJTIwJTNEJTIwZHMlNUIlMjJ0cmFpbiUyMiU1RCUwQXRlc3RfZHMlMjAlM0QlMjBkcyU1QiUyMnRlc3QlMjIlNUQ=",highlighted:`ds = ds[<span class="hljs-string">&quot;train&quot;</span>].train_test_split(test_size=<span class="hljs-number">0.1</span>)
train_ds = ds[<span class="hljs-string">&quot;train&quot;</span>]
test_ds = ds[<span class="hljs-string">&quot;test&quot;</span>]`,wrap:!1}}),V=new y({props:{code:"ZnJvbSUyMHRleHR3cmFwJTIwaW1wb3J0JTIwd3JhcCUwQWltcG9ydCUyMG1hdHBsb3RsaWIucHlwbG90JTIwYXMlMjBwbHQlMEFpbXBvcnQlMjBudW1weSUyMGFzJTIwbnAlMEElMEElMEFkZWYlMjBwbG90X2ltYWdlcyhpbWFnZXMlMkMlMjBjYXB0aW9ucyklM0ElMEElMjAlMjAlMjAlMjBwbHQuZmlndXJlKGZpZ3NpemUlM0QoMjAlMkMlMjAyMCkpJTBBJTIwJTIwJTIwJTIwZm9yJTIwaSUyMGluJTIwcmFuZ2UobGVuKGltYWdlcykpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXglMjAlM0QlMjBwbHQuc3VicGxvdCgxJTJDJTIwbGVuKGltYWdlcyklMkMlMjBpJTIwJTJCJTIwMSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBjYXB0aW9uJTIwJTNEJTIwY2FwdGlvbnMlNUJpJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwY2FwdGlvbiUyMCUzRCUyMCUyMiU1Q24lMjIuam9pbih3cmFwKGNhcHRpb24lMkMlMjAxMikpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGx0LnRpdGxlKGNhcHRpb24pJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcGx0Lmltc2hvdyhpbWFnZXMlNUJpJTVEKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBsdC5heGlzKCUyMm9mZiUyMiklMEElMEElMEFzYW1wbGVfaW1hZ2VzX3RvX3Zpc3VhbGl6ZSUyMCUzRCUyMCU1Qm5wLmFycmF5KHRyYWluX2RzJTVCaSU1RCU1QiUyMmltYWdlJTIyJTVEKSUyMGZvciUyMGklMjBpbiUyMHJhbmdlKDUpJTVEJTBBc2FtcGxlX2NhcHRpb25zJTIwJTNEJTIwJTVCdHJhaW5fZHMlNUJpJTVEJTVCJTIydGV4dCUyMiU1RCUyMGZvciUyMGklMjBpbiUyMHJhbmdlKDUpJTVEJTBBcGxvdF9pbWFnZXMoc2FtcGxlX2ltYWdlc190b192aXN1YWxpemUlMkMlMjBzYW1wbGVfY2FwdGlvbnMp",highlighted:`<span class="hljs-keyword">from</span> textwrap <span class="hljs-keyword">import</span> wrap
<span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt
<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np


<span class="hljs-keyword">def</span> <span class="hljs-title function_">plot_images</span>(<span class="hljs-params">images, captions</span>):
    plt.figure(figsize=(<span class="hljs-number">20</span>, <span class="hljs-number">20</span>))
    <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>(images)):
        ax = plt.subplot(<span class="hljs-number">1</span>, <span class="hljs-built_in">len</span>(images), i + <span class="hljs-number">1</span>)
        caption = captions[i]
        caption = <span class="hljs-string">&quot;\\n&quot;</span>.join(wrap(caption, <span class="hljs-number">12</span>))
        plt.title(caption)
        plt.imshow(images[i])
        plt.axis(<span class="hljs-string">&quot;off&quot;</span>)


sample_images_to_visualize = [np.array(train_ds[i][<span class="hljs-string">&quot;image&quot;</span>]) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">5</span>)]
sample_captions = [train_ds[i][<span class="hljs-string">&quot;text&quot;</span>] <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">5</span>)]
plot_images(sample_images_to_visualize, sample_captions)`,wrap:!1}}),E=new je({props:{title:"Preprocesar el conjunto de datos",local:"preprocesar-el-conjunto-de-datos",headingTag:"h2"}}),Q=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Qcm9jZXNzb3IlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIybWljcm9zb2Z0JTJGZ2l0LWJhc2UlMjIlMEFwcm9jZXNzb3IlMjAlM0QlMjBBdXRvUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoProcessor

checkpoint = <span class="hljs-string">&quot;microsoft/git-base&quot;</span>
processor = AutoProcessor.from_pretrained(checkpoint)`,wrap:!1}}),F=new y({props:{code:"ZGVmJTIwdHJhbnNmb3JtcyhleGFtcGxlX2JhdGNoKSUzQSUwQSUyMCUyMCUyMCUyMGltYWdlcyUyMCUzRCUyMCU1QnglMjBmb3IlMjB4JTIwaW4lMjBleGFtcGxlX2JhdGNoJTVCJTIyaW1hZ2UlMjIlNUQlNUQlMEElMjAlMjAlMjAlMjBjYXB0aW9ucyUyMCUzRCUyMCU1QnglMjBmb3IlMjB4JTIwaW4lMjBleGFtcGxlX2JhdGNoJTVCJTIydGV4dCUyMiU1RCU1RCUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMHByb2Nlc3NvcihpbWFnZXMlM0RpbWFnZXMlMkMlMjB0ZXh0JTNEY2FwdGlvbnMlMkMlMjBwYWRkaW5nJTNEJTIybWF4X2xlbmd0aCUyMiklMEElMjAlMjAlMjAlMjBpbnB1dHMudXBkYXRlKCU3QiUyMmxhYmVscyUyMiUzQSUyMGlucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCU3RCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBpbnB1dHMlMEElMEElMEF0cmFpbl9kcy5zZXRfdHJhbnNmb3JtKHRyYW5zZm9ybXMpJTBBdGVzdF9kcy5zZXRfdHJhbnNmb3JtKHRyYW5zZm9ybXMp",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">transforms</span>(<span class="hljs-params">example_batch</span>):
    images = [x <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> example_batch[<span class="hljs-string">&quot;image&quot;</span>]]
    captions = [x <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> example_batch[<span class="hljs-string">&quot;text&quot;</span>]]
    inputs = processor(images=images, text=captions, padding=<span class="hljs-string">&quot;max_length&quot;</span>)
    inputs.update({<span class="hljs-string">&quot;labels&quot;</span>: inputs[<span class="hljs-string">&quot;input_ids&quot;</span>]})
    <span class="hljs-keyword">return</span> inputs


train_ds.set_transform(transforms)
test_ds.set_transform(transforms)`,wrap:!1}}),q=new je({props:{title:"Cargar un modelo base",local:"cargar-un-modelo-base",headingTag:"h2"}}),L=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNhdXNhbExNJTBBJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(checkpoint)`,wrap:!1}}),P=new je({props:{title:"Evaluar",local:"evaluar",headingTag:"h2"}}),O=new y({props:{code:"ZnJvbSUyMGV2YWx1YXRlJTIwaW1wb3J0JTIwbG9hZCUwQWltcG9ydCUyMHRvcmNoJTBBJTBBd2VyJTIwJTNEJTIwbG9hZCglMjJ3ZXIlMjIpJTBBJTBBJTBBZGVmJTIwY29tcHV0ZV9tZXRyaWNzKGV2YWxfcHJlZCklM0ElMEElMjAlMjAlMjAlMjBsb2dpdHMlMkMlMjBsYWJlbHMlMjAlM0QlMjBldmFsX3ByZWQlMEElMjAlMjAlMjAlMjBwcmVkaWN0ZWQlMjAlM0QlMjBsb2dpdHMuYXJnbWF4KC0xKSUwQSUyMCUyMCUyMCUyMGRlY29kZWRfbGFiZWxzJTIwJTNEJTIwcHJvY2Vzc29yLmJhdGNoX2RlY29kZShsYWJlbHMlMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklMEElMjAlMjAlMjAlMjBkZWNvZGVkX3ByZWRpY3Rpb25zJTIwJTNEJTIwcHJvY2Vzc29yLmJhdGNoX2RlY29kZShwcmVkaWN0ZWQlMkMlMjBza2lwX3NwZWNpYWxfdG9rZW5zJTNEVHJ1ZSklMEElMjAlMjAlMjAlMjB3ZXJfc2NvcmUlMjAlM0QlMjB3ZXIuY29tcHV0ZShwcmVkaWN0aW9ucyUzRGRlY29kZWRfcHJlZGljdGlvbnMlMkMlMjByZWZlcmVuY2VzJTNEZGVjb2RlZF9sYWJlbHMpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIyd2VyX3Njb3JlJTIyJTNBJTIwd2VyX3Njb3JlJTdE",highlighted:`<span class="hljs-keyword">from</span> evaluate <span class="hljs-keyword">import</span> load
<span class="hljs-keyword">import</span> torch

wer = load(<span class="hljs-string">&quot;wer&quot;</span>)


<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_pred</span>):
    logits, labels = eval_pred
    predicted = logits.argmax(-<span class="hljs-number">1</span>)
    decoded_labels = processor.batch_decode(labels, skip_special_tokens=<span class="hljs-literal">True</span>)
    decoded_predictions = processor.batch_decode(predicted, skip_special_tokens=<span class="hljs-literal">True</span>)
    wer_score = wer.compute(predictions=decoded_predictions, references=decoded_labels)
    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;wer_score&quot;</span>: wer_score}`,wrap:!1}}),ee=new je({props:{title:"¡Entrenar!",local:"entrenar",headingTag:"h2"}}),le=new y({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQW1vZGVsX25hbWUlMjAlM0QlMjBjaGVja3BvaW50LnNwbGl0KCUyMiUyRiUyMiklNUIxJTVEJTBBJTBBdHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0RmJTIyJTdCbW9kZWxfbmFtZSU3RC1wb2tlbW9uJTIyJTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDVlLTUlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5fZXBvY2hzJTNENTAlMkMlMEElMjAlMjAlMjAlMjBmcDE2JTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRDMyJTJDJTBBJTIwJTIwJTIwJTIwcGVyX2RldmljZV9ldmFsX2JhdGNoX3NpemUlM0QzMiUyQyUwQSUyMCUyMCUyMCUyMGdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwcyUzRDIlMkMlMEElMjAlMjAlMjAlMjBzYXZlX3RvdGFsX2xpbWl0JTNEMyUyQyUwQSUyMCUyMCUyMCUyMGV2YWx1YXRpb25fc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiUyQyUwQSUyMCUyMCUyMCUyMGV2YWxfc3RlcHMlM0Q1MCUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RlcHMlM0Q1MCUyQyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RlcHMlM0Q1MCUyQyUwQSUyMCUyMCUyMCUyMHJlbW92ZV91bnVzZWRfY29sdW1ucyUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwcHVzaF90b19odWIlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwbGFiZWxfbmFtZXMlM0QlNUIlMjJsYWJlbHMlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer

model_name = checkpoint.split(<span class="hljs-string">&quot;/&quot;</span>)[<span class="hljs-number">1</span>]

training_args = TrainingArguments(
    output_dir=<span class="hljs-string">f&quot;<span class="hljs-subst">{model_name}</span>-pokemon&quot;</span>,
    learning_rate=<span class="hljs-number">5e-5</span>,
    num_train_epochs=<span class="hljs-number">50</span>,
    fp16=<span class="hljs-literal">True</span>,
    per_device_train_batch_size=<span class="hljs-number">32</span>,
    per_device_eval_batch_size=<span class="hljs-number">32</span>,
    gradient_accumulation_steps=<span class="hljs-number">2</span>,
    save_total_limit=<span class="hljs-number">3</span>,
    evaluation_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
    eval_steps=<span class="hljs-number">50</span>,
    save_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
    save_steps=<span class="hljs-number">50</span>,
    logging_steps=<span class="hljs-number">50</span>,
    remove_unused_columns=<span class="hljs-literal">False</span>,
    push_to_hub=<span class="hljs-literal">True</span>,
    label_names=[<span class="hljs-string">&quot;labels&quot;</span>],
    load_best_model_at_end=<span class="hljs-literal">True</span>,
)`,wrap:!1}}),ne=new y({props:{code:"dHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHRyYWluX2RzJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEdGVzdF9kcyUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSk=",highlighted:`trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_ds,
    eval_dataset=test_ds,
    compute_metrics=compute_metrics,
)`,wrap:!1}}),ie=new y({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:"trainer.train()",wrap:!1}}),me=new y({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:"trainer.push_to_hub()",wrap:!1}}),ce=new je({props:{title:"Inferencia",local:"inferencia",headingTag:"h2"}}),de=new y({props:{code:"ZnJvbSUyMFBJTCUyMGltcG9ydCUyMEltYWdlJTBBaW1wb3J0JTIwcmVxdWVzdHMlMEElMEF1cmwlMjAlM0QlMjAlMjJodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGZGF0YXNldHMlMkZzYXlha3BhdWwlMkZzYW1wbGUtZGF0YXNldHMlMkZyZXNvbHZlJTJGbWFpbiUyRnBva2Vtb24ucG5nJTIyJTBBaW1hZ2UlMjAlM0QlMjBJbWFnZS5vcGVuKHJlcXVlc3RzLmdldCh1cmwlMkMlMjBzdHJlYW0lM0RUcnVlKS5yYXcpJTBBaW1hZ2U=",highlighted:`<span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image
<span class="hljs-keyword">import</span> requests

url = <span class="hljs-string">&quot;https://huggingface.co/datasets/sayakpaul/sample-datasets/resolve/main/pokemon.png&quot;</span>
image = Image.<span class="hljs-built_in">open</span>(requests.get(url, stream=<span class="hljs-literal">True</span>).raw)
image`,wrap:!1}}),ye=new y({props:{code:"ZGV2aWNlJTIwJTNEJTIwJTIyY3VkYSUyMiUyMGlmJTIwdG9yY2guY3VkYS5pc19hdmFpbGFibGUoKSUyMGVsc2UlMjAlMjJjcHUlMjIlMEElMEFpbnB1dHMlMjAlM0QlMjBwcm9jZXNzb3IoaW1hZ2VzJTNEaW1hZ2UlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKS50byhkZXZpY2UpJTBBcGl4ZWxfdmFsdWVzJTIwJTNEJTIwaW5wdXRzLnBpeGVsX3ZhbHVlcw==",highlighted:`device = <span class="hljs-string">&quot;cuda&quot;</span> <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> <span class="hljs-string">&quot;cpu&quot;</span>

inputs = processor(images=image, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>).to(device)
pixel_values = inputs.pixel_values`,wrap:!1}}),Je=new y({props:{code:"Z2VuZXJhdGVkX2lkcyUyMCUzRCUyMG1vZGVsLmdlbmVyYXRlKHBpeGVsX3ZhbHVlcyUzRHBpeGVsX3ZhbHVlcyUyQyUyMG1heF9sZW5ndGglM0Q1MCklMEFnZW5lcmF0ZWRfY2FwdGlvbiUyMCUzRCUyMHByb2Nlc3Nvci5iYXRjaF9kZWNvZGUoZ2VuZXJhdGVkX2lkcyUyQyUyMHNraXBfc3BlY2lhbF90b2tlbnMlM0RUcnVlKSU1QjAlNUQlMEFwcmludChnZW5lcmF0ZWRfY2FwdGlvbik=",highlighted:`generated_ids = model.generate(pixel_values=pixel_values, max_length=<span class="hljs-number">50</span>)
generated_caption = processor.batch_decode(generated_ids, skip_special_tokens=<span class="hljs-literal">True</span>)[<span class="hljs-number">0</span>]
<span class="hljs-built_in">print</span>(generated_caption)`,wrap:!1}}),fe=new y({props:{code:"YSUyMGRyYXdpbmclMjBvZiUyMGElMjBwaW5rJTIwYW5kJTIwYmx1ZSUyMHBva2Vtb24=",highlighted:"a drawing of a pink and blue pokemon",wrap:!1}}),{c(){b=p("meta"),T=a(),J=p("p"),Te=a(),r(U.$$.fragment),he=a(),r(g.$$.fragment),$e=a(),h=p("p"),h.textContent=_t,Ce=a(),$=p("p"),$.textContent=kt,_e=a(),C=p("ul"),C.innerHTML=vt,ke=a(),_=p("p"),_.textContent=It,ve=a(),r(k.$$.fragment),Ie=a(),v=p("p"),v.textContent=Bt,Be=a(),r(I.$$.fragment),We=a(),r(B.$$.fragment),Ze=a(),W=p("p"),W.innerHTML=Wt,Ge=a(),r(Z.$$.fragment),Re=a(),r(G.$$.fragment),xe=a(),R=p("p"),R.innerHTML=Zt,Xe=a(),r(f.$$.fragment),He=a(),x=p("p"),x.innerHTML=Gt,Ve=a(),r(X.$$.fragment),Ee=a(),H=p("p"),H.textContent=Rt,Ye=a(),r(V.$$.fragment),ze=a(),w=p("div"),w.innerHTML=xt,Qe=a(),r(E.$$.fragment),Ne=a(),Y=p("p"),Y.textContent=Xt,Fe=a(),z=p("p"),z.textContent=Ht,Ae=a(),r(Q.$$.fragment),qe=a(),N=p("p"),N.textContent=Vt,Se=a(),r(F.$$.fragment),Le=a(),A=p("p"),A.textContent=Et,Pe=a(),r(q.$$.fragment),Ke=a(),S=p("p"),S.innerHTML=Yt,De=a(),r(L.$$.fragment),Oe=a(),r(P.$$.fragment),et=a(),K=p("p"),K.innerHTML=zt,tt=a(),D=p("p"),D.innerHTML=Qt,st=a(),r(O.$$.fragment),lt=a(),r(ee.$$.fragment),at=a(),te=p("p"),te.innerHTML=Nt,nt=a(),se=p("p"),se.innerHTML=Ft,pt=a(),r(le.$$.fragment),it=a(),ae=p("p"),ae.textContent=At,ot=a(),r(ne.$$.fragment),rt=a(),pe=p("p"),pe.innerHTML=qt,mt=a(),r(ie.$$.fragment),ct=a(),oe=p("p"),oe.textContent=St,Mt=a(),re=p("p"),re.innerHTML=Lt,dt=a(),r(me.$$.fragment),ut=a(),r(ce.$$.fragment),yt=a(),Me=p("p"),Me.textContent=Pt,bt=a(),r(de.$$.fragment),Jt=a(),j=p("div"),j.innerHTML=Kt,ft=a(),ue=p("p"),ue.textContent=Dt,wt=a(),r(ye.$$.fragment),jt=a(),be=p("p"),be.innerHTML=Ot,Tt=a(),r(Je.$$.fragment),Ut=a(),r(fe.$$.fragment),gt=a(),we=p("p"),we.textContent=es,ht=a(),Ue=p("p"),this.h()},l(e){const t=os("svelte-u9bgzb",document.head);b=i(t,"META",{name:!0,content:!0}),t.forEach(s),T=n(e),J=i(e,"P",{}),ss(J).forEach(s),Te=n(e),m(U.$$.fragment,e),he=n(e),m(g.$$.fragment,e),$e=n(e),h=i(e,"P",{"data-svelte-h":!0}),o(h)!=="svelte-a798ar"&&(h.textContent=_t),Ce=n(e),$=i(e,"P",{"data-svelte-h":!0}),o($)!=="svelte-ytn4tl"&&($.textContent=kt),_e=n(e),C=i(e,"UL",{"data-svelte-h":!0}),o(C)!=="svelte-sb5ukj"&&(C.innerHTML=vt),ke=n(e),_=i(e,"P",{"data-svelte-h":!0}),o(_)!=="svelte-1bsgrgg"&&(_.textContent=It),ve=n(e),m(k.$$.fragment,e),Ie=n(e),v=i(e,"P",{"data-svelte-h":!0}),o(v)!=="svelte-2423ui"&&(v.textContent=Bt),Be=n(e),m(I.$$.fragment,e),We=n(e),m(B.$$.fragment,e),Ze=n(e),W=i(e,"P",{"data-svelte-h":!0}),o(W)!=="svelte-19wszp6"&&(W.innerHTML=Wt),Ge=n(e),m(Z.$$.fragment,e),Re=n(e),m(G.$$.fragment,e),xe=n(e),R=i(e,"P",{"data-svelte-h":!0}),o(R)!=="svelte-1hqh35u"&&(R.innerHTML=Zt),Xe=n(e),m(f.$$.fragment,e),He=n(e),x=i(e,"P",{"data-svelte-h":!0}),o(x)!=="svelte-11372ig"&&(x.innerHTML=Gt),Ve=n(e),m(X.$$.fragment,e),Ee=n(e),H=i(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-1vcr4ep"&&(H.textContent=Rt),Ye=n(e),m(V.$$.fragment,e),ze=n(e),w=i(e,"DIV",{class:!0,"data-svelte-h":!0}),o(w)!=="svelte-1qemygy"&&(w.innerHTML=xt),Qe=n(e),m(E.$$.fragment,e),Ne=n(e),Y=i(e,"P",{"data-svelte-h":!0}),o(Y)!=="svelte-18a18lb"&&(Y.textContent=Xt),Fe=n(e),z=i(e,"P",{"data-svelte-h":!0}),o(z)!=="svelte-1pytsp9"&&(z.textContent=Ht),Ae=n(e),m(Q.$$.fragment,e),qe=n(e),N=i(e,"P",{"data-svelte-h":!0}),o(N)!=="svelte-s91qpz"&&(N.textContent=Vt),Se=n(e),m(F.$$.fragment,e),Le=n(e),A=i(e,"P",{"data-svelte-h":!0}),o(A)!=="svelte-c6lbth"&&(A.textContent=Et),Pe=n(e),m(q.$$.fragment,e),Ke=n(e),S=i(e,"P",{"data-svelte-h":!0}),o(S)!=="svelte-1xckeb"&&(S.innerHTML=Yt),De=n(e),m(L.$$.fragment,e),Oe=n(e),m(P.$$.fragment,e),et=n(e),K=i(e,"P",{"data-svelte-h":!0}),o(K)!=="svelte-jtrjhs"&&(K.innerHTML=zt),tt=n(e),D=i(e,"P",{"data-svelte-h":!0}),o(D)!=="svelte-1ieo92q"&&(D.innerHTML=Qt),st=n(e),m(O.$$.fragment,e),lt=n(e),m(ee.$$.fragment,e),at=n(e),te=i(e,"P",{"data-svelte-h":!0}),o(te)!=="svelte-1obov0c"&&(te.innerHTML=Nt),nt=n(e),se=i(e,"P",{"data-svelte-h":!0}),o(se)!=="svelte-1oyf5tt"&&(se.innerHTML=Ft),pt=n(e),m(le.$$.fragment,e),it=n(e),ae=i(e,"P",{"data-svelte-h":!0}),o(ae)!=="svelte-1qu4vc3"&&(ae.textContent=At),ot=n(e),m(ne.$$.fragment,e),rt=n(e),pe=i(e,"P",{"data-svelte-h":!0}),o(pe)!=="svelte-655gud"&&(pe.innerHTML=qt),mt=n(e),m(ie.$$.fragment,e),ct=n(e),oe=i(e,"P",{"data-svelte-h":!0}),o(oe)!=="svelte-ct269r"&&(oe.textContent=St),Mt=n(e),re=i(e,"P",{"data-svelte-h":!0}),o(re)!=="svelte-y1mduu"&&(re.innerHTML=Lt),dt=n(e),m(me.$$.fragment,e),ut=n(e),m(ce.$$.fragment,e),yt=n(e),Me=i(e,"P",{"data-svelte-h":!0}),o(Me)!=="svelte-upi1zw"&&(Me.textContent=Pt),bt=n(e),m(de.$$.fragment,e),Jt=n(e),j=i(e,"DIV",{class:!0,"data-svelte-h":!0}),o(j)!=="svelte-16i041b"&&(j.innerHTML=Kt),ft=n(e),ue=i(e,"P",{"data-svelte-h":!0}),o(ue)!=="svelte-1af5g0s"&&(ue.textContent=Dt),wt=n(e),m(ye.$$.fragment,e),jt=n(e),be=i(e,"P",{"data-svelte-h":!0}),o(be)!=="svelte-1iooygs"&&(be.innerHTML=Ot),Tt=n(e),m(Je.$$.fragment,e),Ut=n(e),m(fe.$$.fragment,e),gt=n(e),we=i(e,"P",{"data-svelte-h":!0}),o(we)!=="svelte-1fgf7yk"&&(we.textContent=es),ht=n(e),Ue=i(e,"P",{}),ss(Ue).forEach(s),this.h()},h(){Ct(b,"name","hf:doc:metadata"),Ct(b,"content",us),Ct(w,"class","flex justify-center"),Ct(j,"class","flex justify-center")},m(e,t){rs(document.head,b),l(e,T,t),l(e,J,t),l(e,Te,t),c(U,e,t),l(e,he,t),c(g,e,t),l(e,$e,t),l(e,h,t),l(e,Ce,t),l(e,$,t),l(e,_e,t),l(e,C,t),l(e,ke,t),l(e,_,t),l(e,ve,t),c(k,e,t),l(e,Ie,t),l(e,v,t),l(e,Be,t),c(I,e,t),l(e,We,t),c(B,e,t),l(e,Ze,t),l(e,W,t),l(e,Ge,t),c(Z,e,t),l(e,Re,t),c(G,e,t),l(e,xe,t),l(e,R,t),l(e,Xe,t),c(f,e,t),l(e,He,t),l(e,x,t),l(e,Ve,t),c(X,e,t),l(e,Ee,t),l(e,H,t),l(e,Ye,t),c(V,e,t),l(e,ze,t),l(e,w,t),l(e,Qe,t),c(E,e,t),l(e,Ne,t),l(e,Y,t),l(e,Fe,t),l(e,z,t),l(e,Ae,t),c(Q,e,t),l(e,qe,t),l(e,N,t),l(e,Se,t),c(F,e,t),l(e,Le,t),l(e,A,t),l(e,Pe,t),c(q,e,t),l(e,Ke,t),l(e,S,t),l(e,De,t),c(L,e,t),l(e,Oe,t),c(P,e,t),l(e,et,t),l(e,K,t),l(e,tt,t),l(e,D,t),l(e,st,t),c(O,e,t),l(e,lt,t),c(ee,e,t),l(e,at,t),l(e,te,t),l(e,nt,t),l(e,se,t),l(e,pt,t),c(le,e,t),l(e,it,t),l(e,ae,t),l(e,ot,t),c(ne,e,t),l(e,rt,t),l(e,pe,t),l(e,mt,t),c(ie,e,t),l(e,ct,t),l(e,oe,t),l(e,Mt,t),l(e,re,t),l(e,dt,t),c(me,e,t),l(e,ut,t),c(ce,e,t),l(e,yt,t),l(e,Me,t),l(e,bt,t),c(de,e,t),l(e,Jt,t),l(e,j,t),l(e,ft,t),l(e,ue,t),l(e,wt,t),c(ye,e,t),l(e,jt,t),l(e,be,t),l(e,Tt,t),c(Je,e,t),l(e,Ut,t),c(fe,e,t),l(e,gt,t),l(e,we,t),l(e,ht,t),l(e,Ue,t),$t=!0},p(e,[t]){const ts={};t&2&&(ts.$$scope={dirty:t,ctx:e}),f.$set(ts)},i(e){$t||(M(U.$$.fragment,e),M(g.$$.fragment,e),M(k.$$.fragment,e),M(I.$$.fragment,e),M(B.$$.fragment,e),M(Z.$$.fragment,e),M(G.$$.fragment,e),M(f.$$.fragment,e),M(X.$$.fragment,e),M(V.$$.fragment,e),M(E.$$.fragment,e),M(Q.$$.fragment,e),M(F.$$.fragment,e),M(q.$$.fragment,e),M(L.$$.fragment,e),M(P.$$.fragment,e),M(O.$$.fragment,e),M(ee.$$.fragment,e),M(le.$$.fragment,e),M(ne.$$.fragment,e),M(ie.$$.fragment,e),M(me.$$.fragment,e),M(ce.$$.fragment,e),M(de.$$.fragment,e),M(ye.$$.fragment,e),M(Je.$$.fragment,e),M(fe.$$.fragment,e),$t=!0)},o(e){d(U.$$.fragment,e),d(g.$$.fragment,e),d(k.$$.fragment,e),d(I.$$.fragment,e),d(B.$$.fragment,e),d(Z.$$.fragment,e),d(G.$$.fragment,e),d(f.$$.fragment,e),d(X.$$.fragment,e),d(V.$$.fragment,e),d(E.$$.fragment,e),d(Q.$$.fragment,e),d(F.$$.fragment,e),d(q.$$.fragment,e),d(L.$$.fragment,e),d(P.$$.fragment,e),d(O.$$.fragment,e),d(ee.$$.fragment,e),d(le.$$.fragment,e),d(ne.$$.fragment,e),d(ie.$$.fragment,e),d(me.$$.fragment,e),d(ce.$$.fragment,e),d(de.$$.fragment,e),d(ye.$$.fragment,e),d(Je.$$.fragment,e),d(fe.$$.fragment,e),$t=!1},d(e){e&&(s(T),s(J),s(Te),s(he),s($e),s(h),s(Ce),s($),s(_e),s(C),s(ke),s(_),s(ve),s(Ie),s(v),s(Be),s(We),s(Ze),s(W),s(Ge),s(Re),s(xe),s(R),s(Xe),s(He),s(x),s(Ve),s(Ee),s(H),s(Ye),s(ze),s(w),s(Qe),s(Ne),s(Y),s(Fe),s(z),s(Ae),s(qe),s(N),s(Se),s(Le),s(A),s(Pe),s(Ke),s(S),s(De),s(Oe),s(et),s(K),s(tt),s(D),s(st),s(lt),s(at),s(te),s(nt),s(se),s(pt),s(it),s(ae),s(ot),s(rt),s(pe),s(mt),s(ct),s(oe),s(Mt),s(re),s(dt),s(ut),s(yt),s(Me),s(bt),s(Jt),s(j),s(ft),s(ue),s(wt),s(jt),s(be),s(Tt),s(Ut),s(gt),s(we),s(ht),s(Ue)),s(b),u(U,e),u(g,e),u(k,e),u(I,e),u(B,e),u(Z,e),u(G,e),u(f,e),u(X,e),u(V,e),u(E,e),u(Q,e),u(F,e),u(q,e),u(L,e),u(P,e),u(O,e),u(ee,e),u(le,e),u(ne,e),u(ie,e),u(me,e),u(ce,e),u(de,e),u(ye,e),u(Je,e),u(fe,e)}}}const us='{"title":"Subtítulos de Imágenes","local":"subtítulos-de-imágenes","sections":[{"title":"Cargar el conjunto de datos de subtítulos BLIP de Pokémon","local":"cargar-el-conjunto-de-datos-de-subtítulos-blip-de-pokémon","sections":[],"depth":2},{"title":"Preprocesar el conjunto de datos","local":"preprocesar-el-conjunto-de-datos","sections":[],"depth":2},{"title":"Cargar un modelo base","local":"cargar-un-modelo-base","sections":[],"depth":2},{"title":"Evaluar","local":"evaluar","sections":[],"depth":2},{"title":"¡Entrenar!","local":"entrenar","sections":[],"depth":2},{"title":"Inferencia","local":"inferencia","sections":[],"depth":2}],"depth":1}';function ys(ge){return as(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Us extends ps{constructor(b){super(),is(this,b,ys,ds,ls,{})}}export{Us as component};
