连接到您自己的本地 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 集成来收集额外的遥测数据并监控其状态。虽然此示例使用云基础设施,但它也可以在没有互联网连接的情况下在本地复制。

配置您的反向代理编辑

如果您的 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 系统。使用 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。它有 46.7B 个总参数、32,000 个令牌上下文窗口,并使用 GGUF 量化。有关模型名称和格式信息的更多信息,请参阅下表。

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

模型名称,有时包含版本号。

LLM 通常通过其参数数量进行比较——数量越多表示模型越强大。

令牌是输入信息的较小片段。令牌不一定对应于字符。您可以使用 Tokenizer 来查看给定提示可能包含多少个令牌。

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

示例: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. URL 下,输入您在 Nginx 配置文件中指定的域名,后跟 /v1/chat/completions
  5. 默认模型 下,输入 local-model
  6. API 密钥 下,输入您在 Nginx 配置文件中指定的秘密令牌。
  7. 单击 保存.
The Edit connector page in the Elastic Security app

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

虽然本地模型非常适合 AI 助理,但我们建议您使用 这些模型 中的一个与 攻击发现 进行交互。随着时间的推移,本地模型的性能将会提升,这种情况可能会发生变化。