ගේට්ටුරේඛීය ඒකක සහ ප්රභේද

මෙයස්වයංක්රීය ප්රතිගාමී සඳහා සරල ට්රාන්ස්ෆෝමර් ආකෘතියක් පුහුණු කරයි. ස්ථාන-නැණවත් පෝෂක ජාලයසඳහා අපි විවිධ ප්රභේද උත්සාහ කරමු. නැවත භාවිතා කළ හැකි සහ වින්යාසගත කළ හැකි අර්ථ දක්වා ඇත configs.py .

16import torch
17from labml import experiment
18from labml.configs import option
19from labml.utils.pytorch import get_modules
20from labml_helpers.module import Module
21
22from labml_nn.experiments.nlp_autoregression import NLPAutoRegressionConfigs
23from labml_nn.transformers import Encoder, Generator, TransformerConfigs
24from labml_nn.transformers.utils import subsequent_mask

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

27class AutoregressiveModel(Module):
32    def __init__(self, src_embed: Module, encoder: Encoder, generator: Generator):
33        super().__init__()

ටෝකන්කාවැද්දීම මොඩියුලය

35        self.src_embed = src_embed

ට්රාන්ස්ෆෝමර්පදනම් කරගත් එන්කෝඩරය

37        self.encoder = encoder

ඊළඟටෝකන් උත්පාදන ස්තරය; මෙය ඊළඟ ටෝකනයේ පිවිසුම් ලබා දෙයි

40        self.generator = generator

මෙයපළමු ඇමතුමෙන් ආරම්භ කෙරේ

42        self.src_mask = None
44    def forward(self, src: torch.Tensor):

ට්රාන්ස්ෆෝමරයඅතීත ටෝකන කෙරෙහි පමණක් අවධානය යොමු කළ හැකි වන පරිදි පසුකාලීන වෙස්මුහුණක් සාදන්න.

46        if self.src_mask is None or self.src_mask.size(0) != len(src):
47            self.src_mask = subsequent_mask(len(src)).to(src.device)

ටෝකනකාවැද්දීම (src ) සහ ට්රාන්ස්ෆෝමරය හරහා එය ක්රියාත්මක කරන්න

49        res = self.encoder(self.src_embed(src), self.src_mask)

ඊළඟටෝකනයේ පිවිසුම් ජනනය කරන්න

51        return self.generator(res), None

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

අපිඅත්හදා බැලීම ආරම්භ කරන විට පෙරනිමි වින්යාස කළ හැකි අතර එය අධික ලෙස ධාවනය වනු ඇත

54class Configs(NLPAutoRegressionConfigs):
61    transformer: TransformerConfigs
62    model: AutoregressiveModel

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

65@option(Configs.model)
66def autoregressive_model(c: Configs):
70    m = AutoregressiveModel(c.transformer.src_embed, c.transformer.encoder, c.transformer.generator)
71    return m.to(c.device)

අපගේස්වයංක්රීය ප්රතිගාමී ආකෘතිය සඳහා වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් එන්කෝඩරය ආරම්භ කරන්න.

74@option(Configs.transformer)
75def transformer_c(c: Configs):
79    tc = TransformerConfigs()
80    tc.n_src_vocab = c.n_tokens
81    tc.n_tgt_vocab = c.n_tokens
82
83    return tc
86def main():

අත්හදාබැලීම සාදන්න

88    experiment.create(name="glu_variants")

වින්යාසසාදන්න

90    conf = Configs()

වින්යාසයන්පූරණය කරන්න

92    experiment.configs(conf,

අභිබවායාම සඳහා වින්යාසයන් පිළිබඳ ශබ්දකෝෂයක්

94                       {'tokenizer': 'character',
95                        'prompt_separator': '',
96                        'prompt': 'It is ',
97                        'text': 'tiny_shakespeare',
98
99                        'optimizer.optimizer': 'Noam',
100                        'optimizer.learning_rate': 1.,
101                        'optimizer.d_model': 256,
102
103                        'seq_len': 1024,
104                        'epochs': 128,
105                        'batch_size': 6,
106                        'inner_iterations': 10,

GLUප්රභේදය, GLU, ද්විලීනියර්, රෙග්ලූ, GEGLU, ස්විග්ලූ වලින් එකක්

වින්යාසගත කළ හැකි FFN ක්රියාත්මක කිරීමේදී මේවා අර්ථ දක්වා ඇත

112                        'transformer.ffn.glu_variant': 'Bilinear',

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

115                        'transformer.d_model': 256,
116                        'transformer.ffn.d_ff': 1024,
117                        'transformer.n_heads': 8,
118                        'transformer.n_layers': 6})

ආකෘතිආරම්භ කිරීම සඳහා මෙය අවශ්ය වේ

121    conf.n_tokens = conf.text.n_tokens

ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න

124    experiment.add_pytorch_models(get_modules(conf))

අත්හදාබැලීම ආරම්භ කරන්න

127    with experiment.start():

TrainValidConfigs.run

129        conf.run()
130
131
132if __name__ == '__main__':
133    main()