Skip to content

Commit 8881e58

Browse files
mfumanellisgugger
andauthored
Italian/model sharing (#17828)
* Add Italian translation of the doc file model_sharing.mdx * Fix style * Fix typo * Update docs/source/it/_toctree.yml Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com>
1 parent 0d971be commit 8881e58

File tree

2 files changed

+236
-0
lines changed

2 files changed

+236
-0
lines changed

docs/source/it/_toctree.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
title: Preprocess
1616
- local: training
1717
title: Mettere a punto un modello pre-addestrato
18+
- local: model_sharing
19+
title: Condividere un modello
1820
title: Esercitazione
1921
- sections:
2022
- local: run_scripts

docs/source/it/model_sharing.mdx

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
<!--Copyright 2022 The HuggingFace Team. All rights reserved.
2+
3+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
4+
the License. You may obtain a copy of the License at
5+
6+
http://www.apache.org/licenses/LICENSE-2.0
7+
8+
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
9+
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
10+
specific language governing permissions and limitations under the License.
11+
-->
12+
13+
# Condividi un modello
14+
15+
Gli ultimi due tutorial ti hanno mostrato come puoi fare fine-tuning di un modello con PyTorch, Keras e 🤗 Accelerate per configurazioni distribuite. Il prossimo passo è quello di condividere il tuo modello con la community! In Hugging Face, crediamo nella condivisione della conoscenza e delle risorse in modo da democratizzare l'intelligenza artificiale per chiunque. Ti incoraggiamo a considerare di condividere il tuo modello con la community per aiutare altre persone a risparmiare tempo e risorse.
16+
17+
In questo tutorial, imparerai due metodi per la condivisione di un modello trained o fine-tuned nel [Model Hub](https://huggingface.co/models):
18+
19+
- Condividi in modo programmatico i tuoi file nell'Hub.
20+
- Trascina i tuoi file nell'Hub mediante interfaccia grafica.
21+
22+
<iframe width="560" height="315" src="https://www.youtube.com/embed/XvSGPZFEjDY" title="YouTube video player"
23+
frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope;
24+
picture-in-picture" allowfullscreen></iframe>
25+
26+
<Tip>
27+
28+
Per condividere un modello con la community, hai bisogno di un account su [huggingface.co](https://huggingface.co/join). Puoi anche unirti ad un'organizzazione esistente o crearne una nuova.
29+
30+
</Tip>
31+
32+
## Caratteristiche dei repository
33+
34+
Ogni repository nel Model Hub si comporta come un tipico repository di GitHub. I nostri repository offrono il versionamento, la cronologia dei commit, e la possibilità di visualizzare le differenze.
35+
36+
Il versionamento all'interno del Model Hub è basato su git e [git-lfs](https://git-lfs.github.com/). In altre parole, puoi trattare un modello come un unico repository, consentendo un maggiore controllo degli accessi e maggiore scalabilità. Il controllo delle versioni consente *revisions*, un metodo per appuntare una versione specifica di un modello con un hash di commit, un tag o un branch.
37+
38+
Come risultato, puoi caricare una specifica versione di un modello con il parametro `revision`:
39+
40+
```py
41+
>>> model = AutoModel.from_pretrained(
42+
... "julien-c/EsperBERTo-small", revision="v2.0.1" # nome di un tag, di un branch, o commit hash
43+
... )
44+
```
45+
46+
Anche i file possono essere modificati facilmente in un repository ed è possibile visualizzare la cronologia dei commit e le differenze:
47+
48+
![vis_diff](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/vis_diff.png)
49+
50+
## Configurazione
51+
52+
Prima di condividere un modello nell'Hub, hai bisogno delle tue credenziali di Hugging Face. Se hai accesso ad un terminale, esegui il seguente comando nell'ambiente virtuale in cui è installata la libreria 🤗 Transformers. Questo memorizzerà il tuo token di accesso nella cartella cache di Hugging Face (di default `~/.cache/`):
53+
54+
```bash
55+
huggingface-cli login
56+
```
57+
58+
Se stai usando un notebook come Jupyter o Colaboratory, assicurati di avere la libreria [`huggingface_hub`](https://huggingface.co/docs/hub/adding-a-library) installata. Questa libreria ti permette di interagire in maniera programmatica con l'Hub.
59+
60+
```bash
61+
pip install huggingface_hub
62+
```
63+
64+
Utilizza `notebook_login` per accedere all'Hub, e segui il link [qui](https://huggingface.co/settings/token) per generare un token con cui effettuare il login:
65+
66+
```py
67+
>>> from huggingface_hub import notebook_login
68+
69+
>>> notebook_login()
70+
```
71+
72+
## Converti un modello per tutti i framework
73+
74+
Per assicurarti che il tuo modello possa essere utilizzato da persone che lavorano con un framework differente, ti raccomandiamo di convertire e caricare il tuo modello sia con i checkpoint di PyTorch che con quelli di TensorFlow. Anche se è possibile caricare il modello da un framework diverso, se si salta questo passaggio, il caricamento sarà più lento perché 🤗 Transformers ha bisogno di convertire i checkpoint al momento.
75+
76+
Convertire un checkpoint per un altro framework è semplice. Assicurati di avere PyTorch e TensorFlow installati (vedi [qui](installation) per le istruzioni d'installazione), e poi trova il modello specifico per il tuo compito nell'altro framework.
77+
78+
<frameworkcontent>
79+
<pt>
80+
Specifica `from_tf=True` per convertire un checkpoint da TensorFlow a PyTorch:
81+
82+
```py
83+
>>> pt_model = DistilBertForSequenceClassification.from_pretrained(
84+
... "path/verso/il-nome-magnifico-che-hai-scelto", from_tf=True
85+
... )
86+
>>> pt_model.save_pretrained("path/verso/il-nome-magnifico-che-hai-scelto")
87+
```
88+
</pt>
89+
<tf>
90+
Specifica `from_pt=True` per convertire un checkpoint da PyTorch a TensorFlow:
91+
92+
```py
93+
>>> tf_model = TFDistilBertForSequenceClassification.from_pretrained(
94+
... "path/verso/il-nome-magnifico-che-hai-scelto", from_pt=True
95+
... )
96+
```
97+
98+
Poi puoi salvare il tuo nuovo modello in TensorFlow con il suo nuovo checkpoint:
99+
100+
```py
101+
>>> tf_model.save_pretrained("path/verso/il-nome-magnifico-che-hai-scelto")
102+
```
103+
</tf>
104+
<jax>
105+
Se un modello è disponibile in Flax, puoi anche convertire un checkpoint da PyTorch a Flax:
106+
107+
```py
108+
>>> flax_model = FlaxDistilBertForSequenceClassification.from_pretrained(
109+
... "path/verso/il-nome-magnifico-che-hai-scelto", from_pt=True
110+
... )
111+
```
112+
</jax>
113+
</frameworkcontent>
114+
115+
## Condividi un modello durante il training
116+
117+
<frameworkcontent>
118+
<pt>
119+
<Youtube id="Z1-XMy-GNLQ"/>
120+
121+
Condividere un modello nell'Hub è tanto semplice quanto aggiungere un parametro extra o un callback. Ricorda dal [tutorial sul fine-tuning](training), la classe [`TrainingArguments`] è dove specifichi gli iperparametri e le opzioni addizionali per l'allenamento. Una di queste opzioni di training include l'abilità di condividere direttamente un modello nell'Hub. Imposta `push_to_hub=True` in [`TrainingArguments`]:
122+
123+
```py
124+
>>> training_args = TrainingArguments(output_dir="il-mio-bellissimo-modello", push_to_hub=True)
125+
```
126+
127+
Passa gli argomenti per il training come di consueto al [`Trainer`]:
128+
129+
```py
130+
>>> trainer = Trainer(
131+
... model=model,
132+
... args=training_args,
133+
... train_dataset=small_train_dataset,
134+
... eval_dataset=small_eval_dataset,
135+
... compute_metrics=compute_metrics,
136+
... )
137+
```
138+
139+
Dopo aver effettuato il fine-tuning del tuo modello, chiama [`~transformers.Trainer.push_to_hub`] sul [`Trainer`] per condividere il modello allenato nell'Hub. 🤗 Transformers aggiungerà in modo automatico persino gli iperparametri, i risultati del training e le versioni del framework alla scheda del tuo modello (model card, in inglese)!
140+
141+
```py
142+
>>> trainer.push_to_hub()
143+
```
144+
</pt>
145+
<tf>
146+
Condividi un modello nell'Hub con [`PushToHubCallback`]. Nella funzione [`PushToHubCallback`], aggiungi:
147+
148+
- Una directory di output per il tuo modello.
149+
- Un tokenizer.
150+
- L'`hub_model_id`, che è il tuo username sull'Hub e il nome del modello.
151+
152+
```py
153+
>>> from transformers.keras.callbacks import PushToHubCallback
154+
155+
>>> push_to_hub_callback = PushToHubCallback(
156+
... output_dir="./il_path_dove_salvare_il_tuo_modello",
157+
... tokenizer=tokenizer,
158+
... hub_model_id="il-tuo-username/il-mio-bellissimo-modello",
159+
... )
160+
```
161+
162+
Aggiungi il callback a [`fit`](https://keras.io/api/models/model_training_apis/), e 🤗 Transformers caricherà il modello allenato nell'Hub:
163+
164+
```py
165+
>>> model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=3, callbacks=push_to_hub_callback)
166+
```
167+
</tf>
168+
</frameworkcontent>
169+
170+
## Utilizzare la funzione `push_to_hub`
171+
172+
Puoi anche chiamare `push_to_hub` direttamente sul tuo modello per caricarlo nell'Hub.
173+
174+
Specifica il nome del tuo modello in `push_to_hub`:
175+
176+
```py
177+
>>> pt_model.push_to_hub("il-mio-bellissimo-modello")
178+
```
179+
180+
Questo crea un repository sotto il proprio username con il nome del modello `il-mio-bellissimo-modello`. Ora chiunque può caricare il tuo modello con la funzione `from_pretrained`:
181+
182+
```py
183+
>>> from transformers import AutoModel
184+
185+
>>> model = AutoModel.from_pretrained("il-tuo-username/il-mio-bellissimo-modello")
186+
```
187+
188+
Se fai parte di un'organizzazione e vuoi invece condividere un modello sotto il nome dell'organizzazione, aggiungi il parametro `organization`:
189+
190+
```py
191+
>>> pt_model.push_to_hub("il-mio-bellissimo-modello", organization="la-mia-fantastica-org")
192+
```
193+
194+
La funzione `push_to_hub` può essere anche utilizzata per aggiungere altri file al repository del modello. Per esempio, aggiungi un tokenizer ad un repository di un modello:
195+
196+
```py
197+
>>> tokenizer.push_to_hub("il-mio-bellissimo-modello")
198+
```
199+
200+
O magari potresti voler aggiungere la versione di TensorFlow del tuo modello PyTorch a cui hai fatto fine-tuning:
201+
202+
```py
203+
>>> tf_model.push_to_hub("il-mio-bellissimo-modello")
204+
```
205+
206+
Ora quando navighi nel tuo profilo Hugging Face, dovresti vedere il tuo repository del modello appena creato. Premendo sulla scheda **Files** vengono visualizzati tutti i file caricati nel repository.
207+
208+
Per maggiori dettagli su come creare e caricare file ad un repository, fai riferimento alla documentazione [qui](https://huggingface.co/docs/hub/how-to-upstream).
209+
210+
## Carica un modello utilizzando l'interfaccia web
211+
212+
Chi preferisce un approccio senza codice può caricare un modello tramite l'interfaccia web dell'hub. Visita [huggingface.co/new](https://huggingface.co/new) per creare un nuovo repository:
213+
214+
![new_model_repo](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/new_model_repo.png)
215+
216+
Da qui, aggiungi alcune informazioni sul tuo modello:
217+
218+
- Seleziona il/la **owner** del repository. Puoi essere te o qualunque organizzazione di cui fai parte.
219+
- Scegli un nome per il tuo modello, il quale sarà anche il nome del repository.
220+
- Scegli se il tuo modello è pubblico o privato.
221+
- Specifica la licenza utilizzata per il tuo modello.
222+
223+
Ora premi sulla scheda **Files** e premi sul pulsante **Add file** per caricare un nuovo file al tuo repository. Trascina poi un file per caricarlo e aggiungere un messaggio di commit.
224+
225+
![upload_file](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/upload_file.png)
226+
227+
## Aggiungi una scheda del modello
228+
229+
Per assicurarti che chiunque possa comprendere le abilità, limitazioni, i potenziali bias e le considerazioni etiche del tuo modello, per favore aggiungi una scheda del modello (model card, in inglese) al tuo repository. La scheda del modello è definita nel file `README.md`. Puoi aggiungere una scheda del modello:
230+
231+
* Creando manualmente e caricando un file `README.md`.
232+
* Premendo sul pulsante **Edit model card** nel repository del tuo modello.
233+
234+
Dai un'occhiata alla [scheda del modello](https://huggingface.co/distilbert-base-uncased) di DistilBert per avere un buon esempio del tipo di informazioni che una scheda di un modello deve includere. Per maggiori dettagli legati ad altre opzioni che puoi controllare nel file `README.md`, come l'impatto ambientale o widget di esempio, fai riferimento alla documentazione [qui](https://huggingface.co/docs/hub/model-repos).

0 commit comments

Comments
 (0)