连接到您自己的本地 LLM

编辑

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

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

  • 具有 Mixtral-8x7b 模型的 LM Studio
  • 使用 Nginx 的反向代理,用于向 Elastic Cloud 进行身份验证
Architecture diagram for this guide

对于测试,您可以使用 Nginx 的替代方案,例如 Azure Dev TunnelsNgrok,但使用 Nginx 可以通过使用 Elastic 的原生 Nginx 集成轻松收集其他遥测数据并监控其状态。虽然此示例使用云基础设施,但也可以在没有 Internet 连接的情况下在本地复制。

配置您的反向代理

编辑

如果您的 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://127.0.0.1:1234/;
   }

}

如果使用上面的示例配置文件,则必须替换几个值:将 <secret token> 替换为您的实际令牌,并妥善保管,因为您需要它来设置 Elastic Security 连接器。将 <yourdomainname.com> 替换为您的实际域名。如果您决定将 LM Studio 中的端口号更改为 1234 以外的其他值,请更新配置底部的 proxy_pass 值。

(可选)为您的反向代理设置性能监控
编辑

您可以使用 Elastic 的 Nginx 集成来监控性能并在 Elastic Security 应用程序中填充监控仪表板。

配置 LM Studio 并下载模型

编辑

首先,安装 LM Studio。LM Studio 支持 OpenAI SDK,这使其与 Elastic 的 OpenAI 连接器兼容,允许您连接到 LM Studio 市场中提供的任何模型。

LM Studio 当前的一个限制是,当它安装在服务器上时,您必须先使用其 GUI 启动应用程序,然后再使用 CLI 启动。例如,通过将 Chrome RDP 与 X Window System 结合使用。第一次使用 GUI 打开应用程序后,您可以使用 CLI 中的 sudo lms server start 启动它。

启动 LM Studio 后

  1. 转到 LM Studio 的“搜索”窗口。
  2. 搜索 LLM(例如,Mixtral-8x7B-instruct)。您选择的模型必须在其名称中包含 instruct 才能与 Elastic 一起使用。
  3. 过滤您的“兼容性猜测”搜索,以优化您的硬件的结果。结果将以颜色编码

    • 绿色表示“可以完全 GPU 卸载”,这将产生最佳结果。
    • 蓝色表示“可以部分 GPU 卸载”,这可能会起作用。
    • 红色表示“对于此机器来说可能太大”,通常不起作用。
  4. 下载一个或多个模型。

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

The LM Studio model selection interface

在此示例中,我们使用了 TheBloke/Mixtral-8x7B-Instruct-v0.1.Q3_K_M.gguf。它总共有 467 亿个参数、一个 32,000 个标记的上下文窗口,并使用 GGUF 量化。有关模型名称和格式信息的更多信息,请参阅下表。

模型名称 参数大小 标记/上下文窗口 量化格式

模型名称,有时带有版本号。

LLM 通常按其参数数量进行比较 - 数字越大,表示模型越强大。

标记是输入信息的小块。标记不一定与字符对应。您可以使用 分词器来查看给定提示可能包含多少个标记。

量化会减少总体参数并帮助模型更快地运行,但会降低准确性。

示例:Llama、Mistral、Phi-3、Falcon。

参数数量是衡量模型大小和复杂性的指标。模型拥有的参数越多,它可以处理、学习、生成和预测的数据就越多。

上下文窗口定义了模型一次可以处理多少信息。如果输入标记的数量超过此限制,输入将被截断。

量化的特定格式各不相同,现在大多数模型都支持 GPU 而不是 CPU 卸载。

在 LM Studio 中加载模型

编辑

下载模型后,使用 GUI 或 LM Studio 的 CLI 工具在 LM Studio 中加载模型。

选项 1:使用 CLI 加载模型(推荐)
编辑

最佳实践是使用 GUI 从市场下载模型,然后使用 CLI 加载或卸载它们。GUI 允许您搜索模型,而 CLI 只允许您导入特定路径,但 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 消息。

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 性能。

选项 2:使用 GUI 加载模型
编辑

请参阅以下视频,了解如何使用 LM Studio 的 GUI 加载模型。您可以更改 端口 设置,该设置在 Nginx 配置文件中引用。请注意,GPU 卸载设置为 最大


(可选)使用 Elastic 的自定义日志集成收集日志

编辑

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

The configuration window for the custom logs integration

在您的 Elastic 部署中配置连接器

编辑

最后,配置连接器

  1. 登录到您的 Elastic 部署。
  2. 在导航菜单中找到 连接器 页面或使用 全局搜索字段。然后单击 创建连接器,并选择 OpenAI。OpenAI 连接器启用此用例,因为 LM Studio 使用 OpenAI SDK。
  3. 命名您的连接器,以帮助您跟踪您正在使用的模型版本。
  4. 选择 OpenAI 提供程序 下,选择 其他(OpenAI 兼容服务)
  5. URL 下,输入您的 Nginx 配置文件中指定的域名,后跟 /v1/chat/completions
  6. 默认模型 下,输入 local-model
  7. API 密钥 下,输入您的 Nginx 配置文件中指定的密钥令牌。
  8. 单击 保存
The Edit connector page in the Elastic Security app

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

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