Buckets:

download
raw
66.2 kB
<meta charset="utf-8" /><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;Migrazione da pacchetti precedenti&quot;,&quot;local&quot;:&quot;migrazione-da-pacchetti-precedenti&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Migrazione da transformers v3.x a v4.x&quot;,&quot;local&quot;:&quot;migrazione-da-transformers-v3x-a-v4x&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;1. AutoTokenizer e pipeline ora utilizzano tokenizer veloci (rust) per impostazione predefinita.&quot;,&quot;local&quot;:&quot;1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento di v3.x in v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;2. SentencePiece è stato rimosso dalle dipendenze richieste&quot;,&quot;local&quot;:&quot;2-sentencepiece-è-stato-rimosso-dalle-dipendenze-richieste&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento della v3.x nella v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;3. L’architettura delle repo è stato aggiornata in modo che ogni modello abbia la propria cartella&quot;,&quot;local&quot;:&quot;3-larchitettura-delle-repo-è-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento della v3.x nella v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;4. Impostare l’argomento return_dict su True per impostazione predefinita&quot;,&quot;local&quot;:&quot;4-impostare-largomento-returndict-su-true-per-impostazione-predefinita&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento della v3.x nella v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;5. Rimozione di alcuni attributi deprecati&quot;,&quot;local&quot;:&quot;5-rimozione-di-alcuni-attributi-deprecati&quot;,&quot;sections&quot;:[],&quot;depth&quot;:4}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Passaggio da pytorch-transformers a 🤗 Transformers&quot;,&quot;local&quot;:&quot;passaggio-da-pytorch-transformers-a--transformers&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;L’ordine posizionale di alcune parole chiave di input dei modelli ( attention_mask , token_type_ids …) è cambiato&quot;,&quot;local&quot;:&quot;lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli--attentionmask--tokentypeids--è-cambiato&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Migrazione da pytorch-pretrained-bert&quot;,&quot;local&quot;:&quot;migrazione-da-pytorch-pretrained-bert&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;I modelli restituiscono sempre tuple&quot;,&quot;local&quot;:&quot;i-modelli-restituiscono-sempre-tuple&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;Serializzazione&quot;,&quot;local&quot;:&quot;serializzazione&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;Ottimizzatori: BertAdam e OpenAIAdam ora sono AdamW, lo scheduling è quello standard PyTorch&quot;,&quot;local&quot;:&quot;ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-è-quello-standard-pytorch&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2}],&quot;depth&quot;:1}">
<link href="/docs/transformers/pr_33913/it/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/entry/start.cef8f86b.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/scheduler.36a0863c.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/singletons.39cd3b38.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/index.733708bb.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/paths.64312358.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/entry/app.d399d34f.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/index.9c13489a.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/nodes/0.7859fb6f.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/each.e59479a4.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/nodes/14.f8d7849b.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/CodeBlock.05d8ec32.js">
<link rel="modulepreload" href="/docs/transformers/pr_33913/it/_app/immutable/chunks/EditOnGithub.e88f2b7b.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;Migrazione da pacchetti precedenti&quot;,&quot;local&quot;:&quot;migrazione-da-pacchetti-precedenti&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Migrazione da transformers v3.x a v4.x&quot;,&quot;local&quot;:&quot;migrazione-da-transformers-v3x-a-v4x&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;1. AutoTokenizer e pipeline ora utilizzano tokenizer veloci (rust) per impostazione predefinita.&quot;,&quot;local&quot;:&quot;1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento di v3.x in v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;2. SentencePiece è stato rimosso dalle dipendenze richieste&quot;,&quot;local&quot;:&quot;2-sentencepiece-è-stato-rimosso-dalle-dipendenze-richieste&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento della v3.x nella v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;3. L’architettura delle repo è stato aggiornata in modo che ogni modello abbia la propria cartella&quot;,&quot;local&quot;:&quot;3-larchitettura-delle-repo-è-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento della v3.x nella v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;4. Impostare l’argomento return_dict su True per impostazione predefinita&quot;,&quot;local&quot;:&quot;4-impostare-largomento-returndict-su-true-per-impostazione-predefinita&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Come ottenere lo stesso comportamento della v3.x nella v4.x&quot;,&quot;local&quot;:&quot;come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x&quot;,&quot;sections&quot;:[],&quot;depth&quot;:5}],&quot;depth&quot;:4},{&quot;title&quot;:&quot;5. Rimozione di alcuni attributi deprecati&quot;,&quot;local&quot;:&quot;5-rimozione-di-alcuni-attributi-deprecati&quot;,&quot;sections&quot;:[],&quot;depth&quot;:4}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Passaggio da pytorch-transformers a 🤗 Transformers&quot;,&quot;local&quot;:&quot;passaggio-da-pytorch-transformers-a--transformers&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;L’ordine posizionale di alcune parole chiave di input dei modelli ( attention_mask , token_type_ids …) è cambiato&quot;,&quot;local&quot;:&quot;lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli--attentionmask--tokentypeids--è-cambiato&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2},{&quot;title&quot;:&quot;Migrazione da pytorch-pretrained-bert&quot;,&quot;local&quot;:&quot;migrazione-da-pytorch-pretrained-bert&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;I modelli restituiscono sempre tuple&quot;,&quot;local&quot;:&quot;i-modelli-restituiscono-sempre-tuple&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;Serializzazione&quot;,&quot;local&quot;:&quot;serializzazione&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3},{&quot;title&quot;:&quot;Ottimizzatori: BertAdam e OpenAIAdam ora sono AdamW, lo scheduling è quello standard PyTorch&quot;,&quot;local&quot;:&quot;ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-è-quello-standard-pytorch&quot;,&quot;sections&quot;:[],&quot;depth&quot;:3}],&quot;depth&quot;:2}],&quot;depth&quot;:1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <h1 class="relative group"><a id="migrazione-da-pacchetti-precedenti" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#migrazione-da-pacchetti-precedenti"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Migrazione da pacchetti precedenti</span></h1> <h2 class="relative group"><a id="migrazione-da-transformers-v3x-a-v4x" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#migrazione-da-transformers-v3x-a-v4x"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Migrazione da transformers v3.x a v4.x</span></h2> <p data-svelte-h="svelte-668hq5">Un paio di modifiche sono state introdotte nel passaggio dalla versione 3 alla versione 4. Di seguito è riportato un riepilogo delle
modifiche previste:</p> <h4 class="relative group"><a id="1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#1-autotokenizer-e-pipeline-ora-utilizzano-tokenizer-veloci-rust-per-impostazione-predefinita"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>1. AutoTokenizer e pipeline ora utilizzano tokenizer veloci (rust) per impostazione predefinita.</span></h4> <p data-svelte-h="svelte-gf1el4">I tokenizer python e rust hanno all’incirca le stesse API, ma i tokenizer rust hanno un set di funzionalità più completo.</p> <p data-svelte-h="svelte-1m5uxey">Ciò introduce due modifiche sostanziali:</p> <ul data-svelte-h="svelte-57nl0c"><li>La gestione dei token in overflow tra i tokenizer Python e Rust è diversa.</li> <li>I tokenizers di rust non accettano numeri interi nei metodi di codifica.</li></ul> <h5 class="relative group"><a id="come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#come-ottenere-lo-stesso-comportamento-di-v3x-in-v4x"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Come ottenere lo stesso comportamento di v3.x in v4.x</span></h5> <ul data-svelte-h="svelte-1jqlgbo"><li>Le pipeline ora contengono funzionalità aggiuntive pronte all’uso. Vedi la <a href="main_classes/pipelines#transformers.TokenClassificationPipeline">pipeline di classificazione dei token con il flag <code>grouped_entities</code></a>.</li> <li>Gli auto-tokenizer ora restituiscono tokenizer rust. Per ottenere invece i tokenizer python, l’utente deve usare il flag <code>use_fast</code> impostandolo <code>False</code>:</li></ul> <p data-svelte-h="svelte-s7f1fx">Nella versione <code>v3.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1ggfn91">per ottenere lo stesso nella versione <code>v4.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>, use_fast=<span class="hljs-literal">False</span>)<!-- HTML_TAG_END --></pre></div> <h4 class="relative group"><a id="2-sentencepiece-è-stato-rimosso-dalle-dipendenze-richieste" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#2-sentencepiece-è-stato-rimosso-dalle-dipendenze-richieste"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>2. SentencePiece è stato rimosso dalle dipendenze richieste</span></h4> <p data-svelte-h="svelte-1yqxt38">Il requisito sulla dipendenza SentencePiece è stato rimosso da <code>setup.py</code>. È stato fatto per avere un canale su anaconda cloud senza basarsi su <code>conda-forge</code>. Ciò significa che i tokenizer che dipendono dalla libreria SentencePiece non saranno disponibili con un’installazione standard di <code>transformers</code>.</p> <p data-svelte-h="svelte-7vgiw8">Ciò include le versioni <strong>lente</strong> di:</p> <ul data-svelte-h="svelte-gqa7ea"><li><code>XLNetTokenizer</code></li> <li><code>AlbertTokenizer</code></li> <li><code>CamembertTokenizer</code></li> <li><code>MBartTokenizer</code></li> <li><code>PegasusTokenizer</code></li> <li><code>T5Tokenizer</code></li> <li><code>ReformerTokenizer</code></li> <li><code>XLMRobertaTokenizer</code></li></ul> <h5 class="relative group"><a id="come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Come ottenere lo stesso comportamento della v3.x nella v4.x</span></h5> <p data-svelte-h="svelte-e0qch8">Per ottenere lo stesso comportamento della versione <code>v3.x</code>, devi installare anche <code>sentencepiece</code>:</p> <p data-svelte-h="svelte-s7f1fx">Nella versione <code>v3.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->pip install transformers<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1ggfn91">per ottenere lo stesso nella versione <code>v4.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->pip install transformers[sentencepiece]<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1cem39h">o</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->pip install transformers stentencepiece<!-- HTML_TAG_END --></pre></div> <h4 class="relative group"><a id="3-larchitettura-delle-repo-è-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#3-larchitettura-delle-repo-è-stato-aggiornata-in-modo-che-ogni-modello-abbia-la-propria-cartella"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>3. L’architettura delle repo è stato aggiornata in modo che ogni modello abbia la propria cartella</span></h4> <p data-svelte-h="svelte-1d9aumn">Con l’aggiunta di nuovi modelli, il numero di file nella cartella <code>src/transformers</code> continua a crescere e diventa più difficile navigare e capire. Abbiamo fatto la scelta di inserire ogni modello e i file che lo accompagnano nelle proprie sottocartelle.</p> <p data-svelte-h="svelte-z35xty">Si tratta di una modifica sostanziale in quanto l’importazione di layer intermedi utilizzando direttamente il modulo di un modello deve essere eseguita tramite un percorso diverso.</p> <h5 class="relative group"><a id="come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Come ottenere lo stesso comportamento della v3.x nella v4.x</span></h5> <p data-svelte-h="svelte-1syye96">Per ottenere lo stesso comportamento della versione <code>v3.x</code>, devi aggiornare il percorso utilizzato per accedere ai layer.</p> <p data-svelte-h="svelte-s7f1fx">Nella versione <code>v3.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->from transformers.modeling_bert import BertLayer<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1ggfn91">per ottenere lo stesso nella versione <code>v4.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->from transformers.models.bert.modeling_bert import BertLayer<!-- HTML_TAG_END --></pre></div> <h4 class="relative group"><a id="4-impostare-largomento-returndict-su-true-per-impostazione-predefinita" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#4-impostare-largomento-returndict-su-true-per-impostazione-predefinita"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>4. Impostare l’argomento return_dict su True per impostazione predefinita</span></h4> <p data-svelte-h="svelte-15fnb1f">L’<a href="main_classes/output">argomento <code>return_dict</code></a> abilita la restituzione di oggetti python dict-like contenenti gli output del modello, invece delle tuple standard. Questo oggetto è self-documented poiché le chiavi possono essere utilizzate per recuperare valori, comportandosi anche come una tupla e gli utenti possono recuperare oggetti per indexing o slicing.</p> <p data-svelte-h="svelte-6z85oe">Questa è una modifica sostanziale poiché la tupla non può essere decompressa: <code>value0, value1 = outputs</code> non funzionerà.</p> <h5 class="relative group"><a id="come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#come-ottenere-lo-stesso-comportamento-della-v3x-nella-v4x"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Come ottenere lo stesso comportamento della v3.x nella v4.x</span></h5> <p data-svelte-h="svelte-1bl6pbd">Per ottenere lo stesso comportamento della versione <code>v3.x</code>, specifica l’argomento <code>return_dict</code> come <code>False</code>, sia nella configurazione del modello che nel passaggio successivo.</p> <p data-svelte-h="svelte-s7f1fx">Nella versione <code>v3.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->model = BertModel.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)
outputs = model(**inputs)<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1ggfn91">per ottenere lo stesso nella versione <code>v4.x</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->model = BertModel.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>)
outputs = model(**inputs, return_dict=False)<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-1cem39h">o</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->model = BertModel.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-cased&quot;</span>, return_dict=False)
outputs = model(**inputs)<!-- HTML_TAG_END --></pre></div> <h4 class="relative group"><a id="5-rimozione-di-alcuni-attributi-deprecati" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#5-rimozione-di-alcuni-attributi-deprecati"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>5. Rimozione di alcuni attributi deprecati</span></h4> <p data-svelte-h="svelte-1jgy8li">Gli attributi sono stati rimossi se deprecati da almeno un mese. L’elenco completo degli attributi obsoleti è disponibile in <a href="https://github.com/huggingface/transformers/pull/8604" rel="nofollow">#8604</a>.</p> <p data-svelte-h="svelte-1jjvwm4">Ecco un elenco di questi attributi/metodi/argomenti e quali dovrebbero essere le loro sostituzioni:</p> <p data-svelte-h="svelte-ykanzw">In diversi modelli, le etichette diventano coerenti con gli altri modelli:</p> <ul data-svelte-h="svelte-19g3nxw"><li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>AlbertForMaskedLM</code> e <code>AlbertForPreTraining</code>.</li> <li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>BertForMaskedLM</code> e <code>BertForPreTraining</code>.</li> <li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>DistilBertForMaskedLM</code>.</li> <li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>ElectraForMaskedLM</code>.</li> <li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>LongformerForMaskedLM</code>.</li> <li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>MobileBertForMaskedLM</code>.</li> <li><code>masked_lm_labels</code> diventa <code>labels</code> in <code>RobertaForMaskedLM</code>.</li> <li><code>lm_labels</code> diventa <code>labels</code> in <code>BartForConditionalGeneration</code>.</li> <li><code>lm_labels</code> diventa <code>labels</code> in <code>GPT2DoubleHeadsModel</code>.</li> <li><code>lm_labels</code> diventa <code>labels</code> in <code>OpenAIGPTDoubleHeadsModel</code>.</li> <li><code>lm_labels</code> diventa <code>labels</code> in <code>T5ForConditionalGeneration</code>.</li></ul> <p data-svelte-h="svelte-ja413z">In diversi modelli, il meccanismo di memorizzazione nella cache diventa coerente con gli altri:</p> <ul data-svelte-h="svelte-1wt3yrf"><li><code>decoder_cached_states</code> diventa <code>past_key_values</code> in tutti i modelli BART-like, FSMT e T5.</li> <li><code>decoder_past_key_values</code> diventa <code>past_key_values</code> in tutti i modelli BART-like, FSMT e T5.</li> <li><code>past</code> diventa <code>past_key_values</code> in tutti i modelli CTRL.</li> <li><code>past</code> diventa <code>past_key_values</code> in tutti i modelli GPT-2.</li></ul> <p data-svelte-h="svelte-1hgabrv">Per quanto riguarda le classi tokenizer:</p> <ul data-svelte-h="svelte-31xrbn"><li>L’attributo tokenizer <code>max_len</code> diventa <code>model_max_length</code>.</li> <li>L’attributo tokenizer <code>return_lengths</code> diventa <code>return_length</code>.</li> <li>L’argomento di codifica del tokenizer <code>is_pretokenized</code> diventa <code>is_split_into_words</code>.</li></ul> <p data-svelte-h="svelte-170kx12">Per quanto riguarda la classe <code>Trainer</code>:</p> <ul data-svelte-h="svelte-1d9dzd2"><li>L’argomento <code>tb_writer</code> di <code>Trainer</code> è stato rimosso in favore della funzione richiamabile <code>TensorBoardCallback(tb_writer=...)</code>.</li> <li>L’argomento <code>prediction_loss_only</code> di <code>Trainer</code> è stato rimosso in favore dell’argomento di classe <code>args.prediction_loss_only</code>.</li> <li>L’attributo <code>data_collator</code> di <code>Trainer</code> sarà richiamabile.</li> <li>Il metodo <code>_log</code> di <code>Trainer</code> è deprecato a favore di <code>log</code>.</li> <li>Il metodo <code>_training_step</code> di <code>Trainer</code> è deprecato a favore di <code>training_step</code>.</li> <li>Il metodo <code>_prediction_loop</code> di <code>Trainer</code> è deprecato a favore di <code>prediction_loop</code>.</li> <li>Il metodo <code>is_local_master</code> di <code>Trainer</code> è deprecato a favore di <code>is_local_process_zero</code>.</li> <li>Il metodo <code>is_world_master</code> di <code>Trainer</code> è deprecato a favore di <code>is_world_process_zero</code>.</li></ul> <p data-svelte-h="svelte-uuss7p">Per quanto riguarda la classe <code>TrainingArguments</code>:</p> <ul data-svelte-h="svelte-1e9eo3a"><li>L’argomento <code>evaluate_during_training</code> di <code>TrainingArguments</code> è deprecato a favore di <code>eval_strategy</code>.</li></ul> <p data-svelte-h="svelte-13a2h9b">Per quanto riguarda il modello Transfo-XL:</p> <ul data-svelte-h="svelte-g6j8ra"><li>L’attributo di configurazione <code>tie_weight</code> di Transfo-XL diventa <code>tie_words_embeddings</code>.</li> <li>Il metodo di modellazione <code>reset_length</code> di Transfo-XL diventa <code>reset_memory_length</code>.</li></ul> <p data-svelte-h="svelte-1k2o8s3">Per quanto riguarda le pipeline:</p> <ul data-svelte-h="svelte-8otb07"><li>L’argomento <code>topk</code> di <code>FillMaskPipeline</code> diventa <code>top_k</code>.</li></ul> <h2 class="relative group"><a id="passaggio-da-pytorch-transformers-a--transformers" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#passaggio-da-pytorch-transformers-a--transformers"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Passaggio da pytorch-transformers a 🤗 Transformers</span></h2> <p data-svelte-h="svelte-l36xrj">Ecco un breve riepilogo di ciò a cui prestare attenzione durante il passaggio da <code>pytorch-transformers</code> a 🤗 Transformers.</p> <h3 class="relative group"><a id="lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli--attentionmask--tokentypeids--è-cambiato" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#lordine-posizionale-di-alcune-parole-chiave-di-input-dei-modelli--attentionmask--tokentypeids--è-cambiato"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>L’ordine posizionale di alcune parole chiave di input dei modelli ( attention_mask , token_type_ids …) è cambiato</span></h3> <p data-svelte-h="svelte-seplpo">Per usare Torchscript (vedi #1010, #1204 e #1195) l’ordine specifico delle <strong>parole chiave di input</strong> di alcuni modelli (<code>attention_mask</code>, <code>token_type_ids</code>…) è stato modificato.</p> <p data-svelte-h="svelte-1ro2lsk">Se inizializzavi i modelli usando parole chiave per gli argomenti, ad esempio <code>model(inputs_ids, attention_mask=attention_mask, token_type_ids=token_type_ids)</code>, questo non dovrebbe causare alcun cambiamento.</p> <p data-svelte-h="svelte-1plbv18">Se inizializzavi i modelli con input posizionali per gli argomenti, ad esempio <code>model(inputs_ids, attention_mask, token_type_ids)</code>, potrebbe essere necessario ricontrollare l’ordine esatto degli argomenti di input.</p> <h2 class="relative group"><a id="migrazione-da-pytorch-pretrained-bert" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#migrazione-da-pytorch-pretrained-bert"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Migrazione da pytorch-pretrained-bert</span></h2> <p data-svelte-h="svelte-q2e62a">Ecco un breve riepilogo di ciò a cui prestare attenzione durante la migrazione da <code>pytorch-pretrained-bert</code> a 🤗 Transformers</p> <h3 class="relative group"><a id="i-modelli-restituiscono-sempre-tuple" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#i-modelli-restituiscono-sempre-tuple"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>I modelli restituiscono sempre tuple</span></h3> <p data-svelte-h="svelte-4cf5r">La principale modifica di rilievo durante la migrazione da <code>pytorch-pretrained-bert</code> a 🤗 Transformers è che il metodo dei modelli di previsione dà sempre una <code>tupla</code> con vari elementi a seconda del modello e dei parametri di configurazione.</p> <p data-svelte-h="svelte-bgxvfx">Il contenuto esatto delle tuple per ciascun modello è mostrato in dettaglio nelle docstring dei modelli e nella <a href="https://huggingface.co/transformers/" rel="nofollow">documentazione</a>.</p> <p data-svelte-h="svelte-1jfesn2">In quasi tutti i casi, andrà bene prendendo il primo elemento dell’output come quello che avresti precedentemente utilizzato in <code>pytorch-pretrained-bert</code>.</p> <p data-svelte-h="svelte-83adx7">Ecco un esempio di conversione da <code>pytorch-pretrained-bert</code>
a 🤗 Transformers per un modello di classificazione <code>BertForSequenceClassification</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-comment"># Carichiamo il nostro modello</span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-uncased&quot;</span>)
<span class="hljs-comment"># Se usavi questa riga in pytorch-pretrained-bert :</span>
loss = model(input_ids, labels=labels)
<span class="hljs-comment"># Ora usa questa riga in 🤗 Transformers per estrarre la perdita dalla tupla di output:</span>
outputs = model(input_ids, labels=labels)
loss = outputs[<span class="hljs-number">0</span>]
<span class="hljs-comment"># In 🤗 Transformers puoi anche avere accesso ai logit:</span>
loss, logits = outputs[:<span class="hljs-number">2</span>]
<span class="hljs-comment"># Ed anche agli attention weight se configuri il modello per restituirli (e anche altri output, vedi le docstring e la documentazione)</span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot; google-bert/bert-base-uncased&quot;</span>, output_attentions=<span class="hljs-literal">True</span>)
outputs = model(input_ids, labels=labels)
loss, logits, attentions = outputs<!-- HTML_TAG_END --></pre></div> <h3 class="relative group"><a id="serializzazione" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#serializzazione"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Serializzazione</span></h3> <p data-svelte-h="svelte-1d5f1v">Modifica sostanziale nel metodo <code>from_pretrained()</code>:</p> <ol data-svelte-h="svelte-5qzntw"><li><p>I modelli sono ora impostati in modalità di valutazione in maniera predefinita quando usi il metodo <code>from_pretrained()</code>. Per addestrarli non dimenticare di riportarli in modalità di addestramento (<code>model.train()</code>) per attivare i moduli di dropout.</p></li> <li><p>Gli argomenti aggiuntivi <code>*inputs</code> e <code>**kwargs</code> forniti al metodo <code>from_pretrained()</code> venivano passati direttamente al metodo <code>__init__()</code> della classe sottostante del modello. Ora sono usati per aggiornare prima l’attributo di configurazione del modello, che può non funzionare con le classi del modello derivate costruite basandosi sui precedenti esempi di <code>BertForSequenceClassification</code>. Più precisamente, gli argomenti posizionali <code>*inputs</code> forniti a <code>from_pretrained()</code> vengono inoltrati direttamente al metodo <code>__init__()</code> del modello mentre gli argomenti keyword <code>**kwargs</code> (i) che corrispondono agli attributi della classe di configurazione, vengono utilizzati per aggiornare tali attributi (ii) che non corrispondono ad alcun attributo della classe di configurazione, vengono inoltrati al metodo <code>__init__()</code>.</p></li></ol> <p data-svelte-h="svelte-1pjusnp">Inoltre, sebbene non si tratti di una modifica sostanziale, i metodi di serializzazione sono stati standardizzati e probabilmente dovresti passare al nuovo metodo <code>save_pretrained(save_directory)</code> se prima usavi qualsiasi altro metodo di serializzazione.</p> <p data-svelte-h="svelte-1nimzcx">Ecco un esempio:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-comment">### Carichiamo un modello e un tokenizer</span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-uncased&quot;</span>)
tokenizer = BertTokenizer.from_pretrained(<span class="hljs-string">&quot;google-bert/bert-base-uncased&quot;</span>)
<span class="hljs-comment">### Facciamo fare alcune cose al nostro modello e tokenizer</span>
<span class="hljs-comment"># Es: aggiungiamo nuovi token al vocabolario e agli embending del nostro modello</span>
tokenizer.add_tokens([<span class="hljs-string">&quot;[SPECIAL_TOKEN_1]&quot;</span>, <span class="hljs-string">&quot;[SPECIAL_TOKEN_2]&quot;</span>])
model.resize_token_embeddings(<span class="hljs-built_in">len</span>(tokenizer))
<span class="hljs-comment"># Alleniamo il nostro modello</span>
train(model)
<span class="hljs-comment">### Ora salviamo il nostro modello e il tokenizer in una cartella</span>
model.save_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>)
tokenizer.save_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>)
<span class="hljs-comment">### Ricarichiamo il modello e il tokenizer</span>
model = BertForSequenceClassification.from_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>)
tokenizer = BertTokenizer.from_pretrained(<span class="hljs-string">&quot;./my_saved_model_directory/&quot;</span>)<!-- HTML_TAG_END --></pre></div> <h3 class="relative group"><a id="ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-è-quello-standard-pytorch" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#ottimizzatori-bertadam-e-openaiadam-ora-sono-adamw-lo-scheduling-è-quello-standard-pytorch"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Ottimizzatori: BertAdam e OpenAIAdam ora sono AdamW, lo scheduling è quello standard PyTorch</span></h3> <p data-svelte-h="svelte-2o9zch">I due ottimizzatori precedenti inclusi, <code>BertAdam</code> e <code>OpenAIAdam</code>, sono stati sostituiti da un singolo <code>AdamW</code> che presenta alcune differenze:</p> <ul data-svelte-h="svelte-15b1x1u"><li>implementa solo la correzione del weights decay,</li> <li>lo scheduling ora è esterno (vedi sotto),</li> <li>anche il gradient clipping ora è esterno (vedi sotto).</li></ul> <p data-svelte-h="svelte-5iz2eq">Il nuovo ottimizzatore <code>AdamW</code> corrisponde alle API di <code>Adam</code> di PyTorch e ti consente di utilizzare metodi PyTorch o apex per lo scheduling e il clipping.</p> <p data-svelte-h="svelte-18bzze7">Lo scheduling è ora standard <a href="https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate" rel="nofollow">PyTorch learning rate schedulers</a> e non fanno più parte dell’ottimizzatore.</p> <p data-svelte-h="svelte-hz6tan">Ecco un esempio di linear warmup e decay con <code>BertAdam</code> e con <code>AdamW</code>:</p> <div class="code-block relative"><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-comment"># Parametri:</span>
lr = <span class="hljs-number">1e-3</span>
max_grad_norm = <span class="hljs-number">1.0</span>
num_training_steps = <span class="hljs-number">1000</span>
num_warmup_steps = <span class="hljs-number">100</span>
warmup_proportion = <span class="hljs-built_in">float</span>( num_warmup_steps) / <span class="hljs-built_in">float</span>(num_training_steps) <span class="hljs-comment"># 0.1</span>
<span class="hljs-comment">### In precedenza l&#x27;ottimizzatore BertAdam veniva istanziato in questo modo:</span>
optimizer = BertAdam(
model.parameters(),
lr=lr,
schedule=<span class="hljs-string">&quot;warmup_linear&quot;</span>,
warmup=warmup_proportion,
num_training_steps=num_training_steps,
)
<span class="hljs-comment">### e usato in questo modo:</span>
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_data:
loss = model(batch)
loss.backward()
optimizer.step()
<span class="hljs-comment">### In 🤗 Transformers, ottimizzatore e schedule sono divisi e usati in questo modo:</span>
optimizer = AdamW(
model.parameters(), lr=lr, correct_bias=<span class="hljs-literal">False</span>
) <span class="hljs-comment"># Per riprodurre il comportamento specifico di BertAdam impostare correct_bias=False</span>
scheduler = get_linear_schedule_with_warmup(
optimizer, num_warmup_steps=num_warmup_steps, num_training_steps=num_training_steps
) <span class="hljs-comment"># PyTorch scheduler</span>
<span class="hljs-comment">### e va usato così:</span>
<span class="hljs-keyword">for</span> batch <span class="hljs-keyword">in</span> train_data:
loss = model(batch)
loss.backward()
torch.nn.utils.clip_grad_norm_(
model.parameters(), max_grad_norm
) <span class="hljs-comment"># Gradient clipping non è più in AdamW (quindi puoi usare amp senza problemi)</span>
optimizer.step()
scheduler.step()<!-- HTML_TAG_END --></pre></div> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/transformers/blob/main/docs/source/it/migration.md" target="_blank"><span data-svelte-h="svelte-1kd6by1">&lt;</span> <span data-svelte-h="svelte-x0xyl0">&gt;</span> <span data-svelte-h="svelte-1dajgef"><span class="underline ml-1.5">Update</span> on GitHub</span></a> <p></p>
<script>
{
__sveltekit_728xau = {
assets: "/docs/transformers/pr_33913/it",
base: "/docs/transformers/pr_33913/it",
env: {}
};
const element = document.currentScript.parentElement;
const data = [null,null];
Promise.all([
import("/docs/transformers/pr_33913/it/_app/immutable/entry/start.cef8f86b.js"),
import("/docs/transformers/pr_33913/it/_app/immutable/entry/app.d399d34f.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 14],
data,
form: null,
error: null
});
});
}
</script>

Xet Storage Details

Size:
66.2 kB
·
Xet hash:
101a8361e9e59ddab94a2e5290275687d42ebafa8b58d913aca137071d73faf3

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