加载中

使用 LM Studio 为 Elastic Security 连接本地 LLM

本页提供使用 LM Studio 设置连接器以连接您选择的大型语言模型(LLM)的说明。这使您能够在 Elastic Security 中使用您所选的模型。您首先需要设置一个反向代理以与 Elastic Security 进行通信,然后在服务器上设置 LM Studio,最后在您的 Elastic 部署中配置连接器。了解有关使用本地 LLM 的好处的更多信息

本示例使用托管在 GCP 中的单个服务器来运行以下组件

Architecture diagram for this guide
注意

为了进行测试,您可以使用 Nginx 的替代方案,例如 Azure Dev TunnelsNgrok,但使用 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 后

  1. 转到 LM Studio 的“搜索”(Search)窗口。
  2. 搜索 LLM(例如 Mistral-Nemo-Instruct-2407)。您选择的模型名称中必须包含 instruct 才能与 Elastic 配合使用。
  3. 找到模型后,查看下载选项并选择推荐版本(绿色)。为了获得最佳性能,请选择带有大拇指图标(表示在您的硬件上性能良好)的版本。
  4. 下载一个或多个模型。
重要提示

出于安全原因,在下载模型之前,请验证它是否来自受信任的来源。查看社区对该模型的反馈(例如使用 Hugging Face 等网站)会很有帮助。

The LM Studio model selection interface

在本示例中,我们使用了 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 中使用以下命令

  1. 验证是否已安装 LM Studio:lms
  2. 检查 LM Studio 的状态:lms status
  3. 列出所有已下载的模型:lms ls
  4. 加载模型:lms load
The CLI interface during execution of initial LM Studio commands

模型加载后,您应该在 CLI 中看到 Model loaded successfully 消息。使用箭头键和 Enter 键选择一个模型。

The CLI message that appears after a model loads

要验证加载了哪个模型,请使用 lms ps 命令。

The CLI message that appears after running lms ps

如果您的模型使用 NVIDIA 驱动程序,您可以使用 sudo nvidia-smi 命令检查 GPU 性能。

请参考以下视频,了解如何使用 LM Studio 的 GUI 加载模型。您可以更改 Nginx 配置文件中引用的 port(端口)设置。请注意,GPU offload(GPU 卸载)已设置为 Max(最大)。以下视频演示了此过程(点击观看)。

byollm-load-model-gui-video

您可以使用 Elastic 的 Custom Logs 集成来监控运行 LM Studio 的主机的性能。这也有助于进行故障排除。请注意,LM Studio 日志的默认路径为 /tmp/lmstudio-server-log.txt,如以下屏幕截图所示

The configuration window for the custom logs integration
重要

OpenAI 连接器已弃用,并正在逐步从创建连接器 UI 中移除。现有的连接器及其规则操作将继续工作。

对于新的 AI 集成,请使用 Elasticsearch 推理端点。请在将来移除之前,迁移现有的 LLM 连接器及相关的规则操作。

最后,配置连接器

  1. 登录您的 Elastic 部署。
  2. 在导航菜单中找到 Connectors 页面,或使用全局搜索字段。然后点击 Create Connector,并选择 OpenAI。由于 LM Studio 使用 OpenAI SDK,因此 OpenAI 连接器能够支持此用例。
  3. 为您的连接器命名,以便跟踪您正在使用的模型版本。
  4. Select an OpenAI provider 下,选择 Other (OpenAI Compatible Service)
  5. URL 下,输入您的 Nginx 配置文件中指定的域名,后跟 /v1/chat/completions
  6. Default model 下,输入 local-model
  7. API key 下,输入您的 Nginx 配置文件中指定的密钥令牌。
  8. 点击 Save
The Edit connector page in the Elastic Security app

设置现已完成。您可以使用在 LM Studio 中加载的模型来为 Elastic 的生成式 AI 功能提供支持。在与 AI 助手交互时,您可以测试各种模型以了解哪种模型效果最好,而无需更新连接器。

注意

虽然本地模型对 AI 助手效果很好,但我们建议您使用这些模型之一来与 Attack discovery 进行交互。随着本地模型性能随着时间的推移而不断提升,这种情况可能会发生变化。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.