Back to Annotated Deep Learning Paper Implementations

රේඛීය පක්ෂග්රාහී (අලිබී) අත්හදා බැලීම සමඟ අවධානය යොමු කරන්න

docs/si/transformers/alibi/experiment.html

latest7.7 KB
Original Source

hometransformersalibi

View code on Github

#

රේඛීය පක්ෂග්රාහී (අලිබී) අත්හදා බැලීම සමඟ අවධානය යොමු කරන්න

මෙය අලිබී ආකෘතියක්පුහුණු කිරීම සඳහා කරන ලද පයිටෝච් අත්හදා බැලීමකි.

මෙය අපගේ 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()

Trending Research Paperslabml.ai