Sobes.tech
Senior

Ինչպես պրոֆիլավորել LLM-ի ինֆերանսը GPU-ով (nsight, torch profiler)?

sobes.tech AI

Պատասխան AI-ից

Մեծ լեզվային մոդելների (LLM) ինֆերենցիայի պրոֆիլավորումը GPU-ով հաճախ օգտագործում է NVIDIA Nsight Systems և PyTorch Profiler գործիքները:

NVIDIA Nsight Systems-ն մանրամասն տեղեկություններ է տալիս GPU-ի բեռնվածության, միջուկի ժամանակի, հիշողության օգտագործման և CPU-GPU փոխազդեցության մասին: LLM-ի ինֆերենցիայի պրոֆիլավորումը իրականացնելու համար անհրաժեշտ է.

  1. Սկսել ինֆերենցիան nsight-ով պատված հրամանով, օրինակ՝
nsys profile --trace=cuda,nvtx python inference_script.py
  1. Վերլուծել հավաքագրված տվյալները Nsight Systems GUI-ում, ուշադրություն դարձնելով՝
    • CUDA միջուկների ժամանակին
    • Զանգվածների միջև ուշացումներին
    • GPU հիշողության օգտագործմանը

PyTorch Profiler-ն թույլ է տալիս մանրամասն պրոֆիլավորել մոդելի ներսում գործողությունները՝

import torch
from torch.profiler import profile, record_function, ProfilerActivity

def inference(model, input):
    with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof:
        with record_function("model_inference"):
            output = model(input)
    print(prof.key_averages().table(sort_by="cuda_time_total"))
    return output

Այսպիսով, համակարգային պրոֆիլավորումը (Nsight) և ֆրեյմվորկի մակարդակի պրոֆիլավորումը (PyTorch Profiler) համատեղելով՝ կարելի է ստանալ ամբողջական պատկեր ինֆերենցիային GPU-ով և օպտիմալացնել բլոկները։