Модель PyTorch работает на ЦП, несмотря на то, что MPS (Apple Silicon) доступен и обнаруженPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Модель PyTorch работает на ЦП, несмотря на то, что MPS (Apple Silicon) доступен и обнаружен

Сообщение Anonymous »

Я пытаюсь запустить модель HuggingFace Transformers на своем Apple Silicon Mac с помощью MPS (Metal Performance Shaders), но, несмотря на то, что MPS доступен и обнаружен, модель продолжает работать на процессоре, вызывая серьезные проблемы с производительностью.
Вот код инициализации моей модели:

Код: Выделить всё

python
def instantiate_model(cfg: dict):
model_fp = cfg['model']['model_fp']
batch_size = cfg['model']['batch_size']
default_threshold = float(cfg['postprocessing']['threshold'])

# Clear any cached memory
torch.mps.empty_cache()

# Set device
if torch.backends.mps.is_available():
device = torch.device("mps")
print(f"MPS device found: {device}")
else:
device = torch.device("cpu")
print(f"MPS not available, using: {device}")

# Load model
model = AutoModelForTokenClassification.from_pretrained(
model_fp,
torch_dtype=torch.float32
)
model.eval()
model = model.to(device)

# Training arguments setup
args = TrainingArguments(
model_fp,
learning_rate=3e-5,
per_device_train_batch_size=batch_size,
per_device_eval_batch_size=batch_size,
weight_decay=0.01,
evaluation_strategy=IntervalStrategy.STEPS,
eval_steps=100,
max_steps=4000,
load_best_model_at_end=True,
metric_for_best_model='f1',
save_total_limit=5,
no_cuda=True,
use_mps_device=torch.backends.mps.is_available()
)

trainer = MultiLabelTrainer(model, args)
tokenizer = AutoTokenizer.from_pretrained(model_fp)

return {'trainer': trainer, 'tokenizer': tokenizer, 'default_threshold': default_threshold}
Код правильно определяет MPS и печатает «Обнаружено устройство MPS: mps», но мониторинг моей системы показывает, что обработка все еще происходит на ЦП.
Сведения о среде:
macOS на Apple Silicon (M2)

Python 3.10

PyTorch с установленной поддержкой MPS
Последняя версия библиотеки трансформаторов
Что я пробовал:
Явно настраиваю устройство на

Подтверждение доступности MPS с помощью torch.backends.mps.is_available()

Перемещение модели на устройство с помощью model.to(device)

Установка use_mps_device=True в TrainingArguments
Как убедиться, что модель действительно работает на MPS, а не на ЦП?
  • Явная настройка устройства на «mps»:

    Код: Выделить всё

    python
    device = torch.device("mps")
    model = model.to(device)
    
  • Проверка доступности MPS:

    Код: Выделить всё

    pythonCopyprint(f"Is MPS available? {torch.backends.mps.is_available()}")
    print(f"Is MPS built? {torch.backends.mps.is_built()}")
    
    Вывод показывает, что оба значения верны.
  • Проверка устройства модели после его перемещения:

    Код: Выделить всё

    pythonCopyprint(f"Model device: {next(model.parameters()).device}")
    
    Выходные данные показывают «mps»
Мониторинг использования ЦП во время выполнения модели показывает Загрузка ЦП 600 % (и почти 0 % использования графического процессора), что означает, что модель не использует графический процессор, несмотря на то, что она была перенесена на устройство MPS.

Установка use_mps_device=True в TrainingArguments
Ожидаемое поведение:
Модель должна использовать графический процессор Apple Silicon через MPS.

Загрузка ЦП должна быть ниже, поскольку вычисления перекладываются на графический процессор.

Обработка должна происходить значительно быстрее по сравнению с выполнением процессором.
Фактическое поведение:
Несмотря на обнаружение MPS и перемещение модели в Устройство MPS

Загрузка ЦП остается на 100 % во время выполнения модели

Скорость обработки такая же, как при выполнении только ЦП

Система перегружается из-за обработки процессора

Подробнее здесь: https://stackoverflow.com/questions/791 ... le-and-det
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Падение производительности модели PyTorch в зависимости от размера пакета тестового набора данных в MPS
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Yolo11 с ошибкой C ++ OPS на M3 Mac - Pytorch/MPS -выпуск?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Yolo11 с ошибкой C ++ OPS на M3 Mac - Pytorch/MPS -выпуск?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как обеспечить ускорение MPS для Pytorch внутри Docker на Mac?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Xcode «сборка для симулятора iOS, но ссылка на dylib, созданная для iOS.. для архитектуры Arm64» от Apple Silicon
    Anonymous » » в форуме IOS
    0 Ответы
    82 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»