සිංහල පුවත්සඳුදා, 16 නොවැම්බර් 2026
නවතමකේප් යෝර්ක් උණුසුම දිගටම: වෙයිපා නගරයෙන් නව වාර්තා

NVIDIA CUDA සහ OpenAI Triton: AI සඳහා GPU ක්‍රමලේඛනයේ නවීන සංසන්දනයක්

NVIDIA CUDA සහ OpenAI Triton: AI සඳහා GPU ක්‍රමලේඛනයේ නවීන සංසන්දනයක්

ක්‍රමලේඛන ආකෘති, කාර්යසාධනය සහ ප්‍රායෝගික භාවිතය පිළිබඳ පර්යේෂණ පාදක සමාලෝචනයක්

පර්යේෂණ පරීක්ෂා කළ දිනය: 2026 නොවැම්බර් 15

සාරාංශය

NVIDIA CUDA සහ Triton බොහෝ විට GPU ක්‍රමලේඛනයේ තරඟකාරී ප්‍රවේශ ලෙස විස්තර කෙරේ: CUDA පහත්-මට්ටමේ පාලනය ලබා දෙන අතර, Triton AI කර්නල ලිවීමට වඩා ප්‍රවේශ විය හැකි, Python-පාදක මාර්ගයක් ලබා දේ. එම විස්තරය ඒවායේ ඉතිහාසයේ කොටසක් ග්‍රහණය කරන නමුත්, එය තවදුරටත් ප්‍රමාණවත් නොවේ.

CUDA යනු ක්‍රමලේඛන ආකෘති, පුස්තකාල, සම්පාදක සහ runtime පහසුකම් සහිත පුළුල් පරිගණක වේදිකාවකි. Triton යනු කාර්යක්ෂම අභිරුචි සංඛ්‍යාත්මක කර්නල කෙරෙහි අවධානය යොමු කරන විවෘත-මූලාශ්‍ර භාෂාවක් සහ සම්පාදකයකි. නවීන CUDA හි CUDA Tile හරහා ටයිල්-පාදක ක්‍රමලේඛනය ද ඇතුළත් වන අතර, NVIDIA හි CuTe DSL දෘඩාංග-විශේෂිත කර්නල සඳහා තවත් Python-පාදක ප්‍රවේශයක් ලබා දේ.

මෙම ලිපිය ඒවායේ වියුක්තකරණ, පරිසර පද්ධති, දෘඩාංග සහාය සහ ඉංජිනේරු හුවමාරු සංසන්දනය කරයි. එය විශ්වීය ජයග්‍රාහකයෙකු ප්‍රකාශ කිරීම වෙනුවට කාර්යසාධනය ඇගයීමේ ක්‍රමයක් යෝජනා කරයි.

මූලික පද: CUDA, Triton, GPU ක්‍රමලේඛනය, CUDA Tile, CuTe DSL, kernel fusion, AI යටිතල පහසුකම්.

1. මෙම සංසන්දනය වැදගත් වන්නේ ඇයි

AI කාර්යසාධනය රඳා පවතින්නේ ප්‍රොසෙසර ගණන හෝ මාදිලියක ප්‍රමාණය මත පමණක් නොවේ. ප්‍රබල GPU එකකට පවා දත්ත ගමන් කිරීමට බලා සිටීම, කුඩා කර්නල දියත් කිරීම, වැඩ සමමුහුර්ත කිරීම හෝ අකාර්යක්ෂම මතක සැකැස්මක් සැකසීම සඳහා සැලකිය යුතු කාලයක් වැය කළ හැකිය.

ක්‍රමලේඛන ප්‍රවේශය බලපාන්නේ ක්‍රියාත්මක වන වේගයට පමණක් නොව සංවර්ධන කාලය, අතේ ගෙන යා හැකි බව, දෝෂ නිරාකරණය සහ දිගුකාලීන නඩත්තුවටද ය. එබැවින් ප්‍රයෝජනවත් ප්‍රශ්නය "කුමන භාෂාව වේගවතුද?" යන්න පමණක් නොවේ. එය නම්:

මෙම වැඩ බර, දෘඩාංග සහ කණ්ඩායම සඳහා නිවැරදි, නඩත්තු කළ හැකි සහ කාර්යක්ෂම ක්‍රියාත්මක කිරීමක් කුමන ප්‍රවේශයෙන් ලැබේද?

