Refresh

This website www.unite.ai/sq/tensorrt-llm-a-comprehensive-guide-to-optimizing-large-language-model-inference-for-maximum-performance/ is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

Lidhu me ne

Inteligjenca artificiale

TensorRT-LLM: Një udhëzues gjithëpërfshirës për të optimizuar konkluzionet e modelit të gjuhës së madhe për performancën maksimale

mm

Publikuar

 on

Kuantizimi TensorRT-LLM NVIDEA, bashkimi i funksionimit, saktësia FP8 dhe mbështetje me shumë GPU

Ndërsa kërkesa për modele të mëdha gjuhësore (LLM) vazhdon të rritet, sigurimi i përfundimeve të shpejta, efikase dhe të shkallëzuara është bërë më vendimtare se kurrë. NVIDIA TensorRT-LLM hapat për të adresuar këtë sfidë duke ofruar një sërë mjetesh dhe optimizimesh të fuqishme të krijuara posaçërisht për përfundimin e LLM. TensorRT-LLM ofron një grup mbresëlënës përmirësimesh të performancës, të tilla si kuantizimi, bashkimi i kernelit, grumbullimi gjatë fluturimit dhe mbështetje me shumë GPU. Këto përparime bëjnë të mundur arritjen e shpejtësive të përfundimit deri në 8 herë më të shpejta se metodat tradicionale të bazuara në CPU, duke transformuar mënyrën se si ne përdorim LLM-të në prodhim.

Ky udhëzues gjithëpërfshirës do të eksplorojë të gjitha aspektet e TensorRT-LLM, nga arkitektura dhe veçoritë kryesore të tij deri te shembujt praktikë për vendosjen e modeleve. Pavarësisht nëse jeni një inxhinier i AI, zhvillues softuerësh ose studiues, ky udhëzues do t'ju japë njohuri për të përdorur TensorRT-LLM për të optimizuar konkluzionet LLM në GPU-të NVIDIA.

Përshpejtimi i përfundimit të LLM me TensorRT-LLM

TensorRT-LLM ofron përmirësime dramatike në performancën e konkluzioneve LLM. Sipas testeve të NVIDIA, aplikacionet e bazuara në TensorRT shfaqen deri në 8x më shpejt shpejtësi konkluzioni në krahasim me platformat vetëm me CPU. Ky është një përparim thelbësor në aplikacionet në kohë reale si chatbots, sistemet e rekomandimeve dhe sistemet autonome që kërkojnë përgjigje të shpejta.

How It Works

TensorRT-LLM përshpejton përfundimin duke optimizuar rrjetet nervore gjatë vendosjes duke përdorur teknika si:

  • Kuantizimi: Zvogëlon saktësinë e peshave dhe aktivizimeve, duke zvogëluar madhësinë e modelit dhe duke përmirësuar shpejtësinë e konkluzionit.
  • Shkrirja e shtresave dhe tensorit: Bashkon operacione si funksionet e aktivizimit dhe shumëzimet e matricës në një operacion të vetëm.
  • Akordimi i kernelit: Zgjedh kernelet optimale CUDA për llogaritjen e GPU, duke reduktuar kohën e ekzekutimit.

Këto optimizime sigurojnë që modelet tuaja LLM të performojnë me efikasitet në një gamë të gjerë platformash vendosjeje - nga qendrat e të dhënave në shkallë të lartë deri te sistemet e integruara.

Optimizimi i performancës së konkluzionit me TensorRT

E ndërtuar në modelin e programimit paralel CUDA të NVIDIA, TensorRT ofron optimizime shumë të specializuara për konkluzione në GPU-të NVIDIA. Duke thjeshtuar proceset si kuantizimi, akordimi i kernelit dhe bashkimi i operacioneve tensor, TensorRT siguron që LLM-të mund të funksionojnë me vonesë minimale.

Disa nga teknikat më efektive përfshijnë:

  • Kuantizimi: Kjo zvogëlon saktësinë numerike të parametrave të modelit duke ruajtur saktësinë e lartë, duke përshpejtuar efektivisht përfundimin.
  • Fusion tensor: Duke bashkuar operacione të shumta në një kernel të vetëm CUDA, TensorRT minimizon ngarkesën e kujtesës dhe rrit xhiron.
  • Akordim automatik i kernelit: TensorRT zgjedh automatikisht kernelin më të mirë për çdo operacion, duke optimizuar konkluzionet për një GPU të caktuar.

