මෙය පැය වීදුරුවක්පුහුණු කිරීම සඳහා කරන ලද පයිටෝර්ච් අත්හදා බැලීමකි.
මෙයපදනම් වී ඇත්තේ සරල ට්රාන්ස්ෆෝමර් ස්වයංක්රීය-ප්රතිගාමී එන්එල්පී කාර්යයක් සඳහා පුහුණු ලූප සහ වින්යාසයන්මත ය.
16import math
17from typing import List
18
19import torch
20from torch import nn
21
22from labml import experiment
23from labml.configs import option
24from labml_helpers.module import Module
25from labml_nn.experiments.nlp_autoregression import NLPAutoRegressionConfigs
26from labml_nn.transformers.hour_glass import HourGlass
27from labml_nn.transformers.positional_encoding import PositionalEncoding30class AutoregressiveTransformer(Module):n_tokens
යනු වචන මාලාවේ ප්රමාණයයි d_model
ටෝකන් කාවැද්දීම් වල ප්රමාණයයි dropout
අතහැර දැමීමේ සම්භාවිතාව hour_glass
පැය ග්ලාස් ආකෘතියයි35 def __init__(self, n_tokens: int, d_model: int, dropout: float, hour_glass: HourGlass):42 super().__init__()ටෝකන්කාවැද්දීම්
44 self.embedding = nn.Embedding(n_tokens, d_model)50 self.pos_embedding = PositionalEncoding(d_model, dropout)52 self.hour_glass = hour_glassඅවසානකාවැද්දීම් සාමාන්යකරණය කිරීම
54 self.norm = nn.LayerNorm([d_model])කාවැද්දීමප්රමාණය
56 self.d_model = d_modelපිවිසුම්අනාවැකි පළ කිරීමට අවසාන රේඛීය ස්ථරය
58 self.output = nn.Linear(d_model, n_tokens)x
හැඩයේ ටෝකන් දර්ශක සහිත ටෙන්සරයයි [seq_len, batch_size]
60 def __call__(self, x: torch.Tensor):කාවැද්දීම්ලබා ගන්න
65 x = self.embedding(x)ස්ථානීය කාවැද්දීම් එකතු කරන්න
68 if self.pos_embedding is not None:
69 x = self.pos_embedding(x * math.sqrt(self.d_model))Hourglass
72 x = self.hour_glass(x)පිවිසුම්ලබා ගන්න
75 output = self.output(self.norm(x))පිවිසුම්ආපසු එවන්න
78 return output, Noneමෙය සරල ට්රාන්ස්ෆෝමර් ස්වයංක්රීය-ප්රතිගාමී එන්එල්පී කර්තව්යයක් සඳහා පුහුණු ලූප සහ වින්යාසයන්වලින් උරුම වේ.
81class Configs(NLPAutoRegressionConfigs):ආකෘතිය
89 model: AutoregressiveTransformerඅවධානයයොමු ප්රධානීන් ගණන
91 n_heads: int = 8අතහැරදැමීමේ සම්භාවිතාව
93 dropout: float = 0.1පෝෂකඉදිරි සැඟවුණු ස්ථරයේ ප්රමාණය
95 d_ff: int = 512ටෝකන්කාවැද්දීමේ ප්රමාණය
97 d_model: int = 256කෙටිකිරීමේ සාධක
99 shortening_factors: List[int] = [8, 4]ආකෘතියසාදන්න
102@option(Configs.model)
103def _model(c: Configs):පැයවීදුරු ආකෘතිය සාදන්න
109 hour_glass = HourGlass(c.n_heads, c.d_model, c.dropout, c.d_ff, c.shortening_factors)ස්වයංක්රීයප්රතිගාමී දවටනය සාදන්න
111 m = AutoregressiveTransformer(c.n_tokens, c.d_model, c.dropout, hour_glass).to(c.device)114 return m117def main():අත්හදාබැලීම සාදන්න
119 experiment.create(name="hour_glass")වින්යාසසාදන්න
121 conf = Configs()වින්යාසයන්අභිබවා යන්න
123 experiment.configs(conf, {අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
125 'tokenizer': 'character',කඩිනම්බෙදුම්කරු හිස් ය
127 'prompt_separator': '',නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම
129 'prompt': 'It is ',කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න
131 'text': 'tiny_shakespeare',කසන්දර්භය ප්රමාණය භාවිතා
134 'seq_len': 256,Epochs සඳහා දුම්රිය
136 'epochs': 128,කණ්ඩායම්ප්රමාණය
138 'batch_size': 32,එක් යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
141 'inner_iterations': 10,නෝම් ප්රශස්තකරණය භාවිතා කරන්න
144 'optimizer.optimizer': 'Noam',
145 'optimizer.learning_rate': 1.,147 })ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
150 experiment.add_pytorch_models({'model': conf.model})අත්හදාබැලීම ආරම්භ කරන්න
153 with experiment.start():පුහුණුධාවනය
155 conf.run()159if __name__ == '__main__':
160 main()