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):
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 = None
49    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, None

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

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

68class Configs(NLPAutoRegressionConfigs):

GPTආකෘතිය

77    model: AutoregressiveTransformer

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

79    transformer: TransformerConfigs
80
81    local_window_size: int = 32

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

84@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_model

AFT දේශීය මොඩියුලයක් සමඟ ස්වයං අවධානය ප්රතිස්ථාපනය කරන්න

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