Buckets:

mishig's picture
|
download
raw
4.62 kB
# AutoModel
[AutoModel](/docs/diffusers/main/ko/api/models/auto_model#diffusers.AutoModel) 클래스는 `config.json` 파일에서 올바른 모델 클래스(UNet, transformer, VAE)를 자동으로 감지하고 로드합니다. 특정 모델 클래스 이름을 미리 알 필요가 없습니다. 데이터 유형과 장치 배치를 지원하며, 다양한 모델 유형과 라이브러리에서 작동합니다.
아래 예시에서는 Diffusers에서 transformer를, Transformers에서 text encoder를 로드합니다. `config.json` 파일을 로드할 위치를 지정하려면 `subfolder` 매개변수를 사용하세요.
```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"
)
```
## 커스텀 모델
[AutoModel](/docs/diffusers/main/ko/api/models/auto_model#diffusers.AutoModel) also loads models from the [Hub](https://huggingface.co/models) that aren't included in Diffusers. Set `trust_remote_code=True` in [AutoModel.from_pretrained()](/docs/diffusers/main/ko/api/models/auto_model#diffusers.AutoModel.from_pretrained) to load custom models.
커스텀 모델 저장소에는 모델 클래스가 포함된 Python 모듈과 `"AutoModel"`을 `"module_file.ClassName"`으로 매핑하는 `auto_map` 항목이 있는 `config.json`이 필요합니다.
```
custom/custom-transformer-model/
├── config.json
├── my_model.py
└── diffusion_pytorch_model.safetensors
```
`config.json`에는 커스텀 클래스를 가리키는 `auto_map` 필드가 포함되어 있습니다.
```json
{
"auto_map": {
"AutoModel": "my_model.MyCustomModel"
}
}
```
그 다음 `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"
)
```
실제 예시로, [Overworld/Waypoint-1-Small](https://huggingface.co/Overworld/Waypoint-1-Small/tree/main/transformer)은 `transformer` 하위 폴더의 여러 모듈에 걸쳐 사용자 정의 `WorldModel` 클래스를 호스팅합니다.
```
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"
)
```
커스텀 모델이 [ModelMixin](/docs/diffusers/main/ko/api/models/overview#diffusers.ModelMixin) 클래스를 상속하면 [regional compilation](../optimization/fp16#regional-compilation) 및 [group offloading](../optimization/memory#group-offloading)과 같은 Diffusers 모델 클래스와 동일한 기능에 접근할 수 있습니다.
> [!WARNING]
> `trust_remote_code=True`를 사용할 때, 모델 소유자를 완전히 신뢰하지 않는 한 코드가 새로운 악성 코드로 업데이트되지 않았는지 확인하기 위해 [AutoModel.from_pretrained()](/docs/diffusers/main/ko/api/models/auto_model#diffusers.AutoModel.from_pretrained)의 `revision` 인수에 커밋 해시를 전달하는 것이 좋습니다.
>
> ```py
> transformer = AutoModel.from_pretrained(
> "Overworld/Waypoint-1-Small", subfolder="transformer", trust_remote_code=True, revision="a3d8cb2"
> )
> ```
## 커스텀 모델 저장
`register_for_auto_class()`를 사용하면 저장 시 `config.json`에 `auto_map` 항목이 자동으로 추가됩니다. 이를 통해 설정 파일을 수동으로 편집할 필요가 없습니다.
```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")
```
저장된 `config.json`에는 `auto_map` 필드가 포함됩니다.
```json
{
"auto_map": {
"AutoModel": "my_model.MyCustomModel"
}
}
```
## 다음 단계
[커뮤니티 컴포넌트](../using-diffusers/custom_pipeline_overview#community-components) 가이드에서 커스텀 모델 구현에 대해 자세히 알아보세요.

Xet Storage Details

Size:
4.62 kB
·
Xet hash:
f22a40f2ed3ccc10538490c72a9a15aeb03874f7649aeca70a4040827054d1a8

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.