SreyanG-NVIDIA's picture
Upload 225 files
174ae06 verified
# Copyright (c) 2025 NVIDIA CORPORATION.
# Licensed under the MIT license.
# Adapted from https://github.com/NVlabs/VILA/tree/main under the Apache 2.0 license.
# LICENSE is in incl_licenses directory.
import torch
import torch.nn as nn
from torch.autograd.function import Function, InplaceFunction
try:
from .Qconfig import qconfig
from .QFunction import *
from .utils import *
except:
from Qconfig import qconfig
from utils import *
from QFunction import *
import os
from copy import deepcopy
import matplotlib.pyplot as plt
class QIdentity(nn.Identity):
def __init__(self):
super().__init__()
def forward(self, input, scale):
input = QuantIdentity.apply(input, scale)
return input
class QuantIdentity(Function):
@staticmethod
def forward(ctx, input, scale):
return input, scale
@staticmethod
def backward(ctx, grad_output, Gscale):
import IPython
IPython.embed()
return grad_output, Gscale
if __name__ == "__main__":
Sum = torch.load("tensor/QAct_nan_epoch16.pt")
Qinput, Binput, input, args, layer_type, name = (
Sum["Qinput"],
Sum["Binput"],
Sum["input"],
Sum["args"],
Sum["layer_type"],
Sum["name"],
)
if_nan, if_inf = check_nan_inf(input, True, False)
print(if_nan)
Q = block_quant(Binput, True, 8, stochastic=False, epsilon=1e-8)