Guia Passo a Passo para Construir um Pipeline de Otimização de Modelo Completo com NVIDIA Model Optimizer Usando Poda FastNAS e Fine-Tuning
Neste tutorial, construímos um pipeline completo de ponta a ponta usando o NVIDIA Model Optimizer para treinar, podar e fazer o fine-tuning de um modelo de deep learning diretamente no Google Colab. Começamos configurando o ambiente e preparando o conjunto de dados CIFAR-10, depois definimos uma arquitetura ResNet e a treinamos para estabelecer uma linha de base robusta. A partir daí, aplicamos […] A postagem Guia Passo a Passo para Construir um Pipeline de Ponta a Ponta
Neste tutorial, construímos um pipeline completo de ponta a ponta usando o NVIDIA Model Optimizer para treinar, podar e fazer o fine-tuning de um modelo de deep learning diretamente no Google Colab. Começamos configurando o ambiente e preparando o conjunto de dados CIFAR-10, depois definimos uma arquitetura ResNet e a treinamos para estabelecer uma linha de base robusta. A partir daí, aplicamos a poda FastNAS para reduzir sistematicamente a complexidade do modelo sob restrições de FLOPs, preservando o desempenho. Também lidamos com problemas de compatibilidade do mundo real, restauramos a sub-rede otimizada e fazemos o fine-tuning para recuperar a precisão. Ao final, temos um fluxo de trabalho totalmente funcional que leva um modelo do treinamento à otimização pronta para implantação, tudo dentro de uma única configuração simplificada. Confira o Notebook de Codificação da Implementação Completa. Copiar Código Copiado Use um navegador diferente!pip -q install -U nvidia-modelopt torchvision torchprofile tqdm import math import os import random import time import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as transforms from torch.utils.data import DataLoader, Subset from torchvision.models.resnet import BasicBlock from tqdm.auto import tqdm import modelopt.torch.opt as mto import modelopt.torch.prune as mtp SEED = 123 random.seed(SEED) np.random.seed(SEED) torch.manual_seed(SEED) if torch.cuda.is_available(): torch.cuda.manual_seed_all(SEED) FAST_MODE = True batch_size = 256 if FAST_MODE else 512 baseline_epochs = 20 if FAST_MODE else 120 finetune_epochs = 12 if FAST_MODE else 120 train_subset_size = 12000 if FAST_MODE else None val_subset_size = 2000 if FAST_MODE else None test_subset_size = 4000 if FAST_MODE else None target_flops = 60e6 Começamos instalando todas as dependências necessárias e importando as bibliotecas essenciais para configurar nosso ambiente. Inicializamos sementes para garantir a reprodutibilidade e configuramos o dispositivo para usar uma GPU, se disponível. Também definimos os principais parâmetros de tempo de execução, como tamanho do lote, épocas, subconjuntos de dados e restrições de FLOPs, para controlar o experimento geral. Copiar Código Copiado Use um navegador diferente def seed_worker(worker_id): worker_seed = SEED + worker_id np.random.seed(worker_seed) random.seed(worker_seed) def build_cifar10_loaders(train_batch_size=256, train_subset_size=None, val_subset_size=None, test_subset_size=None): normalize = transforms.Normalize( mean=[0.4914, 0.4822, 0.4465], std=[0.2470, 0.2435, 0.2616], ) train_transform = transforms.Compose([ transforms.ToTensor()
