Hub documentation
Hugging Face에서 mlx-image 사용
Hugging Face에서 mlx-image 사용
mlx-image는 Apple MLX를 기반으로 Riccardo Musmeci가 개발한 이미지 모델 라이브러리입니다. timm의 장점을 MLX 모델에 맞게 재현하는 것을 목표로 합니다.
Hub에서 mlx-image 탐색하기
mlx-image 라이브러리 이름을 필터로 사용하여 이 쿼리와 같이 mlx-image 모델을 찾을 수 있습니다. 또한 MLX 형식으로 변환 및 공개할 가중치를 다루는 기여자를 위한 mlx-vision 오픈 커뮤니티도 있습니다.
설치
pip install mlx-image
모델
모델 가중치는 Hugging Face의 mlx-vision 커뮤니티에서 사용할 수 있습니다.
…
from mlxim.model import create_model
# loading weights from HuggingFace (https://huggingface.co/mlx-vision/resnet18-mlxim)
model = create_model("resnet18") # pretrained weights loaded from HF
# loading weights from local file
model = create_model("resnet18", weights="path/to/resnet18/model.safetensors")사용 가능한 모든 모델을 나열하려면:
from mlxim.model import list_models
list_models()ImageNet-1K 결과
모든 모델이 mlx-image로 변환된 결과와 다양한 설정에서 ImageNet-1K 성능을 확인하려면 results-imagenet-1k.csv로 이동하세요.
TL;DR PyTorch 구현의 원래 모델과 성능이 비슷합니다.
PyTorch 및 기타 익숙한 도구와의 유사성
mlx-image는 PyTorch와 최대한 유사하도록 설계되었습니다:
DataLoader-> 사용자 정의collate_fn을 정의하고num_workers를 사용하여 데이터 로딩 속도를 높일 수 있습니다Dataset->mlx-image는LabelFolderDataset(오래된 PyTorchImageFolder)와FolderDataset(이미지가 포함된 일반 폴더)를 이미 지원합니다ModelCheckpoint-> 가장 좋은 모델을 추적하여 디스크에 저장합니다 (PyTorchLightning과 유사). 또한 조기 정지를 제안합니다
학습
Training은 PyTorch와 유사합니다. 모델을 학습하는 방법의 예시는 다음과 같습니다:
import mlx.nn as nn
import mlx.optimizers as optim
from mlxim.model import create_model
from mlxim.data import LabelFolderDataset, DataLoader
train_dataset = LabelFolderDataset(
root_dir="path/to/train",
class_map={0: "class_0", 1: "class_1", 2: ["class_2", "class_3"]}
)
train_loader = DataLoader(
dataset=train_dataset,
batch_size=32,
shuffle=True,
num_workers=4
)
model = create_model("resnet18") # pretrained weights loaded from HF
optimizer = optim.Adam(learning_rate=1e-3)
def train_step(model, inputs, targets):
logits = model(inputs)
loss = mx.mean(nn.losses.cross_entropy(logits, target))
return loss
model.train()
for epoch in range(10):
for batch in train_loader:
x, target = batch
train_step_fn = nn.value_and_grad(model, train_step)
loss, grads = train_step_fn(x, target)
optimizer.update(model, grads)
mx.eval(model.state, optimizer.state)추가 자료
연락처
질문이 있으시면 riccardomusmeci92@gmail.com으로 이메일을 보내 주세요.