docs/si/transformers/basic/autoregressive_experiment.html
මෙය හඳුන්වා දී ඇති සරල ට්රාන්ස්ෆෝමරයක් පුහුණු කරයි අවධානය එන්එල්පී ස්වයංක්රීය-ප්රතිගාමී කාර්යයක් සඳහා ඔබට අවශ්ය සියල්ල (කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය සමඟ).
16importtorch17fromtorchimportnn1819fromlabmlimportexperiment20fromlabml.configsimportoption21fromlabml\_nn.experiments.nlp\_autoregressionimportNLPAutoRegressionConfigs22fromlabml\_nn.transformersimportTransformerConfigs,Encoder23fromlabml\_nn.transformers.utilsimportsubsequent\_mask
26classAutoregressiveTransformer(nn.Module):
encoder ට්රාන්ස්ෆෝමර් එන්කෝඩරයsrc_embed යනු ටෝකන් කාවැද්දීමේ මොඩියුලය (ස්ථානීය කේතීකරණ සමඟ)generator යනු පිවිසුම් ලබා දෙන අවසාන පූර්ණ සම්බන්ධිත ස්ථරයයි .30def\_\_init\_\_(self,encoder:Encoder,src\_embed:nn.Module,generator:nn.Module):
37super().\_\_init\_\_()38self.src\_embed=src\_embed39self.encoder=encoder40self.generator=generator
පළමුඇමතුමෙන් වෙස්මුහුණ ආරම්භ කරනු ඇත
43self.mask=None
45defforward(self,x:torch.Tensor):
වෙස්මුහුණආරම්භ කර නොමැති නම් හෝ වෙස් මුහුණෙහි ප්රමාණය වෙනස් නම් පසුකාලීන වෙස්මුහුණක් සාදන්න
48ifself.maskisNoneorself.mask.size(0)!=len(x):
පසුකාලීනවෙස්මුහුණ, අනාගත ටෝකන දැකීමෙන් ටෝකන වසං කරනු ඇත
50self.mask=subsequent\_mask(len(x)).to(x.device)
ස්ථානීයකේතන ක්රම සමඟ ටෝකන් කාවැද්දීම් ලබා ගන්න
52x=self.src\_embed(x)
ට්රාන්ස්ෆෝමර්එන්කෝඩරය
54x=self.encoder(x,self.mask)
පිවිසුම්ලබා ගන්න
56x=self.generator(x)
ප්රතිලාභප්රති results ල (දෙවන අගය රාජ්ය සඳහා වේ, මන්ද අපගේ පුහුණුකරු RNs සමඟ ද භාවිතා කරයි)
60returnx,None
මෙයඋරුම වන්නේ NLPAutoRegressionConfigs
63classConfigs(NLPAutoRegressionConfigs):
GPTආකෘතිය
72model:AutoregressiveTransformer
ට්රාන්ස්ෆෝමර්
74transformer:TransformerConfigs
77@option(Configs.transformer,'Transformer')78def\_transformer\_configs(c:Configs):
අපගේ වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම භාවිතා කරමු
85conf=TransformerConfigs()
කාවැද්දීම්සහ පිවිසුම් උත්පාදනය සඳහා වචන මාලාව ප්රමාණ සකසන්න
87conf.n\_src\_vocab=c.n\_tokens88conf.n\_tgt\_vocab=c.n\_tokens
90conf.d\_model=c.d\_model
93returnconf
GPTආකෘතිය සාදන්න සහ බර ආරම්භ කරන්න
96@option(Configs.model)97def\_model(c:Configs):
101m=AutoregressiveTransformer(c.transformer.encoder,102c.transformer.src\_embed,103c.transformer.generator).to(c.device)104105returnm
108defmain():
අත්හදාබැලීම සාදන්න
110experiment.create(name="transformer")
වින්යාසසාදන්න
112conf=Configs()
වින්යාසයන්අභිබවා යන්න
114experiment.configs(conf,{
අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
116'tokenizer':'character',
කඩිනම්බෙදුම්කරු හිස් ය
118'prompt\_separator':'',
නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
120'prompt':'It is ',
කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
122'text':'tiny\_shakespeare',
කසන්දර්භය ප්රමාණය භාවිතා 256
125'seq\_len':512,
32වයස අවුරුදු සඳහා දුම්රිය
127'epochs':32,
කණ්ඩායම්ප්රමාණය 32
129'batch\_size':16,
එක් 10 යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
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})
ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
145experiment.add\_pytorch\_models({'model':conf.model})
අත්හදාබැලීම ආරම්භ කරන්න
148withexperiment.start():
පුහුණුධාවනය
150conf.run()
154if\_\_name\_\_=='\_\_main\_\_':155main()