部署模型,docker本地运行,显卡是Tesla T4,操作系统是ubuntu 22.04 ,ModelScope的显存没有跑别的任何东西怎么解决? 启动命令是:
docker run --rm --name server --shm-size=50gb --gpus='"device=0"' -e MODELSCOPE_CACHE=/modelscope_cache -v /data/model/cache:/modelscope_cache -p 80:8000 registry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda11.8.0-py310-torch2.1.0-tf2.14.0-1.10.0 modelscope server --model_id=qwen/Qwen-7B-Chat --revision=v1.0.5
报错说我显存不够,报错内容
torch.cuda.OutOfMemoryError: LLMPipeline: CUDA out of memory. Tried to allocate 36.00 MiB. GPU 0 has a total capacty of 14.58 GiB of which 22.50 MiB is free. Process 17739 has 14.55 GiB memory in use. Of the allocated memory 14.45 GiB is allocated by PyTorch, and 759.00 KiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
根据您的描述,您在使用ModelScope时遇到了显存不足的问题。为了解决这个问题,您可以尝试以下方法:
减小批量大小(batch size):在运行模型时,尝试减小批量大小,以减少每次迭代所需的显存。例如,将--batch_size=4
更改为--batch_size=2
或更小的值。
使用梯度累积(gradient accumulation):梯度累积是一种技术,通过多次更新模型参数来累积梯度,从而减少每次迭代所需的显存。要使用梯度累积,您可以在运行命令中添加--gradient_accumulation_steps
参数,例如--gradient_accumulation_steps=4
。
调整显存分配策略:您可以尝试调整显存分配策略,以便更好地利用您的显卡资源。例如,您可以尝试设置PYTORCH_CUDA_ALLOC_CONF
环境变量,以调整PyTorch的内存分配策略。具体来说,您可以设置max_split_size_mb
参数,以控制PyTorch在分配显存时的最大分割大小。例如,将PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb=500"
添加到运行命令中。