2. CUDA සහ Triton සමාන කාණ්ඩ නොවේ

CUDA යනු NVIDIA හි සමාන්තර පරිගණක වේදිකාව සහ ක්‍රමලේඛන ආකෘතියයි. එහි විෂය පථයට GPU ක්‍රියාත්මක කිරීම, මතක කළමනාකරණය, උපාංග පාලනය සහ පුළුල් පුස්තකාල සහ මෙවලම් එකතුවක් ඇතුළත් වේ. CUDA C++ යනු එම වේදිකාව තුළ කර්නල ලිවීමේ එක් ක්‍රමයකි.

Triton යනු විශේෂයෙන් යන්ත්‍ර ඉගෙනීම සඳහා කාර්යක්ෂම සංඛ්‍යාත්මක කර්නල ලිවීමේ විවෘත-මූලාශ්‍ර භාෂාවක් සහ සම්පාදකයකි. එහි පර්යේෂණ පදනම් 2021 දී OpenAI (ඕපන්එඅයි) හි Triton 1.0 නිවේදනයට පෙරයි; OpenAI ගොඩනැඟුවේ Triton හි මුල් නිර්මාතෘගේ කාර්යය මතය. එය වසා දැමූ OpenAI සේවාවක් නොවේ.

සාධාරණ විශ්ලේෂණයක් සංසන්දන හතරක් වෙන් කරයි:

1. අභිරුචි කර්නල ප්‍රකාශ කිරීමේ ක්‍රම ලෙස CUDA C++ සහ Triton.

2. ටයිල්-කේන්ද්‍රීය ක්‍රමලේඛන ප්‍රවේශ ලෙස CUDA Tile සහ Triton.

3. පුළුල් CUDA පරිසර පද්ධතිය සහ Triton හි පටු භාෂා-සහ-සම්පාදක පරිසර පද්ධතිය.

4. නිශ්චිත වැඩ බරක් මත මනින ලද නිශ්චිත ක්‍රියාත්මක කිරීම්.

නම් කිරීම පිළිබඳ සටහන: ක්‍රමලේඛන භාෂාව වන Triton, NVIDIA Triton Inference Server වලට වඩා වෙනස් ය.

3. CUDA C++: පැහැදිලි සමාන්තර ක්‍රියාත්මක කිරීම

සාම්ප්‍රදායික CUDA C++ සාමාන්‍යයෙන් තනි-උපදෙස්, බහු-නූල් (single-instruction, multiple-thread, SIMT) ආකෘතියක් භාවිත කරයි. කර්නලයක් නූල් කොටස් ජාලයක් හරහා දියත් කෙරෙන අතර, සෑම නූලකටම තමා සැකසිය යුතු දත්ත කුමක්දැයි ගණනය කළ හැකිය.

උදාහරණයක් ලෙස:

__global__ void add_cuda(
    const float* a, const float* b,
    float* output, int n)
{
    int i = blockIdx.x * blockDim.x + threadIdx.x;
    if (i < n) {
        output[i] = a[i] + b[i];
    }
}

ධන දිගක් සඳහා දියත් කිරීමකට කොටසකට නූල් 256 ක් සහ ආදානය ආවරණය කිරීමට ප්‍රමාණවත් කොටස් භාවිත කළ හැකිය. පැහැදිලි බව සඳහා මෙහි වෙන් කිරීම, දෝෂ පරීක්ෂාව සහ සමමුහුර්තකරණය ඉවත් කර ඇත.

CUDA C++ නූල් සහයෝගයෙන් ක්‍රියා කරන ආකාරය, මතකය භාවිත කරන ආකාරය සහ සමමුහුර්ත වන ආකාරය පිළිබඳ පාලනය සංවර්ධකයන්ට ලබා දේ. විශේෂිත ක්‍රියාත්මක කිරීමේ උපාය මාර්ග අවශ්‍ය ඇල්ගොරිතම සඳහා මෙය ප්‍රයෝජනවත් වේ, නමුත් සංවර්ධකයා වැඩි ක්‍රියාත්මක කිරීමේ විස්තර ද කළමනාකරණය කළ යුතුය.

4. Triton: කොටස් වලින් ගණනය කිරීම ප්‍රකාශ කිරීම