Këto teknika lejojnë TensorRT-LLM të optimizojë performancën e konkluzioneve për detyrat e të mësuarit të thellë si përpunimi i gjuhës natyrore, motorët e rekomandimeve dhe analitika video në kohë reale.

Përshpejtimi i ngarkesave të AI me TensorRT

TensorRT përshpejton ngarkesat e punës së mësimit të thellë duke përfshirë optimizime precize si p.sh INT8 FP16. Këto formate me precizion të reduktuar lejojnë përfundime dukshëm më të shpejta duke ruajtur saktësinë. Kjo është veçanërisht e vlefshme në aplikacionet në kohë reale ku vonesa e ulët është një kërkesë kritike.

INT8 FP16 optimizimet janë veçanërisht efektive në:

  • Video Streaming: Detyrat e përpunimit të videove të bazuara në AI, si zbulimi i objekteve, përfitojnë nga këto optimizime duke reduktuar kohën e nevojshme për përpunimin e kornizave.
  • Sistemet e rekomandimit: Duke përshpejtuar përfundimin për modelet që përpunojnë sasi të mëdha të të dhënave të përdoruesit, TensorRT mundëson personalizimin në kohë reale në shkallë.
  • Përpunimi natyror i gjuhës (NLP): TensorRT përmirëson shpejtësinë e detyrave NLP si gjenerimi i tekstit, përkthimi dhe përmbledhja, duke i bërë ato të përshtatshme për aplikime në kohë reale.

Vendosni, ekzekutoni dhe shkallëzoni me NVIDIA Triton

Pasi modeli juaj të jetë optimizuar me TensorRT-LLM, mund ta vendosni, ekzekutoni dhe shkallëzoni lehtësisht duke përdorur Serveri NVIDIA Triton Inference. Triton është një softuer me burim të hapur që mbështet grumbullimin dinamik, grupet e modeleve dhe xhiron e lartë. Ai siguron një mjedis fleksibël për menaxhimin e modeleve të AI në shkallë.

Disa nga karakteristikat kryesore përfshijnë:

  • Ekzekutimi i njëkohshëm i modelit: Drejtoni disa modele njëkohësisht, duke maksimizuar përdorimin e GPU-së.
  • Dinamik Batching: Kombinon kërkesa të shumta konkluzionesh në një grup, duke reduktuar vonesën dhe duke rritur xhiron.
  • Transmetimi i hyrjeve audio/video: Mbështet transmetimet e hyrjes në aplikacione në kohë reale, të tilla si analitika e drejtpërdrejtë e videos ose shërbimet e fjalës në tekst.

Kjo e bën Triton një mjet të vlefshëm për vendosjen e modeleve të optimizuara TensorRT-LLM në mjediset e prodhimit, duke siguruar shkallëzim dhe efikasitet të lartë.

Karakteristikat kryesore të TensorRT-LLM për përfundimin LLM

Python API me burim të hapur

TensorRT-LLM ofron një shumë modulare dhe Python API me burim të hapur, duke thjeshtuar procesin e përcaktimit, optimizimit dhe ekzekutimit të LLM-ve. API u mundëson zhvilluesve të krijojnë LLM të personalizuara ose të modifikojnë ato të para-ndërtuara për t'iu përshtatur nevojave të tyre, pa kërkuar njohuri të thelluara të CUDA ose korniza të mësimit të thellë.

Mbledhja gjatë fluturimit dhe vëmendja e faqes

Një nga veçoritë e spikatura të TensorRT-LLM është Batching gjatë fluturimit, i cili optimizon gjenerimin e tekstit duke përpunuar kërkesa të shumta njëkohësisht. Ky funksion minimizon kohën e pritjes dhe përmirëson përdorimin e GPU-së duke grumbulluar në mënyrë dinamike sekuencat.

