# AutoModel

[AutoModel](/docs/diffusers/main/zh/api/models/auto_model#diffusers.AutoModel) 会自动从检查点的 `config.json` 文件中获取正确的模型类。

## AutoModel[[diffusers.AutoModel]]

#### diffusers.AutoModel[[diffusers.AutoModel]]

```python
diffusers.AutoModel(*args, **kwargs)
```

[源代码](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/auto_model.py#L27)

#### from_pretrained[[diffusers.AutoModel.from_pretrained]]

```python
from_pretrained(pretrained_model_or_path: str | os.PathLike | None = None, **kwargs)
```

[源代码](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/auto_model.py#L155)

**参数：**

pretrained_model_name_or_path (`str` 或 `os.PathLike`，*可选*) : 可以是以下之一：  - 一个字符串，即托管在 Hub 上的预训练模型的 *model id*（例如 `google/ddpm-celebahq-256`）。 - 一个 *目录* 的路径（例如 `./my_model_directory`），其中包含使用 [save_pretrained()](/docs/diffusers/main/zh/api/models/overview#diffusers.ModelMixin.save_pretrained) 保存的模型权重。

cache_dir (`str | os.PathLike`，*可选*)：如果未使用标准缓存，则已下载的预训练模型配置将缓存到的目录路径。

dtype (`torch.dtype`，*可选*)：覆盖默认的 `torch.dtype`，并使用其他 dtype 加载模型。

force_download (`bool`，*可选*，默认为 `False`)：是否强制（重新）下载模型权重和配置文件，如果存在缓存版本则覆盖它们。

proxies (`dict[str, str]`，*可选*)：一个字典，用于按协议或端点指定要使用的代理服务器，例如 `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`。每次请求都会使用这些代理。

output_loading_info (`bool`，*可选*，默认为 `False`)：是否同时返回一个包含缺失键、意外键和错误消息的字典。

local_files_only(`bool`，*可选*，默认为 `False`)：是否仅加载本地的模型权重和配置文件。如果设置为 `True`，则不会从 Hub 下载模型。

token (`str` 或 *bool*，*可选*) : 用于远程文件的 HTTP 承载者授权令牌。如果为 `True`，则使用由 `diffusers-cli login` 生成的令牌（存储在 `~/.huggingface` 中）。

revision (`str`，*可选*，默认为 `"main"`)：要使用的特定模型版本。它可以是分支名称、标签名称、提交 ID，或 Git 允许的任何标识符。

subfolder (`str`，*可选*，默认为 `""`)：模型文件在 Hub 或本地的大型模型仓库中的子文件夹位置。

mirror (`str`, *可选*) : 用于解决在中国下载模型时可能遇到的访问问题的镜像源。我们不保证该源的时效性或安全性，详情请参阅镜像站点。

device_map (`str` 或 `dict[str, int | str | torch.device]`，*可选*)：一个映射，用于指定每个子模块应放置的位置。无需为每个参数/缓冲区名称单独定义；只要某个模块名称包含在内，其所有子模块都会被发送到同一设备。默认为 `None`，表示模型将在 CPU 上加载。设置 `device_map="auto"` 可让 🤗 Accelerate 自动计算最优的 `device_map`。有关各选项的更多信息，请参阅 [设计设备映射](https://hf.co/docs/accelerate/main/en/usage_guides/big_modeling#designing-a-device-map)。

max_memory (`Dict`, *可选*) : 用于指定最大内存的设备标识符字典。如果未设置，则默认为每个 GPU 的最大可用内存和可用的 CPU 内存。

offload_folder (`str` 或 `os.PathLike`，*可选*) : 如果 `device_map` 包含值 `"disk"`，则指定用于卸载权重的路径。

offload_state_dict (`bool`, *可选*) : 如果为 `True`，则临时将 CPU 状态字典卸载到硬盘，以避免在 CPU 状态字典的权重加上检查点中最大的分片无法容纳时耗尽 CPU 内存。当存在磁盘卸载时，默认值为 `True`。

low_cpu_mem_usage (`bool`，*可选*，如果 torch 版本 >= 1.9.0 则默认为 `True`，否则为 `False`)：通过仅加载预训练权重而不初始化权重来加速模型加载。加载模型时，此参数还尝试将 CPU 内存使用量（包括峰值内存）控制在不超过 1 倍模型大小。仅支持 PyTorch >= 1.9.0。如果您使用的是旧版本的 PyTorch，将此参数设置为 `True` 将引发错误。

variant (`str`, *可选*) : 从指定的 `variant` 文件名（例如 `"fp16"` 或 `"ema"`）加载权重。

use_safetensors (`bool`，*可选*，默认为 `None`)：如果设置为 `None`，则在 `safetensors` 权重可用**且**已安装 `safetensors` 库的情况下，会下载 `safetensors` 权重。如果设置为 `True`，则强制从 `safetensors` 权重加载模型。如果设置为 `False`，则不加载 `safetensors` 权重。

disable_mmap ('bool', *可选*，默认为 'False')：是否在加载 Safetensors 模型时禁用 mmap。当模型位于网络挂载点或硬盘上时，此选项可能表现更佳，因为这些存储设备可能无法很好地处理 mmap 的频繁寻址操作。

trust_remote_cocde (`bool`，*可选*，默认为 `False`)：是否信任远程代码

从预训练模型配置实例化一个预训练的 PyTorch 模型。

模型默认处于评估模式 - `model.eval()` - ，且 dropout 模块已被禁用。若要训练模型，请使用 `model.train()` 将其切换回训练模式。

> [!TIP] > 若要使用私有或 [受限模型](https://huggingface.co/docs/hub/models-gated#gated-models)，请先登录
使用 `hf > auth login`。您还可以启用特殊的 > ["offline-mode"](https://huggingface.co/diffusers/installation.html#offline-mode)，以便在防火墙环境中使用此方法。

示例：

```py
from diffusers import AutoModel

unet = AutoModel.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5", subfolder="unet")
```

如果出现以下错误消息，您需要针对下游任务微调权重：

```bash
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
```

#### from_config[[diffusers.AutoModel.from_config]]

```python
from_config(pretrained_model_name_or_path_or_dict: str | os.PathLike | dict | None = None, **kwargs)
```

[源代码](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/auto_model.py#L38)

**参数：**

pretrained_model_name_or_path_or_dict (`str`、`os.PathLike` 或 `dict`)：可以是以下之一： - 一个字符串，即托管在 Hub 上的预训练模型配置的 *model id*（例如 `google/ddpm-celebahq-256`）。 - 一个指向包含模型配置文件的*目录*的路径（例如 `./my_model_directory`）。 - 一个配置字典。

cache_dir (`Union[str, os.PathLike]`，*可选*)：如果未使用标准缓存，则已下载的预训练模型配置将缓存到的目录路径。

force_download (`bool`，*可选*，默认为 `False`)：是否强制（重新）下载模型配置，如果存在缓存版本则覆盖它。

proxies (`Dict[str, str]`，*可选*)：一个字典，用于按协议或端点指定要使用的代理服务器。

local_files_only(`bool`，*可选*，默认为 `False`)：是否仅加载本地模型配置文件。

token (`str` 或 *bool*，*可选*)：用于远程文件的 HTTP 承载者授权令牌。

revision (`str`，*可选*，默认为 `"main"`)：要使用的特定模型版本。

trust_remote_code (`bool`，*可选*，默认为 `False`)：是否信任远程代码。

subfolder (`str`，*可选*，默认为 `""`)：模型文件在 Hub 或本地的大型模型仓库中的子文件夹位置。

**返回值：**

一个从配置实例化、权重随机的模型对象。

从配置字典或预训练模型配置文件实例化一个模型，并使用随机权重（不加载任何预训练权重）。

示例：

```py
from diffusers import AutoModel

model = AutoModel.from_config("stable-diffusion-v1-5/stable-diffusion-v1-5", subfolder="unet")
```

