MCPcopy Index your code
hub / github.com/OpenDriveLab/ReSim / from_pretrained

Method from_pretrained

SwissArmyTransformer/sat/model/base_model.py:340–394  ·  view source on GitHub ↗
(cls, name, args=None, *, home_path=None, url=None, prefix='', build_only=False, use_node_group=True, overwrite_args={}, **kwargs)

Source from the content-addressed store, hash-verified

338
339 @classmethod
340 def from_pretrained(cls, name, args=None, *, home_path=None, url=None, prefix='', build_only=False, use_node_group=True, overwrite_args={}, **kwargs):
341 if build_only or 'model_parallel_size' not in overwrite_args:
342 return cls.from_pretrained_base(name, args=args, home_path=home_path, url=url, prefix=prefix, build_only=build_only, overwrite_args=overwrite_args, **kwargs)
343 else:
344 new_model_parallel_size = overwrite_args['model_parallel_size']
345 if new_model_parallel_size != 1 or new_model_parallel_size == 1 and args.model_parallel_size == 1:
346 model, model_args = cls.from_pretrained_base(name, args=args, home_path=home_path, url=url, prefix=prefix, build_only=True, overwrite_args=overwrite_args, **kwargs)
347 local_rank = get_node_rank() if use_node_group else get_model_parallel_rank()
348 world_size = torch.distributed.get_world_size()
349 assert world_size % new_model_parallel_size == 0, "world size should be a multiplier of new model_parallel_size."
350 destroy_model_parallel()
351 initialize_model_parallel(1)
352 if local_rank == 0:
353 args.skip_init = True
354 args.use_gpu_initialization = False
355 args.device = 'cpu'
356 overwrite_args.pop('model_parallel_size')
357 model_full, args_ = cls.from_pretrained_base(name, args=args, home_path=home_path, url=url, prefix=prefix, build_only=False, overwrite_args=overwrite_args, **kwargs)
358 if args_.model_parallel_size != 1:
359 raise Exception("We do not support overwriting model_parallel_size when original model_parallel_size != 1. Try merging the model using `from_pretrained(xxx,overwrite_args={'model_parallel_size':1})` first if you still want to change model_parallel_size!")
360 if hasattr(args, 'mode') and args.mode == 'inference': # For multi-node inference, we should prevent rank 0 eagerly printing some info.
361 torch.distributed.barrier()
362 destroy_model_parallel()
363 initialize_model_parallel(new_model_parallel_size)
364 if local_rank == 0:
365 mp_split_model_rank0(model, model_full, use_node_group=use_node_group)
366 del model_full
367 else:
368 mp_split_model_receive(model, use_node_group=use_node_group)
369 reset_random_seed(6)
370 else:
371 overwrite_args.pop('model_parallel_size')
372 model, model_args = cls.from_pretrained_base(name, args=args, home_path=home_path, url=url, prefix=prefix, build_only=False, overwrite_args=overwrite_args, **kwargs)
373 rank = torch.distributed.get_rank()
374 world_size = torch.distributed.get_world_size()
375 assert world_size == model_args.model_parallel_size, "world size should be equal to model_parallel_size."
376 destroy_model_parallel()
377 initialize_model_parallel(1)
378 if rank == 0:
379 args.use_gpu_initialization = False
380 args.device = 'cpu'
381 overwrite_args['model_parallel_size'] = 1
382 model_full, args_ = cls.from_pretrained_base(name, args=args, home_path=home_path, url=url, prefix=prefix, build_only=True, overwrite_args=overwrite_args, **kwargs)
383 torch.distributed.barrier()
384 destroy_model_parallel()
385 initialize_model_parallel(model_args.model_parallel_size)
386 if rank == 0:
387 mp_merge_model_rank0(model, model_full)
388 model, model_args = model_full, args_
389 else:
390 mp_merge_model_send(model)
391 model_args.model_parallel_size = 1
392 destroy_model_parallel()
393 initialize_model_parallel(1)
394 return model, model_args
395
396def get_model(args, model_cls, **kwargs):
397 """Build the model."""

Callers

nothing calls this directly

Calls 10

get_node_rankFunction · 0.90
get_model_parallel_rankFunction · 0.90
destroy_model_parallelFunction · 0.90
mp_split_model_rank0Function · 0.90
mp_split_model_receiveFunction · 0.90
reset_random_seedFunction · 0.90
mp_merge_model_rank0Function · 0.90
mp_merge_model_sendFunction · 0.90
from_pretrained_baseMethod · 0.45

Tested by

no test coverage detected