Përveç kësaj, Vëmendje e faqes siguron që përdorimi i kujtesës të mbetet i ulët edhe kur përpunohen sekuenca të gjata hyrëse. Në vend që të shpërndahet memorie e vazhdueshme për të gjitha shenjat, vëmendja e faqes e ndan kujtesën në "faqe" që mund të ripërdoren në mënyrë dinamike, duke parandaluar fragmentimin e kujtesës dhe duke përmirësuar efikasitetin.

Konkluzioni me shumë GPU dhe me shumë nyje

Për modele më të mëdha ose ngarkesa më komplekse të punës, TensorRT-LLM mbështet multi-GPU përfundimi me shumë nyje. Kjo aftësi lejon shpërndarjen e llogaritjeve të modelit nëpër disa GPU ose nyje, duke përmirësuar xhiros dhe duke reduktuar kohën e përgjithshme të përfundimit.

Mbështetje FP8

Me ardhjen e FP8 (Pikë lundruese 8-bit), TensorRT-LLM përdor GPU-të H100 të NVIDIA për të kthyer peshat e modelit në këtë format për përfundime të optimizuara. FP8 mundëson konsum të reduktuar të memories dhe llogaritje më të shpejtë, veçanërisht të dobishme në vendosjet në shkallë të gjerë.

TensorRT-LLM Arkitektura dhe Komponentët

Kuptimi i arkitekturës së TensorRT-LLM do t'ju ndihmojë të përdorni më mirë aftësitë e tij për përfundimin e LLM. Le të zbërthejmë përbërësit kryesorë:

Përkufizimi i modelit

TensorRT-LLM ju lejon të përcaktoni LLM-të duke përdorur një API të thjeshtë Python. API-ja ndërton a paraqitje grafike të modelit, duke e bërë më të lehtë menaxhimin e shtresave komplekse të përfshira në arkitekturat LLM si GPT ose BERT.

Lidhjet e peshës

Përpara përpilimit të modelit, peshat (ose parametrat) duhet të lidhen me rrjetin. Ky hap siguron që peshat të futen brenda motorit TensorRT, duke lejuar përfundime të shpejta dhe efikase. TensorRT-LLM gjithashtu lejon përditësimet e peshës pas përpilimit, duke shtuar fleksibilitet për modelet që kanë nevojë për përditësime të shpeshta.

Përputhja e modelit dhe shkrirja

Operacioni Fusion është një tjetër veçori e fuqishme e TensorRT-LLM. Duke bashkuar operacione të shumta (p.sh., shumëzimet e matricës me funksionet e aktivizimit) në një kernel të vetëm CUDA, TensorRT minimizon shpenzimet e sipërme që lidhen me lëshimet e shumta të kernelit. Kjo zvogëlon transferimet e kujtesës dhe përshpejton përfundimin.

Shtesa

Për të zgjeruar aftësitë e TensorRT, zhvilluesit mund të shkruajnë plugins—kernelet e personalizuara që kryejnë detyra specifike si optimizimi i blloqeve të vëmendjes me shumë koka. Për shembull, Flash-Vëmendje shtojca përmirëson ndjeshëm performancën e shtresave të vëmendjes LLM.

Standardet: Fitimet e Performancës TensorRT-LLM

TensorRT-LLM demonstron përfitime të konsiderueshme të performancës për përfundimin e LLM nëpër GPU të ndryshme. Këtu është një krahasim i shpejtësisë së konkluzionit (e matur në shenja për sekondë) duke përdorur TensorRT-LLM nëpër GPU të ndryshme NVIDIA:

ModelSaktësiGjatësia hyrëse/dalëseH100 (80 GB)A100 (80 GB)L40S FP8
GPTJ 6BFP8128/12834,95511,2066,998
GPTJ 6BFP82048/1282,8001,354747
LLaMA v2 7BFP8128/12816,98510,7256,121
LLaMA v3 8BFP8128/12816,70812,0858,273

Këto standarde tregojnë se TensorRT-LLM jep përmirësime thelbësore në performancë, veçanërisht për sekuenca më të gjata.

Hands-On: Instalimi dhe ndërtimi i TensorRT-LLM

Hapi 1: Krijoni një mjedis kontejneri

Për lehtësinë e përdorimit, TensorRT-LLM ofron imazhe Docker për të krijuar një mjedis të kontrolluar për ndërtimin dhe ekzekutimin e modeleve.

