docs/si/transformers/configs.html
9importcopy1011importtorch.nnasnn1213fromlabml.configsimportBaseConfigs,option,calculate,aggregate14fromlabml\_helpers.moduleimportModule15from.feed\_forwardimportFeedForward16from.mhaimportMultiHeadAttention17from.modelsimportEmbeddingsWithPositionalEncoding,EmbeddingsWithLearnedPositionalEncoding,TransformerLayer,\18Encoder,Decoder,Generator,EncoderDecoder
අර්ථදක්වා ඇති ස්ථාන-නැණවත් Feedඉදිරි ජාලයක් නිර්මාණය කරයි feed_forward.py.
21classFeedForwardConfigs(BaseConfigs):
ස්ථාන-නැණවත්පෝෂක ස්ථරය
31ffn:FeedForward
කාවැද්දීමේවිශේෂාංග ගණන
33d\_model:int
සැඟවුණුස්ථරයේ ඇති ලක්ෂණ ගණන
35d\_ff:int=2048
අතහැරදැමීමේ සම්භාවිතාව
37dropout:float=0.1
ස්ථාන-නැණවත්පෝෂක ස්ථරයේ සක්රිය කිරීම
39activation:nn.Module='ReLU'
FFNස්තරය ගේට්ටු කළ යුතුද යන්න
41is\_gated:bool=False
පළමුපූර්ණ සම්බන්ධිත ස්ථරයට ඉගෙන ගත හැකි නැඹුරුවක් තිබිය යුතුද යන්න
43bias1:bool=True
දෙවනපූර්ණ සම්බන්ධිත ස්තරය ඉගෙන ගත හැකි නැඹුරුවක් තිබිය යුතුද යන්න
45bias2:bool=True
ගේට්ටුවසඳහා පූර්ණ සම්බන්ධිත ස්තරය ඉගෙන ගත හැකි නැඹුරුවක් තිබිය යුතුද යන්න
47bias\_gate:bool=False
පූර්වනිශ්චිත GLU ප්රභේද
49glu\_variant:str='none'
max(0,x)
52@option(FeedForwardConfigs.activation,'ReLU')53def\_ffn\_activation\_relu():
59returnnn.ReLU()
xΦ(x) කොහේද Φ(x)=P(X≤x),X∼N(0,1)
එයකඩදාසි Gaussian දෝෂ රේඛීය ඒකකහඳුන්වා දෙන ලදී.
62@option(FeedForwardConfigs.activation,'GELU')63def\_ffn\_activation\_gelu():
71returnnn.GELU()
ආහාර ඉදිරි ජාලයක්ආරම්භ කරන්න
74@option(FeedForwardConfigs.ffn,'default')75def\_feed\_forward(c:FeedForwardConfigs):
79returnFeedForward(c.d\_model,c.d\_ff,80dropout=c.dropout,81activation=c.activation,82is\_gated=c.is\_gated,83bias1=c.bias1,84bias2=c.bias2,85bias\_gate=c.bias\_gate)
මේවාකඩදාසි වලින් හඳුන්වා දී ඇති පරිදි එෆ්එෆ්එන් සඳහා ගේට්ටු සැඟවුණු ස්ථර සහිත ප්රභේද වේ GLU ප්රභේද ට්රාන්ස්ෆෝමර් වැඩි දියුණු කරන්න. කඩදාසි වල දක්වා ඇති පරිදි අපි පක්ෂග්රාහී නියමයන් මඟ හැරි ඇත.
FFNGLU(x)(x,W1,V,W2)=(σ(xW1)⊗xV)W2
95aggregate(FeedForwardConfigs.glu\_variant,'GLU',96(FeedForwardConfigs.is\_gated,True),97(FeedForwardConfigs.bias1,False),98(FeedForwardConfigs.bias2,False),99(FeedForwardConfigs.bias\_gate,False),100(FeedForwardConfigs.activation,nn.Sigmoid()))
FFNBilinear(x)(x,W1,V,W2)=(xW1⊗xV)W2
105aggregate(FeedForwardConfigs.glu\_variant,'Bilinear',106(FeedForwardConfigs.is\_gated,True),107(FeedForwardConfigs.bias1,False),108(FeedForwardConfigs.bias2,False),109(FeedForwardConfigs.bias\_gate,False),110(FeedForwardConfigs.activation,nn.Identity()))
FFNReGLU(x)(x,W1,V,W2)=(max(0,xW1)⊗xV)W2
115aggregate(FeedForwardConfigs.glu\_variant,'ReGLU',116(FeedForwardConfigs.is\_gated,True),117(FeedForwardConfigs.bias1,False),118(FeedForwardConfigs.bias2,False),119(FeedForwardConfigs.bias\_gate,False),120(FeedForwardConfigs.activation,nn.ReLU()))
FFNGEGLU(x)(x,W1,V,W2)=(GELU(xW1)⊗xV)W2
125aggregate(FeedForwardConfigs.glu\_variant,'GEGLU',126(FeedForwardConfigs.is\_gated,True),127(FeedForwardConfigs.bias1,False),128(FeedForwardConfigs.bias2,False),129(FeedForwardConfigs.bias\_gate,False),130(FeedForwardConfigs.activation,nn.GELU()))
FFNSwiGLU(x)(x,W1,V,W2)=(Swish1(xW1)⊗xV)W2 කොහේද Swishβ(x)=xσ(βx)
136aggregate(FeedForwardConfigs.glu\_variant,'SwiGLU',137(FeedForwardConfigs.is\_gated,True),138(FeedForwardConfigs.bias1,False),139(FeedForwardConfigs.bias2,False),140(FeedForwardConfigs.bias\_gate,False),141(FeedForwardConfigs.activation,nn.SiLU()))
මෙයට්රාන්ස්ෆෝමරයක් සඳහා වින්යාසයන් අර්ථ දක්වයි. වින්යාසයන් විකල්ප කාර්යයන් භාවිතා කරමින් ගණනය කරනු ලැබේ. මේවා කම්මැලි ලෙස පටවා ඇති අතර එබැවින් අවශ්ය මොඩියුල පමණක් ගණනය කරනු ලැබේ.
144classTransformerConfigs(BaseConfigs):
අවධානයයොමු ප්රධානීන් ගණන
156n\_heads:int=8
ට්රාන්ස්ෆෝමර්කාවැද්දීමේ ප්රමාණය
158d\_model:int=512
ස්ථරගණන
160n\_layers:int=6
අතහැරදැමීමේ සම්භාවිතාව
162dropout:float=0.1
ප්රභවවචන මාලාවේ ටෝකන ගණන (ටෝකන් කාවැද්දීම් සඳහා)
164n\_src\_vocab:int
ඉලක්කගතවචන මාලාවේ ටෝකන ගණන (පුරෝකථනය සඳහා පිවිසුම් ජනනය කිරීමට)
166n\_tgt\_vocab:int
එන්කෝඩරයස්වයං අවධානය
169encoder\_attn:MultiHeadAttention='mha'
විකේතකයස්වයං අවධානය
171decoder\_attn:MultiHeadAttention='mha'
විකේතකමතක අවධානය
173decoder\_mem\_attn:MultiHeadAttention='mha'
වින්යාසගතකළ හැකි ප්රතිපෝෂණ ස්ථරය
176ffn:FeedForwardConfigs
ආකේතකයස්ථරය
179encoder\_layer:TransformerLayer='default'
ස්තරයවිකේතකය
181decoder\_layer:TransformerLayer='default'
බහුඑන්කෝඩර් ස්ථර වලින් සමන්විත එන්කෝඩරය
184encoder:Encoder='default'
බහුවිකේතක ස්ථර වලින් සමන්විත එන්කෝඩරය
186decoder:Decoder='default'
ප්රභවයසඳහා ස්තරය කාවැද්දීම
189src\_embed:Module='fixed\_pos'
ඉලක්කයසඳහා ස්තරය කාවැද්දීම (විකේතකය සඳහා)
191tgt\_embed:Module='fixed\_pos'
අනාවැකියසඳහා ලොගින් වන්න ජනකය
194generator:Generator='default'
එන්කෝඩරය-විකේතකය
197encoder\_decoder:EncoderDecoder
201def\_mha(c:TransformerConfigs):202returnMultiHeadAttention(c.n\_heads,c.d\_model,dropout\_prob=c.dropout)203204205calculate(TransformerConfigs.encoder\_attn,'mha',\_mha)206calculate(TransformerConfigs.decoder\_attn,'mha',\_mha)207calculate(TransformerConfigs.decoder\_mem\_attn,'mha',\_mha)
211def\_relative\_mha(c:TransformerConfigs):212fromlabml\_nn.transformers.xl.relative\_mhaimportRelativeMultiHeadAttention213returnRelativeMultiHeadAttention(c.n\_heads,c.d\_model)214215216calculate(TransformerConfigs.encoder\_attn,'relative',\_relative\_mha)217calculate(TransformerConfigs.decoder\_attn,'relative',\_relative\_mha)218calculate(TransformerConfigs.decoder\_mem\_attn,'relative',\_relative\_mha)
ප්රතිපෝෂණස්ථර වින්යාසයන් සාදන්න
221@option(TransformerConfigs.ffn,'default')222def\_feed\_forward(c:TransformerConfigs):
226conf=FeedForwardConfigs()227conf.set\_default(FeedForwardConfigs.d\_model,func=lambda:c.d\_model)228conf.set\_default(FeedForwardConfigs.dropout,func=lambda:c.dropout)229returnconf
ආකේතකයස්ථරය
232@option(TransformerConfigs.encoder\_layer,'default')233def\_encoder\_layer(c:TransformerConfigs):
237returnTransformerLayer(d\_model=c.d\_model,self\_attn=c.encoder\_attn,238src\_attn=None,feed\_forward=copy.deepcopy(c.ffn.ffn),239dropout\_prob=c.dropout)
ස්තරයවිකේතකය
242@option(TransformerConfigs.decoder\_layer,'default')243def\_decoder\_layer(c:TransformerConfigs):
247returnTransformerLayer(d\_model=c.d\_model,self\_attn=c.decoder\_attn,248src\_attn=c.decoder\_mem\_attn,feed\_forward=copy.deepcopy(c.ffn.ffn),249dropout\_prob=c.dropout)
එන්කෝඩරය
252@option(TransformerConfigs.encoder,'default')253def\_encoder(c:TransformerConfigs):
257returnEncoder(c.encoder\_layer,c.n\_layers)
විකේතකය
260@option(TransformerConfigs.decoder,'default')261def\_decoder(c:TransformerConfigs):
265returnDecoder(c.decoder\_layer,c.n\_layers)
ලොගින්වන්න ජනකය
268@option(TransformerConfigs.generator,'default')269def\_generator(c:TransformerConfigs):
273returnGenerator(c.n\_tgt\_vocab,c.d\_model)
ස්ථාවරස්ථානීය කේතීකරණ සමඟ ප්රභව කාවැද්දීම
277@option(TransformerConfigs.src\_embed,'fixed\_pos')278def\_src\_embed\_with\_positional(c:TransformerConfigs):
282returnEmbeddingsWithPositionalEncoding(c.d\_model,c.n\_src\_vocab)
ස්ථාවරස්ථානීය කේතන ක්රම සමඟ කාවැද්දීම ඉලක්ක කරන්න
285@option(TransformerConfigs.tgt\_embed,'fixed\_pos')286def\_tgt\_embed\_with\_positional(c:TransformerConfigs):
290returnEmbeddingsWithPositionalEncoding(c.d\_model,c.n\_tgt\_vocab)
උගත්ස්ථානීය කේතීකරණ සමඟ ප්රභවය කාවැද්දීම
294@option(TransformerConfigs.src\_embed,'learned\_pos')295def\_src\_embed\_with\_learned\_positional(c:TransformerConfigs):
299returnEmbeddingsWithLearnedPositionalEncoding(c.d\_model,c.n\_src\_vocab)
උගත්ස්ථානීය කේතන ක්රම සමඟ කාවැද්දීම ඉලක්ක කර ගන්න
302@option(TransformerConfigs.tgt\_embed,'learned\_pos')303def\_tgt\_embed\_with\_learned\_positional(c:TransformerConfigs):
307returnEmbeddingsWithLearnedPositionalEncoding(c.d\_model,c.n\_tgt\_vocab)
ස්ථානීයකේතීකරණයකින් තොරව ප්රභව කාවැද්දීම
311@option(TransformerConfigs.src\_embed,'no\_pos')312def\_src\_embed\_without\_positional(c:TransformerConfigs):
316returnnn.Embedding(c.n\_src\_vocab,c.d\_model)
319@option(TransformerConfigs.tgt\_embed,'no\_pos')320def\_tgt\_embed\_without\_positional(c:TransformerConfigs):321returnnn.Embedding(c.n\_tgt\_vocab,c.d\_model)322323324@option(TransformerConfigs.encoder\_decoder,'default')325def\_encoder\_decoder(c:TransformerConfigs):326returnEncoderDecoder(c.encoder,c.decoder,c.src\_embed,c.tgt\_embed,c.generator)