როგორ დავპროფილოთ LLM-ის ინფერენსი GPU-ზე (nsight, torch profiler)?
sobes.tech AI
პასუხი AI-სგან
GPU-ზე დიდი ენის მოდელების (LLM) ინფერენსის პროფილირება ხშირად გამოიყენება ინსტრუმენტებით, როგორიცაა NVIDIA Nsight Systems და PyTorch Profiler.
NVIDIA Nsight Systems უზრუნველყოფს დეტალურ ინფორმაციას GPU-ის დატვირთვის, კოდის შესრულების დროის, მეხსიერების გამოყენებისა და CPU-GPU ურთიერთქმედების შესახებ. LLM-ის ინფერენსის პროფილირებისათვის საჭიროა:
- დაიწყეთ ინფერენსი nsight-ის ჩასმული ბრძანებით, მაგალითად:
nsys profile --trace=cuda,nvtx python inference_script.py
- ანალიზი გაუკეთეთ შეგროვილ მონაცემებს 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-ზე LLM-ის ინფერენსის შესრულების შესახებ და ოპტიმიზაცია განახორციელოთ ბლოკირებებზე.