docs/si/normalization/deep_norm/experiment.html
13importcopy1415importtorch16importtorch.nnasnn1718fromlabmlimportexperiment19fromlabml.configsimportoption20fromlabml\_helpers.moduleimportModule21fromlabml\_nn.experiments.nlp\_autoregressionimportNLPAutoRegressionConfigs22fromlabml\_nn.normalization.deep\_normimportDeepNormTransformerLayer23fromlabml\_nn.transformersimportMultiHeadAttention24fromlabml\_nn.transformers.feed\_forwardimportFeedForward
මෙයDeepNorm භාවිතා කරන ස්වයංක්රීය ප්රතිගාමී ට්රාන්ස්ෆෝමර් ආකෘතියකි.
27classAutoregressiveTransformer(Module):
n_tokens යනු වචන මාලාවේ ටෝකන ගණනd_model කාවැද්දීම ප්රමාණය වේn_layers ට්රාන්ස්ෆෝමර් ස්ථර ගණනlayer ස්තරය වේ. අපි ට්රාන්ෙපෝමර් සඳහා මෙහි n_layers පිටපත් භාවිතා කරමු.34def\_\_init\_\_(self,n\_tokens:int,d\_model:int,n\_layers:int,layer:DeepNormTransformerLayer):
41super().\_\_init\_\_()
n_layers ස්ථර සහිත ට්රාන්ස්ෆෝමර්
43self.transformer=nn.Sequential(\*[copy.deepcopy(layer)for\_inrange(n\_layers)])
ටෝකන්කාවැද්දීම ස්ථරය
46self.emb=nn.Embedding(n\_tokens,d\_model)
කියවීමේස්ථරය
48self.readout=nn.Linear(d\_model,n\_tokens)
x හැඩයේ ආදාන ටෝකන වේ [seq_len, batch_size]50defforward(self,x:torch.Tensor):
ටෝකන්කාවැද්දීම් ලබා ගන්න
55x=self.emb(x)
ට්රාන්ස්ෆෝමර්එන්කෝඩරය
57x=self.transformer(x)
පිවිසුම්ලබා ගන්න
59x=self.readout(x)
ආපසුප්රතිඵල
62returnx,None
මෙයඋරුම වන්නේ NLPAutoRegressionConfigs
65classConfigs(NLPAutoRegressionConfigs):
ආකෘතිය
74model:AutoregressiveTransformer
ස්ථරගණන
77n\_layers:int=32
α සහ ගැඹුරු සම්මතය β සඳහා
80deep\_norm\_alpha:float81deep\_norm\_beta:float
අවධානයයොමු කරන හිස් ගණන
84n\_heads:int=4
කාවැද්දීමප්රමාණය
86d\_model:int=64
එක්එක් අවධානය හිස ප්රමාණය
88d\_k:int=16
α=(2M)41
91@option(Configs.deep\_norm\_alpha)92def\_deep\_norm\_alpha(c:Configs):
98return(2.\*c.n\_layers)\*\*(1./4.)
β=(8M)−41
101@option(Configs.deep\_norm\_beta)102def\_deep\_norm\_beta(c:Configs):
108return(8.\*c.n\_layers)\*\*-(1./4.)
111@option(Configs.model)112def\_model(c:Configs):
116m=AutoregressiveTransformer(c.n\_tokens,c.d\_model,c.n\_layers,117DeepNormTransformerLayer(d\_model=c.d\_model,118deep\_norm\_alpha=c.deep\_norm\_alpha,119deep\_norm\_beta=c.deep\_norm\_beta,120feed\_forward=FeedForward(d\_model=c.d\_model,121d\_ff=c.d\_model\*4),122self\_attn=MultiHeadAttention(c.n\_heads,c.d\_model,123dropout\_prob=0.0)))124125returnm.to(c.device)
128defmain():
අත්හදාබැලීම සාදන්න
133experiment.create(name="deep\_norm",writers={'screen','web\_api'})
වින්යාසසාදන්න
135conf=Configs()
වින්යාසයන්අභිබවා යන්න
137experiment.configs(conf,{
අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
139'tokenizer':'character',
කඩිනම්බෙදුම්කරු හිස් ය
141'prompt\_separator':'',
නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
143'prompt':'It is ',
කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
145'text':'tiny\_shakespeare',
කසන්දර්භය ප්රමාණය භාවිතා 256
148'seq\_len':256,
32වයස අවුරුදු සඳහා දුම්රිය
150'epochs':32,
කණ්ඩායම්ප්රමාණය 16
152'batch\_size':16,
එක් 10 යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
154'inner\_iterations':10,
ස්ථරගණන
157'n\_layers':50,
උනුසුම්වීමක් නොමැති ආදම් ප්රශස්තකරණය
161'optimizer.optimizer':'Adam',162'optimizer.learning\_rate':1.25e-4,163})
ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘතිය (ය) සකසන්න
166experiment.add\_pytorch\_models({'model':conf.model})
අත්හදාබැලීම ආරම්භ කරන්න
169withexperiment.start():
පුහුණුධාවනය
171conf.run()
175if\_\_name\_\_=='\_\_main\_\_':176main()