第 8 章 在带有 IBM Spyre AI Accelerator 的 IBM Z 上使用 Podman 服务
使用 Podman 和带有 IBM Spyre AI 加速器的 IBM Z 上运行的 Red Hat AI Inference Server 提供大型语言模型。
先决条件
- 对于安装的 Z AI Accelerators,您可以访问运行带有 IBM Spyre 的 RHEL 9.6 的 IBM Z (s390x)服务器。
- 您以具有 sudo 访问权限的用户身份登录。
- 已安装 Podman。
-
您可以访问
registry.redhat.io并已登录。 - 您有一个 Hugging Face 帐户,并生成了一个 Hugging Face 访问令牌。
IBM Spyre AI 加速器卡只支持 FP16 格式模型权重。对于兼容模型,Red Hat AI Inference Server inference 引擎在启动时自动将权重转换为 FP16。不需要额外的配置。
流程
在服务器主机上打开一个终端,并登录到
registry.redhat.io:podman login registry.redhat.io
$ podman login registry.redhat.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令拉取 Red Hat AI Inference Server 镜像:
podman pull registry.redhat.io/rhaiis/vllm-spyre:3.2.5
$ podman pull registry.redhat.io/rhaiis/vllm-spyre:3.2.5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的系统启用了 SELinux,请将 SELinux 配置为允许设备访问:
sudo setsebool -P container_use_devices 1
$ sudo setsebool -P container_use_devices 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
lspci -v验证容器是否可以访问主机系统 IBM Spyre AI Accelerators:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
0381:50:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02) 0382:60:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02) 0383:70:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02) 0384:80:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02)
0381:50:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02) 0382:60:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02) 0383:70:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02) 0384:80:00.0 Processing accelerators: IBM Spyre Accelerator (rev 02)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建卷以挂载到容器并调整容器权限,以便容器可以使用它。
mkdir -p ~/models && chmod g+rwX ~/models
$ mkdir -p ~/models && chmod g+rwX ~/modelsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
granite-3.3-8b-instruct模型下载到models/文件夹中。如需更多信息,请参阅 下载模型。 为可用的 Spyre 设备收集 IOMMU 组 ID:
lspci
$ lspciCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
0000:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev 02) 0001:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev 02) 0002:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev ff) 0003:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev 02)
0000:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev 02) 0001:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev 02) 0002:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev ff) 0003:00:00.0 Processing accelerators: IBM Spyre Accelerator Virtual Function (rev 02)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 每行都以 PCI 设备地址开头,例如
0000:00:00.0。使用 PCI 地址确定所需的 Spyre 卡的 IOMMU 组 ID,例如:
readlink /sys/bus/pci/devices/<PCI_ADDRESS>/iommu_group
$ readlink /sys/bus/pci/devices/<PCI_ADDRESS>/iommu_groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
../../../kernel/iommu_groups/0
../../../kernel/iommu_groups/0Copy to Clipboard Copied! Toggle word wrap Toggle overflow IOMMU 组 ID (0)是
readlink输出中末尾的数字。对每个必需的 Spyre 卡重复此操作。
使用
readlink输出为所需的 Spyre 卡设置IOMMU_GROUP_ID变量。例如:IOMMU_GROUP_ID0=0 IOMMU_GROUP_ID1=1 IOMMU_GROUP_ID2=2 IOMMU_GROUP_ID3=3
IOMMU_GROUP_ID0=0 IOMMU_GROUP_ID1=1 IOMMU_GROUP_ID2=2 IOMMU_GROUP_ID3=3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动 AI Inference Server 容器,传递所需的 Spyre 设备的 IOMMU 组 ID 变量。例如,部署为实体提取在 4 个 Spyre 设备中提取的 granite-3.3-8b-instruct 模型:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在终端中的单独标签页中,使用 API 向模型发出请求。
curl -X POST -H "Content-Type: application/json" -d '{ "model": "/models/granite-3.3-8b-instruct", "prompt": "What is the capital of France?", "max_tokens": 50 }' http://<your_server_ip>:8000/v1/completions | jqcurl -X POST -H "Content-Type: application/json" -d '{ "model": "/models/granite-3.3-8b-instruct", "prompt": "What is the capital of France?", "max_tokens": 50 }' http://<your_server_ip>:8000/v1/completions | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow