> 技术文档 > 在无图形界面的服务器上运行 LM Studio_lm studio 命令行 启动 模型

在无图形界面的服务器上运行 LM Studio_lm studio 命令行 启动 模型



在无图形界面的服务器上运行 LM Studio

LM Studio 是一个强大的本地大模型管理和运行工具,但它本身是一个图形化(GUI)应用。本文将详细介绍如何在只有命令行的无头(Headless)服务器上,通过一些技巧成功运行 LM Studio 并使用其命令行工具(CLI)进行模型的下载、加载和交互。

官方网站: https://lmstudio.ai/

第一步:环境准备与依赖安装

首先,需要安装 LM Studio 运行所需的依赖库。这些库主要用于支持其底层的 AppImage 应用以及创建一个虚拟显示环境来“骗过”GUI检测。

# 更新系统的软件包列表sudo apt update && sudo apt install -y \\ libfuse2 \\ xvfb \\ libatk1.0-0 \\ libatk-bridge2.0-0 \\ libgtk-3-0 \\ libnss3 \\ libcups2 \\ libxss1 \\ libgdk-pixbuf2.0-0 \\ libasound2 \\ libasound2t64 \\ nodejs \\ npm

第二步:下载并运行 LM Studio 主程序

由于服务器没有图形界面,需要启动一个虚拟的 X Server 显示环境(Xvfb),并将 LM Studio 应用指向这个虚拟屏幕。

  1. 下载 LM Studio 的 AppImage 文件
    注意:请根据需要从官网获取最新的版本链接,此处以 0.3.14-5 为例。
wget https://installers.lmstudio.ai/linux/x64/0.3.14-5/LM-Studio-0.3.14-5-x64.AppImage
  1. 赋予文件执行权限
chmod +x LM-Studio-0.3.14-5-x64.AppImage
  1. 启动虚拟屏幕
    这条命令会在后台启动一个编号为 :1 的虚拟屏幕,分辨率为 1024x768
Xvfb :1 -screen 0 1024x768x16 &
  1. 在虚拟屏幕上运行 LM Studio
    为了让后续的命令行工具能够连接,必须先将 LM Studio 的主程序作为后台服务运行起来。
  • 打开一个新的终端会话 或使用 screen/tmux

  • 导入虚拟屏幕的环境变量,告知后续程序在哪个屏幕上运行。

    export DISPLAY=:1
  • 在后台启动 LM Studio 主程序--no-sandbox 参数用于解决在某些环境下可能出现的权限问题。

    ./LM-Studio-0.3.14-5-x64.AppImage --no-sandbox &

至此,LM Studio 的核心服务已经在后台成功运行。

第三步:安装与配置 lms 命令行工具

LM Studio 内置了一个名为 lms 的命令行工具,用于控制后台的主程序。

官方文档: https://lmstudio.ai/docs/cli

lms:一个控制器

最重要的一点是:lms 工具本身不直接处理模型,它是一个控制器必须先确保 LM Studio 主程序已在后台运行,lms 才能连接并控制它。

  1. 安装 lms 到系统路径
    LM Studio 已经内置了 lms,只需运行一个引导命令,即可将其链接到系统路径下,方便全局调用。
~/.lmstudio/bin/lms bootstrap
  1. 验证安装
    必须打开一个新的终端窗口/SSH会话,或者运行 source ~/.bashrc (或 source ~/.zshrc) 来刷新环境。然后运行:
lms

如果看到 lms 的帮助信息,说明安装成功。使用 lms status 可以检查 CLI 与后台服务的连接状态。

lms status

第四步:核心工作流程:使用 lms 管理模型

以下是在命令行中从零开始运行一个模型的核心步骤:

  1. 搜索并下载模型
    使用 lms get 命令可以从 Hugging Face Hub 搜索并下载模型。
# 1. 搜索模型,找到它的标识符 (Identifier)# 例如,搜索 \"Mistral 7B Instruct GGUF\"lms get \"Mistral 7B Instruct GGUF\"# 2. 使用完整的标识符下载指定模型# 例如,下载 TheBloke 的 Mistral-7B-Instruct GGUF 格式模型lms get \"TheBloke/Mistral-7B-Instruct-v0.2-GGUF\"
  1. 查看已下载的模型
    使用 lms ls (ls = list) 命令,查看本地所有可用的模型,并获取加载模型时需要使用的完整路径
lms ls
  1. 加载模型
    这是最关键的一步。使用 lms load 命令将指定的模型文件加载到内存或显存中。
# 基本加载 (请将路径替换为 `lms ls` 输出的实际路径)lms load \"TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf\"

高级选项(非常有用):

  • GPU 加速:使用 --gpu 参数。max 表示尝试将所有层都卸载到 GPU。
  • 自定义别名:使用 --identifier 为模型设置一个简短、好记的别名,方便后续调用。

组合示例:

lms load \"TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_M.gguf\" --gpu=max --identifier=\"model\"
  1. 确认模型已加载
    使用 lms ps (ps = processes) 命令,查看当前正在运行的模型。
lms ps

此时应该能看到别名为 my-mistral 的模型正在运行。

第五步:与模型交互

模型加载后,有两种主要方式与其互动。

方法一:直接在终端对话 (CLI Chat)

使用 lms chat 命令,可以直接在终端里开始对话。

# --model 参数指定要对话的模型别名lms chat --model \"my-mistral\"

之后就可以输入文本并看到模型回复了。按 Ctrl+C 退出对话模式。

方法二:启动 API 服务器

若要让其他代码或应用来调用模型,可以启动一个兼容 OpenAI 规范的 API 服务器。

  1. 启动服务器:
lms server start

服务器默认监听在 1234 端口。

  1. 在另一个终端中使用 curl 调用:
    注意 model 字段可以直接使用之前设置的别名 my-mistral
curl http://localhost:1234/v1/chat/completions \\-H \"Content-Type: application/json\" \\-d \'{ \"model\": \"my-mistral\", \"messages\": [ { \"role\": \"user\", \"content\": \"你好,请介绍一下你自己\" } ], \"temperature\": 0.7}\'

第六步:清理与停止

  • 卸载模型:当不再需要某个模型时,可以将其从内存中卸载以释放资源。

    # 卸载指定别名的模型lms unload \"my-mistral\"# 卸载所有已加载的模型lms unload --all
  • 停止 API 服务器

    lms server stop
  • 查看状态:可以随时使用 lms status 检查服务器和模型的整体状态。


注意如果想在指定端口运行api server服务可以增加 --port参数