این روش برای طول متنهای کوتاه خوبه، اما برای متون بلند میتونه پرهزینه باشه، چون خوندن کش هزینه داره و بایستی همه بردارها رو در حافظه با پهنای باند بالا GPU ذخیره تا هنگام نیاز به هسته های تنسور بارگذاری کنیم.
اگر هر توکن نیاز داشته باشه که کل متن گذشته خودش رو بدونه، به این معناست که برای هر توکنی که تولید میکنیم، باید کل کش KV گذشته را ازکارت گرافیک بخونیم.
این کار به ویژه در متنهای بالای چند هزار توکن میتونه مشکل ساز شه و نیاز به روشهایی برای کاهش اندازه کش KV را ضروری میسازه.
محاسبه مقدار حافظه مورد نیاز برای کش KV از طریق ضرب مقادیر زیر بدست میاد:
number of layers*batch size*number of attention heads*attention head size*sequence length
به عنوان مثال در GPT3 با 175 میلیارد پارامتر اندازه کش KV با batch size 1 و sequence length
10,000 توکن حافظه مورد نیاز برابر با 43GB هست!
توضیحات بیشتر در ویدیو زیر:
https://www.youtube.com/watch?v=80bIUggRJf4
ادامه دارد...
اگر هر توکن نیاز داشته باشه که کل متن گذشته خودش رو بدونه، به این معناست که برای هر توکنی که تولید میکنیم، باید کل کش KV گذشته را ازکارت گرافیک بخونیم.
این کار به ویژه در متنهای بالای چند هزار توکن میتونه مشکل ساز شه و نیاز به روشهایی برای کاهش اندازه کش KV را ضروری میسازه.
محاسبه مقدار حافظه مورد نیاز برای کش KV از طریق ضرب مقادیر زیر بدست میاد:
number of layers*batch size*number of attention heads*attention head size*sequence length
به عنوان مثال در GPT3 با 175 میلیارد پارامتر اندازه کش KV با batch size 1 و sequence length
10,000 توکن حافظه مورد نیاز برابر با 43GB هست!
توضیحات بیشتر در ویدیو زیر:
https://www.youtube.com/watch?v=80bIUggRJf4
ادامه دارد...