Triton Python-පාදක වාක්‍ය ඛණ්ඩ රීති සහ විශේෂිත භාෂාවක් භාවිත කරයි. සෑම මූලද්‍රව්‍යයක්ම දෘඩාංග නූලකට පැහැදිලිව පැවරීම වෙනුවට, ක්‍රමලේඛකයා දත්ත කොටසක් මත මෙහෙයුම් විස්තර කරයි. Triton හි සම්පාදකය එම මෙහෙයුම් GPU සම්පත් මත සිතියම් ගත කරයි.

import triton
import triton.language as tl

@triton.jit
def add_triton(a, b, output, n, BLOCK: tl.constexpr):
    offsets = tl.program_id(0) * BLOCK + tl.arange(0, BLOCK)
    valid = offsets < n

    x = tl.load(a + offsets, mask=valid, other=0.0)
    y = tl.load(b + offsets, mask=valid, other=0.0)
    tl.store(output + offsets, x + y, mask=valid)

Python වාක්‍ය ඛණ්ඩ රීති යනු සාමාන්‍ය අර්ථකථන Python සෑම ගණනයක්ම GPU මත සිදු කරන බව අදහස් නොකරයි. කර්නලය සම්පාදනය කෙරේ. තවද, BLOCK විස්තර කරන්නේ වැඩසටහන් අවස්ථාවකට (program instance) පවරා ඇති මූලද්‍රව්‍ය ය; එය වෙනත් නමකින් හැඳින්වෙන CUDA නූල් ගණනක් පමණක් නොවේ.

මෙම උදාහරණ ක්‍රමලේඛන ආකෘති නිදර්ශනය කරයි. ඒවා මෙම ලිපිය සඳහා ක්‍රියාත්මක කර හෝ benchmark කර නැත.

5. නවීන CUDA ටයිල්-පාදක ක්‍රමලේඛනයට ද සහාය දක්වයි

"CUDA නූල්-පාදක වන අතර Triton ටයිල්-පාදක ය" යන ප්‍රකාශය දැන් අසම්පූර්ණ ය.

NVIDIA හි වත්මන් CUDA ලේඛන CUDA Tile විස්තර කරයි; එයට Python අතුරුමුහුණතක් සහ CUDA Tile C++ ඇතුළත් වේ. ටයිල් මෙහෙයුම් මඟින් ක්‍රමලේඛකයන්ට දත්ත කොටස් මත වැඩ ප්‍රකාශ කිරීමට ඉඩ සලසන අතර, සම්පාදකය එම වැඩ දෘඩාංග නූල් මත සිතියම් ගත කරයි. එකම යෙදුමක ටයිල් සහ SIMT කර්නල භාවිත කිරීම ද ලේඛනවල විස්තර කෙරේ. CUDA Tile C++ ලේඛනගත කර ඇත්තේ CUDA Toolkit 13.3 සිට ඉදිරියට ය.

මෙය සංසන්දනයේ වැදගත් වෙනසකි. ටයිල්-පාදක ක්‍රමලේඛනය තවදුරටත් Triton ට පමණක් සුවිශේෂී නොවේ; එය නවීන GPU දෘඩාංගවල සංකීර්ණත්වයට වඩා පුළුල් ප්‍රතිචාරයකි.

cuTile යනු CuTe DSL නොවේ

සමාන නම් ඇති මෙම තාක්ෂණයන් පටලවා නොගත යුතුය:

  • - cuTile යනු CUDA Tile සඳහා Python අතුරුමුහුණතයි.
  • - CuTe DSL යනු NVIDIA හි CUTLASS පරිසර පද්ධතිය හා බැඳි, සැකැස්ම-සවිඥානික (layout-aware) සහ දෘඩාංග-විශේෂිත කර්නල සඳහා නිර්මාණය කළ Python-පාදක භාෂාවකි.

දෙකම Python වාක්‍ය ඛණ්ඩ රීති භාවිත කරයි, නමුත් ඒවායේ ක්‍රමලේඛන ආකෘති සහ අපේක්ෂිත භාවිතය වෙනස් ය. සංවර්ධකයෙකුට ඇති දෘඩාංග පාලනයේ ප්‍රමාණය තීරණය කරන්නේ Python වාක්‍ය ඛණ්ඩ රීති පමණක් නොවේ.

