Back to Annotated Deep Learning Paper Implementations

Zero3 මතක ප්රශස්තකරණය සමඟ ජීපීටී-නියෝක්ස් ෆිනෙටුන්

docs/si/scaling/zero3/finetune_neox.html

latest5.2 KB
Original Source

homescalingzero3

View code on Github

#

Zero3 මතක ප්රශස්තකරණය සමඟ ජීපීටී-නියෝක්ස් ෆිනෙටුන්

මෙමස්ක්රිප්ට් එක ZERO-DP මතක ප්රශස්තිකරණය සමඟ බහු උපාංගවල ජීපීටී-නියෝක්ස් ආකෘතියේ නැඹුරුව පරාමිතීන් පුහුණු කරයි.

14importdatetime1516importtorch17importtorch.distributed1819fromlabmlimportexperiment,monit,tracker20fromlabml.configsimportoption21fromlabml.loggerimportinspect22fromlabml\_nn.neox.samples.finetuneimportPipelineParallelTrainerConf

#

නල මාර්ග සමාන්තර පුහුණුකරු වින්යාසයන් භාවිතා කර Zero3 මතක ප්රශස්තකරණය සඳහා එය අනුවර්තනය කරන්න.

27classConfigs(PipelineParallelTrainerConf):28rank:int29world\_size:int

#

ආකෘතියසඳහා ප්රශස්තකරණය සකසන්න

අපිතියුණු පරාමිතීන් සමත් වන බව සලකන්න get_trainable_chunk .

32@option(Configs.optimizer,'Zero3Adam')33def\_optimizer(c:Configs):

#

39fromlabml\_nn.optimizers.adam\_fp16importAdamFP1640returnAdamFP16(c.model.get\_trainable\_chunk(),lr=c.learning\_rate)

#

Zero3මතක ප්රශස්තකරණය සමඟ ආකෘතිය සාදන්න

43@option(Configs.model,'Zero3')44def\_model(c:Configs):

#

48fromlabml\_nn.scaling.zero3importZero3Layer,Zero3Sequential

#

සිහින්සුසරකය පුහුණු කළ හැකි පරාමිතීන් සකස් කරන බවට වග බලා ගැනීම

51\_=c.fine\_tuner

#

ස්ථරසමඟ ආවරණය කරන්න Zero3Layer

54modules=[]55forminmonit.iterate('Zero3',c.layers):56modules.append(Zero3Layer(m.to(c.device),57c.rank,c.world\_size,c.device,c.dtype))

#

අනුක්රමිකආකෘතියක් සාදන්න

60model=Zero3Sequential(modules)

#

63returnmodel

#

තරාතිරමසමඟ නෝඩ් මත පුහුණුව ක්රියාත්මක කරන්න rank .

66defmain(rank:int,world\_size:int,init\_method:str='tcp://localhost:23456'):

#

PyTorchබෙදා හරින ලද ක්රියාවලි සමූහය ආරම්භ කරන්න

71withmonit.section('Distributed'):72torch.distributed.init\_process\_group('nccl',73timeout=datetime.timedelta(seconds=30),74init\_method=init\_method,75rank=rank,76world\_size=world\_size)

#

වත්මන්උපාංගය සකසන්න

79device=torch.device(f'cuda:{rank}')80torch.cuda.set\_device(device)

#

අත්හදාබැලීම සාදන්න

83experiment.create(name='zero3\_neox',writers={'screen','labml'})84experiment.distributed(rank,world\_size)

#

වින්යාසයන්සාදන්න

87conf=Configs()

#

වින්යාසයන්පූරණය කරන්න

90experiment.configs(conf,{91'model':'Zero3',92'optimizer':'Zero3Adam',9394'device':device,95'rank':rank,96'world\_size':world\_size,9798'learning\_rate':3e-4,99'max\_seq\_len':128,100'batch\_size':16,101})

#

අත්හදාබැලීම ආරම්භ කරන්න

104withexperiment.start():

#

ආකෘතියආරම්භ කරන්න. පිරිසිදු ලොග් සඳහා ලූපයට පෙර මෙය කරන්න.

106\_=conf.model

#

ආකෘතියපුහුණු කරන්න

109forepochinmonit.loop(conf.epochs):110conf.train\_epoch()111tracker.new\_line()

#

115if\_\_name\_\_=='\_\_main\_\_':

#

යන්ත්රවින්යාසයන් ලොග් කරන්න

117inspect([torch.cuda.get\_device\_name(i)foriinrange(torch.cuda.device\_count())])118inspect(119n\_gpus=torch.cuda.device\_count(),120mpi=torch.distributed.is\_mpi\_available(),121nccl=torch.distributed.is\_nccl\_available(),122)123124n\_gpu=torch.cuda.device\_count()

#

එක්එක් GPU සඳහා ක්රියාවලියක් ආරම්භ කරන්න. ඔබ බහු පරිගණක භාවිතා කරන්නේ නම් ඔබට වෙනම දියත් කිරීමක් අවශ්ය වේ.

127torch.multiprocessing.spawn(main,args=(n\_gpu,),nprocs=n\_gpu,join=True)

Trending Research Paperslabml.ai