Um Guia de Implementação para Rodar o NVIDIA Transformer Engine com Precisão Mista, Verificações FP8, Benchmarking e Execução de Fallback
Neste tutorial, implementamos uma aplicação prática e avançada do NVIDIA Transformer Engine em Python, focando em como a aceleração por precisão mista pode ser explorada em um fluxo de trabalho realista de deep learning. Configuramos o ambiente, verificamos a prontidão da GPU e do CUDA, tentamos instalar os componentes necessários do Transformer Engine e lidamos com problemas de compatibilidade de forma elegante para que […] O
Neste tutorial, implementamos uma aplicação prática e avançada do NVIDIA Transformer Engine em Python, focando em como a aceleração por precisão mista pode ser explorada em um fluxo de trabalho realista de deep learning. Configuramos o ambiente, verificamos a prontidão da GPU e do CUDA, tentamos instalar os componentes necessários do Transformer Engine e lidamos com problemas de compatibilidade de forma elegante para que o notebook permaneça executável mesmo quando a extensão completa não puder ser construída. À medida que avançamos em cada etapa, construímos redes professor e aluno, comparamos um caminho PyTorch de linha de base com um caminho habilitado para Transformer Engine, treinamos ambos os modelos, avaliamos sua velocidade e uso de memória, e visualizamos os resultados, nos dando uma compreensão prática clara de como os fluxos de trabalho de treinamento orientados para o desempenho são estruturados na prática. Copy Code Copied Use um Navegador diferente import os import sys import json import time import math import random import shutil import platform import subprocess import statistics def run(cmd, check=True): print("
[RUN]", " ".join(cmd)) result = subprocess.run(cmd, text=True, capture_output=True) if result.stdout.strip(): print(result.stdout[-4000:]) if result.returncode != 0 and result.stderr.strip(): print(result.stderr[-4000:]) if check and result.returncode != 0: raise subprocess.CalledProcessError(result.returncode, cmd) return result def has_cmd(name): return shutil.which(name) is not None run([sys.executable, "-m", "pip", "install", "-q", "--upgrade", "pip"]) run([sys.executable, "-m", "pip", "install", "-q", "ninja", "packaging", "matplotlib"]) import torch import torch.nn as nn import torch.nn.functional as F import matplotlib.pyplot as plt assert torch.cuda.is_available(), "Este notebook precisa de um runtime de GPU no Colab." gpu_name = torch.cuda.get_device_name(0) cc_major, cc_minor = torch.cuda.get_device_capability(0) cuda_runtime = torch.version.cuda python_version = sys.version.split()[0] torch_version = torch.version cuda_home = os.environ.get("CUDA_HOME", "/usr/local/cuda") nvcc_path = shutil.which("nvcc") or os.path.join(cuda_home, "bin", "nvcc") cudnn_header_candidates = [ os.path.join(cuda_home, "include", "cudnn.h"), "/usr/include/cudnn.h", "/usr/local/include/cudnn.h", ] nvcc_exists = os.path.exists(nvcc_path) cudnn_header_exists = any(os.path.exists(p) for p in cudnn_header_candidates) print("=" * 120) print("VERIFICAÇÃO DE AMBIENTE") print("=" * 120) print(json.dumps({ "python": python_version,
