正在加载

连接到您自己的本地 LLM

Elastic Stack 无服务器安全

本页提供有关使用 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 http://localhost: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 市场中可用的任何模型。

您必须先使用其 GUI 启动该应用程序,然后再使用 CLI 执行此操作。 例如,将 Chrome RDP 与 X Window System 一起使用。 首次使用 GUI 打开应用程序后,您可以使用 CLI 中的 sudo lms server start 启动它。

启动 LM Studio 后

  1. 转到 LM Studio 的“搜索”窗口。
  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 个令牌的上下文窗口,并使用 GGUF 量化。 有关模型名称和格式信息的更多信息,请参阅下表。

模型名称 参数大小 令牌/上下文窗口 量化格式
模型名称,有时带有版本号。 LLM 通常通过其参数数量进行比较 - 数字越高意味着模型越强大。 令牌是输入信息的小块。 令牌不一定对应于字符。 您可以使用 Tokenizer 来查看给定提示可能包含多少个令牌。 量化减少了总体参数,并有助于模型运行得更快,但会降低准确性。
示例:Llama、Mistral、Phi-3、Falcon。 参数数量是衡量模型大小和复杂性的指标。 模型拥有的参数越多,它可以处理、学习、生成和预测的数据就越多。 上下文窗口定义了模型一次可以处理多少信息。 如果输入令牌的数量超过此限制,则输入将被截断。 量化的特定格式各不相同,现在大多数模型都支持 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 设置为 Max。 以下视频演示了此过程(点击观看)。

byollm-load-model-gui-video

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

The configuration window for the custom logs integration

最后,配置连接器

  1. 登录到您的 Elastic 部署。
  2. 在导航菜单中找到 Connectors 页面,或使用 全局搜索字段。 然后单击 Create Connector,并选择 OpenAI。 OpenAI 连接器启用了此用例,因为 LM Studio 使用了 OpenAI SDK。
  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 {{security-app}}

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

注意

虽然本地模型非常适合 AI 助手,但我们建议您使用 这些模型之一与 攻击发现进行交互。 随着本地模型性能随时间推移变得越来越好,这种情况可能会发生变化。

© . All rights reserved.