使用 LM Studio 为 Elastic Security 连接本地 LLM
本页提供使用 LM Studio 设置连接器以连接您选择的大型语言模型(LLM)的说明。这使您能够在 Elastic Security 中使用您所选的模型。您首先需要设置一个反向代理以与 Elastic Security 进行通信,然后在服务器上设置 LM Studio,最后在您的 Elastic 部署中配置连接器。了解有关使用本地 LLM 的好处的更多信息。
本示例使用托管在 GCP 中的单个服务器来运行以下组件
- 搭载 Mistral-Nemo-Instruct-2407 模型的 LM Studio
- 使用 Nginx 进行身份验证到 Elastic Cloud 的反向代理
为了进行测试,您可以使用 Nginx 的替代方案,例如 Azure Dev Tunnels 或 Ngrok,但使用 Nginx 可以通过 Elastic 原生的 Nginx 集成轻松收集额外的遥测数据并监控其状态。虽然此示例使用云基础设施,但也可以在本地离线复制。
有关开源模型在 Elastic Security 任务中的性能信息,请参考 LLM 性能矩阵。
如果您的 Elastic 实例与 LM Studio 位于同一主机上,您可以跳过此步骤。此外,请查看我们的博客文章,其中详细介绍了设置单主机实现的整个过程。
您需要设置一个反向代理,以便在 LM Studio 和 Elastic 之间进行通信。有关更完整的说明,请参考本指南等教程。
以下是一个 Nginx 配置文件示例
server {
listen 80;
listen [::]:80;
server_name <yourdomainname.com>;
server_tokens off;
add_header x-xss-protection "1; mode=block" always;
add_header x-frame-options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <yourdomainname.com>;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/<yourdomainname.com>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<yourdomainname.com>/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header x-xss-protection "1; mode=block" always;
add_header x-frame-options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/<yourdomainname.com>/fullchain.pem;
resolver 1.1.1.1;
location / {
if ($http_authorization != "Bearer <secret token>") {
return 401;
}
proxy_pass https://:1234/;
}
}
如果使用上面的示例配置文件,您必须替换几个值
- 将
<secret token>替换为您实际的令牌,并妥善保管,因为设置 Elastic Security 连接器时会用到它。 - 将
<yourdomainname.com>替换为您实际的域名。 - 如果您决定将 LM Studio 中的端口号更改为 1234 以外的其他端口,请更新配置底部的
proxy_pass值。
您可以使用 Elastic 的 Nginx 集成来监控性能,并在 Elastic Security 应用中填充监控仪表板。
首先,安装 LM Studio。LM Studio 支持 OpenAI SDK,这使其与 Elastic 的 OpenAI 连接器兼容,从而允许您连接到 LM Studio 市场中提供的任何模型。
在使用 CLI 启动应用程序之前,您必须先使用其 GUI 启动它。例如,结合 X 窗口系统使用 Chrome RDP。首次通过 GUI 打开应用程序后,您可以在 CLI 中使用 sudo lms server start 来启动它。
启动 LM Studio 后
- 转到 LM Studio 的“搜索”(Search)窗口。
- 搜索 LLM(例如
Mistral-Nemo-Instruct-2407)。您选择的模型名称中必须包含instruct才能与 Elastic 配合使用。 - 找到模型后,查看下载选项并选择推荐版本(绿色)。为了获得最佳性能,请选择带有大拇指图标(表示在您的硬件上性能良好)的版本。
- 下载一个或多个模型。
出于安全原因,在下载模型之前,请验证它是否来自受信任的来源。查看社区对该模型的反馈(例如使用 Hugging Face 等网站)会很有帮助。
在本示例中,我们使用了 mistralai/Mistral-Nemo-Instruct-2407。它总共有 12B 个参数,拥有 128,000 个 token 的上下文窗口,并使用 GGUF 量化。有关模型名称和格式信息的更多信息,请参考下表。
| 模型名称 | 参数大小 | Token/上下文窗口 | 量化格式 |
|---|---|---|---|
| 模型名称,有时带有版本号。 | 人们经常通过参数数量来比较 LLM——数字越大意味着模型越强大。 | Token 是输入信息的小块。Token 不一定对应于字符。您可以使用 Tokenizer 查看给定提示词可能包含多少个 token。 | 量化减少了整体参数并帮助模型运行得更快,但会降低准确率。 |
| 示例:Llama、Mistral、Phi-3、Falcon。 | 参数数量是衡量模型大小和复杂性的指标。模型拥有的参数越多,它能处理、学习、生成和预测的数据就越多。 | 上下文窗口定义了模型一次可以处理多少信息。如果输入 token 的数量超过此限制,输入将会被截断。 | 量化的具体格式各不相同,现在大多数模型支持 GPU 卸载,而不是 CPU 卸载。 |
下载模型后,使用 GUI 或 LM Studio 的 CLI 工具将其加载到 LM Studio 中。
最佳做法是使用 GUI 从市场下载模型,然后使用 CLI 加载或卸载它们。GUI 允许您搜索模型,而 CLI 允许您使用 lms get 搜索模型。CLI 为加载和卸载提供了良好的界面。
下载模型后,在您的 CLI 中使用以下命令
- 验证是否已安装 LM Studio:
lms - 检查 LM Studio 的状态:
lms status - 列出所有已下载的模型:
lms ls - 加载模型:
lms load。
模型加载后,您应该在 CLI 中看到 Model loaded successfully 消息。使用箭头键和 Enter 键选择一个模型。
要验证加载了哪个模型,请使用 lms ps 命令。
如果您的模型使用 NVIDIA 驱动程序,您可以使用 sudo nvidia-smi 命令检查 GPU 性能。
请参考以下视频,了解如何使用 LM Studio 的 GUI 加载模型。您可以更改 Nginx 配置文件中引用的 port(端口)设置。请注意,GPU offload(GPU 卸载)已设置为 Max(最大)。以下视频演示了此过程(点击观看)。
您可以使用 Elastic 的 Custom Logs 集成来监控运行 LM Studio 的主机的性能。这也有助于进行故障排除。请注意,LM Studio 日志的默认路径为 /tmp/lmstudio-server-log.txt,如以下屏幕截图所示
OpenAI 连接器已弃用,并正在逐步从创建连接器 UI 中移除。现有的连接器及其规则操作将继续工作。
对于新的 AI 集成,请使用 Elasticsearch 推理端点。请在将来移除之前,迁移现有的 LLM 连接器及相关的规则操作。
最后,配置连接器
- 登录您的 Elastic 部署。
- 在导航菜单中找到 Connectors 页面,或使用全局搜索字段。然后点击 Create Connector,并选择 OpenAI。由于 LM Studio 使用 OpenAI SDK,因此 OpenAI 连接器能够支持此用例。
- 为您的连接器命名,以便跟踪您正在使用的模型版本。
- 在 Select an OpenAI provider 下,选择 Other (OpenAI Compatible Service)。
- 在 URL 下,输入您的 Nginx 配置文件中指定的域名,后跟
/v1/chat/completions。 - 在 Default model 下,输入
local-model。 - 在 API key 下,输入您的 Nginx 配置文件中指定的密钥令牌。
- 点击 Save。
设置现已完成。您可以使用在 LM Studio 中加载的模型来为 Elastic 的生成式 AI 功能提供支持。在与 AI 助手交互时,您可以测试各种模型以了解哪种模型效果最好,而无需更新连接器。
虽然本地模型对 AI 助手效果很好,但我们建议您使用这些模型之一来与 Attack discovery 进行交互。随着本地模型性能随着时间的推移而不断提升,这种情况可能会发生变化。
