Hub documentation
استخدام mlx-image على Hugging Face
استخدام mlx-image على Hugging Face
mlx-image هو مكتبة لنماذج الصور طوّرها Riccardo Musmeci وتقوم على MLX من Apple. يحاول تكرار مكتبة timm الرائعة، لكن لنماذج MLX.
استكشاف mlx-image على Hub
يمكنك العثور على نماذج mlx-image من خلال التصفية باستخدام اسم مكتبة mlx-image، كما في هذا الاستعلام.
كما توجد مجتمع mlx-vision مفتوح للمساهمين الذين يقومون بتحويل الأوزان ونشرها بصيغة MLX.
التثبيت
pip install mlx-image
النماذج
أوزان النموذج متاحة على مجتمع mlx-vision في Hugging Face.
لتحميل نموذج بأوزان مُدرَّبة مسبقًا:
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
انتقل إلى results-imagenet-1k.csv للتحقق من كل نموذج تم تحويله إلى mlx-image وأداؤه على ImageNet-1K مع إعدادات مختلفة.
ملخص سريع الأداء مماثل لأداء النماذج الأصلية من تطبيقات PyTorch.
التشابه مع PyTorch والأدوات الأخرى المألوفة
يحاول mlx-image أن يكون أقرب ما يمكن إلى PyTorch:
DataLoader-> يمكنك تحديدcollate_fnخاص بك واستخدامnum_workersلتسريع تحميل البياناتDataset-> يدعمmlx-imageبالفعلLabelFolderDataset(وهوImageFolderالقديم من PyTorch) وFolderDataset(وهو مجلد عام يحتوي على صور)ModelCheckpoint-> يتتبع أفضل نموذج ويحفظه على القرص (على غرار PyTorchLightning). كما يقترح التوقف المبكر
التدريب
تتشابه عملية التدريب مع 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)موارد إضافية
- مستودع mlx-image
- مجتمع mlx-vision
تواصل
إذا كانت لديك أي أسئلة، يرجى إرسال بريد إلكتروني إلى riccardomusmeci92@gmail.com.