Buckets:
| # AutoModel | |
| La classe [AutoModel](/docs/diffusers/v0.43.0/fr/api/models/auto_model#diffusers.AutoModel) détecte et charge automatiquement la classe de modèle appropriée (UNet, transformer, VAE) à partir d'un fichier `config.json`. Vous n'avez pas besoin de connaître à l'avance le nom spécifique de la classe de modèle. Elle prend en charge les types de données et le placement sur l'appareil, et fonctionne entre les différents types de modèles et les bibliothèques. | |
| L’exemple ci-dessous charge un transformer depuis Diffusers et un encodeur de texte depuis Transformers. Utilisez le paramètre `subfolder` pour spécifier l’emplacement du fichier `config.json` à charger. | |
| ```py | |
| import torch | |
| from diffusers import AutoModel, DiffusionPipeline | |
| transformer = AutoModel.from_pretrained( | |
| "Qwen/Qwen-Image", subfolder="transformer", dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| text_encoder = AutoModel.from_pretrained( | |
| "Qwen/Qwen-Image", subfolder="text_encoder", dtype=torch.bfloat16, device_map="cuda" | |
| ) | |
| ``` | |
| ## Modèles personnalisés | |
| [AutoModel](/docs/diffusers/v0.43.0/fr/api/models/auto_model#diffusers.AutoModel) charge également les modèles du [Hub](https://huggingface.co/models) qui ne sont pas inclus dans Diffusers. Définissez `trust_remote_code=True` dans [AutoModel.from_pretrained()](/docs/diffusers/v0.43.0/fr/api/models/auto_model#diffusers.AutoModel.from_pretrained) pour charger des modèles personnalisés. | |
| Un dépôt de modèle personnalisé nécessite un module Python contenant la classe du modèle, ainsi qu'un `config.json` avec une entrée `auto_map` qui associe `"AutoModel"` à `"module_file.ClassName"`. | |
| ``` | |
| custom/custom-transformer-model/ | |
| ├── config.json | |
| ├── my_model.py | |
| └── diffusion_pytorch_model.safetensors | |
| ``` | |
| Le `config.json` contient le champ `auto_map` pointant vers la classe personnalisée. | |
| ```json | |
| { | |
| "auto_map": { | |
| "AutoModel": "my_model.MyCustomModel" | |
| } | |
| } | |
| ``` | |
| Puis chargez-le avec `trust_remote_code=True`. | |
| ```py | |
| import torch | |
| from diffusers import AutoModel | |
| transformer = AutoModel.from_pretrained( | |
| "custom/custom-transformer-model", trust_remote_code=True, dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| Pour un exemple concret, [Overworld/Waypoint-1-Small](https://huggingface.co/Overworld/Waypoint-1-Small/tree/main/transformer) héberge une classe `WorldModel` personnalisée répartie sur plusieurs modules dans son sous-dossier `transformer`. | |
| ``` | |
| transformer/ | |
| ├── config.json # auto_map: "model.WorldModel" | |
| ├── model.py | |
| ├── attn.py | |
| ├── nn.py | |
| ├── cache.py | |
| ├── quantize.py | |
| ├── __init__.py | |
| └── diffusion_pytorch_model.safetensors | |
| ``` | |
| ```py | |
| import torch | |
| from diffusers import AutoModel | |
| transformer = AutoModel.from_pretrained( | |
| "Overworld/Waypoint-1-Small", subfolder="transformer", trust_remote_code=True, dtype=torch.bfloat16, device_map="cuda" # or "mps", "xpu", "cpu" | |
| ) | |
| ``` | |
| Si le modèle personnalisé hérite de la classe [ModelMixin](/docs/diffusers/v0.43.0/fr/api/models/overview#diffusers.ModelMixin), il accède aux mêmes fonctionnalités que les classes de modèles Diffusers, comme la [compilation régionale](../optimization/fp16#regional-compilation) et le [déchargement par groupe](../optimization/memory#group-offloading). | |
| > [!WARNING] | |
| > Par précaution avec `trust_remote_code=True`, passez un hachage de commit à l'argument `revision` dans [AutoModel.from_pretrained()](/docs/diffusers/v0.43.0/fr/api/models/auto_model#diffusers.AutoModel.from_pretrained) pour vous assurer que le code n'a pas été mis à jour avec du nouveau code malveillant (sauf si vous faites entièrement confiance aux propriétaires du modèle). | |
| > | |
| > ```py | |
| > transformer = AutoModel.from_pretrained( | |
| > "Overworld/Waypoint-1-Small", subfolder="transformer", trust_remote_code=True, revision="a3d8cb2" | |
| > ) | |
| > ``` | |
| ## Enregistrer des modèles personnalisés | |
| Utilisez `register_for_auto_class()` pour ajouter automatiquement l’entrée `auto_map` à `config.json` lors de l’enregistrement. Cela évite d’avoir à modifier manuellement le fichier de configuration. | |
| ```py | |
| # my_model.py | |
| from diffusers import ModelMixin, ConfigMixin | |
| class MyCustomModel(ModelMixin, ConfigMixin): | |
| ... | |
| MyCustomModel.register_for_auto_class("AutoModel") | |
| model = MyCustomModel(...) | |
| model.save_pretrained("./my_model") | |
| ``` | |
| Le fichier `config.json` enregistré inclura le champ `auto_map`. | |
| ```json | |
| { | |
| "auto_map": { | |
| "AutoModel": "my_model.MyCustomModel" | |
| } | |
| } | |
| ``` | |
| ## Étapes suivantes | |
| En savoir plus sur l'implémentation de modèles personnalisés dans le guide [Composants de la communauté](../using-diffusers/custom_pipeline_overview#community-components). | |
Xet Storage Details
- Size:
- 4.78 kB
- Xet hash:
- 451849167db35f593cbc6999bcad444a7436aa897d92922fedbc4a81463ee75f
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.