import{s as ns,o as ps,n as is}from"../chunks/scheduler.36a0863c.js";import{S as os,i as rs,g as p,s as a,r,A as ms,h as i,f as s,c as n,j as as,u as m,x as o,k as kt,y as cs,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 ds}from"../chunks/DocNotebookDropdown.81c1f0fb.js";import{H as Te,E as us}from"../chunks/EditOnGithub.a58e27a9.js";function ys(he){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(f){b=i(f,"P",{"data-svelte-h":!0}),o(b)!=="svelte-1paeijy"&&(b.textContent=T)},m(f,ge){l(f,b,ge)},p:is,d(f){f&&s(b)}}}function bs(he){let b,T,f,ge,g,$e,U,Ce,h,vt=`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.`,_e,$,It="Esta guía te mostrará cómo:",ke,C,Bt="<li>Ajustar un modelo de subtítulos de imágenes.</li> <li>Usar el modelo ajustado para inferencia.</li>",ve,_,Wt="Antes de comenzar, asegúrate de tener todas las bibliotecas necesarias instaladas:",Ie,k,Be,v,Zt="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:",We,I,Ze,B,Ge,W,Gt=`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>.`,Re,Z,xe,G,Xe,R,Rt="El conjunto de datos tiene dos características, <code>image</code> y <code>text</code>.",He,J,Ve,x,xt="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>:",Ee,X,Ye,H,Xt="Vamos a visualizar un par de muestras del conjunto de entrenamiento.",ze,V,Qe,w,Ht='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/sample_training_images_image_cap.png" alt="Sample training images"/>',Ne,E,Fe,Y,Vt="Dado que el conjunto de datos tiene dos modalidades (imagen y texto), el proceso de preprocesamiento preprocesará las imágenes y los subtítulos.",Ae,z,Et="Para hacerlo, carga la clase de procesador asociada con el modelo que estás a punto de ajustar.",qe,Q,Se,N,Yt="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.",Le,F,Pe,A,zt="Con el conjunto de datos listo, ahora puedes configurar el modelo para el ajuste fino.",Ke,q,De,S,Qt='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>.',Oe,L,et,P,tt,K,Nt='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).',st,D,Ft='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>.',lt,O,at,ee,nt,te,At="Ahora, estás listo para comenzar a ajustar el modelo. Utilizarás el 🤗 <code>Trainer</code> para esto.",pt,se,qt="Primero, define los argumentos de entrenamiento usando <code>TrainingArguments</code>.",it,le,ot,ae,St="Luego pásalos junto con los conjuntos de datos y el modelo al 🤗 Trainer.",rt,ne,mt,pe,Lt="Para comenzar el entrenamiento, simplemente llama a <code>train()</code> en el objeto <code>Trainer</code>.",ct,ie,Mt,oe,Pt="Deberías ver cómo disminuye suavemente la pérdida de entrenamiento a medida que avanza el entrenamiento.",dt,re,Kt="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:",ut,me,yt,ce,bt,Me,Dt="Toma una imagen de muestra de test_ds para probar el modelo.",ft,de,Jt,j,Ot='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/test_image_image_cap.png" alt="Test image"/>',wt,ue,es="Prepara la imagen para el modelo.",jt,ye,Tt,be,ts="Llama a <code>generate</code> y decodifica las predicciones.",gt,fe,Ut,Je,ht,we,ss="¡Parece que el modelo ajustado generó un subtítulo bastante bueno!",$t,je,Ct,Ue,_t;return g=new Te({props:{title:"Subtítulos de Imágenes",local:"subtítulos-de-imágenes",headingTag:"h1"}}),U=new ds({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 Te({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}}),J=new Ms({props:{$$slots:{default:[ys]},$$scope:{ctx:he}}}),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 Te({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 Te({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 Te({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 Te({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 Te({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}}),fe=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}}),Je=new y({props:{code:"YSUyMGRyYXdpbmclMjBvZiUyMGElMjBwaW5rJTIwYW5kJTIwYmx1ZSUyMHBva2Vtb24=",highlighted:"a drawing of a pink and blue pokemon",wrap:!1}}),je=new us({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/es/tasks/image_captioning.md"}}),{c(){b=p("meta"),T=a(),f=p("p"),ge=a(),r(g.$$.fragment),$e=a(),r(U.$$.fragment),Ce=a(),h=p("p"),h.textContent=vt,_e=a(),$=p("p"),$.textContent=It,ke=a(),C=p("ul"),C.innerHTML=Bt,ve=a(),_=p("p"),_.textContent=Wt,Ie=a(),r(k.$$.fragment),Be=a(),v=p("p"),v.textContent=Zt,We=a(),r(I.$$.fragment),Ze=a(),r(B.$$.fragment),Ge=a(),W=p("p"),W.innerHTML=Gt,Re=a(),r(Z.$$.fragment),xe=a(),r(G.$$.fragment),Xe=a(),R=p("p"),R.innerHTML=Rt,He=a(),r(J.$$.fragment),Ve=a(),x=p("p"),x.innerHTML=xt,Ee=a(),r(X.$$.fragment),Ye=a(),H=p("p"),H.textContent=Xt,ze=a(),r(V.$$.fragment),Qe=a(),w=p("div"),w.innerHTML=Ht,Ne=a(),r(E.$$.fragment),Fe=a(),Y=p("p"),Y.textContent=Vt,Ae=a(),z=p("p"),z.textContent=Et,qe=a(),r(Q.$$.fragment),Se=a(),N=p("p"),N.textContent=Yt,Le=a(),r(F.$$.fragment),Pe=a(),A=p("p"),A.textContent=zt,Ke=a(),r(q.$$.fragment),De=a(),S=p("p"),S.innerHTML=Qt,Oe=a(),r(L.$$.fragment),et=a(),r(P.$$.fragment),tt=a(),K=p("p"),K.innerHTML=Nt,st=a(),D=p("p"),D.innerHTML=Ft,lt=a(),r(O.$$.fragment),at=a(),r(ee.$$.fragment),nt=a(),te=p("p"),te.innerHTML=At,pt=a(),se=p("p"),se.innerHTML=qt,it=a(),r(le.$$.fragment),ot=a(),ae=p("p"),ae.textContent=St,rt=a(),r(ne.$$.fragment),mt=a(),pe=p("p"),pe.innerHTML=Lt,ct=a(),r(ie.$$.fragment),Mt=a(),oe=p("p"),oe.textContent=Pt,dt=a(),re=p("p"),re.innerHTML=Kt,ut=a(),r(me.$$.fragment),yt=a(),r(ce.$$.fragment),bt=a(),Me=p("p"),Me.textContent=Dt,ft=a(),r(de.$$.fragment),Jt=a(),j=p("div"),j.innerHTML=Ot,wt=a(),ue=p("p"),ue.textContent=es,jt=a(),r(ye.$$.fragment),Tt=a(),be=p("p"),be.innerHTML=ts,gt=a(),r(fe.$$.fragment),Ut=a(),r(Je.$$.fragment),ht=a(),we=p("p"),we.textContent=ss,$t=a(),r(je.$$.fragment),Ct=a(),Ue=p("p"),this.h()},l(e){const t=ms("svelte-u9bgzb",document.head);b=i(t,"META",{name:!0,content:!0}),t.forEach(s),T=n(e),f=i(e,"P",{}),as(f).forEach(s),ge=n(e),m(g.$$.fragment,e),$e=n(e),m(U.$$.fragment,e),Ce=n(e),h=i(e,"P",{"data-svelte-h":!0}),o(h)!=="svelte-a798ar"&&(h.textContent=vt),_e=n(e),$=i(e,"P",{"data-svelte-h":!0}),o($)!=="svelte-ytn4tl"&&($.textContent=It),ke=n(e),C=i(e,"UL",{"data-svelte-h":!0}),o(C)!=="svelte-sb5ukj"&&(C.innerHTML=Bt),ve=n(e),_=i(e,"P",{"data-svelte-h":!0}),o(_)!=="svelte-1bsgrgg"&&(_.textContent=Wt),Ie=n(e),m(k.$$.fragment,e),Be=n(e),v=i(e,"P",{"data-svelte-h":!0}),o(v)!=="svelte-2423ui"&&(v.textContent=Zt),We=n(e),m(I.$$.fragment,e),Ze=n(e),m(B.$$.fragment,e),Ge=n(e),W=i(e,"P",{"data-svelte-h":!0}),o(W)!=="svelte-19wszp6"&&(W.innerHTML=Gt),Re=n(e),m(Z.$$.fragment,e),xe=n(e),m(G.$$.fragment,e),Xe=n(e),R=i(e,"P",{"data-svelte-h":!0}),o(R)!=="svelte-1hqh35u"&&(R.innerHTML=Rt),He=n(e),m(J.$$.fragment,e),Ve=n(e),x=i(e,"P",{"data-svelte-h":!0}),o(x)!=="svelte-11372ig"&&(x.innerHTML=xt),Ee=n(e),m(X.$$.fragment,e),Ye=n(e),H=i(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-1vcr4ep"&&(H.textContent=Xt),ze=n(e),m(V.$$.fragment,e),Qe=n(e),w=i(e,"DIV",{class:!0,"data-svelte-h":!0}),o(w)!=="svelte-1qemygy"&&(w.innerHTML=Ht),Ne=n(e),m(E.$$.fragment,e),Fe=n(e),Y=i(e,"P",{"data-svelte-h":!0}),o(Y)!=="svelte-18a18lb"&&(Y.textContent=Vt),Ae=n(e),z=i(e,"P",{"data-svelte-h":!0}),o(z)!=="svelte-1pytsp9"&&(z.textContent=Et),qe=n(e),m(Q.$$.fragment,e),Se=n(e),N=i(e,"P",{"data-svelte-h":!0}),o(N)!=="svelte-s91qpz"&&(N.textContent=Yt),Le=n(e),m(F.$$.fragment,e),Pe=n(e),A=i(e,"P",{"data-svelte-h":!0}),o(A)!=="svelte-c6lbth"&&(A.textContent=zt),Ke=n(e),m(q.$$.fragment,e),De=n(e),S=i(e,"P",{"data-svelte-h":!0}),o(S)!=="svelte-1xckeb"&&(S.innerHTML=Qt),Oe=n(e),m(L.$$.fragment,e),et=n(e),m(P.$$.fragment,e),tt=n(e),K=i(e,"P",{"data-svelte-h":!0}),o(K)!=="svelte-jtrjhs"&&(K.innerHTML=Nt),st=n(e),D=i(e,"P",{"data-svelte-h":!0}),o(D)!=="svelte-1ieo92q"&&(D.innerHTML=Ft),lt=n(e),m(O.$$.fragment,e),at=n(e),m(ee.$$.fragment,e),nt=n(e),te=i(e,"P",{"data-svelte-h":!0}),o(te)!=="svelte-1obov0c"&&(te.innerHTML=At),pt=n(e),se=i(e,"P",{"data-svelte-h":!0}),o(se)!=="svelte-1oyf5tt"&&(se.innerHTML=qt),it=n(e),m(le.$$.fragment,e),ot=n(e),ae=i(e,"P",{"data-svelte-h":!0}),o(ae)!=="svelte-1qu4vc3"&&(ae.textContent=St),rt=n(e),m(ne.$$.fragment,e),mt=n(e),pe=i(e,"P",{"data-svelte-h":!0}),o(pe)!=="svelte-655gud"&&(pe.innerHTML=Lt),ct=n(e),m(ie.$$.fragment,e),Mt=n(e),oe=i(e,"P",{"data-svelte-h":!0}),o(oe)!=="svelte-ct269r"&&(oe.textContent=Pt),dt=n(e),re=i(e,"P",{"data-svelte-h":!0}),o(re)!=="svelte-y1mduu"&&(re.innerHTML=Kt),ut=n(e),m(me.$$.fragment,e),yt=n(e),m(ce.$$.fragment,e),bt=n(e),Me=i(e,"P",{"data-svelte-h":!0}),o(Me)!=="svelte-upi1zw"&&(Me.textContent=Dt),ft=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=Ot),wt=n(e),ue=i(e,"P",{"data-svelte-h":!0}),o(ue)!=="svelte-1af5g0s"&&(ue.textContent=es),jt=n(e),m(ye.$$.fragment,e),Tt=n(e),be=i(e,"P",{"data-svelte-h":!0}),o(be)!=="svelte-1iooygs"&&(be.innerHTML=ts),gt=n(e),m(fe.$$.fragment,e),Ut=n(e),m(Je.$$.fragment,e),ht=n(e),we=i(e,"P",{"data-svelte-h":!0}),o(we)!=="svelte-1fgf7yk"&&(we.textContent=ss),$t=n(e),m(je.$$.fragment,e),Ct=n(e),Ue=i(e,"P",{}),as(Ue).forEach(s),this.h()},h(){kt(b,"name","hf:doc:metadata"),kt(b,"content",fs),kt(w,"class","flex justify-center"),kt(j,"class","flex justify-center")},m(e,t){cs(document.head,b),l(e,T,t),l(e,f,t),l(e,ge,t),c(g,e,t),l(e,$e,t),c(U,e,t),l(e,Ce,t),l(e,h,t),l(e,_e,t),l(e,$,t),l(e,ke,t),l(e,C,t),l(e,ve,t),l(e,_,t),l(e,Ie,t),c(k,e,t),l(e,Be,t),l(e,v,t),l(e,We,t),c(I,e,t),l(e,Ze,t),c(B,e,t),l(e,Ge,t),l(e,W,t),l(e,Re,t),c(Z,e,t),l(e,xe,t),c(G,e,t),l(e,Xe,t),l(e,R,t),l(e,He,t),c(J,e,t),l(e,Ve,t),l(e,x,t),l(e,Ee,t),c(X,e,t),l(e,Ye,t),l(e,H,t),l(e,ze,t),c(V,e,t),l(e,Qe,t),l(e,w,t),l(e,Ne,t),c(E,e,t),l(e,Fe,t),l(e,Y,t),l(e,Ae,t),l(e,z,t),l(e,qe,t),c(Q,e,t),l(e,Se,t),l(e,N,t),l(e,Le,t),c(F,e,t),l(e,Pe,t),l(e,A,t),l(e,Ke,t),c(q,e,t),l(e,De,t),l(e,S,t),l(e,Oe,t),c(L,e,t),l(e,et,t),c(P,e,t),l(e,tt,t),l(e,K,t),l(e,st,t),l(e,D,t),l(e,lt,t),c(O,e,t),l(e,at,t),c(ee,e,t),l(e,nt,t),l(e,te,t),l(e,pt,t),l(e,se,t),l(e,it,t),c(le,e,t),l(e,ot,t),l(e,ae,t),l(e,rt,t),c(ne,e,t),l(e,mt,t),l(e,pe,t),l(e,ct,t),c(ie,e,t),l(e,Mt,t),l(e,oe,t),l(e,dt,t),l(e,re,t),l(e,ut,t),c(me,e,t),l(e,yt,t),c(ce,e,t),l(e,bt,t),l(e,Me,t),l(e,ft,t),c(de,e,t),l(e,Jt,t),l(e,j,t),l(e,wt,t),l(e,ue,t),l(e,jt,t),c(ye,e,t),l(e,Tt,t),l(e,be,t),l(e,gt,t),c(fe,e,t),l(e,Ut,t),c(Je,e,t),l(e,ht,t),l(e,we,t),l(e,$t,t),c(je,e,t),l(e,Ct,t),l(e,Ue,t),_t=!0},p(e,[t]){const ls={};t&2&&(ls.$$scope={dirty:t,ctx:e}),J.$set(ls)},i(e){_t||(M(g.$$.fragment,e),M(U.$$.fragment,e),M(k.$$.fragment,e),M(I.$$.fragment,e),M(B.$$.fragment,e),M(Z.$$.fragment,e),M(G.$$.fragment,e),M(J.$$.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(fe.$$.fragment,e),M(Je.$$.fragment,e),M(je.$$.fragment,e),_t=!0)},o(e){d(g.$$.fragment,e),d(U.$$.fragment,e),d(k.$$.fragment,e),d(I.$$.fragment,e),d(B.$$.fragment,e),d(Z.$$.fragment,e),d(G.$$.fragment,e),d(J.$$.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(fe.$$.fragment,e),d(Je.$$.fragment,e),d(je.$$.fragment,e),_t=!1},d(e){e&&(s(T),s(f),s(ge),s($e),s(Ce),s(h),s(_e),s($),s(ke),s(C),s(ve),s(_),s(Ie),s(Be),s(v),s(We),s(Ze),s(Ge),s(W),s(Re),s(xe),s(Xe),s(R),s(He),s(Ve),s(x),s(Ee),s(Ye),s(H),s(ze),s(Qe),s(w),s(Ne),s(Fe),s(Y),s(Ae),s(z),s(qe),s(Se),s(N),s(Le),s(Pe),s(A),s(Ke),s(De),s(S),s(Oe),s(et),s(tt),s(K),s(st),s(D),s(lt),s(at),s(nt),s(te),s(pt),s(se),s(it),s(ot),s(ae),s(rt),s(mt),s(pe),s(ct),s(Mt),s(oe),s(dt),s(re),s(ut),s(yt),s(bt),s(Me),s(ft),s(Jt),s(j),s(wt),s(ue),s(jt),s(Tt),s(be),s(gt),s(Ut),s(ht),s(we),s($t),s(Ct),s(Ue)),s(b),u(g,e),u(U,e),u(k,e),u(I,e),u(B,e),u(Z,e),u(G,e),u(J,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(fe,e),u(Je,e),u(je,e)}}}const fs='{"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 Js(he){return ps(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class $s extends os{constructor(b){super(),rs(this,b,Js,bs,ns,{})}}export{$s as component};
