第 5 章 使用模型提供和聊天
要与 Red Hat Enterprise Linux AI 上的各种模型交互,您必须提供在服务器中托管它的模型,然后您可以使用模型进行聊天。
5.1. 提供模型 复制链接链接已复制到粘贴板!
要与模型交互,您必须首先通过服务激活机器中的模型。ilab 模型服务 命令启动 vLLM 服务器,允许您与模型进行聊天。
先决条件
- 已使用可引导容器镜像安装了 RHEL AI。
- 您初始化了 InstructLab。
- 已安装您首选的 Granite LLM。
- 在机器上具有 root 用户访问权限。
流程
如果没有指定模型,您可以通过运行以下命令来提供默认模型
granite-7b-redhat-lab:ilab model serve
$ ilab model serveCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要服务特定模型,请运行以下命令
ilab model serve --model-path <model-path>
$ ilab model serve --model-path <model-path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
ilab model serve --model-path ~/.cache/instructlab/models/granite-8b-code-instruct
$ ilab model serve --model-path ~/.cache/instructlab/models/granite-8b-code-instructCopy to Clipboard Copied! Toggle word wrap Toggle overflow 模型提供并就绪时的输出示例
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.
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 Copied! Toggle word wrap Toggle overflow
5.1.1. 可选:运行 ilab 模型 作为服务 复制链接链接已复制到粘贴板!
您可以设置 systemd 服务,以便 ilab 模型服务 命令作为正在运行的服务运行。systemd 服务在后台运行 ilab model serving 命令,并在其崩溃或失败时重新启动。您可以将服务配置为在系统启动时启动。
先决条件
- 您在裸机上安装了 Red Hat Enterprise Linux AI 镜像。
- 您初始化的 InstructLab
- 您下载了您首选的 Granite LLMs。
- 在机器上具有 root 用户访问权限。
流程.
运行以下命令,为您的
systemd用户服务创建一个目录:mkdir -p $HOME/.config/systemd/user
$ mkdir -p $HOME/.config/systemd/userCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下示例配置创建
systemd服务文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定在引导时默认启动。
运行以下命令来重新载入
systemdManager 配置:systemctl --user daemon-reload
$ systemctl --user daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令启动
ilab 模型服务systemd服务:systemctl --user start ilab-serve.service
$ systemctl --user start ilab-serve.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下命令检查该服务是否正在运行:
systemctl --user status ilab-serve.service
$ systemctl --user status ilab-serve.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来检查服务日志:
journalctl --user-unit ilab-serve.service
$ journalctl --user-unit ilab-serve.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要允许服务在引导时启动,请运行以下命令:
sudo loginctl enable-linger
$ sudo loginctl enable-lingerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:您可以运行几个可选命令来维护
systemd服务。您可以运行以下命令来停止 ilab-serve 系统服务:
systemctl --user stop ilab-serve.service
$ systemctl --user stop ilab-serve.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
您可以通过从
$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 用户访问权限。
流程
运行以下命令,为您的证书文件和密钥创建一个目录:
mkdir -p `pwd`/nginx/ssl/
$ mkdir -p `pwd`/nginx/ssl/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用正确的配置创建 OpenSSL 配置文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令生成启用了 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
$ 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.cnfCopy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyoutCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,创建 Nginx 配置文件并将其添加到
'pwd/nginx/conf.d' 中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定服务器的名称。在示例中,服务器名称为
rhelai.redhat.com
运行以下命令,使用新配置运行 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
$ podman run --net host -v `pwd`/nginx/conf.d:/etc/nginx/conf.d:ro,Z -v `pwd`/nginx/ssl:/etc/nginx/ssl:ro,Z nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果要使用端口 443,则必须以 root 用户身份运行
podman run命令。现在,您可以使用安全端点 URL 连接到服务 ilab 机器。示例命令:
ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url
$ ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-urlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以使用以下命令连接到服务 RHEL AI 机器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
- <api-key>
- 指定 API 密钥。您可以按照"创建 API 密钥以使用模型进行聊天"中的步骤创建自己的 API 密钥。
可选: 您还可以获取服务器证书并将其附加到 Certifi CA 捆绑包中
运行以下命令来获取服务器证书:
openssl s_client -connect rhelai.redhat.com:8443 </dev/null 2>/dev/null | openssl x509 -outform PEM > server.crt
$ openssl s_client -connect rhelai.redhat.com:8443 </dev/null 2>/dev/null | openssl x509 -outform PEM > server.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将证书复制到您系统的可信 CA 存储目录中,并使用以下命令更新 CA 信任存储:
sudo cp server.crt /etc/pki/ca-trust/source/anchors/
$ sudo cp server.crt /etc/pki/ca-trust/source/anchors/Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo update-ca-trust
$ sudo update-ca-trustCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来将证书附加到 Certifi CA 捆绑包:
cat server.crt >> $(python -m certifi)
$ cat server.crt >> $(python -m certifi)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,您可以使用自签名证书运行
ilab 模型聊天。示例命令:ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url https://rhelai.redhat.com:8443/v1
$ ilab model chat -m /instructlab/instructlab/granite-7b-redhat-lab --endpoint-url https://rhelai.redhat.com:8443/v1Copy to Clipboard Copied! Toggle word wrap Toggle overflow