6. Triton ස්වයංක්‍රීය කරන දේ සහ ඉංජිනේරුවන් තවමත් තීරණය කරන දේ

Tensor-කේන්ද්‍රීය ගණනය කිරීම් සඳහා අවශ්‍ය පැහැදිලි නූල් සම්බන්ධීකරණයේ ප්‍රමාණය Triton අඩු කළ හැකිය. එය ඉංජිනේරු තීරණ ඉවත් නොකරයි.

සංවර්ධකයෙකු තවමත් සලකා බැලිය යුතු දේ:

  • - ටයිල් ප්‍රමාණ සහ වැඩසටහන් සංවිධානය.
  • - අඛණ්ඩ සහ පියවර තබන (strided) මතක ප්‍රවේශය.
  • - දත්ත නැවත භාවිතය සහ කෑෂ් හැසිරීම.
  • - රෙජිස්ටර් පීඩනය සහ සම්පත් සීමා.
  • - ආදාන හැඩතල සහ මායිම් හැසිරවීම.
  • - සංඛ්‍යාත්මක නිරවද්‍යතාව සහ පිළිගත හැකි දෝෂය.

Triton හි තමන්ගේම න්‍යාස-ගුණ කිරීමේ නිබන්ධනය ටයිල් මාන, කෑෂ්-සවිඥානික අනුපිළිවෙල සහ වින්‍යාස සකස් කිරීම ගැන සාකච්ඡා කරයි. එබැවින් කාර්යසාධනය යනු ස්වයංක්‍රීය සහතිකයක් නොව නිර්මාණ සහ මැනීමේ ගැටලුවකි.

විශේෂයෙන්, Triton සෑම විටම ප්‍රවීණ CUDA ට සමාන වේ, සෑම විටම උපරිම කලාප පළලට ළඟා වේ, හෝ සෑම මෙහෙයුමක් සඳහාම Tensor Cores ස්වයංක්‍රීයව භාවිත කරයි යැයි කීම නොමඟ යවන සුළුය. උදාහරණයක් ලෙස, මූලද්‍රව්‍ය-අනුව දෛශික එකතු කිරීම, හුදෙක් Triton හි ලියා ඇති නිසාම න්‍යාස ගුණ කිරීමක් නොවේ.

7. දෘඩාංග සහාය සහ අතේ ගෙන යා හැකි බව

මෙම සමාලෝචනය කරන අවස්ථාවේදී, upstream Triton repository එක Linux, compute capability 8.0 හෝ ඊට වැඩි NVIDIA GPU සහ ROCm 6.2 හෝ ඊට වැඩි AMD GPU ලැයිස්තුගත කරයි. CPU සහාය සංවර්ධනය වෙමින් පවතින බව එය සඳහන් කරයි. සහාය වෙනස් විය හැකි අතර, ලැයිස්තුගත උපාංගයකට සෑම මෙහෙයුමක් සහ දත්ත වර්ගයක් සඳහාම සමාන සහාය හෝ කාර්යසාධනය සහතික නොවේ.

අතේ ගෙන යා හැකි බව වර්ග තුනක් වෙන්කර හඳුනා ගැනීමෙන් ප්‍රයෝජන ඇත:

1. මූලාශ්‍ර අතේ ගෙන යා හැකි බව (Source portability): සමාන කේතය වෙනත් ඉලක්කයක සම්පාදනය විය හැක.

2. ක්‍රියාකාරී අතේ ගෙන යා හැකි බව (Functional portability): එය අපේක්ෂිත ප්‍රතිඵලය නිපදවයි.

3. කාර්යසාධන අතේ ගෙන යා හැකි බව (Performance portability): එම ඉලක්කය මත එය කාර්යක්ෂම ව පවතී.

GPU ගෘහ නිර්මාණ දෙකක ධාවනය වන කර්නලයකට, එක් එක් ඒවා මත හොඳින් ක්‍රියා කිරීමට තවමත් වෙනස් ටයිල් ප්‍රමාණ හෝ සැකසුම් අවශ්‍ය විය හැකිය.

CUDA මූලිකවම NVIDIA හි වේදිකාවකි. CUDA Tile හි දෘඩාංග විස්තර වියුක්ත කිරීම, CUDA Tile සෑම විකුණුම්කරුවෙකුගේම GPU ඉලක්ක කරන බවට පොරොන්දුවක් ලෙස වරදවා නොගත යුතුය.

