-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
训练qwen2系列的模型最佳训练策略 #5
Comments
感谢您的关注!您可以通过这个教程来完整的执行profile、搜索和训练过程。对于qwen系列模型,您可以使用galvatron/models/llama_hf路径下的脚本。具体来说,您可以在meta_configs路径中按照格式添加您想要的模型配置的json文件,接着将您的模型名称添加到arguments.py中model_size的choices中,并修改meta_configs/config_utils.py的path_dict使其模型名称能够对应上模型配置的json文件。接着就可以按照这个教程来执行代码,注意需要将相关脚本的model_size改为您所自定义的模型名称。我们在仓库中提供了qwen2.5-72b的配置的json格式的例子,您可以作为参考。 |
非常感谢您的解答,我正在进行计算时间分析和显存分析的步骤,我看到你给的关于llama的时间分析和显存分析的结果如下。 llama计算分析 llama显存分析 请原谅我还没有仔细阅读您的代码,在详细阅读代码前,我有一些问题: |
|
感谢 |
非常抱歉我们在文档中疏忽了这一点,您需要再额外安装apex,您可以下载最新版本的apex并通过以下方式进行编译安装:
我们稍后也会进行对文档进行补充完善 |
我的torch按照文档的要求版本为2.0.1+cu118 但是出现了以下错误。 File "/mnt/gefei/LLM-X/Hetu-Galvatron/galvatron/core/utils.py", line 10, in torch2.0.1的torch.distributed.fsdp._common_utils.py文件与Hetu-Galvatron/galvatron/core/utils.py中的文件引用不一致,请问是更新了torch版本吗 |
是的,我们更新了所支持的torch的版本,请更新到2.1版本,我们在文档中已经更新,但是requirements还未更新,请参照最新版本文档 |
我这边遇到一个bug 在profile_time结束记录结果的时候 在记录第二次结果时会出现json的报错 这个json文件会多一个右括号 请问你有这种情况么。 |
这种情况会稳定出现吗?可以尝试将文件内容改为 |
按照你的方法可以了 我覆盖以前的文件时会出错 |
我又遇到一个问题 在profile_memory的时候 tp=1没问题 WARNING:megatron.core.models.common.embeddings.rotary_pos_embedding:Setting apply_rope_fusion to false because its implementation is not included in Apex. Try upgrading to the latest version |
请问具体的运行脚本是什么样的呢? |
export NUM_NODES=1 export NCCL_SOCKET_IFNAME=ib0export NODE_RANK=$RANK LAUNCHER="python3 -m torch.distributed.launch" export PROFILE_LAUNCHER="$LAUNCHER" PROFILE_ARGS_BF16=" MODEL_ARGS=" python3 profiler.py ${MODEL_ARGS} ${PROFILE_ARGS_BF16} |
可以尝试在脚本中添加 |
LAUNCHER="python3 -m torch.distributed.launch" export PROFILE_LAUNCHER="$LAUNCHER" PROFILE_ARGS_BF16=" MODEL_ARGS=" python3 profiler.py ${MODEL_ARGS} ${PROFILE_ARGS_BF16} 加上--sequence_parallel部分可以跑比如1_1_8_sp , 1_2_4_sp但在2_4_1_sp报错 return forward_call(*args, **kwargs) 如果在上面的脚本的基础上去掉--sequence_parallel还是会报刚才的旋转位置编码相关的shape错误。或许是由于这个warning?请问你在运行的时候有吗 另外,在测试memory的时候要sp和非sp都测一遍吗 |
请提供运行时完整的log信息,测试memory的时候默认开启sp就可以,除非你需要搜索使用不包含SP的Megatron-TP的并行策略 |
|
vtp是可以的 |
我们修复了这一问题,现在可以正确的进行profile了 |
非常感谢你的帮助! 我已经跑通了search_dist的过程。 export NUM_NODES=1 MODEL_SIZE="llama-13b" BSZ_ARGS=" SEARCH_SPACE_ARGS=" BACKGROUND=1 if [ $BACKGROUND -eq 1 ]; then else 得到的结果 这里对得到结果表达的含义有些不理解,能稍微解释一下吗,还有对我的script有什么建议么?谢谢 |
您的script没有什么问题,如果想使用search engine的更多功能可以查看我们的api文档。目前文档也正在完善中,结果的解释也会加入文档中,欢迎给出更多建议! |
你好,我在考虑根据galvatron提供的并行策略,用我自己的megatron训练框架或者deepspeed(llama_factory等训练框架)进行训练。 |
您可以通过设置Galvatron搜索引擎的fine_grained变量参数为0,以及设置disable_*变量,来限制并行策略的搜索范围,以及通过设置 |
结果中出现了"dp_types_enc": "1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0", 想了解一下对不同层采用不同的数据并行策略是galvatron的特色功能吗?megatron之类的训练框架可以这样么,如果我想要么是所有层都用zero2,要么都用zero3呢 |
是的galvatron支持不同层使用不同的并行策略,这是其他训练框架所没有的特性(据我们所知),如果你想全部层使用并行策略,请设置Galvatron搜索引擎的fine_grained_mode变量参数为0。你使用的search_dist脚本具体内容是什么样的呢? |
export NUM_NODES=1 MODEL_SIZE="llama-13b" BSZ_ARGS=" SEARCH_SPACE_ARGS=" BACKGROUND=1 if [ $BACKGROUND -eq 1 ]; then else 不同层使用不同的数据并行方式看起来很奇怪hh,你们有证明相比于megatron的优越性吗,如果有不错的提升,我想改进一下我的基于deepspeed的框架,让它也能支持。 |
你需要改成FINE_GRAINED=0以支持所有层相同策略的搜素,关于与其他训练框架的比较,可以参考我们的论文Galvatron和Galvatron-BMW |
这个问题还是时常会出现 |
请问能否给出问题的完整复现步骤,提供相关的系统信息和完整的运行日志?我们在自己的环境并未复现出该问题 |
File "/usr/local/lib/python3.8/dist-packages/galvatron/core/search_engine.py", line 230, in get_profiled_model_configs 这里layer_mem_config[[self.seqlen_list[i]]]是不是多了一个中括号 |
是的,感谢您的反馈,我们将在新版本修复 |
新年快乐!请问你这里使用的是哪个版本的代码呢?请尝试把代码更新到最新版本 |
你好!我想在1台8张a100的机器上训练qwen2系列的模型,我该如何修改Galvatron的代码来找到最佳训练策略,需要修改哪些模块,代码的执行流程又是怎样?
The text was updated successfully, but these errors were encountered: