第 5 章 使用模型提供和聊天


要与 Red Hat Enterprise Linux AI 上的各种模型交互,您必须提供在服务器中托管它的模型,然后您可以使用模型进行聊天。

5.1. 提供模型

要与模型交互,您必须首先通过服务激活机器中的模型。ilab 模型服务 命令启动 vLLM 服务器,允许您与模型进行聊天。

先决条件

  • 已使用可引导容器镜像安装了 RHEL AI。
  • 您初始化了 InstructLab。
  • 已安装您首选的 Granite LLM。
  • 在机器上具有 root 用户访问权限。

流程

  1. 如果没有指定模型,您可以通过运行以下命令来提供默认模型 granite-7b-redhat-lab

    $ ilab model serve
    Copy to Clipboard Toggle word wrap
  2. 要服务特定模型,请运行以下命令

    $ ilab model serve --model-path <model-path>
    Copy to Clipboard Toggle word wrap

    示例命令

    $ ilab model serve --model-path ~/.cache/instructlab/models/granite-8b-code-instruct
    Copy to Clipboard Toggle word wrap

    模型提供并就绪时的输出示例

    INFO 2024-03-02 02:21:11,352 lab.py:201 Using model 'models/granite-8b-code-instruct' with -1 gpu-layers and 4096 max context size.
    Starting server process
    After application startup complete see http://127.0.0.1:8000/docs for API.
    Press CTRL+C to shut down the server.
    Copy to Clipboard Toggle word wrap

5.1.1. 可选:运行 ilab 模型 作为服务

您可以设置 systemd 服务,以便 ilab 模型服务 命令作为正在运行的服务运行。systemd 服务在后台运行 ilab model serving 命令,并在其崩溃或失败时重新启动。您可以将服务配置为在系统启动时启动。

先决条件

  • 您在裸机上安装了 Red Hat Enterprise Linux AI 镜像。
  • 您初始化的 InstructLab
  • 您下载了您首选的 Granite LLMs。
  • 在机器上具有 root 用户访问权限。

流程.

  1. 运行以下命令,为您的 systemd 用户服务创建一个目录:

    $ mkdir -p $HOME/.config/systemd/user
    Copy to Clipboard Toggle word wrap
  2. 使用以下示例配置创建 systemd 服务文件:

    $ cat << EOF > $HOME/.config/systemd/user/ilab-serve.service
    [Unit]
    Description=ilab model serve service
    
    [Install]
    WantedBy=multi-user.target default.target 
    1
    
    
    [Service]
    ExecStart=ilab model serve --model-family granite
    Restart=always
    EOF
    Copy to Clipboard Toggle word wrap
    1
    指定在引导时默认启动。
  3. 运行以下命令来重新载入 systemd Manager 配置:

    $ systemctl --user daemon-reload
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令启动 ilab 模型服务 systemd 服务:

    $ systemctl --user start ilab-serve.service
    Copy to Clipboard Toggle word wrap
  5. 您可以使用以下命令检查该服务是否正在运行:

    $ systemctl --user status ilab-serve.service
    Copy to Clipboard Toggle word wrap
  6. 您可以运行以下命令来检查服务日志:

    $ journalctl --user-unit ilab-serve.service
    Copy to Clipboard Toggle word wrap
  7. 要允许服务在引导时启动,请运行以下命令:

    $ sudo loginctl enable-linger
    Copy to Clipboard Toggle word wrap
  8. 可选:您可以运行几个可选命令来维护 systemd 服务。

    • 您可以运行以下命令来停止 ilab-serve 系统服务:

      $ systemctl --user stop ilab-serve.service
      Copy to Clipboard Toggle word wrap
    • 您可以通过从 $HOME/.config/systemd/user/ilab-serve.service 文件中删除 "WantedBy=multi-user.target default.target" 来防止服务在引导时启动。

5.1.2. 可选:允许从安全端点访问模型

您可以服务 inference 端点,并通过创建 systemd 服务并设置公开安全端点的 nginx 反向代理,让其他人与 Red Hat Enterprise Linux AI 在安全连接上交互。这可让您与其他端点共享安全端点,以便它们可以通过网络与模型进行聊换。

以下流程使用自签名认证,但建议使用由可信证书颁发机构(CA)发布的证书。

注意

只有在裸机平台上才支持以下步骤。

先决条件

  • 您已在裸机上安装了 Red Hat Enterprise Linux AI 镜像。
  • 您初始化的 InstructLab
  • 您下载了您首选的 Granite LLMs。
  • 在机器上具有 root 用户访问权限。

