从ollama到llama.cpp

如果你用过ollama,那你不妨再来玩玩llama.cpp,这个更强悍,为了继续使用原来在ollama下载的模型,只需要运行以下bat文件即可

bash 复制代码
@echo off
chcp 65001 >nul 2>&1
setlocal enabledelayedexpansion

:: ============================================
:: 配置区域 - 请根据你的实际情况修改
:: ============================================
set "LLAMA_CPP_PATH=D:\llama_cpp"
set "OLLAMA_MODELS_PATH=D:\.ollama\models"

:: ============================================
:: 颜色设置
:: ============================================
color 0A

:: ============================================
:: 第一步:获取模型列表
:: ============================================
echo ========================================
echo     欢迎使用 llama.cpp 启动器
echo ========================================
echo.
echo 正在获取已安装的模型列表...
echo.

set "model_count=0"
for /f "skip=1 tokens=1 delims= " %%a in ('ollama list 2^>nul') do (
    set /a model_count+=1
    set "model_!model_count!=%%a"
    echo [!model_count!] %%a
)

if !model_count! equ 0 (
    echo.
    echo [错误] 没有找到任何模型,请先运行 ollama pull 下载模型。
    pause
    exit /b
)

echo.
echo 共找到 !model_count! 个模型

:: ============================================
:: 第二步:让用户选择模型
:: ============================================
:select_model
echo.
set /p model_choice="请输入要使用的模型编号 (1-!model_count!): "

if !model_choice! lss 1 goto invalid_choice
if !model_choice! gtr !model_count! goto invalid_choice

set "selected_model=!model_!model_choice!!"
echo.
echo 你选择了: !selected_model!
goto find_model_file

:invalid_choice
echo [错误] 无效的编号,请重新输入。
goto select_model

:: ============================================
:: 第三步:查找模型文件
:: ============================================
:find_model_file
echo.
echo 正在查找模型文件...

set "found_file="
set "max_size=0"

for /f "delims=" %%f in ('dir /b "%OLLAMA_MODELS_PATH%\blobs\sha256-*" 2^>nul') do (
    set "file_path=%OLLAMA_MODELS_PATH%\blobs\%%f"
    call :get_file_size "!file_path!"
    if !file_size! gtr !max_size! (
        set "max_size=!file_size!"
        set "found_file=%%f"
    )
)

if defined found_file (
    set "model_path=%OLLAMA_MODELS_PATH%\blobs\!found_file!"
    echo 找到模型文件: !found_file!
) else (
    echo [错误] 在 blobs 目录未找到任何模型文件。
    pause
    exit /b
)

if not exist "!model_path!" (
    echo [错误] 模型文件不存在: !model_path!
    pause
    exit /b
)

:: ============================================
:: 第四步:选择运行模式
:: ============================================
:select_mode
echo.
echo ========================================
echo      请选择运行模式
echo ========================================
echo [1] 命令行交互模式 (llama-cli)
echo [2] 服务模式 (llama-server)
echo.
set /p mode_choice="请输入模式编号 (1-2): "

if "!mode_choice!"=="1" goto cli_mode
if "!mode_choice!"=="2" goto server_mode
echo [错误] 无效的选择,请重新输入。
goto select_mode

:: ============================================
:: 第五步A:命令行交互模式
:: ============================================
:cli_mode
echo.
echo ========================================
echo 启动命令行交互模式
echo ========================================
echo.

set "llama_cli=%LLAMA_CPP_PATH%\llama-cli.exe"
if not exist "!llama_cli!" (
    echo [错误] 找不到 llama-cli.exe
    echo 路径: !llama_cli!
    echo.
    set /p custom_path="请拖入 llama-cli.exe 文件或输入完整路径: "
    if not exist "!custom_path!" (
        echo [错误] 文件不存在,退出。
        pause
        exit /b
    )
    set "llama_cli=!custom_path!"
)

