ChatGLM-6B
ChatGLM-6B copied to clipboard
多gpu如何训练 ?预测是可以的,但是训练不行
多gpu运行问题
预测的时候多gpu可以这样写: model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2)
但是训练的时候多了 config=config 参数怎么办: model = AutoModel.from_pretrained(model_args.model_name_or_path, config=config, trust_remote_code=True) #这里可以用预测的多GPU吗?
报错: RuntimeError: CUDA out of memory. Tried to allocate 192.00 MiB (GPU 0; 11.17 GiB total capacity; 10.24 GiB already allocated; 171.69 MiB free; 10.71 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
到底训练要多大的GPU显存才行? 我有两个卡22G,现在好像只能用一张卡:
我尝试这样改也不行:
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个没有效果的 。 不要搞错了。。
就算你是预测,如果不用 model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 你只用 CUDA_VISIBLE_DEVICES=0,1 是不行的,你这个一直 都 只是理论上可以的事,实际是不行的。 要不然也不用推出: model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 方案了
多卡的推理上,会有性能提升吗? 单卡8G 用INT8 多卡用 FP16
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个没有效果的 。 不要搞错了。。
就算你是预测,如果不用 model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 你只用 CUDA_VISIBLE_DEVICES=0,1 是不行的,你这个一直 都 只是理论上可以的事,实际是不行的。 要不然也不用推出: model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 方案了
对我来说这个是有用的,不知道你的问题是出在哪里了
多卡的推理上,会有性能提升吗? 单卡8G 用INT8 多卡用 FP16
从INT8到FP16就会有提升,是否多卡就是推理速度上的区别吧
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个没有效果的 。 不要搞错了。。 就算你是预测,如果不用 model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 你只用 CUDA_VISIBLE_DEVICES=0,1 是不行的,你这个一直 都 只是理论上可以的事,实际是不行的。 要不然也不用推出: model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 方案了
对我来说这个是有用的,不知道你的问题是出在哪里了
你显卡单卡本来就高呀
我是两卡: 每一张11G 单张不高
我的这个就不行了 , 11 G 两个卡一共22G
卡的推理上,会有性能提升吗? 单卡8G 用INT8
显存够用就行,要不然不能运行起来现在的,如果能运行起来不是 越大就越快,而是算力高的卡才快
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个没有效果的 。 不要搞错了。。 就算你是预测,如果不用 model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 你只用 CUDA_VISIBLE_DEVICES=0,1 是不行的,你这个一直 都 只是理论上可以的事,实际是不行的。 要不然也不用推出: model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 方案了
对我来说这个是有用的,不知道你的问题是出在哪里了
你显卡单卡本来就高呀
我是两卡: 每一张11G 单张不高
我的这个就不行了 , 11 G 两个卡一共22G
这玩意应该和单卡显存无关吧
意应该和单卡显存无关吧
你单张卡都24G了, 已经够运行了,所以你不会有这个问题的
不是,哥们,你没看到我是双卡在训练吗。。
不是,哥们,你没看到我是双卡在训练吗。。
启动不了啊,哥。
如果你觉得没人问题,你找一个11G 两个卡来测试,如果能过我2000块打给你
我的意思是说和显存大小无关,不是说没有问题,说不定和cuda版本啥的有关
我的意思是说和显存大小无关,不是说没有问题,说不定和cuda版本啥的有关
真是无语: 看我发的报错信息
报错: RuntimeError: CUDA out of memory. Tried to allocate 192.00 MiB (GPU 0; 11.17 GiB total capacity; 10.24 GiB already allocated; 171.69 MiB free; 10.71 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
(mygpt) [root@localhost chatGlmBase]# python Python 3.8.16 (default, Mar 2 2023, 03:21:46) [GCC 11.2.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch as t >>> print( t.cuda.is_available() ) True >>> tensor=t.Tensor(3,4) >>> tensor.cuda(0) tensor([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], device='cuda:0') >>> print(t.version.cuda) 10.2 >>> print(t.cuda.device_count()) 2
兄弟,我不是说你OOM和cuda版本有关,我是说你不能多卡运行可能和cuda版本有关
兄弟,我不是说你OOM和cuda版本有关,我是说你不能多卡运行可能和cuda版本有关
(mygpt) [root@localhost chatGlmBase]# python Python 3.8.16 (default, Mar 2 2023, 03:21:46) [GCC 11.2.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch as t >>> print( t.cuda.is_available() ) True >>> tensor=t.Tensor(3,4) >>> tensor.cuda(0) tensor([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]], device='cuda:0') >>> print(t.version.cuda) 10.2 >>> print(t.cuda.device_count()) 2
不懂了,以上是配置, 返正我训练是不行,预测至从出了model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 我就可以运行起来了。 我的意思是官方训练的时候能不能一起样完善起来,做个全套
看我的。https://github.com/chenyiwan/chatglm-6b-fine-tuning
看我的。https://github.com/chenyiwan/chatglm-6b-fine-tuning
多谢, 不过看了下您代码也没看到有设置多卡的功能呢? ~~ 你的单张算力卡也是超过16G以上的吧,看一下 nvidia-smi 就知道了
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个我试了下是可以的,但是为什么多卡训练的时间要比单卡还长
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个我试了下是可以的,但是为什么多卡训练的时间要比单卡还长
没有改别的超参之类的吗?多卡训练会有通信延时,如果另一张卡算力不强可能会有这种情况吧。。
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个我试了下是可以的,但是为什么多卡训练的时间要比单卡还长
官方的训练代码是可以支持多卡训练的,不用自己修改代码 需要引入下面这个变量 CUDA_VISIBLE_DEVICES=0,1
这个我试了下是可以的,但是为什么多卡训练的时间要比单卡还长
没有改别的超参之类的吗?多卡训练会有通信延时,如果另一张卡算力不强可能会有这种情况吧。。
多卡是可以,但是如果多卡每张显存小于11G 就不行【意思就是就算你是多卡也要16G的,懂不懂啊】,用: nvidia-smi 看看自己的显存,每张小于12G的就算你有1000张也运行不起来。 理解了吗?要不然真的成了 混淆试听!!!!!
每张小于12G的就算你有1000张也运行不起来训练
每张小于12G的就算你有1000张也运行不起来训练
想请问一下,您这个结论是从哪得到的
每张小于12G的就算你有1000张也运行不起来训练
想请问一下,您这个结论是从哪得到的
实战出真实,不知道你能不能用两个11G的来测试一下,再来问
@gg22mm 多卡训练的问题你那边有进展吗?我这边也是四个11G的显卡 使用CUDA_VISIBLE_DEVICES=0,1,2,3 没有任何效果。还是只在一个卡上跑。
@gg22mm 多卡训练的问题你那边有进展吗?我这边也是四个11G的显卡 使用CUDA_VISIBLE_DEVICES=0,1,2,3 没有任何效果。还是只在一个卡上跑。
我倒,我都说的你1000张都没用,启动是需要16G这样才行, 只有启动成功了才会使用多卡,要不然你启动都不成功
我知道,所以我想问一下有没有其它的解决方案呢?官方的多卡方式是无法使用的,就卡在一个尴尬的内存上。
1、楼上说可能是: 不能多卡运行可能和cuda版本有关,你可以尝试一下。 但我觉得应该不是这个问题,但你可以尝试一下,就为了那个万一
2、还有一个办法就是你跑一下其它代码,看看能不能多卡运行。
3、就是官方像预测那样用 model = load_model_on_gpus("./THUDM/chatglm-6b", num_gpus=2) 来训练,不知道官方为什么只做了预测多卡 而 不做训练的多卡..
你这边版本是多少?我现在是12.1,我个人感觉也这个版本也没有什么关系。
我是两卡: 每一张11G 单张不高
你这边版本是多少?我现在是12.1,我个人感觉也这个版本也没有什么关系。
我上面有呀。
你不可能是12多的吧,我看最高也是11.多的吧
我这边确实是12.1的 不会因为我的太高了?