docs/si/transformers/alibi/experiment.html
මෙය අලිබී ආකෘතියක්පුහුණු කිරීම සඳහා කරන ලද පයිටෝච් අත්හදා බැලීමකි.
මෙය අපගේ GPT ආකෘතියමත පදනම් වේ.
16importtorch17fromtorch.utils.dataimportDataLoader1819fromlabmlimportexperiment,tracker20fromlabml.configsimportoption,calculate21fromlabml\_helpers.datasets.textimportSequentialUnBatchedDataset22fromlabml\_nn.transformers.alibiimportAlibiMultiHeadAttention23fromlabml\_nn.experiments.nlp\_autoregressionimporttranspose\_batch24fromlabml\_nn.transformersimportTransformerConfigs25fromlabml\_nn.transformers.gptimportConfigsasGPTConfigs
අපි GPT වින්යාසයන් දීර් extend කර අවධානය යොමු කිරීමේ යාන්ත්රණය වෙනස් කරමු.
28classConfigs(GPTConfigs):
අලිබීපදනම් කරගත් ට්රාන්ස්ෆෝමර් (පහත අර්ථ දක්වා ඇත)
36transformer:TransformerConfigs='GPT\_ALiBi'
දිගුවලංගු කිරීමේ කට්ටලය
38valid\_seq\_len:int=12839valid\_loader='shuffled\_longer\_valid\_loader'
ආරම්භකහා අවසාන ටෝකන වලදී පාඩු ලොග් කරන්න
41defother\_metrics(self,output:torch.Tensor,target:torch.Tensor):
පුහුණුඅනුක්රමයේ දිග (වලංගු කිරීමේදී) වැඩි ටෝකන තිබේ නම්,
46ifself.seq\_len\<output.shape[0]:
පුහුණුඅනුක්රමයේ දිග දී අලාභය ලොග් කරන්න
48tracker.add(f'loss.{self.seq\_len-1}.',self.loss\_func(output[self.seq\_len-1],target[self.seq\_len-1]))
පළමුටෝකනයේ අලාභය ලොග් කරන්න
50tracker.add(f'loss.0.',self.loss\_func(output[0],target[0]))
අවසානටෝකනයේ අලාභය ලොග් කරන්න
52tracker.add(f'loss.{int(output.shape[0])-1}.',self.loss\_func(output[-1],target[-1]))
අලිබීඅවධානය මොඩියුලයක් සාදන්න
55def\_alibi\_mha(c:TransformerConfigs):
59returnAlibiMultiHeadAttention(c.n\_heads,c.d\_model,dropout\_prob=c.dropout)
සියළුමඅවධානය යොමු කිරීමේ යාන්ත්රණ අලිබී වෙත සකසන්න
63calculate(TransformerConfigs.encoder\_attn,'alibi\_mha',\_alibi\_mha)64calculate(TransformerConfigs.decoder\_attn,'alibi\_mha',\_alibi\_mha)65calculate(TransformerConfigs.decoder\_mem\_attn,'alibi\_mha',\_alibi\_mha)
valid_seq_len අනුක්රමික දිග සහිත වලංගුකරණ දත්ත පැටවුම මාරු කර ඇත
68@option(Configs.valid\_loader)69defshuffled\_longer\_valid\_loader(c:Configs):
73returnDataLoader(SequentialUnBatchedDataset(text=c.text.valid,74dataset=c.text,75seq\_len=c.valid\_seq\_len),76batch\_size=c.batch\_size,77collate\_fn=transpose\_batch,78shuffle=True)
81@option(Configs.transformer,'GPT\_ALiBi')82def\_transformer\_configs(c:Configs):
අපගේ වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම භාවිතා කරමු
89conf=TransformerConfigs()
කාවැද්දීම්සහ පිවිසුම් උත්පාදනය සඳහා වචන මාලාව ප්රමාණ සකසන්න
91conf.n\_src\_vocab=c.n\_tokens92conf.n\_tgt\_vocab=c.n\_tokens
GPTස්ථානගත නැණවත් පෝෂණය සඳහා GELU සක්රිය කිරීම භාවිතා කරයි
94conf.ffn.activation='GELU'
AliBiස්ථානීය කාවැද්දීම් භාවිතා නොකරයි
97conf.src\_embed='no\_pos'98conf.tgt\_embed='no\_pos'
සියළුමඅවධානය යොමු කිරීමේ යාන්ත්රණ අලිබී වෙත සකසන්න
101conf.encoder\_attn='alibi\_mha'102conf.decoder\_attn='alibi\_mha'103conf.decoder\_mem\_attn='alibi\_mha'
106returnconf
109defmain():
අත්හදාබැලීම සාදන්න
111experiment.create(name="gpt\_alibi")
වින්යාසසාදන්න
113conf=Configs()
වින්යාසයන්අභිබවා යන්න
115experiment.configs(conf,{
අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
117'tokenizer':'character',
කඩිනම්බෙදුම්කරු හිස් ය
119'prompt\_separator':'',
නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
121'prompt':'It is ',
කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
123'text':'tiny\_shakespeare',
'text ':' ටිනි_ෂේක්ස්පියර්_නො_බෙදීම් ',
කසන්දර්භය ප්රමාණය භාවිතා 128
127'seq\_len':64,
කසන්දර්භය ප්රමාණය භාවිතා 128
129'valid\_seq\_len':80,
32 Epochs සඳහා දුම්රිය
131'epochs':128,
කණ්ඩායම්ප්රමාණය 128
133'batch\_size':128,
එක් 10 යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
136'inner\_iterations':10,
ට්රාන්ස්ෆෝමර්වින්යාසයන්
139'transformer.d\_model':128,140'transformer.ffn.d\_ff':512,141'transformer.n\_heads':8,142'transformer.n\_layers':4,143'transformer.dropout':0.1,144})
ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
147experiment.add\_pytorch\_models({'model':conf.model})
අත්හදාබැලීම ආරම්භ කරන්න
150withexperiment.start():
පුහුණුධාවනය
152conf.run()
156if\_\_name\_\_=='\_\_main\_\_':157main()