PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
22.07k
stars
5.54k
forks
source link
【sharding / mp功能无法正常析构TCPstore】GroupShardedOptimizerStage2/ColumnParallelLinear #56106
Open
zhurou603 opened 1 year ago
bug描述 Describe the Bug
目前在例如(hybrid_parallel_pp_layer、dygraph_group_sharded_stage2/3)单测中,进程退出时ProcessGroup持有的TCPstore无法正常析构,导致MasterDaemon线程未join就退出,这样可能导致未定义的行为(可能不会coredump,也可能触发SIGABRT)。 根本原因应该是相关的ColumnParallelLinear、GroupShardedOptimizerStage2等类定义中使用到了group,但或许存在某种循环引用问题导致python进程退出时无法正确通过gc回收python端的ProcessGroup的智能指针。【在python端手动del相关group后可正常析构】
与此同时C++端的DestroyProcessGroup存在shared_ptr的用法错误(对于同一个智能指针无法调用多次reset来减小引用计数)因为目前的实现无法正确释放TCPStore的资源。
预期: 1.不需要改动DestroyProcessGroup在python端能够正常回收group,完成资源释放。 2.修改DestroyProcessGroup的方法使得在python端gc失效时能够正确析构ProcessGroup
其他补充信息 Additional Supplementary Information
No response