# 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) 가이드에서 커스텀 모델 구현에 대해 자세히 알아보세요.

