HuangLK / transpeeder

train llama on a single A100 80G node using 🤗 transformers and 🚀 Deepspeed Pipeline Parallelism
Apache License 2.0
208 stars 18 forks source link

pipeline model的一些问题 #33

Closed lyzKF closed 1 year ago

lyzKF commented 1 year ago

嗨,帅哥,你这边的工程很棒,我在学习的工程中有一些疑问,希望你能抽空解答一下。具体问提如下:

  1. pipeline model与加载预训练模型的先后顺序问题,是因为ckpt里只存了权重信息,所以一定要先定义模型,然后加载权重?
  2. engine.load_checkpoint这里是不是必须加载ckpt,hf格式的为啥不可以呢?

    # pipeline model
    model = get_model(model_config, ds_args, activation_checkpointing_config)
    
    engine, _, _, _ = deepspeed.initialize(
        ds_args,
        model=model,
        model_parameters=[p for p in model.parameters() if p.requires_grad]
    )
    
    # use `convert2ckpt.py`
    engine.load_checkpoint(model_args.init_ckpt, load_module_only=True)
HuangLK commented 1 year ago
  1. 先定义再加载 这种方式也是官方推荐的方式,可以避免每个进程都保存一份完整模型导致cpu内存不足的问题,可以看下官方文档
  2. deepspeed用的是megatron的模型格式,跟hf不是一套体系,需要用convert2ckpt.py转换一下。
lyzKF commented 1 year ago

@HuangLK 好的好的,谢谢帅哥回复。