මෙය අලිබී ආකෘතියක්පුහුණු කිරීම සඳහා කරන ලද පයිටෝච් අත්හදා බැලීමකි.
මෙය අපගේ GPT ආකෘතියමත පදනම් වේ.
16import torch
17from torch.utils.data import DataLoader
18
19from labml import experiment, tracker
20from labml.configs import option, calculate
21from labml_helpers.datasets.text import SequentialUnBatchedDataset
22from labml_nn.transformers.alibi import AlibiMultiHeadAttention
23from labml_nn.experiments.nlp_autoregression import transpose_batch
24from labml_nn.transformers import TransformerConfigs
25from labml_nn.transformers.gpt import Configs as GPTConfigs28class Configs(GPTConfigs):අලිබීපදනම් කරගත් ට්රාන්ස්ෆෝමර් (පහත අර්ථ දක්වා ඇත)
36 transformer: TransformerConfigs = 'GPT_ALiBi'දිගුවලංගු කිරීමේ කට්ටලය
38 valid_seq_len: int = 128
39 valid_loader = 'shuffled_longer_valid_loader'ආරම්භකහා අවසාන ටෝකන වලදී පාඩු ලොග් කරන්න
41 def other_metrics(self, output: torch.Tensor, target: torch.Tensor):පුහුණුඅනුක්රමයේ දිග (වලංගු කිරීමේදී) වැඩි ටෝකන තිබේ නම්,
46 if self.seq_len < output.shape[0]:පුහුණුඅනුක්රමයේ දිග දී අලාභය ලොග් කරන්න
48 tracker.add(f'loss.{self.seq_len - 1}.', self.loss_func(output[self.seq_len - 1], target[self.seq_len - 1]))පළමුටෝකනයේ අලාභය ලොග් කරන්න
50 tracker.add(f'loss.0.', self.loss_func(output[0], target[0]))අවසානටෝකනයේ අලාභය ලොග් කරන්න
52 tracker.add(f'loss.{int(output.shape[0]) - 1}.', self.loss_func(output[-1], target[-1]))අලිබීඅවධානය මොඩියුලයක් සාදන්න
55def _alibi_mha(c: TransformerConfigs):59 return AlibiMultiHeadAttention(c.n_heads, c.d_model, dropout_prob=c.dropout)සියළුමඅවධානය යොමු කිරීමේ යාන්ත්රණ අලිබී වෙත සකසන්න
63calculate(TransformerConfigs.encoder_attn, 'alibi_mha', _alibi_mha)
64calculate(TransformerConfigs.decoder_attn, 'alibi_mha', _alibi_mha)
65calculate(TransformerConfigs.decoder_mem_attn, 'alibi_mha', _alibi_mha) valid_seq_len
අනුක්රමික දිග සහිත වලංගුකරණ දත්ත පැටවුම මාරු කර ඇත
68@option(Configs.valid_loader)
69def shuffled_longer_valid_loader(c: Configs):73 return DataLoader(SequentialUnBatchedDataset(text=c.text.valid,
74 dataset=c.text,
75 seq_len=c.valid_seq_len),
76 batch_size=c.batch_size,
77 collate_fn=transpose_batch,
78 shuffle=True)81@option(Configs.transformer, 'GPT_ALiBi')
82def _transformer_configs(c: Configs):අපගේ වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම භාවිතා කරමු
89 conf = TransformerConfigs()කාවැද්දීම්සහ පිවිසුම් උත්පාදනය සඳහා වචන මාලාව ප්රමාණ සකසන්න
91 conf.n_src_vocab = c.n_tokens
92 conf.n_tgt_vocab = c.n_tokensGPTස්ථානගත නැණවත් පෝෂණය සඳහා GELU සක්රිය කිරීම භාවිතා කරයි
94 conf.ffn.activation = 'GELU'AliBiස්ථානීය කාවැද්දීම් භාවිතා නොකරයි
97 conf.src_embed = 'no_pos'
98 conf.tgt_embed = 'no_pos'සියළුමඅවධානය යොමු කිරීමේ යාන්ත්රණ අලිබී වෙත සකසන්න
101 conf.encoder_attn = 'alibi_mha'
102 conf.decoder_attn = 'alibi_mha'
103 conf.decoder_mem_attn = 'alibi_mha'106 return conf109def main():අත්හදාබැලීම සාදන්න
111 experiment.create(name="gpt_alibi")වින්යාසසාදන්න
113 conf = Configs()වින්යාසයන්අභිබවා යන්න
115 experiment.configs(conf, {අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
117 'tokenizer': 'character',කඩිනම්බෙදුම්කරු හිස් ය
119 'prompt_separator': '',නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
121 'prompt': 'It is ',කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
123 'text': 'tiny_shakespeare','text ':' ටිනි_ෂේක්ස්පියර්_නො_බෙදීම් ',
කසන්දර්භය ප්රමාණය භාවිතා
127 'seq_len': 64,කසන්දර්භය ප්රමාණය භාවිතා
129 'valid_seq_len': 80,Epochs සඳහා දුම්රිය
131 'epochs': 128,කණ්ඩායම්ප්රමාණය
133 'batch_size': 128,එක් යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
136 'inner_iterations': 10,ට්රාන්ස්ෆෝමර්වින්යාසයන්
139 'transformer.d_model': 128,
140 'transformer.ffn.d_ff': 512,
141 'transformer.n_heads': 8,
142 'transformer.n_layers': 4,
143 'transformer.dropout': 0.1,
144 })ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
147 experiment.add_pytorch_models({'model': conf.model})අත්හදාබැලීම ආරම්භ කරන්න
150 with experiment.start():පුහුණුධාවනය
152 conf.run()156if __name__ == '__main__':
157 main()