ByteMLPerf icon indicating copy to clipboard operation
ByteMLPerf copied to clipboard

关于Llama model split的疑问

Open Yi-sir opened this issue 11 months ago • 4 comments

阅读代码时,看到分布式推理需要从模型路径下的/world_size/rank目录读取权重。看到了在split_llama.py里有按照worldsize和rank进行拆分的逻辑,但没找到在哪里调用了split_llama.py的文件。请教下这部分是如何运行起来的?

Yi-sir avatar Feb 19 '25 09:02 Yi-sir

可以参考这里的文档说明:https://github.com/bytedance/ByteMLPerf/tree/main/byte_infer_perf/llm_perf#split-model

suisiyuan avatar Feb 19 '25 09:02 suisiyuan

牛的,manually。谢谢

Yi-sir avatar Feb 19 '25 09:02 Yi-sir

再请教一下,框架里为什么要手动做切分和加载呢(而不是直接用from_pretrained)?我看到ByteMLPerf的modeling_llama.py里面mlp/attn之类的权重shape考虑了mp_size,但transformers库里没有这些操作。transformers也支持Multi-GPU Inference,加载模型的部分也用了一些加速库处理分布式的情况。 请问ByteMLPerf里切分和加载权重的方式相比transformers的方式有什么优势吗?

Yi-sir avatar Feb 20 '25 02:02 Yi-sir

都可以的,只不过目前测试相对简单,离线切的话,一方节省了线上broadcast和scatter的耗时,加载更快;另一方面,专注模型实现实现就行,不用管容易出错的ckpt加载和切分逻辑。

suisiyuan avatar Feb 20 '25 03:02 suisiyuan