Том хэлний загвар (LLM) дүгнэлтийн тойм, түүний ач холбогдол, сорилт бэрхшээл, асуудлын гол томъёолол.
Том хэлний загварууд (LLMs) нь чатбот болон хиймэл оюун ухааны агентуудаас эхлээд код, контент үүсгэх хүртэл өргөн хүрээний програмуудыг идэвхжүүлснээр Байгалийн хэл боловсруулах (NLP) салбарт хувьсгал хийсэн. Гэсэн хэдий ч LLM-ийг бодит нөхцөл байдалд ашиглах нь хоцролт, нөөцийн зарцуулалт, өргөтгөх чадвартай холбоотой бэрхшээлтэй тулгардаг.
Энэ цуврал блог нийтлэлд бид LLM дүгнэлт гаргах янз бүрийн оновчлолын аргуудыг судлах болно. Бид кэш хийх механизмаас эхлээд техник хангамжийн хурдатгал, загварын квантжуулалт хүртэл хоцролт, санах ойн ул мөр, тооцооллын зардлыг бууруулах стратегийн талаар судлах болно.
Энэ нийтлэлд бид LLM-ийн дүгнэлт, түүний ач холбогдол, үүнтэй холбоотой бэрхшээлүүдийн талаар товч тоймыг өгөх болно. Мөн бид оновчлолын техникийг судлахад чиглүүлэх асуудлын гол томъёоллыг тоймлон харуулах болно.
Загварын дүгнэлт гэдэг нь шинэ оролтын өгөгдөл дээр үндэслэн таамаглал гаргах эсвэл гаралт үүсгэхийн тулд бэлтгэгдсэн машин сургалтын загварыг ашиглах үйл явцыг хэлнэ. LLM-ийн хүрээнд дүгнэлт нь текстийн оролтыг боловсруулж, уялдаа холбоотой, контексттэй холбоотой текст гаралтыг бий болгодог.
Загварыг зөвхөн нэг удаа эсвэл үе үе сургадаг бол үйлдвэрлэлийн орчинд дүгнэлт нь илүү олон удаа, магадгүй секундэд хэдэн мянган удаа гардаг.
Дүгнэлт оновчлол нь LLM-ийг бодит хэрэглээний програмуудад үр дүнтэй ашиглах боломжийг хангахад зайлшгүй шаардлагатай. Зорилго нь хоцролт (хариулт үүсгэхэд зарцуулсан хугацаа), нөөцийн зарцуулалтыг багасгах (CPU, GPU, санах ой), өргөтгөх чадварыг сайжруулах (өсөн нэмэгдэж буй ачааллыг зохицуулах чадвар) юм.
Жишээлбэл, GPT-3 (175 тэрбум параметртэй) нь дүгнэлт гаргахад ихээхэн хэмжээний тооцооллын нөөц шаарддаг. Оновчлол нь хариу өгөх хугацааг 1-2 секундээс миллисекунд болгон бууруулж, LLM-ийг интерактив програмуудад илүү практик болгодог.
Анхаарал татах механизмыг ашигладаг трансформаторын архитектур нь ихэнх орчин үеийн LLM-ийн үндэс суурь болсон. Энэхүү архитектурт байрлалын кодчилол, олон толгойн өөртөө анхаарал хандуулах, урагш дамжуулах мэдрэлийн сүлжээ, давхаргын хэвийн байдал зэрэг орно. Трансформаторыг ерөнхийд нь гурван үндсэн төрөлд ангилдаг.
Кодлогч-декодерын загварууд (жишээ нь, T5) нь "Анхаарал танд хэрэгтэй зүйл" гэсэн нийтлэлд танилцуулсан анхны архитектур байв. Эдгээр загварууд нь орчуулга, нэгтгэн дүгнэх гэх мэт ойлгох, бий болгох шаардлагатай ажлуудад зориулагдсан болно. Тэд оролтын дарааллыг кодлогчоор боловсруулж, дараа нь декодероор гаралтын дарааллыг үүсгэдэг.
Зөвхөн декодчилогч загварууд нь авторегрессив даалгаврын хувьд хамгийн түгээмэл LLM архитектур байдаг тул энэ цуврал нь энэ төрлийн загварт тусгайлан зориулсан оновчлолын арга техникт анхаарлаа хандуулах болно.
Анхаарал татах механизм нь трансформаторын архитектурын гол бүрэлдэхүүн хэсэг бөгөөд загвар нь гаралтыг үүсгэх үед оролтын дарааллын өөр өөр хэсгүүдэд анхаарлаа төвлөрүүлэх боломжийг олгодог. Энэ нь оролтын дүрслэлийн жигнэсэн нийлбэрийг тооцдог бөгөөд жинг нь оролтын токен тус бүрийн одоогийн үүсгэгдэж буй гаралтын жетонтой хамаарлаар тодорхойлдог. Энэхүү механизм нь загварт жетонуудын хоорондын хамаарлыг оролтын дарааллын зайнаас үл хамааран олж авах боломжийг олгодог.
Анхаарал татах механизм нь бүх токенуудын хоорондох хос харилцан үйлчлэлийг ( O(n^2)
нарийн төвөгтэй) тооцоолохыг шаарддаг тул ялангуяа урт оролтын дарааллаар тооцоолоход үнэтэй байж болно. Үүнийг алхам алхмаар нарийвчлан харцгаая:
Оролтын төлөөлөл : Оролтын дараалал дахь токен бүрийг вектор хэлбэрээр илэрхийлдэг бөгөөд ихэвчлэн суулгацыг ашигладаг.
Асуулга, Түлхүүр, Утгын векторууд : Токен бүрийн хувьд асуулгын вектор ( Q_i
), түлхүүр вектор ( K_i
), утгын вектор ( V_i
) гэсэн гурван векторыг тооцдог. Эдгээр векторууд нь сурсан шугаман хувиргалтыг ашиглан оролтын дүрслэлээс гаралтай.
Анхаарлын оноо : Оролтын дарааллын өмнөх бүх токенуудын гол векторуудтай одоогийн жетоны асуулгын векторын цэгийн үржвэрийг авах замаар анхаарлын оноог тооцдог. Үүний үр дүнд жетон тус бүр дээр хэр их анхаарал хандуулах ёстойг харуулсан оноо гарна.
Softmax хэвийн болгох : Анхаарлын оноог softmax функцийг ашиглан хэвийн болгож, нийлбэр нь 1 болно.
Жинлэсэн нийлбэр : Эцэст нь, одоогийн жетоны гаралтын дүрслэлийг анхаарлын жинг ашиглан утгын векторуудын жигнэсэн нийлбэрээр тооцоолно.
Олон толгойн анхаарал нь загварт өөр өөр байрлал дахь янз бүрийн дүрслэлийн дэд орон зайн мэдээлэлд хамтран оролцох боломжийг олгодог анхаарлын механизмын өргөтгөл юм. Анхаарлын жингийн нэг багц байхын оронд олон толгойн анхаарал нь олон тооны анхаарлын оноог зэрэгцүүлэн тооцдог бөгөөд тус бүр нь өөрийн сурсан шугаман өөрчлөлттэй байдаг.
Дараа нь эдгээр анхаарлын толгойн гаралтыг нэгтгэж, эцсийн гаралтын дүрслэлийг бий болгохын тулд шугаман байдлаар хувиргадаг.
Энэхүү механизм нь оролтын өгөгдлийн янз бүрийн харилцаа, хамаарлыг олж авах загварын чадварыг сайжруулж, NLP-ийн янз бүрийн ажлуудын гүйцэтгэлийг сайжруулахад хүргэдэг.
LLM болон трансформаторын архитектурын талаархи ойлголттой бол бид дүгнэлтийг тооцоолох үйл явцыг тоймлон авч үзье. Дүгнэлт нь өгөгдсөн оролтын дарааллын дараагийн $n$ жетонуудыг үүсгэдэг бөгөөд үүнийг хоёр үе шатанд хувааж болно:
Урьдчилан дүүргэх үе шат : Энэ үе шатанд оролтын дарааллын загвараар дамжуулан дамжуулалтыг хийж, жетон тус бүрийн түлхүүр болон утгын дүрслэлийг тооцоолно. Эдгээр дүрслэлийг дараа нь код тайлах үе шатанд KV кэшэд ашиглахаар хадгалдаг. Давхарга тус бүрийн бүх токенуудын дүрслэлийг зэрэгцүүлэн тооцдог.
Код тайлах үе шат : Энэ үе шатанд загвар нь гаралтын жетонуудыг нэг нэгээр нь автомат регрессийн аргаар үүсгэдэг. Токен бүрийн хувьд загвар нь урьдчилан бөглөх үе шатанд хадгалагдсан KV кэшээс түлхүүр болон утгын дүрслэлийг, одоогийн оролтын жетоны асуулгын дүрслэлийг дарааллаар нь дараагийн токеныг тооцоолохын тулд татаж авдаг.
Энэ процесс нь зогсоох шалгуурыг хангах хүртэл үргэлжилнэ (жишээ нь, хамгийн их уртад хүрэх эсвэл дарааллын төгсгөлийн тэмдэг үүсгэх). Шинэ түлхүүр болон утгын дүрслэл нь дараагийн жетонуудад зориулж KV кэшэд хадгалагдана. Энэ үе шатанд дараагийн үүсгэх жетоныг тодорхойлохын тулд токен түүвэрлэлтийн стратегийг ашигладаг (жишээлбэл, шунахайн хайлт, цацрагийн хайлт, top-k түүвэрлэлт).
L урттай угтвар, d оруулах хэмжээ, h толгой ба n давхаргатай загварын хувьд дүгнэлтийн тооцооллын нарийн төвөгтэй байдлыг дараах байдлаар шинжилж болно.
Урьдчилан дүүргэх үе шат : Урьдчилан дүүргэх үе шатанд бид оролтын бүх токенуудын анхны дүрслэлийг тооцоолно. Энд байгаа нарийн төвөгтэй байдал нь:
Энд:
O(Ln .d^2)
: Токен бүрийг давхаргуудаар бие даан боловсруулдаг урагшлуулах тооцооллыг илэрхийлнэ. Энэ нь L дарааллын урт ба n давхаргын тоогоор хоёуланд нь шугаман масштабтай байна.
Хоёрдахь нэр томъёо O(L^2. nh d)
: Анхаарал татах механизмын зардлыг илэрхийлнэ. Энд токен тус бүр нь бусад токенуудтай харилцан үйлчилдэг тул давхарга бүрт анхаарал хандуулах L^2
төвөгтэй байдлыг бий болгодог. Нарийн төвөгтэй байдал нь дарааллын уртыг дагаж квадратаар өсдөг бөгөөд энэ нь урт дарааллын гол саад болж болзошгүй юм.
Тайлбарлах үе шат : Код тайлах үе шат нь авторегресс хэсэг бөгөөд нарийн төвөгтэй байдал нь:
Энд:
Урьдчилан дамжуулах тооцоо : Үүсгэсэн токен бүрийн хувьд бид давхарга бүрт урагш дамжуулах үйлдлийг гүйцэтгэдэг. Энэ нь нэг удаад нэг жетон (бүх дараалал биш) хийгдсэн тул жетон бүрийн нарийн төвөгтэй байдал нь: O(nd^2)
.
Кэшийн тусламжтайгаар анхаарал хандуулах тооцоо : Шинэ токен бүр нь урьд өмнө тооцоолсон түлхүүр-утга хосыг ашиглан анхаарал хандуулах замаар одоо байгаа дараалалтай харилцдаг. Үүсгэсэн токен бүрийн хувьд энэхүү анхаарал хандуулах тооцоолол нь L дарааллын урттай пропорциональ байна: O(Lnd .h)
Бидний харж байгаагаар дүгнэлтийн тооцооллын нарийн төвөгтэй байдал нь оролтын дарааллын урт ( L ), давхаргын тоо ( n ), анхаарал хандуулах толгойн тоо ( h ), оруулах хэмжээ ( d ) зэргээс шалтгаална. Энэ нарийн төвөгтэй байдал нь бодит цагийн хэрэглээнд, ялангуяа урт оролтын дараалал ба/эсвэл том загваруудтай ажиллахад саад болж болзошгүй юм.
KV кэш нь LLM-ийн дүгнэлт гаргахад, ялангуяа код тайлах үе шатанд чухал оновчлолын арга юм. Урьдчилан дүүргэх үе шатанд тооцоолсон түлхүүр болон утгын дүрслэлийг хадгалснаар загвар нь өмнө нь боловсруулсан жетонуудын нэмэлт тооцооллоос зайлсхийх боломжтой.
Загвар нь оролтын дараалал дахь бүх жетонуудын түлхүүр болон утгын дүрслэлийг дахин тооцоолохоос илүү шинээр үүсгэгдэж буй жетоны анхаарлын оноог тооцоолоход л шаардлагатай байдаг тул энэ нь тооцооллын зардал болон дүгнэлт гаргах үеийн хоцролтыг ихээхэн бууруулдаг.
Энэ нь оролтын уртын хувьд квадрат биш харин үүсгэгдсэн токенуудын тоогоор зардлыг шугаман болгодог.
Гэсэн хэдий ч KV кэш нь түлхүүр болон үнэ цэнийн дүрслэлийг хадгалахад нэмэлт санах ой шаарддаг бөгөөд энэ нь нөөц хязгаарлагдмал орчинд ашигтай байж болох юм.
LLaMA 7B загварын санах ойн шаардлагыг тооцоолъё.
d_model
): 4096d_head
): 32d_head
): 128 (4096/32) Токен бүрийн түлхүүрийн хэмжээ = d_head × num_heads
= 128 × 32 = 4096 элемент
Токен бүрийн утгын хэмжээ = d_head × num_heads
= 128 × 32 = 4096 элемент
Нэг давхаргад ногдох токен нийт элемент = 4096 + 4096 = 8192 элемент
Нэг давхарга дахь элементүүд = L × 8192 = 2048 × 8192 = 16,777,216 элемент
Нэг давхарга дахь санах ой (байтаар) = 16,777,216 × 2 = 33,554,432 байт = 33.55 МБ
Тиймээс нийт санах ойн шаардлага: 14 ГБ (загварын жин) + 1-2 ГБ (нэмэлт) + 1073.6 МБ (КВ кэш) = 15-16 ГБ . Энэхүү тооцоолол нь дүгнэлт хийх явцад LLaMA 7B загварын санах ойн шаардлагуудын тооцоог өгдөг. LLaMA 7B нь GPT-3 (175 тэрбум параметр) зэрэг загваруудтай харьцуулахад харьцангуй жижиг бөгөөд энэ нь загварын жин болон КВ кэшийн хувьд илүү их санах ой шаарддаг.
Мөн нэгэн зэрэг хэрэглэгчдийг $m$ болгон масштаблах үед нөөцийн шаардлага $m$ дахин их байх болно. Иймээс оновчлолын техник нь нөөц хязгаарлагдмал орчинд том загваруудыг ашиглахад маш чухал юм.
Дүгнэлт оновчлолын аргын үр нөлөөг үнэлэхдээ хэд хэдэн хэмжүүрийг авч үзэж болно.
Урьдчилан бөглөх хоцрогдол : Дүгнэлтийн урьдчилсан бөглөх үе шатыг гүйцэтгэхэд зарцуулсан хугацаа бөгөөд үүнийг эхний токен (TTFT) хоцролт гэж нэрлэдэг. Энэ хэмжигдэхүүн нь хэрэглэгчид хурдан хариу хүлээж байдаг интерактив програмуудад маш чухал юм. Загварын хэмжээ, оролтын урт, техник хангамж зэрэг хүчин зүйлүүд энэ хэмжигдэхүүнд нөлөөлж болно.
Код тайлах хоцрогдол : Урьдчилан бөглөх үе шат дууссаны дараа дараагийн жетон бүрийг үүсгэхэд зарцуулсан хугацаа, үүнийг мөн Inter-Token Latency (ITL) гэж нэрлэдэг. Энэ хэмжүүр нь текст үүсгэх явцад загварын хариу өгөх чадварыг хэмжихэд чухал ач холбогдолтой. Чатбот гэх мэт програмуудын хувьд ITL бага байх нь сайн боловч секундэд 6-8 жетон хүний харилцан үйлчлэлд хангалттай байдаг тул илүү хурдан байх нь үргэлж сайн байдаггүй. Нөлөөлөх хүчин зүйлүүд нь КВ кэшийн хэмжээ, түүвэрлэлтийн стратеги, техник хангамж зэрэг орно.
End-to-End Latency : Оролтоо хүлээн авснаас эцсийн гаралтыг бий болгох хүртэлх нийт хугацаа. Энэ хэмжигдэхүүн нь дүгнэлт хийх үйл явцын ерөнхий гүйцэтгэлийг ойлгоход чухал ач холбогдолтой бөгөөд урьдчилан бөглөх, код тайлах болон бусад бүрэлдэхүүн хэсгүүдийн хоцрогдол (жишээ нь, JSON задлан шинжлэх) зэрэгт нөлөөлдөг. Нөлөөлөх хүчин зүйлүүд нь загварын хэмжээ, оролтын урт, техник хангамж, түүнчлэн бүх дамжуулах хоолойн үр ашгийг агуулдаг.
Хамгийн их хүсэлтийн хурд буюу QPS (Second дахь асуулга) : Секундэд боловсруулж болох дүгнэлтийн хүсэлтийн тоо. Энэхүү хэмжүүр нь үйлдвэрлэлийн орчинд загварын өргөтгөх чадварыг үнэлэхэд маш чухал юм. Загварын хэмжээ, техник хангамж, оновчлолын техник зэрэг хүчин зүйлүүд QPS-д нөлөөлж болно. Жишээлбэл, 1 GPU-ээр дамжуулан P90 хоцролтод зориулж 15 QPS үйлчилгээ үзүүлдэг бол 300 QPS-д үйлчлэхийн тулд 20 GPU хэрэгтэй болно. Нөлөөлөх хүчин зүйлүүд нь техник хангамжийн нөөц, ачааллыг тэнцвэржүүлэх, оновчтой болгох арга техник юм.
FLOPS (секундэд хөвөх цэгийн үйлдлүүд) : Загвар секундэд хийж чадах хөвөгч цэгийн үйлдлүүдийн тоо. Энэхүү хэмжүүр нь дүгнэлтийн тооцооллын зардлыг ойлгоход тустай бөгөөд янз бүрийн загвар, оновчлолын техникүүдийн үр ашгийг харьцуулахад ашиглагдана. Нөлөөлөх хүчин зүйлүүд нь загвар архитектур, техник хангамж, оновчлолын арга техник юм.
Бид эдгээр бүх оновчлолыг цувралын дараагийн нийтлэлд авч үзэх болно.
Системийн оновчлол : Тусгай техник хангамж (жишээ нь, TPU, GPU) ашиглах эсвэл програм хангамжийн стекийг оновчтой болгох (жишээ нь, үр ашигтай номын сан, хүрээ ашиглах) зэрэг үндсэн техник хангамж, програм хангамжийн дэд бүтцийг оновчтой болгох. Үүнийг дараах байдлаар хувааж болно.
Санах ойн менежмент : Санах ойн ашиглалтыг үр дүнтэй удирдаж, ачааллыг бууруулж, гүйцэтгэлийг сайжруулна.
Үр ашигтай тооцоолол : Хоцролтыг багасгахын тулд параллелизмыг ашиглах, тооцооллыг оновчтой болгох.
Багцлах : Дамжуулах чадварыг сайжруулахын тулд олон хүсэлтийг нэгэн зэрэг боловсруулах.
Хуваарь : Нөөцийн ашиглалтыг нэмэгдүүлэхийн тулд ажлыг үр дүнтэй төлөвлөх.
Загварын шахалт : Квант тогтоох, тайрах, нэрэх зэрэг аргуудыг гүйцэтгэлийг ихээхэн алдагдуулахгүйгээр загварын хэмжээг багасгаж, дүгнэлт гаргах хурдыг сайжруулахад ашиглаж болно.
Алгоритм оновчлол : Илүү үр дүнтэй түүвэрлэлтийн стратеги ашиглах эсвэл анхаарлын механизмыг оновчтой болгох гэх мэт дүгнэлт хийхэд ашигладаг алгоритмуудыг сайжруулах. Жишээлбэл, загварт олон тооны жетонуудыг зэрэгцүүлэн үүсгэх боломжийг олгодог таамаглалын код тайлах нь код тайлах хоцролтыг мэдэгдэхүйц бууруулж чадна.
Энэ нийтлэлд бид LLM-ийн дүгнэлт, түүний ач холбогдол, үүнтэй холбоотой бэрхшээлүүдийн тоймыг өгсөн. Бид дараагийн нийтлэлүүдэд оновчлолын арга техникийг судлахад чиглүүлэх асуудлын гол томъёоллыг мөн тодорхойлсон.
LLM-ийн дүгнэлтийн нарийн төвөгтэй байдал болон түүний гүйцэтгэлд нөлөөлж буй хүчин зүйлсийг ойлгосноор бид LLM-ийг бодит амьдрал дээр илүү практик болгоход оновчлолын аргуудын ач холбогдлыг илүү сайн ойлгож чадна. Дараагийн нийтлэлд бид загварын гүйцэтгэлийг хадгалахын зэрэгцээ хоцролт, нөөцийн зарцуулалтыг бууруулахад анхаарлаа төвлөрүүлэх тусгай оновчлолын техник, тэдгээрийн хэрэгжилтийн талаар илүү гүнзгий судлах болно.