ට්රාන්ස්ෆෝමර් ස්වයංක්රීය ප්රතිගාමී අත්හදා බැලීම

Open In Colab

මෙය හඳුන්වා දී ඇති සරල ට්රාන්ස්ෆෝමරයක් පුහුණු කරයි අවධානය එන්එල්පී ස්වයංක්රීය-ප්රතිගාමී කාර්යයක් සඳහා ඔබට අවශ්ය සියල්ල (කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය සමඟ).

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_mask

ස්වයංක්රීයප්රතිගාමී ආකෘතිය

26class AutoregressiveTransformer(nn.Module):
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 = None
45    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, None

වින්යාසකිරීම්

මෙයඋරුම වන්නේ NLPAutoRegressionConfigs

63class Configs(NLPAutoRegressionConfigs):

GPTආකෘතිය

72    model: AutoregressiveTransformer

ට්රාන්ස්ෆෝමර්

74    transformer: TransformerConfigs

ට්රාන්ස්ෆෝමර්වින්යාසයන්

77@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_tokens

90    conf.d_model = c.d_model

93    return conf

GPTආකෘතිය සාදන්න සහ බර ආරම්භ කරන්න

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 m
108def 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()