mirror of
https://github.com/huggingface/transformers.git
synced 2025-07-07 23:00:08 +06:00

* doc: update W&B related doc * doc(wandb): mention report_to * doc(wandb): commit suggestion Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com> * doc(wandb): fix typo * doc(wandb): remove WANDB_DISABLED Co-authored-by: Sylvain Gugger <35901082+sgugger@users.noreply.github.com>
227 lines
9.9 KiB
Markdown
227 lines
9.9 KiB
Markdown
<!---
|
|
Copyright 2020 The HuggingFace Team. All rights reserved.
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
# Examples
|
|
|
|
This folder contains actively maintained examples of use of 🤗 Transformers organized along NLP tasks. If you are looking for an example that used to
|
|
be in this folder, it may have moved to our [research projects](https://github.com/huggingface/transformers/tree/master/examples/research_projects) subfolder (which contains frozen snapshots of research projects).
|
|
|
|
## Important note
|
|
|
|
**Important**
|
|
|
|
To make sure you can successfully run the latest versions of the example scripts, you have to **install the library from source** and install some example-specific requirements. To do this, execute the following steps in a new virtual environment:
|
|
```bash
|
|
git clone https://github.com/huggingface/transformers
|
|
cd transformers
|
|
pip install .
|
|
```
|
|
Then cd in the example folder of your choice and run
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
Alternatively, you can run the version of the examples as they were for your current version of Transformers via (for instance with v3.5.1):
|
|
```bash
|
|
git checkout tags/v3.5.1
|
|
```
|
|
|
|
## The Big Table of Tasks
|
|
|
|
Here is the list of all our examples:
|
|
- with information on whether they are **built on top of `Trainer`/`TFTrainer`** (if not, they still work, they might
|
|
just lack some features),
|
|
- whether or not they leverage the [🤗 Datasets](https://github.com/huggingface/datasets) library.
|
|
- links to **Colab notebooks** to walk through the scripts and run them easily,
|
|
<!--
|
|
Coming soon!
|
|
- links to **Cloud deployments** to be able to deploy large-scale trainings in the Cloud with little to no setup.
|
|
-->
|
|
|
|
| Task | Example datasets | Trainer support | TFTrainer support | 🤗 Datasets | Colab
|
|
|---|---|:---:|:---:|:---:|:---:|
|
|
| [**`language-modeling`**](https://github.com/huggingface/transformers/tree/master/examples/language-modeling) | Raw text | ✅ | - | ✅ | [](https://colab.research.google.com/github/huggingface/blog/blob/master/notebooks/01_how_to_train.ipynb)
|
|
| [**`multiple-choice`**](https://github.com/huggingface/transformers/tree/master/examples/multiple-choice) | SWAG, RACE, ARC | ✅ | ✅ | ✅ | [](https://colab.research.google.com/github/ViktorAlm/notebooks/blob/master/MPC_GPU_Demo_for_TF_and_PT.ipynb)
|
|
| [**`question-answering`**](https://github.com/huggingface/transformers/tree/master/examples/question-answering) | SQuAD | ✅ | ✅ | ✅ | [](https://colab.research.google.com/github/huggingface/notebooks/blob/master/examples/question_answering.ipynb)
|
|
| [**`summarization`**](https://github.com/huggingface/transformers/tree/master/examples/seq2seq) | CNN/Daily Mail | ✅ | - | - | -
|
|
| [**`text-classification`**](https://github.com/huggingface/transformers/tree/master/examples/text-classification) | GLUE, XNLI | ✅ | ✅ | ✅ | [](https://colab.research.google.com/github/huggingface/notebooks/blob/master/examples/text_classification.ipynb)
|
|
| [**`text-generation`**](https://github.com/huggingface/transformers/tree/master/examples/text-generation) | - | n/a | n/a | - | [](https://colab.research.google.com/github/huggingface/blog/blob/master/notebooks/02_how_to_generate.ipynb)
|
|
| [**`token-classification`**](https://github.com/huggingface/transformers/tree/master/examples/token-classification) | CoNLL NER | ✅ | ✅ | ✅ | [](https://colab.research.google.com/github/huggingface/notebooks/blob/master/examples/token_classification.ipynb)
|
|
| [**`translation`**](https://github.com/huggingface/transformers/tree/master/examples/seq2seq) | WMT | ✅ | - | - | -
|
|
|
|
|
|
<!--
|
|
## One-click Deploy to Cloud (wip)
|
|
|
|
**Coming soon!**
|
|
-->
|
|
|
|
## Distributed training and mixed precision
|
|
|
|
All the PyTorch scripts mentioned above work out of the box with distributed training and mixed precision, thanks to
|
|
the [Trainer API](https://huggingface.co/transformers/main_classes/trainer.html). To launch one of them on _n_ GPUS,
|
|
use the following command:
|
|
|
|
```bash
|
|
python -m torch.distributed.launch \
|
|
--nproc_per_node number_of_gpu_you_have path_to_script.py \
|
|
--all_arguments_of_the_script
|
|
```
|
|
|
|
As an example, here is how you would fine-tune the BERT large model (with whole word masking) on the text
|
|
classification MNLI task using the `run_glue` script, with 8 GPUs:
|
|
|
|
```bash
|
|
python -m torch.distributed.launch \
|
|
--nproc_per_node 8 text-classification/run_glue.py \
|
|
--model_name_or_path bert-large-uncased-whole-word-masking \
|
|
--task_name mnli \
|
|
--do_train \
|
|
--do_eval \
|
|
--max_seq_length 128 \
|
|
--per_device_train_batch_size 8 \
|
|
--learning_rate 2e-5 \
|
|
--num_train_epochs 3.0 \
|
|
--output_dir /tmp/mnli_output/
|
|
```
|
|
|
|
If you have a GPU with mixed precision capabilities (architecture Pascal or more recent), you can use mixed precision
|
|
training with PyTorch 1.6.0 or latest, or by installing the [Apex](https://github.com/NVIDIA/apex) library for previous
|
|
versions. Just add the flag `--fp16` to your command launching one of the scripts mentioned above!
|
|
|
|
Using mixed precision training usually results in 2x-speedup for training with the same final results (as shown in
|
|
[this table](https://github.com/huggingface/transformers/tree/master/examples/text-classification#mixed-precision-training)
|
|
for text classification).
|
|
|
|
## Running on TPUs
|
|
|
|
When using Tensorflow, TPUs are supported out of the box as a `tf.distribute.Strategy`.
|
|
|
|
When using PyTorch, we support TPUs thanks to `pytorch/xla`. For more context and information on how to setup your TPU environment refer to Google's documentation and to the
|
|
very detailed [pytorch/xla README](https://github.com/pytorch/xla/blob/master/README.md).
|
|
|
|
In this repo, we provide a very simple launcher script named
|
|
[xla_spawn.py](https://github.com/huggingface/transformers/tree/master/examples/xla_spawn.py) that lets you run our
|
|
example scripts on multiple TPU cores without any boilerplate. Just pass a `--num_cores` flag to this script, then your
|
|
regular training script with its arguments (this is similar to the `torch.distributed.launch` helper for
|
|
`torch.distributed`):
|
|
|
|
```bash
|
|
python xla_spawn.py --num_cores num_tpu_you_have \
|
|
path_to_script.py \
|
|
--all_arguments_of_the_script
|
|
```
|
|
|
|
As an example, here is how you would fine-tune the BERT large model (with whole word masking) on the text
|
|
classification MNLI task using the `run_glue` script, with 8 TPUs:
|
|
|
|
```bash
|
|
python xla_spawn.py --num_cores 8 \
|
|
text-classification/run_glue.py \
|
|
--model_name_or_path bert-large-uncased-whole-word-masking \
|
|
--task_name mnli \
|
|
--do_train \
|
|
--do_eval \
|
|
--max_seq_length 128 \
|
|
--per_device_train_batch_size 8 \
|
|
--learning_rate 2e-5 \
|
|
--num_train_epochs 3.0 \
|
|
--output_dir /tmp/mnli_output/
|
|
```
|
|
|
|
## Logging & Experiment tracking
|
|
|
|
You can easily log and monitor your runs code. The following are currently supported:
|
|
|
|
* [TensorBoard](https://www.tensorflow.org/tensorboard)
|
|
* [Weights & Biases](https://docs.wandb.ai/integrations/huggingface)
|
|
* [Comet ML](https://www.comet.ml/docs/python-sdk/huggingface/)
|
|
|
|
### Weights & Biases
|
|
|
|
To use Weights & Biases, install the wandb package with:
|
|
|
|
```bash
|
|
pip install wandb
|
|
```
|
|
|
|
Then log in the command line:
|
|
|
|
```bash
|
|
wandb login
|
|
```
|
|
|
|
If you are in Jupyter or Colab, you should login with:
|
|
|
|
```python
|
|
import wandb
|
|
wandb.login()
|
|
```
|
|
|
|
To enable logging to W&B, include `"wandb"` in the `report_to` of your `TrainingArguments` or script. Or just pass along `--report_to all` if you have `wandb` installed.
|
|
|
|
Whenever you use `Trainer` or `TFTrainer` classes, your losses, evaluation metrics, model topology and gradients (for `Trainer` only) will automatically be logged.
|
|
|
|
Advanced configuration is possible by setting environment variables:
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align:left">Environment Variables</th>
|
|
<th style="text-align:left">Options</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="text-align:left">WANDB_LOG_MODEL</td>
|
|
<td style="text-align:left">Log the model as artifact at the end of training (<b>false</b> by default)</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align:left">WANDB_WATCH</td>
|
|
<td style="text-align:left">
|
|
<ul>
|
|
<li><b>gradients</b> (default): Log histograms of the gradients</li>
|
|
<li><b>all</b>: Log histograms of gradients and parameters</li>
|
|
<li><b>false</b>: No gradient or parameter logging</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align:left">WANDB_PROJECT</td>
|
|
<td style="text-align:left">Organize runs by project</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
Set run names with `run_name` argument present in scripts or as part of `TrainingArguments`.
|
|
|
|
Additional configuration options are available through generic [wandb environment variables](https://docs.wandb.com/library/environment-variables).
|
|
|
|
Refer to related [documentation & examples](https://docs.wandb.ai/integrations/huggingface).
|
|
|
|
### Comet.ml
|
|
|
|
To use `comet_ml`, install the Python package with:
|
|
|
|
```bash
|
|
pip install comet_ml
|
|
```
|
|
|
|
or if in a Conda environment:
|
|
|
|
```bash
|
|
conda install -c comet_ml -c anaconda -c conda-forge comet_ml
|
|
```
|