docker build --pull \
             --target devel \
             --file docker/Dockerfile.multi \
             --tag tensorrt_llm/devel:latest .

Hapi 2: Drejtoni kontejnerin

Drejtoni kontejnerin e zhvillimit me qasje në GPU-të NVIDIA:

docker run --rm -it \
           --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --gpus=all \
           --volume ${PWD}:/code/tensorrt_llm \
           --workdir /code/tensorrt_llm \
           tensorrt_llm/devel:latest

Hapi 3: Ndërtoni TensorRT-LLM nga Burimi

Brenda kontejnerit, përpiloni TensorRT-LLM me komandën e mëposhtme:

python3 ./scripts/build_wheel.py --trt_root /usr/local/tensorrt
pip install ./build/tensorrt_llm*.whl

Ky opsion është veçanërisht i dobishëm kur dëshironi të shmangni çështjet e përputhshmërisë që lidhen me varësitë e Python ose kur fokusoheni në integrimin C++ në sistemet e prodhimit. Pasi të përfundojë ndërtimi, do të gjeni bibliotekat e përpiluara për kohën e ekzekutimit në C++ në cpp/build/tensorrt_llm direktori, gati për integrim me aplikacionet tuaja C++.

Hapi 4: Lidhni TensorRT-LLM C++ Runtime

Kur integroni TensorRT-LLM në projektet tuaja C++, sigurohuni që shtigjet e përfshira të projektit tuaj të tregojnë cpp/include drejtoria. Kjo përmban titujt e qëndrueshëm, të mbështetur të API-së. Bibliotekat TensorRT-LLM janë të lidhura si pjesë e procesit tuaj të përpilimit të C++.

Për shembull, konfigurimi CMake i projektit tuaj mund të përfshijë:

include_directories(${TENSORRT_LLM_PATH}/cpp/include)
link_directories(${TENSORRT_LLM_PATH}/cpp/build/tensorrt_llm)
target_link_libraries(your_project tensorrt_llm)

Ky integrim ju lejon të përfitoni nga optimizimet TensorRT-LLM në projektet tuaja të personalizuara C++, duke siguruar konkluzionet efikase edhe në mjedise të nivelit të ulët ose me performancë të lartë.

Karakteristikat e avancuara TensorRT-LLM

TensorRT-LLM është më shumë se thjesht një bibliotekë optimizimi; ai përfshin disa veçori të avancuara që ndihmojnë në trajtimin e vendosjeve në shkallë të gjerë të LLM. Më poshtë, ne shqyrtojmë disa nga këto karakteristika në detaje:

1. Batching gjatë fluturimit

Grumbullimi tradicional përfshin pritjen derisa një grup të mblidhet plotësisht përpara përpunimit, gjë që mund të shkaktojë vonesa. Batching gjatë fluturimit e ndryshon këtë duke filluar në mënyrë dinamike konkluzionet për kërkesat e përfunduara brenda një grupi, ndërkohë që mbledh ende kërkesa të tjera. Kjo përmirëson xhiron e përgjithshme duke minimizuar kohën e papunë dhe duke përmirësuar përdorimin e GPU.

Kjo veçori është veçanërisht e vlefshme në aplikacionet në kohë reale, të tilla si chatbots ose asistentët zanorë, ku koha e përgjigjes është kritike.

2. Vëmendje e faqes

Vëmendje e faqes është një teknikë e optimizimit të kujtesës për trajtimin e sekuencave të mëdha hyrëse. Në vend që të kërkojë memorie të vazhdueshme për të gjithë shenjat në një sekuencë (që mund të çojë në fragmentimin e memories), Paged Attention lejon modelin të ndajë të dhënat e cache-it me vlerë kyçe në "faqe" të memories. Këto faqe ndahen në mënyrë dinamike dhe lirohen sipas nevojës, duke optimizuar përdorimin e kujtesës.

Vëmendja e faqes është kritike për trajtimin e gjatësive të mëdha të sekuencave dhe reduktimin e ngarkesës së kujtesës, veçanërisht në modelet gjeneruese si GPT dhe LLaMA.

3. Shtojca të personalizuara

