• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Generative AI / LLMs

    8-bit ??? ???? ???? ???? ??? 2? ? ??? ????? NVIDIA TensorRT

    Reading Time: 5 minutes

    ??? AI? ?? ???? ?? ??? ??? ????? ??? ??? ???? ???? ?? ?? ??? ????? ???? ????. ??? ??? ?? ??? ?????? ??????? ??? ??????.

    ??? ?? ??? ?? ????? ???? ??? ?? ??? ???? ??? ?? ???? ? ????. ?? ??? ????? ?? ??? ???? ?? ???? ??? ????? ??? ??? ?????.

    NVIDIA TensorRT 9.2.0??? ??? ??? ????? NVIDIA ?????? ?? ?? ??? ?? ?? ? ??? ??? 8??(FP8 ?? INT8) ?? ? ???(PTQ)? ?? ?? ??? ??? ??? ??????. TensorRT? 8?? ??? ??? ?? ?????? ??? ?? ??????? ???? ???? ??? ???? ?? ??? AI ???? ???? ???? ?????.

    ? ?????? Stable Diffusion XL? ??? TensorRT? ??? ?? ?????. ?? ?? ??? ?? ???? ?? ??? ?? TensorRT? ??? ??? ? ? ?? ??? ??? ??? ?? ?????. ?????, ? ?? ????? ?? ??? ??? ?? TensorRT? ???? ??? ??????.

    ????

    ?? ??? ?? NVIDIA TensorRT INT8 ? FP8 ??? ???? FP16?? ???? ?? PyTorch? torch.compile? ???? NVIDIA RTX 6000 Ada GPU?? 1.72? ? 1.95?? ?? ??? ?????. INT8? ?? FP8? ???? ?? ??? ?? ?? ?? ??(MHA) ???? ??? ?????. TensorRT 8?? ???? ???? ??? AI ??????? ???? ????? ?? ??? ??? ? ????.

    ?? 1. TensorRT INT8 ? FP8? ?? ?? ???? ??

    ??????: Stable Diffusion XL 1.0 ?? ??, ??? ???=1024×1024, ?? ??=1, 50??? ??? ????, NVIDIA RTX 6000 Ada GPU. TensorRT INT8 ???? ?? ?? ????, FP8? ? ??? ?????. TensorRT FP8? ????? ?? ??? ??? ? ????.

    ?? ??? ??? ? ??? TensorRT 8?? ???? ??? ??? ???? ? ?????. ???? ??? ??? ?? ?? FP16 ???? ?? ??? ???? ?????. ??? ??? ? ?? ????? ????.

    ?? 2. ?? FP16? ?? ??? ??? ??? ? ?? TensorRT INT8 ? FP8

    TensorRT ???: ?? ?? ?? ??

    PTQ? ?? AI ???? ??? ??? ??? ?? ??? ??? ?? ?? ???? ?????, ?? ???? ?? ??? ? ?? ?? ????. ?? ???? ??? ??? ??? ?? ????? ??? ? ?? ???? ??? ?? ????? ?? ??? ?? ??? ? ????. ??? ??? PTQ ?? ??? ???? ?????.

    ?? ???? SmoothQuant? LLM? 8?? ???, 8?? ???(W8A8) ???? ???? ?? ?? ?? PTQ ???? ???? ????. ? ??? ?? ??? ????? ??? ??? ?? ??? ??? ????? ???? ?????? ??? ???? ???? ?? ??? ????.

    ??? ???? ???? ????? SmoothQuant ??? ????? ???? ???? ? ???? ?? ??? ????. ?? ??? ??? ??? SmoothQuant? ??? ??? ??? ???? ? ???? ??? ?? ?????? ???? ??? ???? ??? ??????. ?? ??? ?? ?? ?? ??? ??? ?? ??? ?? ???? ???? ??, ???? ??? ??? ?? ??? ?? ? ?? ???? ?? ??? ?? ????.

    ??? ??? ???? ?? NVIDIA TensorRT? ???? ???? ?? ?????? ???? SmoothQuant? ? ?? ???? ?? ??? ???? ??? ?????. ?? ?? ?? ??? ?? ?? ?? ?????? ??? ? ????. ? ??? ???? ??? ??? ?? ?? ??? ?? ?? ???? ??? ???? ???? ??? ??? ??? ?? ? ?? TensorRT ???? ??? ? ????.

    ??? ??? ?? ??? ?? ?? ??? ? ???, ???? ??? ???? ???? ?? ??? ?? ????? ?? ???? Q-Diffusion? ??? ?? ?????. ??? ??? ?? ??? ???? ?? ???? ? ??? ??? ?????.

    ?? 3. ?? ??? ??? ?? ??? ??? ?? ??? ??

    ?? ??? ?? ???? ?? ??? ???? ??? ????? ?????, ?? ???? ???? ?? ??? ??? ??? ???? ??? ??? ???? ?????. ???? ??(Percentile Quant)?? ?? ?? ? ??? ?? ??? ?? ??? ??? ????? ??? ????. ?? ?? TensorRT? ?? FP16 ???? ??? ???? ?? ??? ???? ??? ? ????.

    ?? 4. FP16 ???? ???? ?? ??? ???? ???? NVIDIA TensorRT ???? ??

    ?? ?? ???? ?? TensorRT 8?? ??? ??

    ?? /NVIDIA/TensorRT GitHub ?????? ?????, SDXL, 8?? ?? ?????? ????? NVIDIA GPU?? ???? ?? ??? ???? ?? ?? ??? ? ?? ???? ?????.

    ?? ??? ???? ???? ??? ???? ???? ?????? ?? ??? ?????. ? ????? INT8? ?? ?????, FP8? ?????? ?? ?????.

    python demo_txt2img_xl.py "enchanted winter forest with soft diffuse light on a snow-filled day" --version xl-1.0 --onnx-dir onnx-sdxl --engine-dir engine-sdxl --int8 --quantization-level 3

    ??? ? ??? ??? ?? ??? ?? ?????:

    • ??
    • ONNX ????
    • TensorRT ?? ??

    ??????

    ??? ??? ? ?? ???? ??? ???? ?????. ?? TensorRT? ??? ??? TensorRT 8?? ??? ??? ??? ???? nvidia-ammo? ????? ????.

    # Load the SDXL-1.0 base model from HuggingFace
    import torch
    from diffusers import DiffusionPipeline
    base = DiffusionPipeline.from_pretrained(
        "stabilityai/stable-diffusion-xl-base-1.0",
        torch_dtype=torch.float16,
        variant="fp16",
        use_safetensors=True
    )
    base.to("cuda")
     
    # Load calibration prompts:
    from utils import load_calib_prompts
    cali_prompts = load_calib_prompts(batch_size=2,prompts="./calib_prompts.txt")
     
    # Create the int8 quantization recipe
    from utils import get_percentilequant_config
    quant_config = get_percentilequant_config(base.unet, quant_level=3.0, percentile=1.0, alpha=0.8)
     
    # Apply the quantization recipe and run calibration  
    import ammo.torch.quantization as atq 
    quantized_model = atq.quantize(base.unet, quant_config, forward_loop)
     
    # Save the quantized model
    import ammo.torch.opt as ato
    ato.save(quantized_model, 'base.unet.int8.pt')

    ONNX ????

    ???? ?? ?????? ?? ? ONNX ??? ??? ? ????.

    # Prepare the onnx export  
    from utils import filter_func, quantize_lvl
    base.unet = ato.restore(base.unet, 'base.unet.int8.pt')
    quantize_lvl(base.unet, quant_level=3.0)
    atq.disable_quantizer(base.unet, filter_func) # `filter_func` is used to exclude layers you don't quantize
      
    # Export the ONNX model
    from onnx_utils import ammo_export_sd
    base.unet.to(torch.float32).to("cpu")
    ammo_export_sd(base, 'onnx_dir', 'stabilityai/stable-diffusion-xl-base-1.0')

    TensorRT ?? ??

    INT8 UNet ONNX ??? ???? TensorRT ??? ??? ? ????.

    ??

    ??? AI ???? ?? ???? ????? ?? ???? ??? ?? ???? ?????. NVIDIA TensorRT? ???? ???? 8?? ??? ??? ?? ?? ??? ?? 2??? ???? ????? ??? ??? ??? ??? ?? ??? ??? ????? ?? ??? ? ????.

    ??? ?? ??? ??? ??? ?? TensorRT? ??? AI ?????? ???? ?? ???? ???? ?????? ??? ???? ??? ??? ? ??? ?????.

    ??? ?? GTC ??? ???? ??? ????? ??? AI ??? ?? ??? ?? ??? ????? ??? ?? ??? ?????. ??????? LLM? ???? ?? ??, TensorRT-LLM? ??? SOTA ??? ???? ?? ??? ??? ??? ???? ?? ????.

    ??? ??? ?? ???? ?????:

    ?? ???

    Discuss (0)
    +1

    Tags

    人人超碰97caoporen国产