在无图形界面的服务器上运行 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 应用指向这个虚拟屏幕。
- 下载 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
- 赋予文件执行权限
chmod +x LM-Studio-0.3.14-5-x64.AppImage
- 启动虚拟屏幕
这条命令会在后台启动一个编号为:1
的虚拟屏幕,分辨率为1024x768
。
Xvfb :1 -screen 0 1024x768x16 &
- 在虚拟屏幕上运行 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
才能连接并控制它。
- 安装
lms
到系统路径
LM Studio 已经内置了lms
,只需运行一个引导命令,即可将其链接到系统路径下,方便全局调用。
~/.lmstudio/bin/lms bootstrap
- 验证安装
必须打开一个新的终端窗口/SSH会话,或者运行source ~/.bashrc
(或source ~/.zshrc
) 来刷新环境。然后运行:
lms
如果看到 lms
的帮助信息,说明安装成功。使用 lms status
可以检查 CLI 与后台服务的连接状态。
lms status
第四步:核心工作流程:使用 lms
管理模型
以下是在命令行中从零开始运行一个模型的核心步骤:
- 搜索并下载模型
使用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\"
- 查看已下载的模型
使用lms ls
(ls
= list) 命令,查看本地所有可用的模型,并获取加载模型时需要使用的完整路径。
lms ls
- 加载模型
这是最关键的一步。使用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\"
- 确认模型已加载
使用lms ps
(ps
= processes) 命令,查看当前正在运行的模型。
lms ps
此时应该能看到别名为 my-mistral
的模型正在运行。
第五步:与模型交互
模型加载后,有两种主要方式与其互动。
方法一:直接在终端对话 (CLI Chat)
使用 lms chat
命令,可以直接在终端里开始对话。
# --model 参数指定要对话的模型别名lms chat --model \"my-mistral\"
之后就可以输入文本并看到模型回复了。按 Ctrl+C
退出对话模式。
方法二:启动 API 服务器
若要让其他代码或应用来调用模型,可以启动一个兼容 OpenAI 规范的 API 服务器。
- 启动服务器:
lms server start
服务器默认监听在 1234
端口。
- 在另一个终端中使用
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参数