8. පුළුල් CUDA පරිසර පද්ධතිය

CUDA හි ප්‍රායෝගික වටිනාකම අතින් ලියූ කර්නල වලින් ඉතා ඔබ්බට යයි.

  • - cuBLAS සහ cuBLASLt ස්ථාපිත රේඛීය-වීජ ගණිත සහ වින්‍යාස කළ හැකි න්‍යාස-ගුණ කිරීමේ ක්‍රියාත්මක කිරීම් සපයයි. අභිරුචි කේතය ඇගයීමේදී ඒවා වැදගත් පදනම් මට්ටම් (baselines) වේ.
  • - cuDNN ප්‍රශස්ත ගැඹුරු-ඉගෙනුම් මෙහෙයුම් සපයයි; සහාය මෙහෙයුම, මෘදුකාංග අනුවාද සහ දෘඩාංග මත රඳා පවතී.
  • - NCCL AllReduce, AllGather සහ ReduceScatter ඇතුළු බහු-GPU සන්නිවේදන මෙහෙයුම් සපයයි. වේගවත් දේශීය කර්නලයක් බෙදා හරින ලද සන්නිවේදන ස්ථරයක් ප්‍රතිස්ථාපනය නොකරයි.

තෝරාගත් කර්නල සඳහා Triton භාවිතයෙන් NVIDIA පුස්තකාල හෝ CUDA වේදිකාව අත්හැරීම අවශ්‍යයෙන්ම අදහස් නොකරයි. යෙදුමකට රාමු-ජනනය කළ කර්නල, විකුණුම්කරු පුස්තකාල සහ අභිරුචි Triton හෝ CUDA සංරචක සංයෝජනය කළ හැකිය.

9. Triton සහ PyTorch

Triton කර්නල කෙලින්ම ලියන සංවර්ධකයන්ට සහ රාමු සම්පාදනයට යන දෙකටම අදාළ වේ. PyTorch, torch.library.triton_op ඇතුළු, පරිශීලක-නිර්වචිත Triton මෙහෙයුම් torch.compile සමඟ ඒකාබද්ධ කිරීමේ ක්‍රම ලේඛනගත කරයි.

කෙසේ වුවද, නිෂ්පාදන ඒකාබද්ධතාවයට tensors ආදානය ලෙස පිළිගැනීමට වඩා වැඩි යමක් අවශ්‍ය වේ. කණ්ඩායමක් සහාය දක්වන උපාංග සහ සැකැස්ම, හැඩ වෙනස්වීම්, නැවත සම්පාදනය, ක්‍රියාකරු ලියාපදිංචිය, සංඛ්‍යාත්මක ඉවසීම් සහ යෙදවීමේ අවශ්‍යතා පරීක්ෂා කළ යුතුය.

පුහුණුව සඳහා, අභිරුචි ඉදිරි-ගමන් කර්නලයක් ස්වයංක්‍රීයව සම්පූර්ණ ක්‍රියාකරුවෙකු නොවේ: ග්‍රේඩියන්ට් හැසිරීම ද ක්‍රියාත්මක කිරීම හෝ සහාය දැක්වීම සහ පරීක්ෂා කිරීම අවශ්‍ය වේ.

10. කාර්යසාධනය තීරණය කරන්නේ කුමක්ද?

ප්‍රයෝජනවත් සංකල්පමය ආකෘතියක් මෙයයි:

ළඟා කරගත හැකි ප්‍රතිදානය ≲ පහත දෙකෙහි අවමය:

  • - ප්‍රොසෙසරයේ ගණනය කිරීමේ උපරිමය; සහ
  • - මතක කලාප පළල ගුණ කිරීම අංක ගණිත තීව්‍රතාව (arithmetic intensity).

අංක ගණිත තීව්‍රතාව යනු මාරු කළ දත්ත හා සාපේක්ෂව සිදු කළ ප්‍රයෝජනවත් අංක ගණිතයේ ප්‍රමාණයයි. NVIDIA Nsight Compute වැනි profiling මෙවලම්වලට වැඩ බරක් ගණනය කිරීම, මතකය හෝ වෙනත් සාධක මගින් වැඩියෙන් සීමා වන්නේද යන්න හඳුනා ගැනීමට උපකාර කළ හැකිය.

