docs/si/transformers/knn/train_model.html
මෙයස්වයංක්රීය ප්රතිගාමී සඳහා සරල ට්රාන්ස්ෆෝමර් ආකෘතියක් පුහුණු කරයි.
12importtorch13fromlabmlimportexperiment14fromlabml.configsimportoption15fromlabml.utils.pytorchimportget\_modules16fromlabml\_helpers.moduleimportModule1718fromlabml\_nn.experiments.nlp\_autoregressionimportNLPAutoRegressionConfigs19fromlabml\_nn.transformersimportEncoder,Generator,TransformerConfigs20fromlabml\_nn.transformers.utilsimportsubsequent\_mask
23classAutoregressiveModel(Module):
28def\_\_init\_\_(self,src\_embed:Module,encoder:Encoder,generator:Generator,\*,29is\_save\_ff\_input:bool=False):30super().\_\_init\_\_()
ටෝකන්කාවැද්දීම මොඩියුලය
32self.src\_embed=src\_embed
ට්රාන්ස්ෆෝමර්පදනම් කරගත් එන්කෝඩරය
34self.encoder=encoder
එන්කෝඩරයේඅවසාන ස්ථරය ආදානය පෝෂක ඉදිරි ස්ථරයට සුරැකිය යුතුද යන්න. මෙය සිදු වේ f(ct), සන්දර්භය කාවැද්දීම.
38self.encoder.layers[-1].is\_save\_ff\_input=is\_save\_ff\_input
ඊළඟටෝකන් උත්පාදන ස්තරය; මෙය ඊළඟ ටෝකනයේ පිවිසුම් ලබා දෙයි
41self.generator=generator
මෙයපළමු ඇමතුමෙන් ආරම්භ කෙරේ
43self.src\_mask=None
ගැලවීමලබා ගන්න f(ct)
45@property46defff\_input(self)-\>torch.Tensor:
50returnself.encoder.layers[-1].ff\_input
52defforward(self,src:torch.Tensor):
ට්රාන්ස්ෆෝමරයඅතීත ටෝකන කෙරෙහි පමණක් අවධානය යොමු කළ හැකි වන පරිදි පසුකාලීන වෙස්මුහුණක් සාදන්න.
54ifself.src\_maskisNoneorself.src\_mask.size(0)!=len(src):55self.src\_mask=subsequent\_mask(len(src)).to(src.device)
ටෝකනකාවැද්දීම (src ) සහ ට්රාන්ස්ෆෝමරය හරහා එය ක්රියාත්මක කරන්න
57res=self.encoder(self.src\_embed(src),self.src\_mask)
ඊළඟටෝකනයේ පිවිසුම් ජනනය කරන්න
59returnself.generator(res),None
අපිඅත්හදා බැලීම ආරම්භ කරන විට පෙරනිමි වින්යාස කළ හැකි අතර එය අධික ලෙස ධාවනය වනු ඇත
62classConfigs(NLPAutoRegressionConfigs):
69transformer:TransformerConfigs70model:AutoregressiveModel7172is\_save\_ff\_input=False
ස්වයංක්රීයප්රතිගාමී ආකෘතිය ආරම්භ කරන්න
75@option(Configs.model)76defautoregressive\_model(c:Configs):
80m=AutoregressiveModel(
වින්යාසගතකළ හැකි ට්රාන්ස්ෆෝමරයෙන් ප්රභව ටෝකන් කාවැද්දීමේ ස්ථරය, එන්කෝඩරය සහ අවසාන ටෝකන් උත්පාදක යන්ත්රය ලබා ගන්න
83src\_embed=c.transformer.src\_embed,84encoder=c.transformer.encoder,85generator=c.transformer.generator,
සුරැකීමටයන්න f(ct)
87is\_save\_ff\_input=c.is\_save\_ff\_input)88returnm.to(c.device)
අපගේස්වයංක්රීය ප්රතිගාමී ආකෘතිය සඳහා වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් එන්කෝඩරය ආරම්භ කරන්න
91@option(Configs.transformer)92deftransformer\_c(c:Configs):
96tc=TransformerConfigs()97tc.n\_src\_vocab=c.n\_tokens98tc.n\_tgt\_vocab=c.n\_tokens99100returntc
103defmain():
අත්හදාබැලීම සාදන්න
105experiment.create(name="knn\_lm")
වින්යාසසාදන්න
107conf=Configs()
වින්යාසයන්පූරණය කරන්න
109experiment.configs(conf,
අභිබවායාම සඳහා වින්යාසයන් පිළිබඳ ශබ්දකෝෂයක්
111{'tokenizer':'character',112'prompt\_separator':'',113'prompt':'It is ',114'text':'tiny\_shakespeare',115116'optimizer.optimizer':'Noam',117'optimizer.learning\_rate':1.,118'optimizer.d\_model':256,119120'seq\_len':1024,121'epochs':128,122'batch\_size':6,123'inner\_iterations':10,
ට්රාන්ස්ෆෝමර්වින්යාසයන්
126'transformer.d\_model':256,127'transformer.ffn.d\_ff':1024,128'transformer.n\_heads':8,129'transformer.n\_layers':6})
ආකෘතිආරම්භ කිරීම සඳහා මෙය අවශ්ය වේ
132conf.n\_tokens=conf.text.n\_tokens
ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
135experiment.add\_pytorch\_models(get\_modules(conf))
අත්හදාබැලීම ආරම්භ කරන්න
138withexperiment.start():
TrainValidConfigs.run
140conf.run()141142143if\_\_name\_\_=='\_\_main\_\_':144main()