Evento
Mar 31, 11 PM - Apr 2, 11 PM
O maior evento de aprendizaxe Fabric, Power BI e SQL. 31 de marzo - 2 de abril. Use o código FABINSIDER para aforrar $ 400.
Rexistrarse hoxeEste explorador xa non é compatible.
Actualice a Microsoft Edge para dispoñer das funcionalidades máis recentes, as actualizacións de seguranza e a asistencia técnica.
Este artículo describe cómo entrenar y realizar un seguimiento de las iteraciones del modelo de PyTorch. El marco de aprendizaje automático PyTorch se basa en la biblioteca Torch. PyTorch se usa a menudo para aplicaciones de procesamiento de lenguaje natural y Computer Vision.
Instale PyTorch y torchvision en el cuaderno. Puede instalar o actualizar la versión de estas bibliotecas en su entorno mediante el siguiente comando:
pip install torch torchvision
Puede crear un experimento de aprendizaje automático mediante la API de MLFLow. La función MLflow set_experiment()
crea un nuevo experimento de aprendizaje automático denominado sample-pytorch, si aún no existe.
Para crear un experimento, ejecute el siguiente código en un cuaderno:
import mlflow
mlflow.set_experiment("sample-pytorch")
Después de configurar el experimento, cargue el conjunto de datos Modified National Institute of Standards and Technology (MNIST). Genere los conjuntos de datos de prueba y entrenamiento y, a continuación, cree una función de entrenamiento.
Ejecute el código siguiente en el cuaderno y entrene el modelo de Pytorch:
import os
import torch
import torch.nn as nn
from torch.autograd import Variable
import torchvision.datasets as dset
import torchvision.transforms as transforms
import torch.nn.functional as F
import torch.optim as optim
# Load the MNIST dataset
root = "/tmp/mnist"
if not os.path.exists(root):
os.mkdir(root)
trans = transforms.Compose(
[transforms.ToTensor(), transforms.Normalize((0.5,), (1.0,))]
)
# If the data doesn't exist, download the MNIST dataset
train_set = dset.MNIST(root=root, train=True, transform=trans, download=True)
test_set = dset.MNIST(root=root, train=False, transform=trans, download=True)
batch_size = 100
train_loader = torch.utils.data.DataLoader(
dataset=train_set, batch_size=batch_size, shuffle=True
)
test_loader = torch.utils.data.DataLoader(
dataset=test_set, batch_size=batch_size, shuffle=False
)
print("==>>> total trainning batch number: {}".format(len(train_loader)))
print("==>>> total testing batch number: {}".format(len(test_loader)))
# Define the network
class LeNet(nn.Module):
def __init__(self):
super(LeNet, self).__init__()
self.conv1 = nn.Conv2d(1, 20, 5, 1)
self.conv2 = nn.Conv2d(20, 50, 5, 1)
self.fc1 = nn.Linear(4 * 4 * 50, 500)
self.fc2 = nn.Linear(500, 10)
def forward(self, x):
x = F.relu(self.conv1(x))
x = F.max_pool2d(x, 2, 2)
x = F.relu(self.conv2(x))
x = F.max_pool2d(x, 2, 2)
x = x.view(-1, 4 * 4 * 50)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x
def name(self):
return "LeNet"
# Train the model
model = LeNet()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
criterion = nn.CrossEntropyLoss()
for epoch in range(1):
# Model training
ave_loss = 0
for batch_idx, (x, target) in enumerate(train_loader):
optimizer.zero_grad()
x, target = Variable(x), Variable(target)
out = model(x)
loss = criterion(out, target)
ave_loss = (ave_loss * batch_idx + loss.item()) / (batch_idx + 1)
loss.backward()
optimizer.step()
if (batch_idx + 1) % 100 == 0 or (batch_idx + 1) == len(train_loader):
print(
"==>>> epoch: {}, batch index: {}, train loss: {:.6f}".format(
epoch, batch_idx + 1, ave_loss
)
)
# Model testing
correct_cnt, total_cnt, ave_loss = 0, 0, 0
for batch_idx, (x, target) in enumerate(test_loader):
x, target = Variable(x, volatile=True), Variable(target, volatile=True)
out = model(x)
loss = criterion(out, target)
_, pred_label = torch.max(out.data, 1)
total_cnt += x.data.size()[0]
correct_cnt += (pred_label == target.data).sum()
ave_loss = (ave_loss * batch_idx + loss.item()) / (batch_idx + 1)
if (batch_idx + 1) % 100 == 0 or (batch_idx + 1) == len(test_loader):
print(
"==>>> epoch: {}, batch index: {}, test loss: {:.6f}, acc: {:.3f}".format(
epoch, batch_idx + 1, ave_loss, correct_cnt * 1.0 / total_cnt
)
)
torch.save(model.state_dict(), model.name())
La siguiente tarea inicia una ejecución de MLflow y realiza un seguimiento de los resultados dentro del experimento de aprendizaje automático. El código de ejemplo crea un nuevo modelo denominado sample-pytorch. Crea una ejecución con los parámetros especificados y registra la ejecución en el experimento sample-pytorch.
Ejecute el código siguiente en su cuaderno y registre el modelo:
with mlflow.start_run() as run:
print("log pytorch model:")
mlflow.pytorch.log_model(
model, "pytorch-model", registered_model_name="sample-pytorch"
)
model_uri = "runs:/{}/pytorch-model".format(run.info.run_id)
print("Model saved in run %s" % run.info.run_id)
print(f"Model URI: {model_uri}")
Una vez que hayamos guardado el modelo, puede cargarlo para la inferencia.
Ejecute el código siguiente en su cuaderno y cargue el modelo para la inferencia:
# Inference with loading the logged model
loaded_model = mlflow.pytorch.load_model(model_uri)
print(type(loaded_model))
correct_cnt, total_cnt, ave_loss = 0, 0, 0
for batch_idx, (x, target) in enumerate(test_loader):
x, target = Variable(x, volatile=True), Variable(target, volatile=True)
out = loaded_model(x)
loss = criterion(out, target)
_, pred_label = torch.max(out.data, 1)
total_cnt += x.data.size()[0]
correct_cnt += (pred_label == target.data).sum()
ave_loss = (ave_loss * batch_idx + loss.item()) / (batch_idx + 1)
if (batch_idx + 1) % 100 == 0 or (batch_idx + 1) == len(test_loader):
print(
"==>>> epoch: {}, batch index: {}, test loss: {:.6f}, acc: {:.3f}".format(
epoch, batch_idx + 1, ave_loss, correct_cnt * 1.0 / total_cnt
)
)
Evento
Mar 31, 11 PM - Apr 2, 11 PM
O maior evento de aprendizaxe Fabric, Power BI e SQL. 31 de marzo - 2 de abril. Use o código FABINSIDER para aforrar $ 400.
Rexistrarse hoxeFormación
Módulo
Entrenamiento y seguimiento de modelos de Machine Learning con MLflow en Microsoft Fabric - Training
Aprenda a entrenar modelos de Machine Learning en cuadernos y a hacer un seguimiento del trabajo con experimentos de MLflow en Microsoft Fabric.
Certificación
Microsoft Certified: Azure Data Scientist Associate - Certifications
Administre la ingesta y preparación de datos, el entrenamiento y la implementación de modelos, y la supervisión de soluciones de aprendizaje automático con Python, Azure Machine Learning y MLflow.
Documentación
Entrenamiento de modelos de Machine Learning con Apache Spark - Microsoft Fabric
Uso de Apache Spark en Fabric para entrenar modelos de aprendizaje automático
Ajuste de hiperparámetros en Fabric - Microsoft Fabric
Identifique la mejor combinación de hiperparámetros para los clasificadores elegidos (versión preliminar).
Realizar el ajuste de hiperparámetros en Fabric - Microsoft Fabric
Identifique la mejor combinación de hiperparámetros para el modelo elegido con FLAML (versión preliminar).