සරල float32 දෛශික එකතු කිරීමක් සඳහා, සෑම මූලද්‍රව්‍යයකටම බයිට් හතරේ කියවීම් දෙකක්, බයිට් හතරේ ලිවීමක් සහ එකතු කිරීමක් ආසන්න වශයෙන් ඇතුළත් වේ. කෑෂ් බලපෑම් නොසලකා, එය මාරු කළ බයිට් 12 කට දළ වශයෙන් එක් මෙහෙයුමකි. එබැවින් එය ප්‍රධාන වශයෙන් දත්ත-චලන සහ අතිරේක බර පරීක්ෂණයක් මිස Tensor Core න්‍යාස-ගුණ කිරීමේ කාර්යසාධනයේ ප්‍රයෝජනවත් නිරූපණයක් නොවේ.

න්‍යාස ගුණ කිරීම, attention, අඩු කිරීම් (reductions) සහ අක්‍රමවත් සුචිගත කිරීම වෙනස් සීමාවන් ඇත. එක් මෙහෙයුමක ප්‍රතිඵලයකට විශ්වීය කාර්යසාධන ශ්‍රේණිගත කිරීමක් තහවුරු කළ නොහැක.

11. Kernel fusion සහ FlashAttention

Kernel fusion අතරමැදි දත්ත හුවමාරු සහ දියත් කිරීමේ අතිරේක බර අඩු කිරීමට මෙහෙයුම් ඒකාබද්ධ කරයි. එය CUDA-කේන්ද්‍රීය හෝ Triton-කේන්ද්‍රීය ක්‍රියාත්මක කිරීම් දෙකෙහිම යෙදිය හැකිය.

FlashAttention යනු IO-සවිඥානික ඇල්ගොරිතමයක වැදගත් උදාහරණයකි. එය attention ගණනය ටයිල් කර GPU හි ඉහළ-කලාප පළල මතකයේ සම්පූර්ණ attention න්‍යාසය ගොඩනැගීම මඟ හරියි. යටින් පවතින උපාය මාර්ගය එක භාෂාවකට පමණක් සුවිශේෂී නොවේ. එය අතරමැදි ගබඩාව සහ මතක ගමනාගමනය අඩු කරයි; නිවැරදි ඝන attention හි ද්විඝාත අංක ගණිතය එය ඉවත් නොකරයි.

Triton ඒකාබද්ධ-attention නිබන්ධනයක් සපයයි. නිල FlashAttention ව්‍යාපෘතිය CuTe DSL ඇතුළු අනෙකුත් තාක්ෂණයන් භාවිතයෙන් කළ ක්‍රියාත්මක කිරීම් ද ලේඛනගත කරයි.

සාධාරණ සංසන්දනය සඳහා මෙය වැදගත් ය: ඒකාබද්ධ Triton ක්‍රියාත්මක කිරීමක් හිතාමතා ඒකාබද්ධ නොකළ CUDA ක්‍රියාත්මක කිරීමක් සමඟ සැසඳීමෙන් මැනෙන්නේ භාෂා වෙනසට අමතරව ඇල්ගොරිතමික වෙනසක් ද වේ.

12. සාධාරණ benchmark එකක් පවත්වන ආකාරය

පහත දැක්වෙන්නේ යෝජිත පර්යේෂණ ක්‍රමවේදයක් මිස, මෙම ලිපිය සඳහා සිදු කළ අත්හදා බැලීමක් නොවේ.

නියෝජිත වැඩ බර තෝරන්න

මූලද්‍රව්‍ය-අනුව මෙහෙයුම්, අඩු කිරීම්, normalisation, න්‍යාස ගුණ කිරීම, attention සහ අපේක්ෂිත යෙදුම නියෝජනය කරන අවම වශයෙන් එක් මෙහෙයුමක් පරීක්ෂා කරන්න. යථාර්ථවාදී ආදාන හැඩතල සහ මායිම් අවස්ථා ඇතුළත් කරන්න.

පළමුව නිවැරදි බව තහවුරු කරන්න

ප්‍රතිදාන සුදුසු යොමුවක් සමඟ සසඳන්න. ටයිල් ප්‍රමාණවල ගුණාකාර නොවන අවස්ථා, අදාළ සැකැස්ම සහ සංඛ්‍යාත්මක නිරවද්‍යතාව පරීක්ෂා කරන්න. පුහුණුව සඳහා, ඉදිරි ප්‍රතිඵල මෙන්ම ග්‍රේඩියන්ට් ද සසඳන්න.

