මෙය AFT ආකෘතියක්පුහුණු කිරීම සඳහා කරන ලද PyTorch අත්හදා බැලීමකි.
මෙය ස්වයංක්රීය ප්රතිගාමී එන්එල්පී කාර්යය සඳහා සාමාන්ය පුහුණු ලූප සහ වින්යාසයන්මත පදනම් වේ.
16import torch
17
18from labml import experiment
19from labml.configs import option
20from labml_helpers.module import Module
21from labml_nn.experiments.nlp_autoregression import NLPAutoRegressionConfigs
22from labml_nn.transformers import TransformerConfigs, Encoder
23from labml_nn.transformers.utils import subsequent_maskමෙයටෝකන් කාවැද්දීමේ ස්ථරයක්, ට්රාන්ස්ෆෝමර් එන්කෝඩරයක් සහ ටෝකන් පිවිසුම් ලබා දෙන අවසාන රේඛීය ස්ථරයකින් සමන්විත වේ.
26class AutoregressiveTransformer(Module):encoder
ට්රාන්ස්ෆෝමර් එන්කෝඩරය src_embed
යනු ටෝකන් කාවැද්දීමේ මොඩියුලය (ස්ථානීය කේතීකරණ සමඟ) generator
යනු පිවිසුම් ලබා දෙන අවසාන පූර්ණ සම්බන්ධිත ස්ථරයයි . 34 def __init__(self, encoder: Encoder, src_embed: Module, generator: Module):41 super().__init__()
42 self.src_embed = src_embed
43 self.encoder = encoder
44 self.generator = generatorපළමුඇමතුමෙන් වෙස්මුහුණ ආරම්භ කරනු ඇත
47 self.mask = None49 def forward(self, x: torch.Tensor):වෙස්මුහුණආරම්භ කර නොමැති නම් හෝ වෙස් මුහුණෙහි ප්රමාණය වෙනස් නම් පසුකාලීන වෙස්මුහුණක් සාදන්න
52 if self.mask is None or self.mask.size(0) != len(x):පසුකාලීනවෙස්මුහුණ, අනාගත ටෝකන දැකීමෙන් ටෝකන වසං කරනු ඇත
54 self.mask = subsequent_mask(len(x)).to(x.device)ස්ථානීයකේතන ක්රම සමඟ ටෝකන් කාවැද්දීම් ලබා ගන්න
57 x = self.src_embed(x)ට්රාන්ස්ෆෝමර්එන්කෝඩරය
59 x = self.encoder(x, self.mask)පිවිසුම්ලබා ගන්න
61 x = self.generator(x)ප්රතිලාභප්රති results ල (දෙවන අගය රාජ්ය සඳහා වේ, මන්ද අපගේ පුහුණුකරු RNs සමඟ ද භාවිතා කරයි)
65 return x, None68class Configs(NLPAutoRegressionConfigs):GPTආකෘතිය
77 model: AutoregressiveTransformerට්රාන්ස්ෆෝමර්
79 transformer: TransformerConfigs
80
81 local_window_size: int = 3284@option(Configs.transformer, 'Transformer')
85def _transformer_configs(c: Configs):අපගේ වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම භාවිතා කරමු
92 conf = TransformerConfigs()කාවැද්දීම්සහ පිවිසුම් උත්පාදනය සඳහා වචන මාලාව ප්රමාණ සකසන්න
94 conf.n_src_vocab = c.n_tokens
95 conf.n_tgt_vocab = c.n_tokensකාවැද්දීමප්රමාණය සකසන්න
97 conf.d_model = c.d_modelAFT දේශීය මොඩියුලයක් සමඟ ස්වයං අවධානය ප්රතිස්ථාපනය කරන්න
99 from labml_nn.transformers.aft import AFTLocal
100 conf.encoder_attn = AFTLocal(c.d_model, c.seq_len, c.local_window_size)103 return confස්වයංක්රීයප්රතිගාමී ආකෘතියක් සාදන්න
106@option(Configs.model)
107def _model(c: Configs):111 m = AutoregressiveTransformer(c.transformer.encoder,
112 c.transformer.src_embed,
113 c.transformer.generator).to(c.device)
114
115 return m118def main():අත්හදාබැලීම සාදන්න
120 experiment.create(name="aft")වින්යාසසාදන්න
122 conf = Configs()වින්යාසයන්අභිබවා යන්න
124 experiment.configs(conf, {අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
126 'tokenizer': 'character',කඩිනම්බෙදුම්කරු හිස් ය
128 'prompt_separator': '',නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
130 'prompt': 'It is ',කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
132 'text': 'tiny_shakespeare',කසන්දර්භය ප්රමාණය භාවිතා
135 'seq_len': 256,Epochs සඳහා දුම්රිය
137 'epochs': 128,කණ්ඩායම්ප්රමාණය
139 'batch_size': 32,එක් යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
142 'inner_iterations': 10,කාවැද්දීමප්රමාණය
145 'd_model': 128,FFNසැඟවුණු මානයන් ප්රමාණය
147 'transformer.ffn.d_ff': 256,ප්රශස්තකරණය
150 'optimizer.optimizer': 'Noam',
151 'optimizer.learning_rate': 1.,
152 })ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
155 experiment.add_pytorch_models({'model': conf.model})අත්හදාබැලීම ආරම්භ කරන්න
158 with experiment.start():පුහුණුධාවනය
160 conf.run()164if __name__ == '__main__':
165 main()