DeepSeek-VL2多显卡运行Gradio Demo

服务器有8张RTX3090显卡,部署DeepSeek-VL2最大模型时,总提示cuda out of memory,deepseek-vl2为MOE模型,4.5B是激活参数,实际参数在30B左右,8张卡跑它妥妥够啊,最后发现:

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python web_demo.py --model_name "deepseek-ai/deepseek-vl2" --ip 0.0.0.0 --root_path "/deepseek-vl2" --port 37914

虽然指定了8张卡,但实际只用了一张卡,Gradio Demo程序并不支持多卡推理。修改文件:

vim deepseek_vl2/serve/inference.py
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"

def split_model(model_name):
    device_map = {}
    model_splits = {        
        # 'deepseek-ai/deepseek-vl2-tiny': [13, 14], # 2 GPU
        'deepseek-ai/deepseek-vl2-small': [13, 14], # 2 GPU 
        'deepseek-ai/deepseek-vl2': [4, 4, 4, 4, 4, 4, 3, 3], # 8 GPU
    }
    num_layers_per_gpu = model_splits[model_name]
    num_layers = sum(num_layers_per_gpu)
    layer_cnt = 0
    for i, num_layer in enumerate(num_layers_per_gpu):
        for j in range(num_layer):
            device_map[f'language.model.layers.{layer_cnt}'] = i 
            layer_cnt += 1
    device_map['vision'] = 0
    device_map['projector'] = 0
    device_map['image_newline'] = 0
    device_map['view_seperator'] = 0
    device_map['language.model.embed_tokens'] = 0
    device_map['language.model.norm'] = 0
    device_map['language.lm_head'] = 0
    device_map[f'language.model.layers.{num_layers - 1}'] = 0
    return device_map

def load_model(model_path, dtype=torch.bfloat16):
    vl_chat_processor = DeepseekVLV2Processor.from_pretrained(model_path)
    tokenizer = vl_chat_processor.tokenizer

    # csdn2k
    device_map = split_model(model_path)
    vl_gpt: DeepseekVLV2ForCausalLM = AutoModelForCausalLM.from_pretrained(
        model_path, 
        trust_remote_code=True, 
        torch_dtype=dtype,
        device_map=device_map
    ).eval()
    return tokenizer, vl_gpt, vl_chat_processor

把原来的load_model注释掉。

关键位置就是:'deepseek-ai/deepseek-vl2': [4, 4, 4, 4, 4, 4, 3, 3],为不同的卡分配不同层。

然后重新运行成功。

参考:

Running DeepSeek-VL2 with multiple cards · Issue #8 · deepseek-ai/DeepSeek-VL2

DeepSeek-VL2 环境配置与使用指南_deepseek-vl2部署要求-优快云博客

Deepseek VL2 多卡部署_deepseek多卡部署-优快云博客

### DeepSeek-Chat 模型服务器部署教程 #### 准备工作 为了成功部署DeepSeek-Chat模型,需先准备好必要的环境和资源。确保已安装Python以及pip工具,并配置好虚拟环境。 #### 安装依赖库 通过命令行执行以下操作来创建并激活一个新的虚拟环境: ```bash python3 -m venv deepseek-env source deepseek-env/bin/activate # Linux/MacOS # 或者对于 Windows 用户: # .\deepseek-env\Scripts\activate.bat ``` 接着,在该环境中安装所需的Python包: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 pip install transformers sentencepiece gradio text-generation-webui ``` 以上命令会下载PyTorch框架及其扩展模块、Hugging Face Transformers库以及其他辅助组件[^2]。 #### 下载预训练模型文件 按照官方指南说明获取`DeepSeek-V2-Lite-Chat`版本的预训练权重文件,并将其放置于指定路径下。具体来说就是把解压后的`DeepSeek-V2-Lite-Chat`文件夹复制粘贴至`text-generation-webui/models`目录内[^1]。 #### 配置启动脚本 编辑或新建一个名为`start_server.sh`的Shell脚本来简化服务端程序的初始化过程: ```bash #!/bin/bash export MODEL_NAME=DeepSeek-V2-Lite-Chat cd /path/to/text-generation-webui/ nohup python app.py --model $MODEL_NAME & echo "Server started successfully!" ``` 请注意修改上述代码中的`/path/to/text-generation-webui/`部分以匹配实际存放web界面项目的绝对位置。 赋予此脚本可执行权限并通过它开启后台进程: ```bash chmod +x start_server.sh ./start_server.sh ``` 此时应该可以在浏览器里访问由Gradio提供的交互式Web UI页面来进行对话测试了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值