# 单个文件

[from_single_file()](/docs/diffusers/v0.43.0/zh/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file) 方法允许你加载：

* 以单个文件存储的模型，如果您正在处理来自扩散生态系统的模型（例如 Automatic1111），并且通常依赖单文件布局来存储和共享模型，那么这种方式会很有用。
* 以原始分发布局存储的模型，适用于使用其他服务微调的模型，并可直接加载到 Diffusers 模型对象和流水线中

> [!TIP]
> 阅读[模型文件和布局](../../using-diffusers/other-formats)指南，以了解 Diffusers 多文件夹布局与单文件布局之间的区别，以及如何加载存储在这些不同布局中的模型。

## 支持的管道

- [StableDiffusionPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline)
- [StableDiffusionImg2ImgPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/img2img#diffusers.StableDiffusionImg2ImgPipeline)
- [StableDiffusionInpaintPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/inpaint#diffusers.StableDiffusionInpaintPipeline)
- [StableDiffusionControlNetPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/controlnet#diffusers.StableDiffusionControlNetPipeline)
- [StableDiffusionControlNetImg2ImgPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/controlnet#diffusers.StableDiffusionControlNetImg2ImgPipeline)
- [StableDiffusionControlNetInpaintPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/controlnet#diffusers.StableDiffusionControlNetInpaintPipeline)
- [StableDiffusionUpscalePipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/upscale#diffusers.StableDiffusionUpscalePipeline)
- [StableDiffusionXLPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline)
- [StableDiffusionXLImg2ImgPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLImg2ImgPipeline)
- [StableDiffusionXLInpaintPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLInpaintPipeline)
- [StableDiffusionXLInstructPix2PixPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/pix2pix#diffusers.StableDiffusionXLInstructPix2PixPipeline)
- [StableDiffusionXLControlNetPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/controlnet_sdxl#diffusers.StableDiffusionXLControlNetPipeline)
- `StableDiffusionXLKDiffusionPipeline`
- [StableDiffusion3Pipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/stable_diffusion/stable_diffusion_3#diffusers.StableDiffusion3Pipeline)
- [LatentConsistencyModelPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/latent_consistency_models#diffusers.LatentConsistencyModelPipeline)
- [LatentConsistencyModelImg2ImgPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/latent_consistency_models#diffusers.LatentConsistencyModelImg2ImgPipeline)
- `StableDiffusionControlNetXSPipeline`
- `StableDiffusionXLControlNetXSPipeline`
- [LEditsPPPipelineStableDiffusion](/docs/diffusers/v0.43.0/zh/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion)
- [LEditsPPPipelineStableDiffusionXL](/docs/diffusers/v0.43.0/zh/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL)
- `PIAPipeline`

## 支持的模型

- [UNet2DConditionModel](/docs/diffusers/v0.43.0/zh/api/models/unet2d-cond#diffusers.UNet2DConditionModel)
- `StableCascadeUNet`
- [AutoencoderKL](/docs/diffusers/v0.43.0/zh/api/models/autoencoderkl#diffusers.AutoencoderKL)
- [ControlNetModel](/docs/diffusers/v0.43.0/zh/api/models/controlnet#diffusers.ControlNetModel)
- [SD3Transformer2DModel](/docs/diffusers/v0.43.0/zh/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel)
- [FluxTransformer2DModel](/docs/diffusers/v0.43.0/zh/api/models/flux_transformer#diffusers.FluxTransformer2DModel)

## FromSingleFileMixin[[diffusers.loaders.FromSingleFileMixin]]

#### diffusers.loaders.FromSingleFileMixin[[diffusers.loaders.FromSingleFileMixin]]

```python
diffusers.loaders.FromSingleFileMixin()
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/single_file.py#L243)

将保存在 `.ckpt` 格式中的模型权重加载到 [DiffusionPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/overview#diffusers.DiffusionPipeline) 中。

#### from_single_file[[diffusers.loaders.FromSingleFileMixin.from_single_file]]

```python
from_single_file(pretrained_model_link_or_path, **kwargs)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/single_file.py#L248)

**参数：**

pretrained_model_link_or_path (`str` 或 `os.PathLike`，*可选*) : 可以是以下之一： - 指向 Hub 上 `.ckpt` 文件的链接（例如 `"https://huggingface.co/<repo_id>/blob/main/<path_to_file>.ckpt"`）。 - 指向包含所有流水线权重的*文件*的路径。

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

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

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

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

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

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

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

original_config_file (`str`, *可选*) : 用于训练模型的原始配置文件的路径。如果未提供，则将从检查点文件中推断出配置文件。

config (`str`, *可选*) : 可以是以下之一： - 一个字符串，即托管在 Hub 上的预训练流水线的 *repo id*（例如 `CompVis/ldm-text2im-large-256`）。 - 一个指向 *目录* 的路径（例如 `./my_pipeline_directory/`），其中包含以 Diffusers 格式存储的流水线组件配置。

disable_mmap ('bool', *可选*，默认为 'False')：是否在加载 Safetensors 模型时禁用 mmap。当模型位于网络挂载或硬盘上时，此选项可能带来更好的性能。

kwargs （其余关键字参数字典，*可选*）：可用于覆盖加载和可保存的变量（特定 pipeline 类的 pipeline 组件）。被覆盖的组件会直接传递给 pipeline 的 `__init__` 方法。更多信息请参见下方示例。

从以 `.ckpt` 或 `.safetensors` 格式保存的预训练流水线权重中实例化一个 [DiffusionPipeline](/docs/diffusers/v0.43.0/zh/api/pipelines/overview#diffusers.DiffusionPipeline)。默认情况下，流水线会设置为评估模式（`model.eval()`）。

示例：

```py
>>> from diffusers import StableDiffusionPipeline

>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = StableDiffusionPipeline.from_single_file(
...     "https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors"
... )

>>> # Download pipeline from local file
>>> # file is downloaded under ./v1-5-pruned-emaonly.ckpt
>>> pipeline = StableDiffusionPipeline.from_single_file("./v1-5-pruned-emaonly.ckpt")

>>> # Enable float16 and move to GPU
>>> pipeline = StableDiffusionPipeline.from_single_file(
...     "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt",
...     torch_dtype=torch.float16,
... )
>>> pipeline.to("cuda")
```

## FromOriginalModelMixin[[diffusers.loaders.FromOriginalModelMixin]]

#### diffusers.loaders.FromOriginalModelMixin[[diffusers.loaders.FromOriginalModelMixin]]

```python
diffusers.loaders.FromOriginalModelMixin()
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/single_file_model.py#L276)

将保存在 `.ckpt` 或 `.safetensors` 格式中的预训练权重加载到模型中。

#### from_single_file[[diffusers.loaders.FromOriginalModelMixin.from_single_file]]

```python
from_single_file(pretrained_model_link_or_path_or_dict: str | None = None, **kwargs)
```

[源代码](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/single_file_model.py#L281)

**参数：**

pretrained_model_link_or_path_or_dict (`str`, *可选*) : 可以是以下之一： - 指向 Hub 上 `.safetensors` 或 `.ckpt` 文件的链接（例如 `"https://huggingface.co/<repo_id>/blob/main/<path_to_file>.safetensors"`）。 - 指向包含组件模型权重的本地 *文件* 的路径。 - 包含组件模型权重的 state dict。

config (`str`, *可选*) : - 一个字符串，即托管在 Hub 上的预训练流水线的 *repo id*（例如 `CompVis/ldm-text2im-large-256`）。 - 一个指向 *目录* 的路径（例如 `./my_pipeline_directory/`），其中包含以 Diffusers 格式存储的流水线组件配置。

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

original_config (`str`, *可选*) : 包含模型原始格式配置的字典或指向 yaml 文件的路径。如果提供了字典，它将用于初始化模型配置。

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

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

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

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

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

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

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

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

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

kwargs （其余关键字参数字典，*可选*）：可用于覆盖加载和可保存的变量（例如特定 pipeline 类的 pipeline 组件）。被覆盖的组件会直接传递给 pipeline 的 `__init__` 方法。更多信息请参见下方示例。

从以原始 `.ckpt` 或 `.safetensors` 格式保存的预训练权重实例化模型。默认情况下，模型会设置为评估模式（`model.eval()`）。

```py
>>> from diffusers import StableCascadeUNet

>>> ckpt_path = "https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_lite.safetensors"
>>> model = StableCascadeUNet.from_single_file(ckpt_path)
```

