docs/si/transformers/hour_glass/experiment.html
මෙය පැය වීදුරුවක්පුහුණු කිරීම සඳහා කරන ලද පයිටෝර්ච් අත්හදා බැලීමකි.
මෙයපදනම් වී ඇත්තේ සරල ට්රාන්ස්ෆෝමර් ස්වයංක්රීය-ප්රතිගාමී එන්එල්පී කාර්යයක් සඳහා පුහුණු ලූප සහ වින්යාසයන්මත ය.
16importmath17fromtypingimportList1819importtorch20fromtorchimportnn2122fromlabmlimportexperiment23fromlabml.configsimportoption24fromlabml\_helpers.moduleimportModule25fromlabml\_nn.experiments.nlp\_autoregressionimportNLPAutoRegressionConfigs26fromlabml\_nn.transformers.hour\_glassimportHourGlass27fromlabml\_nn.transformers.positional\_encodingimportPositionalEncoding
30classAutoregressiveTransformer(Module):
n_tokens යනු වචන මාලාවේ ප්රමාණයයිd_model ටෝකන් කාවැද්දීම් වල ප්රමාණයයිdropout අතහැර දැමීමේ සම්භාවිතාවhour_glassපැය ග්ලාස් ආකෘතියයි35def\_\_init\_\_(self,n\_tokens:int,d\_model:int,dropout:float,hour\_glass:HourGlass):
42super().\_\_init\_\_()
ටෝකන්කාවැද්දීම්
44self.embedding=nn.Embedding(n\_tokens,d\_model)
📝 නිල කඩදාසි ක්රියාත්මක කිරීම සාපේක්ෂ අවධානය භාවිතා කරයි
50self.pos\_embedding=PositionalEncoding(d\_model,dropout)
52self.hour\_glass=hour\_glass
අවසානකාවැද්දීම් සාමාන්යකරණය කිරීම
54self.norm=nn.LayerNorm([d\_model])
කාවැද්දීමප්රමාණය
56self.d\_model=d\_model
පිවිසුම්අනාවැකි පළ කිරීමට අවසාන රේඛීය ස්ථරය
58self.output=nn.Linear(d\_model,n\_tokens)
x හැඩයේ ටෝකන් දර්ශක සහිත ටෙන්සරයයි [seq_len, batch_size]60def\_\_call\_\_(self,x:torch.Tensor):
කාවැද්දීම්ලබා ගන්න
65x=self.embedding(x)
ස්ථානීය කාවැද්දීම් එකතු කරන්න
68ifself.pos\_embeddingisnotNone:69x=self.pos\_embedding(x\*math.sqrt(self.d\_model))
Hourglass
72x=self.hour\_glass(x)
පිවිසුම්ලබා ගන්න
75output=self.output(self.norm(x))
පිවිසුම්ආපසු එවන්න
78returnoutput,None
මෙය සරල ට්රාන්ස්ෆෝමර් ස්වයංක්රීය-ප්රතිගාමී එන්එල්පී කර්තව්යයක් සඳහා පුහුණු ලූප සහ වින්යාසයන්වලින් උරුම වේ.
81classConfigs(NLPAutoRegressionConfigs):
ආකෘතිය
89model:AutoregressiveTransformer
අවධානයයොමු ප්රධානීන් ගණන
91n\_heads:int=8
අතහැරදැමීමේ සම්භාවිතාව
93dropout:float=0.1
පෝෂකඉදිරි සැඟවුණු ස්ථරයේ ප්රමාණය
95d\_ff:int=512
ටෝකන්කාවැද්දීමේ ප්රමාණය
97d\_model:int=256
කෙටිකිරීමේ සාධක
99shortening\_factors:List[int]=[8,4]
ආකෘතියසාදන්න
102@option(Configs.model)103def\_model(c:Configs):
පැයවීදුරු ආකෘතිය සාදන්න
109hour\_glass=HourGlass(c.n\_heads,c.d\_model,c.dropout,c.d\_ff,c.shortening\_factors)
ස්වයංක්රීයප්රතිගාමී දවටනය සාදන්න
111m=AutoregressiveTransformer(c.n\_tokens,c.d\_model,c.dropout,hour\_glass).to(c.device)
114returnm
117defmain():
අත්හදාබැලීම සාදන්න
119experiment.create(name="hour\_glass")
වින්යාසසාදන්න
121conf=Configs()
වින්යාසයන්අභිබවා යන්න
123experiment.configs(conf,{
අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
125'tokenizer':'character',
කඩිනම්බෙදුම්කරු හිස් ය
127'prompt\_separator':'',
නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
129'prompt':'It is ',
කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
131'text':'tiny\_shakespeare',
කසන්දර්භය ප්රමාණය භාවිතා 256
134'seq\_len':256,
128 Epochs සඳහා දුම්රිය
136'epochs':128,
කණ්ඩායම්ප්රමාණය 32
138'batch\_size':32,
එක් 10 යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
141'inner\_iterations':10,
නෝම් ප්රශස්තකරණය භාවිතා කරන්න
144'optimizer.optimizer':'Noam',145'optimizer.learning\_rate':1.,
147})
ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
150experiment.add\_pytorch\_models({'model':conf.model})
අත්හදාබැලීම ආරම්භ කරන්න
153withexperiment.start():
පුහුණුධාවනය
155conf.run()
159if\_\_name\_\_=='\_\_main\_\_':160main()