Spaces:
Running
on
A100
Running
on
A100
File size: 1,430 Bytes
174ae06 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 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)
|