Buckets:

rtrm's picture
download
raw
16.6 kB
import{s as Qe,o as Ne}from"../chunks/scheduler.505acc25.js";import{S as He,i as Ye,e as f,s as r,c as d,h as Se,a as b,d as s,b as i,f as Ve,g as m,j as h,k as Be,l as qe,m as n,n as u,o as p,E as xe,t as c,p as M,F as Ae}from"../chunks/index.e22abd30.js";import{C as De,H as K,E as Le}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.a144e953.js";import{Y as Pe}from"../chunks/Youtube.7545e4b1.js";import{C as L}from"../chunks/CodeBlock.f6688f67.js";import{C as Fe}from"../chunks/CourseFloatingBanner.f0a2dc21.js";import{F as Ke}from"../chunks/FrameworkSwitchCourse.c2af54e8.js";function Oe(J){let a,o;return a=new Fe({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/section6_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter7/section6_tf.ipynb"}]}}),{c(){d(a.$$.fragment)},l(l){m(a.$$.fragment,l)},m(l,y){u(a,l,y),o=!0},i(l){o||(c(a.$$.fragment,l),o=!0)},o(l){p(a.$$.fragment,l),o=!1},d(l){M(a,l)}}}function et(J){let a,o;return a=new Fe({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/section6_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/en/chapter7/section6_pt.ipynb"}]}}),{c(){d(a.$$.fragment)},l(l){m(a.$$.fragment,l)},m(l,y){u(a,l,y),o=!0},i(l){o||(c(a.$$.fragment,l),o=!0)},o(l){p(a.$$.fragment,l),o=!1},d(l){M(a,l)}}}function tt(J){let a,o;return a=new L({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGR1BUMkxNSGVhZE1vZGVsJTJDJTIwQXV0b0NvbmZpZyUwQSUwQWNvbmZpZyUyMCUzRCUyMEF1dG9Db25maWcuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMCUyMmdwdDIlMjIlMkMlMEElMjAlMjAlMjAlMjB2b2NhYl9zaXplJTNEbGVuKHRva2VuaXplciklMkMlMEElMjAlMjAlMjAlMjBuX2N0eCUzRGNvbnRleHRfbGVuZ3RoJTJDJTBBJTIwJTIwJTIwJTIwYm9zX3Rva2VuX2lkJTNEdG9rZW5pemVyLmJvc190b2tlbl9pZCUyQyUwQSUyMCUyMCUyMCUyMGVvc190b2tlbl9pZCUzRHRva2VuaXplci5lb3NfdG9rZW5faWQlMkMlMEEpJTBBJTBBbW9kZWwlMjAlM0QlMjBURkdQVDJMTUhlYWRNb2RlbChjb25maWcp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFGPT2LMHeadModel, AutoConfig
config = AutoConfig.from_pretrained(
<span class="hljs-string">&quot;gpt2&quot;</span>,
vocab_size=<span class="hljs-built_in">len</span>(tokenizer),
n_ctx=context_length,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
model = TFGPT2LMHeadModel(config)`,wrap:!1}}),{c(){d(a.$$.fragment)},l(l){m(a.$$.fragment,l)},m(l,y){u(a,l,y),o=!0},i(l){o||(c(a.$$.fragment,l),o=!0)},o(l){p(a.$$.fragment,l),o=!1},d(l){M(a,l)}}}function lt(J){let a,o;return a=new L({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEdQVDJMTUhlYWRNb2RlbCUyQyUyMEF1dG9Db25maWclMEElMEFjb25maWclMjAlM0QlMjBBdXRvQ29uZmlnLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJncHQyJTIyJTJDJTBBJTIwJTIwJTIwJTIwdm9jYWJfc2l6ZSUzRGxlbih0b2tlbml6ZXIpJTJDJTBBJTIwJTIwJTIwJTIwbl9jdHglM0Rjb250ZXh0X2xlbmd0aCUyQyUwQSUyMCUyMCUyMCUyMGJvc190b2tlbl9pZCUzRHRva2VuaXplci5ib3NfdG9rZW5faWQlMkMlMEElMjAlMjAlMjAlMjBlb3NfdG9rZW5faWQlM0R0b2tlbml6ZXIuZW9zX3Rva2VuX2lkJTJDJTBBKSUwQSUwQW1vZGVsJTIwJTNEJTIwR1BUMkxNSGVhZE1vZGVsKGNvbmZpZyk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> GPT2LMHeadModel, AutoConfig
config = AutoConfig.from_pretrained(
<span class="hljs-string">&quot;gpt2&quot;</span>,
vocab_size=<span class="hljs-built_in">len</span>(tokenizer),
n_ctx=context_length,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
model = GPT2LMHeadModel(config)`,wrap:!1}}),{c(){d(a.$$.fragment)},l(l){m(a.$$.fragment,l)},m(l,y){u(a,l,y),o=!0},i(l){o||(c(a.$$.fragment,l),o=!0)},o(l){p(a.$$.fragment,l),o=!1},d(l){M(a,l)}}}function at(J){let a,o,l,y,j,O,$,ee,_,te,w,g,q,k,je="Hasta ahora hemos partido de modelos preentrenados. En esta sección seguiremos el camino opuesto: entrenaremos desde cero un modelo de lenguaje causal para completar código Python.",le,C,ae,I,$e="Nos centraremos en un subconjunto del stack de ciencia de datos en Python para construir una versión reducida de un modelo de autocompletado.",se,Z,ne,R,_e="Partimos de <code>codeparrot</code>, un gran corpus de código Python. Como el conjunto completo es enorme, lo filtramos para quedarnos con archivos que usen librerías como <code>pandas</code>, <code>sklearn</code>, <code>matplotlib</code> y <code>seaborn</code>.",oe,v,re,G,ke="Luego cargamos el subconjunto ya filtrado:",ie,W,pe,E,ce,z,Ce="Tokenizamos el código y lo dividimos en ventanas cortas de contexto:",de,X,me,V,ue,B,Ie="Usaremos una configuración similar a GPT-2 pequeño:",Me,T,U,D,x,ye,A,Ze="Para modelado causal usamos <code>DataCollatorForLanguageModeling</code> con <code>mlm=False</code>:",fe,F,be,Q,Re="En PyTorch puede entrenarse con <code>Trainer</code>; en TensorFlow, con <code>prepare_tf_dataset()</code> y <code>model.fit()</code>.",Je,N,ve="La idea central es simple: el modelo aprende a predecir el siguiente token de código a partir del contexto anterior. Con suficientes datos y cómputo, este enfoque produce modelos capaces de autocompletar código con bastante utilidad práctica.",we,H,ge,P,Te;j=new Ke({props:{fw:J[0]}}),$=new De({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),_=new K({props:{title:"Entrenar un modelo de lenguaje causal desde cero",local:"training-a-causal-language-model-from-scratch",headingTag:"h1"}});const Ge=[et,Oe],Y=[];function We(e,t){return e[0]==="pt"?0:1}w=We(J),g=Y[w]=Ge[w](J),C=new Pe({props:{id:"Vpjb1lu0MDk"}}),Z=new K({props:{title:"Recopilar los datos",local:"gathering-the-data",headingTag:"h2"}}),v=new L({props:{code:"ZGVmJTIwYW55X2tleXdvcmRfaW5fc3RyaW5nKHN0cmluZyUyQyUyMGtleXdvcmRzKSUzQSUwQSUyMCUyMCUyMCUyMGZvciUyMGtleXdvcmQlMjBpbiUyMGtleXdvcmRzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBrZXl3b3JkJTIwaW4lMjBzdHJpbmclM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBUcnVlJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwRmFsc2U=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">any_keyword_in_string</span>(<span class="hljs-params">string, keywords</span>):
<span class="hljs-keyword">for</span> keyword <span class="hljs-keyword">in</span> keywords:
<span class="hljs-keyword">if</span> keyword <span class="hljs-keyword">in</span> string:
<span class="hljs-keyword">return</span> <span class="hljs-literal">True</span>
<span class="hljs-keyword">return</span> <span class="hljs-literal">False</span>`,wrap:!1}}),W=new L({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwRGF0YXNldERpY3QlMEElMEFkc190cmFpbiUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJodWdnaW5nZmFjZS1jb3Vyc2UlMkZjb2RlcGFycm90LWRzLXRyYWluJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEFkc192YWxpZCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJodWdnaW5nZmFjZS1jb3Vyc2UlMkZjb2RlcGFycm90LWRzLXZhbGlkJTIyJTJDJTIwc3BsaXQlM0QlMjJ2YWxpZGF0aW9uJTIyKSUwQSUwQXJhd19kYXRhc2V0cyUyMCUzRCUyMERhdGFzZXREaWN0KCU3QiUyMnRyYWluJTIyJTNBJTIwZHNfdHJhaW4lMkMlMjAlMjJ2YWxpZCUyMiUzQSUyMGRzX3ZhbGlkJTdEKQ==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, DatasetDict
ds_train = load_dataset(<span class="hljs-string">&quot;huggingface-course/codeparrot-ds-train&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
ds_valid = load_dataset(<span class="hljs-string">&quot;huggingface-course/codeparrot-ds-valid&quot;</span>, split=<span class="hljs-string">&quot;validation&quot;</span>)
raw_datasets = DatasetDict({<span class="hljs-string">&quot;train&quot;</span>: ds_train, <span class="hljs-string">&quot;valid&quot;</span>: ds_valid})`,wrap:!1}}),E=new K({props:{title:"Preparar el conjunto de datos",local:"preparing-the-dataset",headingTag:"h2"}}),X=new L({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjb250ZXh0X2xlbmd0aCUyMCUzRCUyMDEyOCUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmh1Z2dpbmdmYWNlLWNvdXJzZSUyRmNvZGUtc2VhcmNoLW5ldC10b2tlbml6ZXIlMjIpJTBBJTBBJTBBZGVmJTIwdG9rZW5pemUoZWxlbWVudCklM0ElMEElMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwdG9rZW5pemVyKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVsZW1lbnQlNUIlMjJjb250ZW50JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtYXhfbGVuZ3RoJTNEY29udGV4dF9sZW5ndGglMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm5fb3ZlcmZsb3dpbmdfdG9rZW5zJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybl9sZW5ndGglM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMGlucHV0X2JhdGNoJTIwJTNEJTIwJTVCJTVEJTBBJTIwJTIwJTIwJTIwZm9yJTIwbGVuZ3RoJTJDJTIwaW5wdXRfaWRzJTIwaW4lMjB6aXAob3V0cHV0cyU1QiUyMmxlbmd0aCUyMiU1RCUyQyUyMG91dHB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQpJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBsZW5ndGglMjAlM0QlM0QlMjBjb250ZXh0X2xlbmd0aCUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0X2JhdGNoLmFwcGVuZChpbnB1dF9pZHMpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIyaW5wdXRfaWRzJTIyJTNBJTIwaW5wdXRfYmF0Y2glN0QlMEElMEElMEF0b2tlbml6ZWRfZGF0YXNldHMlMjAlM0QlMjByYXdfZGF0YXNldHMubWFwKCUwQSUyMCUyMCUyMCUyMHRva2VuaXplJTJDJTIwYmF0Y2hlZCUzRFRydWUlMkMlMjByZW1vdmVfY29sdW1ucyUzRHJhd19kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELmNvbHVtbl9uYW1lcyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
context_length = <span class="hljs-number">128</span>
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;huggingface-course/code-search-net-tokenizer&quot;</span>)
<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize</span>(<span class="hljs-params">element</span>):
outputs = tokenizer(
element[<span class="hljs-string">&quot;content&quot;</span>],
truncation=<span class="hljs-literal">True</span>,
max_length=context_length,
return_overflowing_tokens=<span class="hljs-literal">True</span>,
return_length=<span class="hljs-literal">True</span>,
)
input_batch = []
<span class="hljs-keyword">for</span> length, input_ids <span class="hljs-keyword">in</span> <span class="hljs-built_in">zip</span>(outputs[<span class="hljs-string">&quot;length&quot;</span>], outputs[<span class="hljs-string">&quot;input_ids&quot;</span>]):
<span class="hljs-keyword">if</span> length == context_length:
input_batch.append(input_ids)
<span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;input_ids&quot;</span>: input_batch}
tokenized_datasets = raw_datasets.<span class="hljs-built_in">map</span>(
tokenize, batched=<span class="hljs-literal">True</span>, remove_columns=raw_datasets[<span class="hljs-string">&quot;train&quot;</span>].column_names
)`,wrap:!1}}),V=new K({props:{title:"Inicializar un modelo nuevo",local:"initializing-a-new-model",headingTag:"h2"}});const Ee=[lt,tt],S=[];function ze(e,t){return e[0]==="pt"?0:1}return T=ze(J),U=S[T]=Ee[T](J),x=new K({props:{title:"Data collator y entrenamiento",local:"training",headingTag:"h2"}}),F=new L({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvckZvckxhbmd1YWdlTW9kZWxpbmclMEElMEF0b2tlbml6ZXIucGFkX3Rva2VuJTIwJTNEJTIwdG9rZW5pemVyLmVvc190b2tlbiUwQWRhdGFfY29sbGF0b3IlMjAlM0QlMjBEYXRhQ29sbGF0b3JGb3JMYW5ndWFnZU1vZGVsaW5nKHRva2VuaXplciUyQyUyMG1sbSUzREZhbHNlKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorForLanguageModeling
tokenizer.pad_token = tokenizer.eos_token
data_collator = DataCollatorForLanguageModeling(tokenizer, mlm=<span class="hljs-literal">False</span>)`,wrap:!1}}),H=new Le({props:{source:"https://github.com/huggingface/course/blob/main/chapters/es/chapter7/6.mdx"}}),{c(){a=f("meta"),o=r(),l=f("p"),y=r(),d(j.$$.fragment),O=r(),d($.$$.fragment),ee=r(),d(_.$$.fragment),te=r(),g.c(),q=r(),k=f("p"),k.textContent=je,le=r(),d(C.$$.fragment),ae=r(),I=f("p"),I.textContent=$e,se=r(),d(Z.$$.fragment),ne=r(),R=f("p"),R.innerHTML=_e,oe=r(),d(v.$$.fragment),re=r(),G=f("p"),G.textContent=ke,ie=r(),d(W.$$.fragment),pe=r(),d(E.$$.fragment),ce=r(),z=f("p"),z.textContent=Ce,de=r(),d(X.$$.fragment),me=r(),d(V.$$.fragment),ue=r(),B=f("p"),B.textContent=Ie,Me=r(),U.c(),D=r(),d(x.$$.fragment),ye=r(),A=f("p"),A.innerHTML=Ze,fe=r(),d(F.$$.fragment),be=r(),Q=f("p"),Q.innerHTML=Re,Je=r(),N=f("p"),N.textContent=ve,we=r(),d(H.$$.fragment),ge=r(),P=f("p"),this.h()},l(e){const t=Se("svelte-u9bgzb",document.head);a=b(t,"META",{name:!0,content:!0}),t.forEach(s),o=i(e),l=b(e,"P",{}),Ve(l).forEach(s),y=i(e),m(j.$$.fragment,e),O=i(e),m($.$$.fragment,e),ee=i(e),m(_.$$.fragment,e),te=i(e),g.l(e),q=i(e),k=b(e,"P",{"data-svelte-h":!0}),h(k)!=="svelte-15m510q"&&(k.textContent=je),le=i(e),m(C.$$.fragment,e),ae=i(e),I=b(e,"P",{"data-svelte-h":!0}),h(I)!=="svelte-1pctdo6"&&(I.textContent=$e),se=i(e),m(Z.$$.fragment,e),ne=i(e),R=b(e,"P",{"data-svelte-h":!0}),h(R)!=="svelte-131mry9"&&(R.innerHTML=_e),oe=i(e),m(v.$$.fragment,e),re=i(e),G=b(e,"P",{"data-svelte-h":!0}),h(G)!=="svelte-u572qn"&&(G.textContent=ke),ie=i(e),m(W.$$.fragment,e),pe=i(e),m(E.$$.fragment,e),ce=i(e),z=b(e,"P",{"data-svelte-h":!0}),h(z)!=="svelte-1y0l0qc"&&(z.textContent=Ce),de=i(e),m(X.$$.fragment,e),me=i(e),m(V.$$.fragment,e),ue=i(e),B=b(e,"P",{"data-svelte-h":!0}),h(B)!=="svelte-hm0px2"&&(B.textContent=Ie),Me=i(e),U.l(e),D=i(e),m(x.$$.fragment,e),ye=i(e),A=b(e,"P",{"data-svelte-h":!0}),h(A)!=="svelte-1xh5w9q"&&(A.innerHTML=Ze),fe=i(e),m(F.$$.fragment,e),be=i(e),Q=b(e,"P",{"data-svelte-h":!0}),h(Q)!=="svelte-i1g9bj"&&(Q.innerHTML=Re),Je=i(e),N=b(e,"P",{"data-svelte-h":!0}),h(N)!=="svelte-avat7g"&&(N.textContent=ve),we=i(e),m(H.$$.fragment,e),ge=i(e),P=b(e,"P",{}),Ve(P).forEach(s),this.h()},h(){Be(a,"name","hf:doc:metadata"),Be(a,"content",st)},m(e,t){qe(document.head,a),n(e,o,t),n(e,l,t),n(e,y,t),u(j,e,t),n(e,O,t),u($,e,t),n(e,ee,t),u(_,e,t),n(e,te,t),Y[w].m(e,t),n(e,q,t),n(e,k,t),n(e,le,t),u(C,e,t),n(e,ae,t),n(e,I,t),n(e,se,t),u(Z,e,t),n(e,ne,t),n(e,R,t),n(e,oe,t),u(v,e,t),n(e,re,t),n(e,G,t),n(e,ie,t),u(W,e,t),n(e,pe,t),u(E,e,t),n(e,ce,t),n(e,z,t),n(e,de,t),u(X,e,t),n(e,me,t),u(V,e,t),n(e,ue,t),n(e,B,t),n(e,Me,t),S[T].m(e,t),n(e,D,t),u(x,e,t),n(e,ye,t),n(e,A,t),n(e,fe,t),u(F,e,t),n(e,be,t),n(e,Q,t),n(e,Je,t),n(e,N,t),n(e,we,t),u(H,e,t),n(e,ge,t),n(e,P,t),Te=!0},p(e,[t]){const Xe={};t&1&&(Xe.fw=e[0]),j.$set(Xe);let Ue=w;w=We(e),w!==Ue&&(Ae(),p(Y[Ue],1,1,()=>{Y[Ue]=null}),xe(),g=Y[w],g||(g=Y[w]=Ge[w](e),g.c()),c(g,1),g.m(q.parentNode,q));let he=T;T=ze(e),T!==he&&(Ae(),p(S[he],1,1,()=>{S[he]=null}),xe(),U=S[T],U||(U=S[T]=Ee[T](e),U.c()),c(U,1),U.m(D.parentNode,D))},i(e){Te||(c(j.$$.fragment,e),c($.$$.fragment,e),c(_.$$.fragment,e),c(g),c(C.$$.fragment,e),c(Z.$$.fragment,e),c(v.$$.fragment,e),c(W.$$.fragment,e),c(E.$$.fragment,e),c(X.$$.fragment,e),c(V.$$.fragment,e),c(U),c(x.$$.fragment,e),c(F.$$.fragment,e),c(H.$$.fragment,e),Te=!0)},o(e){p(j.$$.fragment,e),p($.$$.fragment,e),p(_.$$.fragment,e),p(g),p(C.$$.fragment,e),p(Z.$$.fragment,e),p(v.$$.fragment,e),p(W.$$.fragment,e),p(E.$$.fragment,e),p(X.$$.fragment,e),p(V.$$.fragment,e),p(U),p(x.$$.fragment,e),p(F.$$.fragment,e),p(H.$$.fragment,e),Te=!1},d(e){e&&(s(o),s(l),s(y),s(O),s(ee),s(te),s(q),s(k),s(le),s(ae),s(I),s(se),s(ne),s(R),s(oe),s(re),s(G),s(ie),s(pe),s(ce),s(z),s(de),s(me),s(ue),s(B),s(Me),s(D),s(ye),s(A),s(fe),s(be),s(Q),s(Je),s(N),s(we),s(ge),s(P)),s(a),M(j,e),M($,e),M(_,e),Y[w].d(e),M(C,e),M(Z,e),M(v,e),M(W,e),M(E,e),M(X,e),M(V,e),S[T].d(e),M(x,e),M(F,e),M(H,e)}}}const st='{"title":"Entrenar un modelo de lenguaje causal desde cero","local":"training-a-causal-language-model-from-scratch","sections":[{"title":"Recopilar los datos","local":"gathering-the-data","sections":[],"depth":2},{"title":"Preparar el conjunto de datos","local":"preparing-the-dataset","sections":[],"depth":2},{"title":"Inicializar un modelo nuevo","local":"initializing-a-new-model","sections":[],"depth":2},{"title":"Data collator y entrenamiento","local":"training","sections":[],"depth":2}],"depth":1}';function nt(J,a,o){let l="pt";return Ne(()=>{const y=new URLSearchParams(window.location.search);o(0,l=y.get("fw")||"pt")}),[l]}class ut extends He{constructor(a){super(),Ye(this,a,nt,at,Qe,{})}}export{ut as component};

Xet Storage Details

Size:
16.6 kB
·
Xet hash:
4987bc344a8cd7a99cbc6e65a006ddcf883d188323baee3caa5fab15b545c497

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