ආරම්භක කාලය ස්ථාවර තත්ත්වයෙන් වෙන් කරන්න

සම්පාදනය සහ autotuning, උණුසුම් කළ ක්‍රියාත්මක කිරීමෙන් වෙන්ව වාර්තා කරන්න. විශේෂයෙන් සේවාවක් නිතර නව හැඩතල හමු වන විට, දෙකම නිෂ්පාදනයේදී වැදගත් විය හැක.

විශ්වසනීය පදනම් මට්ටම් සසඳන්න

සරල අතින් ලියූ කර්නලයක් පමණක් නොව, අදාළ රාමු සහ විකුණුම්කරු-පුස්තකාල ක්‍රියාත්මක කිරීම් ඇතුළත් කරන්න. GPU මාදිලිය, මෘදුකාංග අනුවාද, නිරවද්‍යතාව, කර්නල වින්‍යාසය සහ මැනීමේ ක්‍රමය සටහන් කරන්න.

සම්පූර්ණ යෙදුම මනින්න

වේගවත් කර්නලයක් අවශ්‍යයෙන්ම අන්ත-සිට-අන්ත කාර්යසාධනයේ එවැනිම වැඩිදියුණුවක් ලබා නොදේ. උදාහරණයක් ලෙස, සංරචකයක් මුලින් ධාවන කාලයෙන් 30% ක් පරිභෝජනය කර එය දෙගුණයක් වේගවත් කළහොත්, මුළු වේග වැඩිවීම:

1 ÷ (0.7 + 0.3 ÷ 2) ≈ 1.18, හෙවත් ආසන්න වශයෙන් 18%.

ඉතිරි 70% වෙනස් නොවේ. NVIDIA ද එලෙසම මනින ලද බාධක profiling කර පුනරාවර්තන ලෙස ප්‍රශස්ත කිරීම නිර්දේශ කරයි.

13. දෝෂ නිරාකරණය සහ නඩත්තුව

ඉහළ-මට්ටමේ වාක්‍ය ඛණ්ඩ රීති වැරදි masks, වලංගු නොවන මතක ප්‍රවේශය හෝ සංඛ්‍යාත්මක දෝෂ වළක්වන්නේ නැත. Triton assertions, interpreter එකක් සහ NVIDIA Compute Sanitizer භාවිතය ඇතුළු දෝෂ නිරාකරණ පහසුකම් ලේඛනගත කරයි; ඒවා සෑම එකකටම සීමාවන් ඇති අතර, සම්පාදිත GPU ක්‍රියාත්මක කිරීම තවමත් පරීක්ෂා කිරීම අවශ්‍ය වේ.

ඕනෑම ප්‍රවේශයක් සඳහා, නිෂ්පාදන කර්නලයකට තිබිය යුතු දේ:

  • - පැහැදිලි පිරිවිතරයක් සහ යොමු ක්‍රියාත්මක කිරීමක්.
  • - නියෝජිත හැඩතල හරහා නිවැරදි බව සහ ප්‍රතිගාමී (regression) පරීක්ෂණ.
  • - ලේඛනගත නිරවද්‍යතාව සහ ඉවසීම්.
  • - පැහැදිලි දෘඩාංග සහ මෘදුකාංග අවශ්‍යතා.
  • - කාර්යසාධන පරීක්ෂණ සහ සුදුසු තැන්වල විකල්ප (fallback) ක්‍රමයක්.
  • - පරායත්තතා වෙනස් වන විට නඩත්තුවට වගකිව යුතු හිමිකරුවෙකු.

කුඩා වේග වැඩිවීමකින් සහාය දීමට අපහසු බිඳෙනසුලු ක්‍රියාත්මක කිරීමක් සාධාරණීකරණය නොවිය හැක.

14. සංවිධානයක් තෝරා ගත යුත්තේ කුමක්ද?

ස්ථාපිත පුස්තකාල සහ රාමු සම්පාදනය දැනටමත් අවශ්‍යතාව සපුරන විට ඒවායින් ආරම්භ කරන්න. අභිරුචි කර්නල සඳහා අඛණ්ඩ නඩත්තු පිරිවැයක් ඇත.

