docs/si/neox/utils/llm_int8.html
ස්තරයක්LLM.INT8 () රේඛීය nn.Linear ස්ථරයට පරිවර්තනය කිරීම සඳහා මෙය උපයෝගීතා ශ්රිතයක් ක්රියාත්මක කරයි.
LLM.INT8 () කඩදාසි විශාල භාෂා ආකෘතිවල කාර්ය සාධනය පිරිහීමකින් තොරව මතක අඩිපාර අඩු කිරීම සඳහා පිටස්තරයන් හැසිරවීමේදී ඔබට int8 quantization භාවිතා කළ හැකි බව පෙන්වයි. ඒවා බර සහ යෙදවුම් පරිමාණය කළ 8-බිට් නිඛිල බවට පරිවර්තනය කරන අතර න්යාස ගුණ කිරීම INT32 ප්රති results ල නිපදවන අතර එය නැවත පාවෙන 16 බවට පරිවර්තනය කර නැවත සකස් කරනු ලැබේ. ඔවුන් පෙන්වා දෙන්නේ විශාල ලැන්ගෝජ් ආකෘතිවලදී, සමහර විශේෂාංග මඟින් ආකෘතියේ නිමැවුමේ ආධිපත්යය දරන ආන්තික අගයන් (outliers) ලබා දිය හැකි බවයි. මෙම විශේෂාංග ආකෘතිය කාර්ය සාධනය හායනය කිරීමට හේතු වන 8-bit පූර්ණ සංඛ්යාමය අවකාශය කලම්ප ගසා ලබා ගන්න. විසඳුමක් ලෙස ඔවුන් මෙම පිටස්තරයන් (නිශ්චිත සීමාවකට වඩා වැඩි) තෝරාගෙන ඒවායේ ගුණනය වෙන වෙනම පාවෙන 16 අවකාශයේ ගණනය කරයි. පිටස්තරයින්ගේ ප්රතිශතය 0.01% ක් පමණ වන බැවින් මෙය මතක භාවිතය වැඩි නොකරන අතර ආකෘතිය කාර්ය සාධනය පිරිහීම වළක්වයි.
ජීපීටී-නොක්ස්ස්ථර පරිවර්තනය කිරීමේ කේතය model.pyහි අර්ථ දක්වා ඇත.
INT8ප්රමාණකරණය සහිත ජීපීටී-නියෝක්ස් හි උදාහරණ භාවිතයන් මෙන්න.
33
ආනයන bitsandbytes පැකේජය
34try:35frombitsandbytes.nnimportLinear8bitLt,Int8Params36exceptImportError:37raiseImportError('''Please install `bitsandbytes` with `pip install bitsandbytes -U`''')3839importtorch40fromtorchimportnn
nn.Linearlinear_module පරිවර්තනය කිරීමට nn.Linear ස්තරය වේdevice ආකෘතියේ උපාංගය වේthreshold පිටත හඳුනාගැනීම සඳහා භාවිතා α කළ යුතු එළිපත්ත වේ43defmake\_llm\_int8\_linear(linear\_module:nn.Linear,device:torch.device,threshold:float=6.0):
53assertisinstance(linear\_module,nn.Linear)
හිස්රේඛීය 8BitLT මොඩියුලයක් සාදන්න
56int8\_lin=Linear8bitLt(57linear\_module.in\_features,58linear\_module.out\_features,59linear\_module.biasisnotNone,60has\_fp16\_weights=False,61threshold=threshold,62)
බරගණනය කරන්න
65int8\_lin.\_parameters['weight']=Int8Params(linear\_module.weight.data.cpu(),66requires\_grad=False,67has\_fp16\_weights=False).to(device)
පාවෙන16 අවකාශයේ නැඹුරුව සකසන්න
70iflinear\_module.biasisnotNone:71int8\_lin.\_parameters['bias']=nn.Parameter(linear\_module.bias.data,72requires\_grad=False)
75returnint8\_lin