1 В избранное 0 Ответвления 0

GITHUB-MIRROR/MooreThreads-torch_musa

 / Детали:

При запуске torch на МУСА часто возникает ошибка RuntimeError: Ошибка МУСА: неизвестная ошибка

Предстоит сделать
Владелец
Создано  
08.02.2025

Использование MTTS80 для выполнения тестового кода не позволяет завершить тестирование, при этом отслеживание использования видеопамяти показывает лишь 53 МБ, а общее использование составляет около 1,6 ГБ. В процессе были замечены следующие ошибки; однако если данные загружать в musa каждый раз внутри программы, то все работает корректно.

Базовая информация
  • Тип видеокарты: MTTS80
  • Версия драйвера: 2.7.0-rc0717
  • Версия container toolkit: 1.9.0-1
  • Версия torch_on_musa: docker образ registry.mthreads.com/mcconline/musa-pytorch-release-public:rc3.0.1-v1.2.1-S80-py310
Ошибки ядра

[24078.925037] MTGPU:(Error): 56377: PID 1747 столкнулся с ошибкой Guilty Lockup (0x1) вызывающая функция [CheckFWCCB CTX Reset Notification] [188]
[24082.310090] MTGPU:(Error): 56377: PID 1747 столкнулся с ошибкой Guilty Lockup (0x1) вызывающая функция [CheckFWCCB CTX Reset Notification] [188]
[24082.376608] MTGPU:(Error): 56377: PID 1747 столкнулся с ошибкой Guilty Lockup (0x1) вызывающая функция [CheckFWCCB CTX Reset Notification] [188]
[24082.378837] MTGPU:(Error): 56377: PID 115094 столкнулся с ошибкой Innocent Lockup (0x2) вызывающая функция [CheckFWCCB CTX Reset Notification] [188]
[24082.378858] MTGPU:(Error): 56377: PID 1747 столкнулся с ошибкой Innocent Lockup (0x2) вызывающая функция [CheckFWCCB CTX Reset Notification] [188]

Ошибки при выполнении

Traceback (most recent call last):
File "/img/Ai-Learn-master/глубокое-обучение-PyTorch-фреймворк/PyTorch-фреймворк-в-действии/4-Глава: Основные модули для распознавания изображений/test.py", line 71, in
loss = criterion(outputs, labels.to(device))
File "/opt/conda/envs/py310/lib/python3.10/site-packages/torch_musa/core/tensor_attrs.py", line 41, in _to
return self.orig_to(*args, **kwargs)
RuntimeError: MUSA ошибка: неизвестная ошибка

import sys
import torch
import torch_musa
import torchvision
import torchvision.transforms as transforms
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

## 2. построение сети
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        self.pool = nn.MaxPool2d(2, 2)
        self.conv2 = nn.Conv2d(6, 16, 5)
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = torch.flatten(x, 1) # развернуть все измерения, кроме батча
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

if __name__ == "__main__":
    ## 1. подготовка данных
    transform = transforms.Compose(
        [transforms.ToTensor(),
         transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

    batch_size = 5
    trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                            download=True, transform=transform)
    trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
                                              shuffle=True, num_workers=2)
    testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                           download=True, transform=transform)
    testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
                                             shuffle=False, num_workers=2)
    classes = ('plane', 'car', 'bird', 'cat',
               'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
    device = torch.device("musa")

    net = Net().to(device)

    ## 3. определение функции потерь и оптимизатора
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

    ## 4. обучение
    for epoch in range(2):  # проход по набору данных несколько раз
        running_loss = 0.0
        size = 0
        for i, data in enumerate(trainloader, 0):
            inputs, labels = data
            size += sys.getsizeof(inputs)
            inputs = inputs.to(device)
            outputs = net(inputs)
            loss = criterion(outputs, labels.to(device))
            loss.backward()
            optimizer.step()

            running_loss += loss.item()
            
            if i % 200 == 199 :
                print("размер данных ", size)
            
            if i % 2000 == 1999:    # вывод каждые 2000 мини-батчей
                print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 2000:.3f}')
                running_loss = 0.0

    print('Обучение завершено')

    PATH = './cifar_net.pth'
    torch.save(net.state_dict(), PATH)

    net.load_state_dict(torch.load(PATH))

    ## 5. тестирование
    correct = 0
    total = 0
    with torch.no_grad():
        for data in testloader:
            images, labels = data
            outputs = net(images.to(device))
            _, predicted = torch.max(outputs.data, 1)
            total += labels.size(0)
            correct += (predicted == labels.to(device)).sum().item()

    print(f'Точность сети на 10000 тестовых изображениях: {100 * correct // total} %')

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/github-mirror/MooreThreads-torch_musa.git
git@api.gitlife.ru:github-mirror/MooreThreads-torch_musa.git
github-mirror
MooreThreads-torch_musa
MooreThreads-torch_musa