关于Llama model split的疑问
阅读代码时,看到分布式推理需要从模型路径下的/world_size/rank目录读取权重。看到了在split_llama.py里有按照worldsize和rank进行拆分的逻辑,但没找到在哪里调用了split_llama.py的文件。请教下这部分是如何运行起来的?
可以参考这里的文档说明:https://github.com/bytedance/ByteMLPerf/tree/main/byte_infer_perf/llm_perf#split-model
牛的,manually。谢谢
再请教一下,框架里为什么要手动做切分和加载呢(而不是直接用from_pretrained)?我看到ByteMLPerf的modeling_llama.py里面mlp/attn之类的权重shape考虑了mp_size,但transformers库里没有这些操作。transformers也支持Multi-GPU Inference,加载模型的部分也用了一些加速库处理分布式的情况。 请问ByteMLPerf里切分和加载权重的方式相比transformers的方式有什么优势吗?
都可以的,只不过目前测试相对简单,离线切的话,一方节省了线上broadcast和scatter的耗时,加载更快;另一方面,专注模型实现实现就行,不用管容易出错的ckpt加载和切分逻辑。