TensorRT-LLM ju lejon të zgjeroni funksionalitetin e tij me shtojca të personalizuara. Shtojcat janë kernele të përcaktuara nga përdoruesi që mundësojnë optimizime ose operacione specifike që nuk mbulohen nga biblioteka standarde TensorRT.

Për shembull, Flash-Vëmendje shtojca është një kernel i njohur me porosi që optimizon shtresat e vëmendjes me shumë koka në modelet e bazuara në Transformer. Duke përdorur këtë shtojcë, zhvilluesit mund të arrijnë shpejtësi të konsiderueshme në llogaritjen e vëmendjes - një nga komponentët më intensivë të burimeve të LLM-ve.

Për të integruar një shtojcë të personalizuar në modelin tuaj TensorRT-LLM, mund të shkruani një kernel të personalizuar CUDA dhe ta regjistroni atë me TensorRT. Shtojca do të thirret gjatë ekzekutimit të modelit, duke siguruar përmirësime të përshtatura të performancës.

4. Precision FP8 në NVIDIA H100

me Saktësia FP8, TensorRT-LLM përfiton nga risitë më të fundit harduerike të NVIDIA në Arkitektura H100 Hopper. FP8 zvogëlon gjurmën e memories së LLM-ve duke ruajtur peshat dhe aktivizimet në një format me pikë lundruese 8-bit, duke rezultuar në llogaritje më të shpejta pa sakrifikuar shumë saktësi. TensorRT-LLM përpilon automatikisht modele për të përdorur kernelet e optimizuara të FP8, duke përshpejtuar më tej kohën e përfundimit.

Kjo e bën TensorRT-LLM një zgjedhje ideale për vendosje në shkallë të gjerë që kërkojnë performancë të nivelit të lartë dhe efikasitet të energjisë.

Shembull: Vendosja e TensorRT-LLM me Serverin e Konkluzionit Triton

Për vendosjen e prodhimit, NVIDIA Serveri i konkluzionit të Tritonit ofron një platformë të fuqishme për menaxhimin e modeleve në shkallë. Në këtë shembull, ne do të demonstrojmë se si të vendosim një model të optimizuar nga TensorRT-LLM duke përdorur Triton.

Hapi 1: Vendosni Depon e Modelit

Krijoni një depo modeli për Triton, i cili do të ruajë skedarët tuaj të modelit TensorRT-LLM. Për shembull, nëse keni përpiluar një model GPT2, struktura juaj e drejtorisë mund të duket si kjo:

mkdir -p model_repository/gpt2/1
cp ./trt_engine/gpt2_fp16.engine model_repository/gpt2/1/

Hapi 2: Krijoni skedarin e konfigurimit të Triton

Ne te njejten model_repository/gpt2/ drejtorisë, krijoni një skedar konfigurimi me emrin config.pbtxt që i tregon Tritonit se si të ngarkojë dhe ekzekutojë modelin. Këtu është një konfigurim bazë për TensorRT-LLM:

name: "gpt2"
platform: "tensorrt_llm"
max_batch_size: 8
input [
  {
    name: "input_ids"
    data_type: TYPE_INT32
    dims: [-1]
  }
]
output [
  {
    name: "logits"
    data_type: TYPE_FP32
    dims: [-1, -1]
  }
]

Hapi 3: Hapni Serverin Triton

Përdorni komandën e mëposhtme Docker për të nisur Triton me depon e modelit:

docker run --rm --gpus all \
    -v $(pwd)/model_repository:/models \
    nvcr.io/nvidia/tritonserver:23.05-py3 \
    tritonserver --model-repository=/models

Hapi 4: Dërgoni kërkesa për konkluzione te Triton

Pasi serveri Triton të funksionojë, mund t'i dërgoni atij kërkesa për konkluzione duke përdorur HTTP ose gRPC. Për shembull, duke përdorur curl për të dërguar një kërkesë:

curl -X POST http://localhost:8000/v2/models/gpt2/infer -d '{
  "inputs": [
    {"name": "input_ids", "shape": [1, 128], "datatype": "INT32", "data": [[101, 234, 1243]]}
  ]
}'

Triton do të përpunojë kërkesën duke përdorur motorin TensorRT-LLM dhe do të kthejë logit-et si dalje.

