docs/si/sampling/experiment.html
මෙමඅත්හදා බැලීම 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)
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()