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:
35    from bitsandbytes.nn import Linear8bitLt, Int8Params
36except ImportError:
37    raise ImportError('''Please install `bitsandbytes` with `pip install bitsandbytes -U`''')
38
39import torch
40from torch import nn

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

  • linear_module පරිවර්තනය කිරීමට nn.Linear ස්තරය වේ
  • device ආකෘතියේ උපාංගය වේ
  • threshold පිටත හඳුනාගැනීම සඳහා භාවිතා කළ යුතු එළිපත්ත වේ
43def make_llm_int8_linear(linear_module: nn.Linear, device: torch.device, threshold: float = 6.0):

53    assert isinstance(linear_module, nn.Linear)

හිස්රේඛීය 8BitLT මොඩියුලයක් සාදන්න

56    int8_lin = Linear8bitLt(
57        linear_module.in_features,
58        linear_module.out_features,
59        linear_module.bias is not None,
60        has_fp16_weights=False,
61        threshold=threshold,
62    )

බරගණනය කරන්න

65    int8_lin._parameters['weight'] = Int8Params(linear_module.weight.data.cpu(),
66                                                requires_grad=False,
67                                                has_fp16_weights=False).to(device)

පාවෙන16 අවකාශයේ නැඹුරුව සකසන්න

70    if linear_module.bias is not None:
71        int8_lin._parameters['bias'] = nn.Parameter(linear_module.bias.data,
72                                                    requires_grad=False)

75    return int8_lin