Back to Annotated Deep Learning Paper Implementations

භාෂාආකෘති සඳහා නියැදි ක්රම අත්හදා බැලීම

docs/si/sampling/experiment.html

latest5.4 KB
Original Source

homesampling

View code on Github

#

භාෂාආකෘති සඳහා නියැදි ක්රම අත්හදා බැලීම

මෙමඅත්හදා බැලීම HugingFace හි GPT2 ආකෘතිය මත ඉහත නියැදි ශිල්පීය ක්රම භාවිතා කරයි.

18importtorch1920fromlabmlimportmonit,logger,lab2122fromlabml.loggerimportText2324fromlabml\_nn.samplingimportSampler25fromlabml\_nn.sampling.greedyimportGreedySampler26fromlabml\_nn.sampling.nucleusimportNucleusSampler27fromlabml\_nn.sampling.temperatureimportTemperatureSampler28fromlabml\_nn.sampling.top\_kimportTopKSampler29fromtransformersimportGPT2Tokenizer,GPT2LMHeadModel

#

ආකෘතියෙන්නියැදිය

  • model සිට ආදර්ශ ආදර්ශ වේ
  • tokenizer භාවිතා කිරීමට ටෝකනයිසර් වේ
  • sampler භාවිතා කිරීමට නියැදිකරු වේ
  • n_samples ජනනය කිරීමට සාම්පල සංඛ්යාව වේ
  • n_tokens උත්පාදනය කිරීමට ටෝකන ගණන වේ
  • seq_len ආකෘතිය සඳහා උපරිම අනුක්රමය දිග වේ
  • prompt ආරම්භක විමසුම වේ
[email protected]\_grad()33defsample(model:GPT2LMHeadModel,tokenizer:GPT2Tokenizer,sampler:Sampler,34n\_samples:int,n\_tokens:int,seq\_len:int,prompt:str):

#

ටෝකීස් prompt කර n_samples එහි පිටපත් සාදන්න

47data=torch.tile(torch.tensor(tokenizer.encode(prompt))[None,:],(n\_samples,1))

#

මුද්රණයසඳහා ප්රතිදානය එකතු කරන්න

50logs=[[(prompt,Text.meta)]for\_inrange(n\_samples)]

#

නියැදිය n_tokens

52foriinmonit.iterate('Sample',n\_tokens):

#

උපරිමඅනුක්රමික දිගට දත්ත කපා

54data=data[-seq\_len:]

#

ආදර්ශප්රතිදානය ලබා ගන්න. 'පිවිසීමට' හැඩය ඇත [batch_size, seq_len, n_tokens]

56logits=model(data)[0]

#

අවසානටෝකනය ලබා ගන්න logits

58logits=logits[:,-1]

#

වෙතින්නියැදිය logits

60res=sampler(logits)

#

දත්තවලට නියැදි ටෝකනය එක් කරන්න

62data=torch.cat([data,res[:,None]],dim=1)

#

ලොග්වීම සඳහා නියැදි ටෝකනය විකේතනය කර එක් කරන්න

64forjinrange(n\_samples):65logs[j]+=[(''+tokenizer.decode(res[j]),Text.value)]

#

නියැදිප්රතිදානයන් මුද්රණය කරන්න

68forjinrange(n\_samples):69logger.log(logs[j])

#

විවිධනියැදි ක්රම උත්සාහ කරන්න

72defmain():

#

ආකෘතියසහ ටෝකනයිසර් පටවන්න

78withmonit.section('Load tokenizer/model'):79tokenizer=GPT2Tokenizer.from\_pretrained('gpt2',cache\_dir=lab.get\_data\_path()/'cache')80model=GPT2LMHeadModel.from\_pretrained('gpt2',cache\_dir=lab.get\_data\_path()/'cache')

#

ආකෘතියeval ප්රකාරයට සකසන්න

82model.eval()

#

නියැදීමසඳහා භාවිතා කිරීමට විමසනු ලැබේ

85prompt='I saw an interesting dream last night. '

#

කෑදර නියැදීම

88withmonit.section('greedy'):89sample(model,tokenizer,GreedySampler(),4,32,128,prompt)

#

උෂ්ණත්ව නියැදීම

92withmonit.section('temperature=1.'):93sample(model,tokenizer,TemperatureSampler(1.),4,32,128,prompt)94withmonit.section('temperature=.1'):95sample(model,tokenizer,TemperatureSampler(.1),4,32,128,prompt)96withmonit.section('temperature=10.'):97sample(model,tokenizer,TemperatureSampler(10.),4,32,128,prompt)

#

ඉහළ-K නියැදීම්

100withmonit.section('top\_k=5'):101sample(model,tokenizer,TopKSampler(2,TemperatureSampler(1.)),4,32,128,prompt)

#

න්යෂ්ටික නියැදීම

104withmonit.section('nucleus p=.95'):105sample(model,tokenizer,NucleusSampler(0.95,TemperatureSampler(1.)),4,32,128,prompt)106withmonit.section('nucleus p=.1'):107sample(model,tokenizer,NucleusSampler(0.1,TemperatureSampler(1.)),4,32,128,prompt)

#

110if\_\_name\_\_=='\_\_main\_\_':111main()

Trending Research Paperslabml.ai