流程

  1. 运行以下命令,为您的证书文件和密钥创建一个目录:

    $ mkdir -p `pwd`/nginx/ssl/
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,使用正确的配置创建 OpenSSL 配置文件:

    $ cat > openssl.cnf <<EOL
    [ req ]
    default_bits = 2048
    distinguished_name = <req-distinguished-name> 
    1
    
    x509_extensions = v3_req
    prompt = no
    
    [ req_distinguished_name ]
    C  = US
    ST = California
    L  = San Francisco
    O  = My Company
    OU = My Division
    CN = rhelai.redhat.com
    
    [ v3_req ]
    subjectAltName = <alt-names> 
    2
    
    basicConstraints = critical, CA:true
    subjectKeyIdentifier = hash
    authorityKeyIdentifier = keyid:always,issuer
    
    [ alt_names ]
    DNS.1 = rhelai.redhat.com 
    3
    
    DNS.2 = www.rhelai.redhat.com 
    4
    Copy to Clipboard Toggle word wrap
    1
    为您的要求指定可分辨名称。
    2
    为您的要求指定备用名称。
    3 4
    指定 RHEL AI 的服务器通用名称。在示例中,服务器名称为 rhelai.redhat.com
  3. 使用以下命令生成启用了 Subject Alternative Name (SAN)的自签名证书:

    $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout `pwd`/nginx/ssl/rhelai.redhat.com.key -out `pwd`/nginx/ssl/rhelai.redhat.com.crt -config openssl.cnf
    Copy to Clipboard Toggle word wrap
    $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,创建 Nginx 配置文件并将其添加到 'pwd/nginx/conf.d' 中:

    mkdir -p `pwd`/nginx/conf.d
    
    echo 'server {
        listen 8443 ssl;
        server_name <rhelai.redhat.com> 
    1
    
    
        ssl_certificate /etc/nginx/ssl/rhelai.redhat.com.crt;
        ssl_certificate_key /etc/nginx/ssl/rhelai.redhat.com.key;
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    ' > `pwd`/nginx/conf.d/rhelai.redhat.com.conf
    Copy to Clipboard Toggle word wrap
    1
    指定服务器的名称。在示例中,服务器名称为 rhelai.redhat.com
  5. 运行以下命令,使用新配置运行 Nginx 容器:

    $ podman run --net host -v `pwd`/nginx/conf.d:/etc/nginx/conf.d:ro,Z -v `pwd`/nginx/ssl:/etc/nginx/ssl:ro,Z nginx
    Copy to Clipboard Toggle word wrap

    如果要使用端口 443,则必须以 root 用户身份运行 podman run 命令。

  6. 现在,您可以使用安全端点 URL 连接到服务 ilab 机器。示例命令:

    $ ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url
    Copy to Clipboard Toggle word wrap
  7. 您还可以使用以下命令连接到服务 RHEL AI 机器:

    $ curl --location 'https://rhelai.redhat.com:8443/v1' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <api-key>' \
    --data '{
      "model": "/var/home/cloud-user/.cache/instructlab/models/granite-7b-redhat-lab",
      "messages": [
          {
              "role": "system",
              "content": "You are a helpful assistant."
          },
          {
              "role": "user",
              "content": "Hello!"
          }
      ]
    }' | jq .
    Copy to Clipboard Toggle word wrap

    其中

    <api-key>
    指定 API 密钥。您可以按照"创建 API 密钥以使用模型进行聊天"中的步骤创建自己的 API 密钥。
  8. 可选: 您还可以获取服务器证书并将其附加到 Certifi CA 捆绑包中

    1. 运行以下命令来获取服务器证书:

      $ openssl s_client -connect rhelai.redhat.com:8443 </dev/null 2>/dev/null | openssl x509 -outform PEM > server.crt
      Copy to Clipboard Toggle word wrap
    2. 将证书复制到您系统的可信 CA 存储目录中,并使用以下命令更新 CA 信任存储:

      $ sudo cp server.crt /etc/pki/ca-trust/source/anchors/
      Copy to Clipboard Toggle word wrap
      $ sudo update-ca-trust
      Copy to Clipboard Toggle word wrap
    3. 您可以运行以下命令来将证书附加到 Certifi CA 捆绑包:

      $ cat server.crt >> $(python -m certifi)
      Copy to Clipboard Toggle word wrap
    4. 现在,您可以使用自签名证书运行 ilab 模型聊天。示例命令:

      $ ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url https://rhelai.redhat.com:8443/v1
      Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部