windows安装部署DeepSeek模型兼容性检测

@高效码农  February 22, 2025

28c73069-7e20-4fb2-9e16-8d325718c959.jpeg

如果想快速检测,请移步点击:DeepSeek模型兼容性检测检查设备能否运行不同规模的DeepSeek模型

硬件信息获取与模型支持判断

获取硬件信息的关键点

获取硬件信息的关键点包括:

  • CPU
  • 内存
  • GPU(如果有的话)

对于模型支持的大小,主要影响因素是:

  • 内存大小
  • GPU 的 VRAM

例如:

  • 7B 的模型可能需要至少 16GB 内存
  • 更大的模型如 33B 可能需要 32GB 或以上

如果有独立 GPU,尤其是 NVIDIA 的显卡,显存也很重要。例如:

  • 16GB 显存 可以运行更大的模型。

批处理脚本设计

1. 获取总物理内存

使用 systeminfo 命令可以获取系统信息,包括内存。通过 findstr 过滤输出行,提取总物理内存。

示例代码:

for /f "tokens=2 delims=:" %%a in ('systeminfo ^| findstr /C:"安装的物理内存"') do set "total_memory=%%a"
set "total_memory=%total_memory: =%"
for /f "tokens=1 delims=. " %%b in ("%total_memory%") do set total_memory_gb=%%b

解析:

  1. 提取 systeminfo 输出中的“安装的物理内存”行。
  2. 清理空格和单位(如 GB),将值存储到变量 total_memory_gb 中。

2. 获取显卡信息

方法一:使用 wmic

通过 wmic path Win32_VideoController get Name, AdapterRAM 获取显卡名称和显存大小。

示例代码:
for /f "tokens=*" %%d in ('wmic path Win32_VideoController get Name^, AdapterRAM /format:list ^| findstr "="') do (
    echo %%d | findstr /i "nvidia" >nul
    if not errorlevel 1 (
        for /f "tokens=2 delims==" %%e in ("%%d") do (
            if "%%d"=="AdapterRAM" (
                set /a vram_bytes=%%e
                rem 转换为 GB
                if !vram_bytes! geq 17179869184 (
                    set vram_gb=16
                ) else if !vram_bytes! geq 8589934592 (
                    set vram_gb=8
                ) else if !vram_bytes! geq 4294967296 (
                    set vram_gb=4
                ) else (
                    set vram_gb=2
                )
            )
        )
    )
)

方法二:使用 PowerShell

由于 wmic 的显存值可能溢出,推荐使用 PowerShell 获取显存信息。

示例代码:
for /f %%j in ('powershell -Command "$gpus = Get-CimInstance -ClassName Win32_VideoController; foreach ($gpu in $gpus) { if ($gpu.Name -match 'NVIDIA') { $vram = [math]::Round($gpu.AdapterRAM / 1GB); Write-Output $vram; exit } }" 2^>nul') do set vram_gb=%%j

3. 判断逻辑

根据内存和显存大小,推荐适合的模型。

示例代码:

if %vram_gb% geq 16 (
    echo 推荐配置:可运行33B及以上规模的DeepSeek模型(显存%vram_gb%GB)
) else if %vram_gb% geq 8 (
    echo 推荐配置:可运行7B-33B规模的DeepSeek模型(显存%vram_gb%GB)
) else (
    if %total_memory_gb% geq 32 (
        echo 推荐配置:可运行33B规模的DeepSeek模型(内存%total_memory_gb%GB)
    ) else if %total_memory_gb% geq 16 (
        echo 推荐配置:可运行7B规模的DeepSeek模型(内存%total_memory_gb%GB)
    ) else (
        echo 硬件配置不足,建议升级内存至16GB以上以运行7B模型。
    )
)

完整批处理脚本

@echo off
setlocal enabledelayedexpansion

echo 正在获取硬件信息...
echo.
echo ==== 内存信息 ====

rem 获取总物理内存
for /f "tokens=2 delims=:" %%a in ('systeminfo ^| findstr /C:"安装的物理内存"') do set "total_memory=%%a"
set "total_memory=%total_memory: =%"
for /f "tokens=1 delims=. " %%b in ("%total_memory%") do set total_memory_gb=%%b
echo 总物理内存: %total_memory_gb% GB

echo.
echo ==== GPU 信息 ====

rem 初始化显存变量
set vram_gb=0
set has_nvidia=0

rem 使用 PowerShell 获取显存信息
for /f %%j in ('powershell -Command "$gpus = Get-CimInstance -ClassName Win32_VideoController; foreach ($gpu in $gpus) { if ($gpu.Name -match 'NVIDIA') { $vram = [math]::Round($gpu.AdapterRAM / 1GB); Write-Output $vram; exit } }" 2^>nul') do (
    set vram_gb=%%j
    set has_nvidia=1
)

if %has_nvidia% equ 1 (
    echo 检测到NVIDIA GPU,显存: %vram_gb% GB
) else (
    echo 未检测到NVIDIA GPU
)

echo.
echo ==== 推荐模型 ====

if %has_nvidia% equ 1 (
    if %vram_gb% geq 16 (
        echo 推荐配置:可运行33B及以上规模的DeepSeek模型(显存%vram_gb%GB)
    ) else if %vram_gb% geq 8 (
        echo 推荐配置:可运行7B-33B规模的DeepSeek模型(显存%vram_gb%GB)
    ) else (
        if %total_memory_gb% geq 32 (
            echo 推荐配置:可运行33B规模的DeepSeek模型(内存%total_memory_gb%GB)
        ) else if %total_memory_gb% geq 16 (
            echo 推荐配置:可运行7B规模的DeepSeek模型(内存%total_memory_gb%GB)
        ) else (
            echo 硬件配置不足,建议升级内存至16GB以上以运行7B模型。
        )
    )
) else (
    if %total_memory_gb% geq 32 (
        echo 推荐配置:可运行33B规模的DeepSeek模型(内存%total_memory_gb%GB)
    ) else if %total_memory_gb% geq 16 (
        echo 推荐配置:可运行7B规模的DeepSeek模型(内存%total_memory_gb%GB)
    ) else (
        echo 硬件配置不足,无法运行DeepSeek模型,建议至少16GB内存。
    )
)

endlocal

注意事项

  1. 关键词适配
    systeminfo 输出中的关键词可能因系统语言不同而变化。例如,中文系统可能是“安装的物理内存”,英文系统可能是“Total Physical Memory”。
  2. 显存计算问题

    • wmicAdapterRAM 返回的是字节,转换为 GB 时可能溢出。
    • 推荐使用 PowerShell 的 [math]::Round() 函数进行显存计算。
  3. 多语言支持
    当前脚本假设用户系统为中文,若需支持其他语言,需调整关键词。
  4. 权限问题
    PowerShell 命令可能需要管理员权限,普通用户可能无法执行。
  5. 错误处理
    如果无法获取硬件信息,建议添加默认值或提示用户手动检查。

总结

该脚本通过批处理结合 PowerShell 实现了硬件信息的自动获取,并根据内存和显存大小推荐适合的模型。



添加新评论