අභිරුචි tensor මෙහෙයුම්, ඒකාබද්ධ කිරීම සහ වේගවත් අත්හදා බැලීම් සඳහා, විශේෂයෙන් Python-කේන්ද්‍රීය AI කණ්ඩායමක, Triton සලකා බලන්න.

පැහැදිලි පහත්-මට්ටමේ ක්‍රියාත්මක කිරීමේ පාලනය, ස්වදේශීය කේත ඒකාබද්ධතාව හෝ විශේෂිත දෘඩාංග අන්තර්ක්‍රියා වැදගත් වන විට CUDA C++ සලකා බලන්න.

ටයිල්-කේන්ද්‍රීය NVIDIA වැඩ ප්‍රවාහයක් කණ්ඩායමට ගැළපෙන විට සහ අදාළ toolkit සහ දෘඩාංග සහාය දක්වන විට CUDA Tile සලකා බලන්න.

සුදුසු සැකැස්ම-සවිඥානික, දෘඩාංග-විශේෂිත සංඛ්‍යාත්මක කර්නල සඳහා CuTe DSL සලකා බලන්න. එය cuTile සහ Triton වලින් වෙන්ව තක්සේරු කරන්න.

බොහෝ සංවිධාන සඳහා, හොඳම විසඳුම සංයෝජනයකි: සම්මත මෙහෙයුම් සඳහා විකුණුම්කරු පුස්තකාල, තෝරාගත් අභිරුචි කර්නල සඳහා Triton, සහ profiling මඟින් සාධාරණීකරණය කරන තැන පහත්-මට්ටමේ CUDA හෝ CuTe සංරචක.

නිගමනය

Triton බොහෝ tensor-කේන්ද්‍රීය AI වැඩ බර සඳහා අභිරුචි GPU කර්නල සංවර්ධනය වඩාත් ප්‍රවේශ විය හැකි කර ඇත. CUDA පුළුල් පුස්තකාල, මෙවලම් සහ ක්‍රියාත්මක කිරීමේ පහසුකම් සහිත වඩා පුළුල් වේදිකාවක් ලෙස පවතී.

වෙනස පරිණාමය වී ඇත: නවීන CUDA ටයිල්-පාදක අතුරුමුහුණත් ලබා දෙන අතර, Python-පාදක GPU ක්‍රමලේඛනයට ඉහළ-මට්ටමේ මෙහෙයුම් හෝ සවිස්තරාත්මක දෘඩාංග පාලනය යන දෙකම නිරාවරණය කළ හැකිය. "අතින් CUDA" සහ "ස්වයංක්‍රීය Triton" අතර පැරණි වෙනස අතිශය සරල ය.

කිසිදු ප්‍රවේශයක් වේගවත්ම ප්‍රතිඵලය සහතික නොකරයි. නිවැරදි තේරීම ඇල්ගොරිතමය, දෘඩාංග, ආදාන හැඩතල, සංඛ්‍යාත්මක අවශ්‍යතා, ඉංජිනේරු කුසලතා සහ නඩත්තු පිරිවැය මත රඳා පවතී.

වඩාත්ම විශ්වසනීය උපාය මාර්ගය වන්නේ වැඩ බරේ අවශ්‍යතා සපුරාලන වඩාත්ම ඵලදායී වියුක්තකරණය තෝරා ගැනීම, නිවැරදි බව තහවුරු කිරීම, විශ්වසනීය පදනම් මට්ටම් සමඟ සැසඳීම සහ මිනුම් මඟින් සාධාරණීකරණය කරන තැන පහත්-මට්ටමේ පාලනය භාවිත කිරීමයි.

පර්යේෂණ සටහන: මෙය තාක්ෂණික සමාලෝචනයක් සහ යෝජිත benchmark ක්‍රමවේදයක් මිස, නව අත්හදා බැලීම් පිළිබඳ වාර්තාවක් නොවේ. මම මුල් ප්‍රකාශන සහ නිල NVIDIA, OpenAI, Triton සහ PyTorch ලේඛන විමසා බැලුවෙමි. මෙම ලිපිය සඳහා මම GPU benchmarks ධාවනය කර හෝ SciSpace, Scite.ai, NotebookLM, Elicit හෝ Julius AI භාවිත කර නැත.

තවත් AI පුවත්