වේගවත්දුම්රිය බර ට්රාන්ස්ෆෝමර්

මෙයස්වයංක්රීය පසුගාමී වීම සඳහා වේගවත් බර ට්රාන්ස්ෆෝමර් ආකෘතියක් පුහුණු කරයි.

කුඩාෂේක්ස්පියර් දත්ත කට්ටලය මත වේගවත් බර ට්රාන්ස්ෆෝමරයක් පුහුණු කිරීම සඳහා කොලැබ් සටහන් පොතක් මෙන්න.

Open In Colab View Run

17import torch
18from torch import nn
19
20from labml import experiment
21from labml.configs import option
22from labml.utils.pytorch import get_modules
23from labml_helpers.module import Module
24from labml_nn.experiments.nlp_autoregression import NLPAutoRegressionConfigs

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

27class AutoregressiveModel(Module):
32    def __init__(self, n_vocab: int, d_model: int, transformer: Module):
33        super().__init__()

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

35        self.src_embed = nn.Embedding(n_vocab, d_model)
36        self.transformer = transformer
37        self.generator = nn.Linear(d_model, n_vocab)
39    def forward(self, x: torch.Tensor):

ටෝකනකාවැද්දීම

41        x = self.src_embed(x)

ට්රාන්ස්ෆෝමරයහරහා එය ධාවනය කරන්න

43        res = self.transformer(x)

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

45        return self.generator(res), None

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

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

48class Configs(NLPAutoRegressionConfigs):
55    model: AutoregressiveModel
56
57    d_model: int = 512
58    nu: int = 1
59    heads: int = 8
60    dropout: float = 0.0
61    d_ff: int = 2048
62    n_layers: int = 6
65@option(Configs.model)
66def fast_weights_transformer(c: Configs):
70    from labml_nn.transformers.fast_weights import FastWeightsAttentionTransformer, \
71        FastWeightsAttentionTransformerLayer, FastWeightsAttention, FeedForward
72
73    from labml_nn.transformers.fast_weights import DPFP
74    return AutoregressiveModel(
75        c.n_tokens, c.d_model,
76        FastWeightsAttentionTransformer(
77            FastWeightsAttentionTransformerLayer(d_model=c.d_model,
78                                                 attn=FastWeightsAttention(c.heads, c.d_model, c.dropout, DPFP(nu=c.nu)),
79                                                 feed_forward=FeedForward(c.d_model, c.d_ff, c.dropout),
80                                                 dropout_prob=c.dropout),
81            c.n_layers)).to(c.device)
84def main():

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

86    experiment.create(name="fast_weights_transformer")

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

88    conf = Configs()

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

90    experiment.configs(conf,

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

92                       {'tokenizer': 'character',
93                        'text': 'tiny_shakespeare',
94                        'optimizer.learning_rate': 1.0,
95                        'optimizer.optimizer': 'Noam',
96                        'prompt': 'It is',
97                        'prompt_separator': '',
98
99                        'train_loader': 'shuffled_train_loader',
100                        'valid_loader': 'shuffled_valid_loader',
101
102                        'seq_len': 128,
103                        'epochs': 128,
104                        'batch_size': 16,
105                        'inner_iterations': 25})

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

108    experiment.add_pytorch_models(get_modules(conf))

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

111    with experiment.start():

පුහුණුලූපය ධාවනය කරන්න

113        conf.run()
114
115
116if __name__ == '__main__':
117    main()