මෙය හඳුන්වා දී ඇති සරල ට්රාන්ස්ෆෝමරයක් පුහුණු කරයි අවධානය එන්එල්පී ස්වයංක්රීය-ප්රතිගාමී කාර්යයක් සඳහා ඔබට අවශ්ය සියල්ල (කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය සමඟ).
16import torch
17from torch import nn
18
19from labml import experiment
20from labml.configs import option
21from labml_nn.experiments.nlp_autoregression import NLPAutoRegressionConfigs
22from labml_nn.transformers import TransformerConfigs, Encoder
23from labml_nn.transformers.utils import subsequent_mask26class AutoregressiveTransformer(nn.Module):encoder
ට්රාන්ස්ෆෝමර් එන්කෝඩරය src_embed
යනු ටෝකන් කාවැද්දීමේ මොඩියුලය (ස්ථානීය කේතීකරණ සමඟ) generator
යනු පිවිසුම් ලබා දෙන අවසාන පූර්ණ සම්බන්ධිත ස්ථරයයි . 30 def __init__(self, encoder: Encoder, src_embed: nn.Module, generator: nn.Module):37 super().__init__()
38 self.src_embed = src_embed
39 self.encoder = encoder
40 self.generator = generatorපළමුඇමතුමෙන් වෙස්මුහුණ ආරම්භ කරනු ඇත
43 self.mask = None45 def forward(self, x: torch.Tensor):වෙස්මුහුණආරම්භ කර නොමැති නම් හෝ වෙස් මුහුණෙහි ප්රමාණය වෙනස් නම් පසුකාලීන වෙස්මුහුණක් සාදන්න
48 if self.mask is None or self.mask.size(0) != len(x):පසුකාලීනවෙස්මුහුණ, අනාගත ටෝකන දැකීමෙන් ටෝකන වසං කරනු ඇත
50 self.mask = subsequent_mask(len(x)).to(x.device)ස්ථානීයකේතන ක්රම සමඟ ටෝකන් කාවැද්දීම් ලබා ගන්න
52 x = self.src_embed(x)ට්රාන්ස්ෆෝමර්එන්කෝඩරය
54 x = self.encoder(x, self.mask)පිවිසුම්ලබා ගන්න
56 x = self.generator(x)ප්රතිලාභප්රති results ල (දෙවන අගය රාජ්ය සඳහා වේ, මන්ද අපගේ පුහුණුකරු RNs සමඟ ද භාවිතා කරයි)
60 return x, None63class Configs(NLPAutoRegressionConfigs):GPTආකෘතිය
72 model: AutoregressiveTransformerට්රාන්ස්ෆෝමර්
74 transformer: TransformerConfigs77@option(Configs.transformer, 'Transformer')
78def _transformer_configs(c: Configs):අපගේ වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම භාවිතා කරමු
85 conf = TransformerConfigs()කාවැද්දීම්සහ පිවිසුම් උත්පාදනය සඳහා වචන මාලාව ප්රමාණ සකසන්න
87 conf.n_src_vocab = c.n_tokens
88 conf.n_tgt_vocab = c.n_tokens90 conf.d_model = c.d_model93 return confGPTආකෘතිය සාදන්න සහ බර ආරම්භ කරන්න
96@option(Configs.model)
97def _model(c: Configs):101 m = AutoregressiveTransformer(c.transformer.encoder,
102 c.transformer.src_embed,
103 c.transformer.generator).to(c.device)
104
105 return m108def main():අත්හදාබැලීම සාදන්න
110 experiment.create(name="transformer")වින්යාසසාදන්න
112 conf = Configs()වින්යාසයන්අභිබවා යන්න
114 experiment.configs(conf, {අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
116 'tokenizer': 'character',කඩිනම්බෙදුම්කරු හිස් ය
118 'prompt_separator': '',නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
120 'prompt': 'It is ',කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
122 'text': 'tiny_shakespeare',කසන්දර්භය ප්රමාණය භාවිතා
125 'seq_len': 512,32වයස අවුරුදු සඳහා දුම්රිය
127 'epochs': 32,කණ්ඩායම්ප්රමාණය
129 'batch_size': 16,එක් යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
132 'inner_iterations': 10,ආදර්ශප්රමාණය
135 'd_model': 256,
136 'transformer.n_heads': 16,
137 'transformer.ffn.d_ff': 1024,නෝම් ප්රශස්තකරණය භාවිතා කරන්න
140 'optimizer.optimizer': 'Noam',
141 'optimizer.learning_rate': 1.,
142 })ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
145 experiment.add_pytorch_models({'model': conf.model})අත්හදාබැලීම ආරම්භ කරන්න
148 with experiment.start():පුහුණුධාවනය
150 conf.run()154if __name__ == '__main__':
155 main()