echo 正在启动模型,请稍候...
echo.
echo 提示: 输入问题后按回车,输入 /exit 或按 Ctrl+C 退出
echo.

"!llama_cli!" -m "!model_path!" --color auto -cnv

if errorlevel 1 (
    echo.
    echo 尝试使用备选模式...
    "!llama_cli!" -m "!model_path!" -p "Hello, please introduce yourself"
)

pause
goto end

:: ============================================
:: 第五步B:服务模式
:: ============================================
:server_mode
echo.
echo ========================================
echo 启动服务模式
echo ========================================
echo 服务地址: http://localhost:8080
echo API端点: http://localhost:8080/v1/chat/completions
echo 按 Ctrl+C 停止服务
echo ========================================
echo.

set "llama_server=%LLAMA_CPP_PATH%\llama-server.exe"
if not exist "!llama_server!" (
    echo [警告] 找不到 llama-server.exe
    echo 路径: !llama_server!
    echo.
    set /p custom_path="请拖入 llama-server.exe 文件或输入完整路径: "
    if not exist "!custom_path!" (
        echo [错误] 文件不存在,退出。
        pause
        exit /b
    )
    set "llama_server=!custom_path!"
)

echo.
echo 配置选项 (直接回车使用默认值):
set /p host="主机地址 (默认 127.0.0.1): "
if "!host!"=="" set "host=127.0.0.1"

set /p port="端口 (默认 8080): "
if "!port!"=="" set "port=8080"

set /p context="上下文大小 (默认 4096): "
if "!context!"=="" set "context=4096"

set /p gpu_layers="GPU层数 (默认 0, 有显卡可设 20-40): "
if "!gpu_layers!"=="" set "gpu_layers=0"

echo.
echo ========================================
echo 启动参数:
echo 模型: !selected_model!
echo 地址: http://!host!:!port!
echo 上下文: !context!
echo GPU层数: !gpu_layers!
echo ========================================
echo.

"!llama_server!" -m "!model_path!" --host !host! --port !port! -c !context! --n-gpu-layers !gpu_layers!

if errorlevel 1 (
    echo.
    echo [错误] 服务启动失败
)
pause
goto end

:: ============================================
:: 子函数:获取文件大小
:: ============================================
:get_file_size
set "file_size=%~z1"
exit /b

:: ============================================
:: 结束
:: ============================================
:end
endlocal

运行后,非常方便,系统自动列出原来的模型

下来选择运行模型,1是命令,2是webui

命令行如下:

如果选择服务模式

服务已启动,打开http://127.0.0.1:8080,熟悉的界面

相关推荐
KANGBboy1 分钟前
doris+kafka安装部署(单机+集群)二时钟服务器 java_home
服务器·分布式
虚无的纽扣10 分钟前
【Linux】每个进程都拥有“假内存” | 进程地址空间详解
linux·运维·服务器
renzao_ai35 分钟前
本地 35B 大模型部署实战:Ollama 跑 Ornith-35B 全流程
python·llama·免费ai大模型
拂拉氏44 分钟前
【知识讲解】 Linux进程的回收相关接口了解
linux·进程回收
新时代牛马1 小时前
PCI与PCIe 完整篇:硬件拓扑→ 报文协议→配置/BAR → Linux 驱动(一条主线讲透)
linux·运维·网络
闲云野鹤在人间1 小时前
Docker入门|第1章 容器生态系统完整解析
运维·服务器·docker·容器·centos
筝筝ba1 小时前
如何跳过FFDC
xml·linux·运维·服务器·网络
Είναι η κοπέλα1 小时前
本地大模型部署完全指南:Ollama / vLLM / llama.cpp / MLX 四大引擎横评与选型实战
macos·llama·vllm
赴生-1 小时前
Liunx 操作系统 进程概念(下)
linux
风静如云1 小时前
VMWare:Ubuntu(26.04)共享后看不到
linux