Back to Annotated Deep Learning Paper Implementations

LLM.int() ජීපීටී-නියෝක්ස් මත

docs/si/neox/utils/llm_int8.html

latest4.8 KB
Original Source

homeneoxutils

View code on Github

#

LLM.int() ජීපීටී-නියෝක්ස් මත

ස්තරයක්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

#

LLM.INT8() රේඛීය ස්ථරයට ස්ථරයක් පරිවර්තනය කරන්න nn.Linear

  • linear_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

Trending Research Paperslabml.ai