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

* toctree * not-doctested.txt * collapse sections * feedback * update * rewrite get started sections * fixes * fix * loading models * fix * customize models * share * fix link * contribute part 1 * contribute pt 2 * fix toctree * tokenization pt 1 * Add new model (#32615) * v1 - working version * fix * fix * fix * fix * rename to correct name * fix title * fixup * rename files * fix * add copied from on tests * rename to `FalconMamba` everywhere and fix bugs * fix quantization + accelerate * fix copies * add `torch.compile` support * fix tests * fix tests and add slow tests * copies on config * merge the latest changes * fix tests * add few lines about instruct * Apply suggestions from code review Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> * fix * fix tests --------- Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> * "to be not" -> "not to be" (#32636) * "to be not" -> "not to be" * Update sam.md * Update trainer.py * Update modeling_utils.py * Update test_modeling_utils.py * Update test_modeling_utils.py * fix hfoption tag * tokenization pt. 2 * image processor * fix toctree * backbones * feature extractor * fix file name * processor * update not-doctested * update * make style * fix toctree * revision * make fixup * fix toctree * fix * make style * fix hfoption tag * pipeline * pipeline gradio * pipeline web server * add pipeline * fix toctree * not-doctested * prompting * llm optims * fix toctree * fixes * cache * text generation * fix * chat pipeline * chat stuff * xla * torch.compile * cpu inference * toctree * gpu inference * agents and tools * gguf/tiktoken * finetune * toctree * trainer * trainer pt 2 * optims * optimizers * accelerate * parallelism * fsdp * update * distributed cpu * hardware training * gpu training * gpu training 2 * peft * distrib debug * deepspeed 1 * deepspeed 2 * chat toctree * quant pt 1 * quant pt 2 * fix toctree * fix * fix * quant pt 3 * quant pt 4 * serialization * torchscript * scripts * tpu * review * model addition timeline * modular * more reviews * reviews * fix toctree * reviews reviews * continue reviews * more reviews * modular transformers * more review * zamba2 * fix * all frameworks * pytorch * supported model frameworks * flashattention * rm check_table * not-doctested.txt * rm check_support_list.py * feedback * updates/feedback * review * feedback * fix * update * feedback * updates * update --------- Co-authored-by: Younes Belkada <49240599+younesbelkada@users.noreply.github.com> Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> Co-authored-by: Quentin Gallouédec <45557362+qgallouedec@users.noreply.github.com>
216 lines
8.4 KiB
Markdown
216 lines
8.4 KiB
Markdown
<!--Copyright 2024 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.
|
|
|
|
⚠️ Note that this file is in Markdown but contain specific syntax for our doc-builder (similar to MDX) that may not be
|
|
rendered properly in your Markdown viewer.
|
|
|
|
-->
|
|
|
|
# Sharing
|
|
|
|
The Hugging Face [Hub](https://hf.co/models) is a platform for sharing, discovering, and consuming models of all different types and sizes. We highly recommend sharing your model on the Hub to push open-source machine learning forward for everyone!
|
|
|
|
This guide will show you how to share a model to the Hub from Transformers.
|
|
|
|
## Set up
|
|
|
|
To share a model to the Hub, you need a Hugging Face [account](https://hf.co/join). Create a [User Access Token](https://hf.co/docs/hub/security-tokens#user-access-tokens) (stored in the [cache](./installation#cache-directory) by default) and login to your account from either the command line or notebook.
|
|
|
|
<hfoptions id="share">
|
|
<hfoption id="huggingface-CLI">
|
|
|
|
```bash
|
|
huggingface-cli login
|
|
```
|
|
|
|
</hfoption>
|
|
<hfoption id="notebook">
|
|
|
|
```py
|
|
from huggingface_hub import notebook_login
|
|
|
|
notebook_login()
|
|
```
|
|
|
|
</hfoption>
|
|
</hfoptions>
|
|
|
|
## Repository features
|
|
|
|
<Youtube id="XvSGPZFEjDY"/>
|
|
|
|
Each model repository features versioning, commit history, and diff visualization.
|
|
|
|
<div class="flex justify-center">
|
|
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/vis_diff.png"/>
|
|
</div>
|
|
|
|
Versioning is based on [Git](https://git-scm.com/) and [Git Large File Storage (LFS)](https://git-lfs.github.com/), and it enables revisions, a way to specify a model version with a commit hash, tag or branch.
|
|
|
|
For example, use the `revision` parameter in [`~PreTrainedModel.from_pretrained`] to load a specific model version from a commit hash.
|
|
|
|
```py
|
|
model = AutoModel.from_pretrained(
|
|
"julien-c/EsperBERTo-small", revision="4c77982"
|
|
)
|
|
```
|
|
|
|
Model repositories also support [gating](https://hf.co/docs/hub/models-gated) to control who can access a model. Gating is common for allowing a select group of users to preview a research model before it's made public.
|
|
|
|
<div class="flex justify-center">
|
|
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/gated-model.png"/>
|
|
</div>
|
|
|
|
A model repository also includes an inference [widget](https://hf.co/docs/hub/models-widgets) for users to directly interact with a model on the Hub.
|
|
|
|
Check out the Hub [Models](https://hf.co/docs/hub/models) documentation to for more information.
|
|
|
|
## Model framework conversion
|
|
|
|
Reach a wider audience by making a model available in PyTorch, TensorFlow, and Flax. While users can still load a model if they're using a different framework, it is slower because Transformers needs to convert the checkpoint on the fly. It is faster to convert the checkpoint first.
|
|
|
|
<hfoptions id="convert">
|
|
<hfoption id="PyTorch">
|
|
|
|
Set `from_tf=True` to convert a checkpoint from TensorFlow to PyTorch and then save it.
|
|
|
|
```py
|
|
from transformers import DistilBertForSequenceClassification
|
|
|
|
pt_model = DistilBertForSequenceClassification.from_pretrained("path/to/awesome-name-you-picked", from_tf=True)
|
|
pt_model.save_pretrained("path/to/awesome-name-you-picked")
|
|
```
|
|
|
|
</hfoption>
|
|
<hfoption id="TensorFlow">
|
|
|
|
Set `from_pt=True` to convert a checkpoint from PyTorch to TensorFlow and then save it.
|
|
|
|
```py
|
|
from transformers import TFDistilBertForSequenceClassification
|
|
|
|
tf_model = TFDistilBertForSequenceClassification.from_pretrained("path/to/awesome-name-you-picked", from_pt=True)
|
|
tf_model.save_pretrained("path/to/awesome-name-you-picked")
|
|
```
|
|
|
|
</hfoption>
|
|
<hfoption id="Flax">
|
|
|
|
Set `from_pt=True` to convert a checkpoint from PyTorch to Flax and then save it.
|
|
|
|
```py
|
|
from transformers import FlaxDistilBertForSequenceClassification
|
|
flax_model = FlaxDistilBertForSequenceClassification.from_pretrained(
|
|
"path/to/awesome-name-you-picked", from_pt=True
|
|
)
|
|
flax_model.save_pretrained("path/to/awesome-name-you-picked")
|
|
```
|
|
|
|
</hfoption>
|
|
</hfoptions>
|
|
|
|
## Uploading a model
|
|
|
|
There are several ways to upload a model to the Hub depending on your workflow preference. You can push a model with [`Trainer`], a callback for TensorFlow models, call [`~PreTrainedModel.push_to_hub`] directly on a model, or use the Hub web interface.
|
|
|
|
<Youtube id="Z1-XMy-GNLQ"/>
|
|
|
|
### Trainer
|
|
|
|
[`Trainer`] can push a model directly to the Hub after training. Set `push_to_hub=True` in [`TrainingArguments`] and pass it to [`Trainer`]. Once training is complete, call [`~transformers.Trainer.push_to_hub`] to upload the model.
|
|
|
|
[`~transformers.Trainer.push_to_hub`] automatically adds useful information like training hyperparameters and results to the model card.
|
|
|
|
```py
|
|
from transformers import TrainingArguments, Trainer
|
|
|
|
training_args = TrainingArguments(output_dir="my-awesome-model", push_to_hub=True)
|
|
trainer = Trainer(
|
|
model=model,
|
|
args=training_args,
|
|
train_dataset=small_train_dataset,
|
|
eval_dataset=small_eval_dataset,
|
|
compute_metrics=compute_metrics,
|
|
)
|
|
trainer.push_to_hub()
|
|
```
|
|
|
|
### PushToHubCallback
|
|
|
|
For TensorFlow models, add the [`PushToHubCallback`] to the [fit](https://keras.io/api/models/model_training_apis/#fit-method) method.
|
|
|
|
```py
|
|
from transformers import PushToHubCallback
|
|
|
|
push_to_hub_callback = PushToHubCallback(
|
|
output_dir="./your_model_save_path", tokenizer=tokenizer, hub_model_id="your-username/my-awesome-model"
|
|
)
|
|
model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=3, callbacks=push_to_hub_callback)
|
|
```
|
|
|
|
### PushToHubMixin
|
|
|
|
The [`~utils.PushToHubMixin`] provides functionality for pushing a model or tokenizer to the Hub.
|
|
|
|
Call [`~utils.PushToHubMixin.push_to_hub`] directly on a model to upload it to the Hub. It creates a repository under your namespace with the model name specified in [`~utils.PushToHubMixin.push_to_hub`].
|
|
|
|
```py
|
|
model.push_to_hub("my-awesome-model")
|
|
```
|
|
|
|
Other objects like a tokenizer or TensorFlow model are also pushed to the Hub in the same way.
|
|
|
|
```py
|
|
tokenizer.push_to_hub("my-awesome-model")
|
|
```
|
|
|
|
Your Hugging Face profile should now display the newly created model repository. Navigate to the **Files** tab to see all the uploaded files.
|
|
|
|
Refer to the [Upload files to the Hub](https://hf.co/docs/hub/how-to-upstream) guide for more information about pushing files to the Hub.
|
|
|
|
### Hub web interface
|
|
|
|
The Hub web interface is a no-code approach for uploading a model.
|
|
|
|
1. Create a new repository by selecting [**New Model**](https://huggingface.co/new).
|
|
|
|
<div class="flex justify-center">
|
|
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/new_model_repo.png"/>
|
|
</div>
|
|
|
|
Add some information about your model:
|
|
|
|
- Select the **owner** of the repository. This can be yourself or any of the organizations you belong to.
|
|
- Pick a name for your model, which will also be the repository name.
|
|
- Choose whether your model is public or private.
|
|
- Set the license usage.
|
|
|
|
2. Click on **Create model** to create the model repository.
|
|
|
|
3. Select the **Files** tab and click on the **Add file** button to drag-and-drop a file to your repository. Add a commit message and click on **Commit changes to main** to commit the file.
|
|
|
|
<div class="flex justify-center">
|
|
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/upload_file.png"/>
|
|
</div>
|
|
|
|
## Model card
|
|
|
|
[Model cards](https://hf.co/docs/hub/model-cards#model-cards) inform users about a models performance, limitations, potential biases, and ethical considerations. It is highly recommended to add a model card to your repository!
|
|
|
|
A model card is a `README.md` file in your repository. Add this file by:
|
|
|
|
- manually creating and uploading a `README.md` file
|
|
- clicking on the **Edit model card** button in the repository
|
|
|
|
Take a look at the Llama 3.1 [model card](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct) for an example of what to include on a model card.
|
|
|
|
Learn more about other model card metadata (carbon emissions, license, link to paper, etc.) available in the [Model Cards](https://hf.co/docs/hub/model-cards#model-cards) guide.
|