Praktikat më të mira për optimizimin e konkluzionit LLM me TensorRT-LLM

Për të shfrytëzuar plotësisht fuqinë e TensorRT-LLM, është e rëndësishme të ndiqni praktikat më të mira si gjatë optimizimit të modelit ashtu edhe gjatë vendosjes. Këtu janë disa këshilla kryesore:

1. Profili i modelit tuaj përpara optimizimit

Përpara se të aplikoni optimizime të tilla si kuantizimi ose bashkimi i kernelit, përdorni mjetet e profilizimit të NVIDIA (si Nsight Systems ose TensorRT Profiler) për të kuptuar pengesat aktuale në ekzekutimin e modelit tuaj. Kjo ju lejon të synoni zona specifike për përmirësim, duke çuar në optimizime më efektive.

2. Përdorni saktësi të përzier për performancë optimale

Kur optimizoni modelet me TensorRT-LLM, duke përdorur saktësi e përzier (një kombinim i FP16 dhe FP32) ofron një shpejtësi të konsiderueshme pa një humbje të madhe në saktësi. Për ekuilibrin më të mirë midis shpejtësisë dhe saktësisë, merrni parasysh përdorimin e FP8 aty ku është e mundur, veçanërisht në GPU-të H100.

3. Shfrytëzoni vëmendjen e dhënë për sekuenca të mëdha

Për detyrat që përfshijnë sekuenca të gjata të dhënash, të tilla si përmbledhja e dokumenteve ose bisedat me shumë kthesa, aktivizoni gjithmonë Vëmendje e faqes për të optimizuar përdorimin e kujtesës. Kjo zvogëlon ngarkesën e memories dhe parandalon gabimet jashtë kujtesës gjatë përfundimit.

4. Paralelizmi i rregullimit të imët për konfigurimet me shumë GPU

Kur vendosni LLM nëpër GPU ose nyje të shumta, është thelbësore të rregulloni mirë cilësimet për paralelizmi tensor paralelizmi i tubacionit që të përputhet me ngarkesën tuaj specifike të punës. Konfigurimi i duhur i këtyre mënyrave mund të çojë në përmirësime të rëndësishme të performancës duke shpërndarë ngarkesën llogaritëse në mënyrë të barabartë nëpër GPU.

Përfundim

TensorRT-LLM përfaqëson një ndryshim paradigme në optimizimin dhe vendosjen e modeleve të mëdha gjuhësore. Me veçoritë e tij të avancuara si kuantizimi, bashkimi i funksionimit, saktësia e FP8 dhe mbështetja me shumë GPU, TensorRT-LLM u mundëson LLM-ve të funksionojnë më shpejt dhe me efikasitet në GPU-të NVIDIA. Pavarësisht nëse jeni duke punuar në aplikacione bisede në kohë reale, sisteme rekomandimi ose modele gjuhësore në shkallë të gjerë, TensorRT-LLM ofron mjetet e nevojshme për të shtyrë kufijtë e performancës.

Ky udhëzues ju udhëhoqi përmes konfigurimit të TensorRT-LLM, optimizimit të modeleve me API-në e tij Python, vendosjes në serverin Triton Inference dhe aplikimit të praktikave më të mira për përfundime efikase. Me TensorRT-LLM, ju mund të përshpejtoni ngarkesat tuaja të AI, të zvogëloni vonesën dhe të ofroni zgjidhje të shkallëzueshme LLM në mjediset e prodhimit.

Për më shumë informacion, referojuni zyrtarit Dokumentacioni TensorRT-LLM Dokumentacioni i Serverit të Konkluzionit Triton.

Kam kaluar pesë vitet e fundit duke u zhytur në botën magjepsëse të Mësimit të Makinerisë dhe Mësimit të Thellë. Pasioni dhe ekspertiza ime më kanë shtyrë të kontribuoj në mbi 50 projekte të ndryshme inxhinierike softuerike, me një fokus të veçantë në AI/ML. Kurioziteti im i vazhdueshëm më ka tërhequr gjithashtu drejt Përpunimit të Gjuhëve Natyrore, një fushë që mezi pres ta eksploroj më tej.